# mds1024
**Repository Path**: jamesray0713/mds1024
## Basic Information
- **Project Name**: mds1024
- **Description**: Mangrove Detection System
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: dev
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-11-19
- **Last Updated**: 2025-11-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# MDS - Mangrove Detection System
**🌴 红树林智能监测工具 🌴**
基于 YOLO 的高性能正射影像目标检测系统
[](https://www.python.org/)
[](https://github.com/ultralytics/ultralytics)
[](LICENSE)
[]()
---
## 📖 项目简介
MDS (Mangrove Detection System) 是一个专业的红树林正射影像智能检测系统,提供从数据准备、模型训练到推理部署的完整工作流,可实现红树植株的识别与统计、密度计算、树种识别、冠幅计算等功能。
**🎯 完全跨平台支持** - 一套代码,在 Windows、WSL2、macOS、Ubuntu/Linux 上无缝运行!
### ✨ 主要特性
- 🚀 **交互式命令行** - 基于 questionary 和 rich 的现代化 CLI,操作简单直观
- 🖼️ **大图切片推理** - 支持 TIFF/GeoTIFF 大图自动切片,支持自适应切片尺寸计算
- 🎯 **高精度检测** - 基于 YOLO11/12 的 SOTA 模型,支持 SAHI 切片辅助推理
- 🔄 **完整训练流程** - 自动数据转换、切片、增强、训练、验证
- 🗺️ **矢量边界过滤** - 支持 SHP/KML 矢量边界,精确框定推理区域
- 🪟 **智能平台适配** - 自动检测运行环境,路径转换和并行优化全自动
- ⚡ **高性能并行** - 多平台并行拷贝加速(GNU Parallel/PowerShell/xargs/Python多线程)
- 📊 **实验追踪** - 集成 Comet.ml,记录训练过程和指标
- 🎨 **结果可视化** - 自动生成检测结果可视化图和统计报告
---
## 🚀 快速开始
### 🔧 环境要求
| 组件 | 要求 | 说明 |
|------|------|------|
| **操作系统** | Windows 10/11, WSL2, macOS, Ubuntu 20.04+ | 全平台支持 |
| **Python** | 3.12+ | 必需 |
| **GPU(可选)** | NVIDIA GPU + CUDA 11.8+ | 推荐用于加速 |
| **内存** | 8GB+ | 推荐16GB+ |
### 📥 安装
> **详细安装指南**: 参见 [INSTALL_GUIDE.md](docs/INSTALL_GUIDE.md)
#### 方法1: 快速安装(通用)
```bash
# 1. 克隆项目
git clone https://gitee.com/jamesray0713/mds1024.git
cd mds1024
# 2. 创建虚拟环境
python3.12 -m venv .venv
# 3. 激活虚拟环境
# Linux/macOS/WSL:
source .venv/bin/activate
# Windows:
.\.venv\Scripts\Activate.ps1
# 4. 安装PyTorch(根据你的平台选择)
# GPU版本(推荐):
pip install torch==2.9.1 torchvision --index-url https://download.pytorch.org/whl/cu121
# CPU版本:
pip install torch==2.9.1 torchvision -i https://pypi.tuna.tsinghua.edu.cn/simple
# 非macOS
pip install gdal
# macos: 先装系统级gdal,再用pip装
brew install gdal # 默认3.12.0
pip install gdal==3.12.0.post1
# 4. 安装依赖
pip install -r requirements.txt
# 6. 测试安装
python test_cross_platform.py
```
#### 方法2: 一键安装脚本(即将推出)
```bash
# Linux/macOS/WSL
bash install.sh
# Windows
.\install.ps1
```
### ✅ 验证安装
运行跨平台兼容性测试:
```bash
python test/test_cross_platform.py
```
**预期输出**:
- ✓ 平台检测成功
- ✓ 路径转换测试通过
- ✓ 并行拷贝测试通过
- ✓ 核心模块导入成功
- ✓ GPU可用(如果有NVIDIA GPU)
---
## 🎮 使用方法
### 1. 交互式界面(推荐)
```bash
python3 -m venv .venv
source .venv/bin/activate # Linux/Mac
# 或
.venv\Scripts\activate # Windows
```
3. **安装依赖**
使用 pip:
```bash
pip install -r requirements.txt
```
或使用 Poetry:
```bash
poetry install
```
---
## 💻 使用方法
### 交互式命令行 (推荐)
启动交互式界面,按提示操作:
```bash
python scripts/interactive_cli.py
```
功能菜单:
- 📷 **推理检测** - 对图像/TIFF 进行目标检测
- 🎓 **训练模型** - 训练自定义检测模型
- 📐 **切片尺寸测算** - 计算最优切片尺寸
- ⚙️ **配置管理** - 查看和修改配置
### 命令行直接调用
**推理检测:**
```bash
python scripts/infer_cli.py \
--image_path /path/to/image \
--model_path /path/to/model.pt \
--output_dir ./results
```
**训练模型:**
```bash
python scripts/train_cli.py \
--data_path /path/to/dataset \
--epochs 100 \
--imgsz 640
```
---
## 📁 系统架构
### 项目结构
```bash
mds1024/
├── config/ # 配置文件
│ └── mangrove.yaml # 主配置文件
├── core/ # 核心模块
│ ├── config.py # 配置管理
│ └── logger.py # 日志管理
├── infer/ # 推理模块
│ ├── predictor.py # 主推理器
│ ├── tiff_slicer.py # TIFF 切片
│ ├── adaptive_slice.py # 自适应切片计算
│ └── postprocessor.py # 后处理
├── train/ # 训练模块
│ ├── trainer.py # 训练器
│ ├── data_loader.py # 数据加载
│ └── slicer.py # 数据切片
├── task_classify/ # 分类子模块
│ └── mds_classifier/ # 红树林分类器
├── utils/ # 工具函数
│ ├── path_utils.py # 路径处理
│ ├── gis.py # 地理信息处理
│ └── progress.py # 进度条
├── scripts/ # 脚本入口
│ ├── interactive_cli.py # 交互式界面
│ ├── infer_cli.py # 推理脚本
│ └── train_cli.py # 训练脚本
├── requirements.txt # 依赖列表
└── pyproject.toml # Poetry 配置
```
### 缓存架构
缓存目录集中存放项目运行时所有的`中间产物`,如切割后待推理的图像、日志、需要生成而用户未主动指定路径的文件……
当项目首次运行,它将创建于用户`家目录`.
```bash
~/.cache_MDS
├── submodule_cls # 子模块`task_classify`的缓存根目录
│ └── infer
├── datasets
│ ├── infer # 推理数据集缓存
│ │ ├── infer-pre # 推理前可能先切几十个小片,用于计算自适应的“裁剪尺寸”
│ │ └── infer-[date]-[task_name]
│ ├── train # 训练数据集缓存
│ │ ├── _sliced # 训练前可能切片。
│ │ └── train-[date]-[task_name]
│ │ ├── autosplit_train.txt
│ │ ├── autosplit_val.txt
│ │ ├── classes.txt
│ │ ├── data.yaml
│ │ ├── images/
│ │ ├── labels/
│ │ └── labels.cache
│ └── trouble/
├── draw/
├── logs
│ └── infer-[date]-[task_name].log
├── middleware
│ └── train # 训练过程产生的缓存
├── models_det
│ └── m03-yolo12x.pt
├── models_cls\
│ └── m03-yolo11l-7cls.pt
├── results
│ ├── infer
│ │ └── infer-[date]-[task_name]/
│ └── train
│ └── train-[date]-[task_name]/
└── tmp_data # 重要的老文件,非必要别删
```
---
## ⚙️ 配置说明
主配置文件位于 `config/mangrove.yaml`,包含以下主要配置:
### 基础配置
```yaml
cache_dir: ~/.cache_MDS # 缓存根目录
log_level: INFO # 日志级别
```
### 推理配置
```yaml
inference:
model_path: auto # 模型路径 (auto 自动下载 SOTA 模型)
conf_threshold: 0.25 # 置信度阈值
iou_threshold: 0.45 # NMS IoU 阈值
slice:
enable: true # 是否启用切片推理
slice_size: 640 # 切片尺寸
overlap_ratio: 0.2 # 重叠比例
cal_adaptive_slice:
enable: false # 是否启用自适应切片计算
```
### 训练配置
```yaml
training:
epochs: 100
batch_size: 16
imgsz: 640
optimizer: AdamW
lr0: 0.001
```
### 自定义配置
通过交互式界面的 "配置管理" 功能可以查看和修改配置。
---
## 🎯 使用场景
### 场景 1: 大幅正射影像检测
```bash
# 启动交互式界面
python scripts/interactive_cli.py
# 选择: 推理检测
# 输入: D:\data\satellite\image.tif (Windows路径自动转换)
# 启用: 自适应切片尺寸计算
# 结果: 自动保存至 ~/.cache_MDS/results/infer/
```
### 场景 2: 使用矢量边界精确检测
```bash
# 在交互界面中:
# - 选择推理检测
# - 输入图像路径
# - 启用矢量边界过滤
# - 输入 shp/kml 文件路径
# 系统将仅在矢量边界范围内进行检测
```
### 场景 3: 自定义切片尺寸
```bash
# 在推理高级选项中:
# - 不启用自适应切片
# - 选择自定义切片尺寸
# - 输入: 640,1280 (多尺度推理)
```
---
## 🔧 常见问题
### Q1: 如何切换 GPU/CPU?
在配置文件中修改 `device` 字段,或在训练/推理时通过参数指定。
### Q2: 支持哪些图像格式?
支持常见格式:JPG, PNG, BMP, TIFF, GeoTIFF 等。
### Q3: Windows 路径无法识别?
项目已支持自动转换 Windows 路径 (WSL环境),直接粘贴 `D:\path\to\file` 即可。
### Q4: 内存不足怎么办?
- 减小 `batch_size`
- 减小 `slice_size`
- 关闭自适应切片计算
### Q5: 如何清理缓存?
手动删除 `~/.cache_MDS/datasets/infer/infer-pre` 和 `_sliced` 目录。
---
## 📊 性能优化建议
1. **GPU 加速**: 确保安装了 CUDA 和 cuDNN
2. **多尺度推理**: 使用自定义切片尺寸 (640,960,1280) 提高检测率
3. **自适应切片**: 对于不同分辨率的图像,启用自适应切片计算
4. **批量处理**: 将多张图像放在同一目录下批量推理
5. **SAHI 增强**: 对小目标密集场景效果显著
---
## 📝 开发路线图
- [x] 交互式命令行界面
- [x] TIFF 大图切片推理
- [x] 自适应切片尺寸计算
- [x] Windows 路径自动转换
- [x] 矢量边界过滤
- [ ] Web 界面支持
- [ ] Docker 容器化部署
- [ ] 模型自动优化工具
- [ ] 批量任务队列管理
---
## 👥 贡献者
**Guangzhou RenLan Tech.**
---
## 📄 许可证
MIT License
---
## 📧 联系方式
如有问题或建议,请通过以下方式联系:
- 📮 Email: hl1670704310@icloud.com
- 🐛 Issue: 在 GitHub 提交 Issue
---
**Made with ❤️ by RenLan Tech**
⭐ 如果这个项目对你有帮助,请给个 Star!