# 遥感目标检测-教学实训

本目录是遥感目标检测课程的独立教学实训包，包含数据集说明、案例资源、实验教学文档、五套 Notebook、模型配置、可复用代码和测试用例。

## 使用顺序

1. 阅读 `docs/数据集说明.docx`，按照 `data/DIOR/README.md` 和 `data/DOTA_v1.0/README.md` 准备数据。
2. 阅读 `docs/Windows环境配置.docx` 和 `docs/Notebook运行手册.docx`，创建与模型框架对应的运行环境。
3. 先阅读 `docs/实验教学知识点手册.docx`，再按照 `docs/五套实验实训方案.docx` 运行对应 Notebook。
4. 使用 `src/rsdet/` 中的工具完成数据检查、COCO 切片、评估和结果记录。

## 目录说明

```text
遥感目标检测-教学实训/
├── docs/             正式 Word 教学文档
├── data/             数据集下载说明、原始数据和处理后数据目录
├── notebooks/        五套实验 Notebook
├── src/rsdet/        可复用 Python 代码库
├── configs/          模型与数据配置
├── tests/            代码边界测试
├── images/           教学示意图和数据集图片
├── 论文资料/         数据集论文资料
├── requirements.txt  Python 依赖
├── environment.yml   Conda 基础环境
└── pyproject.toml    项目安装配置
```

## 数据准备

本包不附带 DOTA、DIOR 的完整影像和标注压缩包。请按照数据集许可，从 `data/DIOR/README.md` 和 `data/DOTA_v1.0/README.md` 中的入口下载，并将解压后的数据放入 `data/raw/`。转换为 COCO 或 YOLO 后，将处理结果放入 `data/processed/`。

建议的数据位置如下：

```text
data/
├── DIOR/README.md
├── DOTA_v1.0/README.md
├── raw/
│   ├── DIOR/      # 原始 DIOR 解压目录
│   └── DOTA/      # 原始 DOTA v1.0 解压目录
└── processed/
    └── dior/      # COCO/YOLO 转换后的 DIOR 数据
```

原始数据和处理后数据均不应提交到公共代码仓库；实验报告应记录数据版本、下载来源、转换方式、划分规则和随机种子。

## 五套实验入口

| Notebook | 数据处理 | 实验内容 |
|---|---|---|
| `01_faster_rcnn.ipynb` | DIOR → COCO | Faster R-CNN 水平框检测 |
| `02_yolov8.ipynb` | DIOR → YOLO | YOLOv8 一阶段检测 |
| `03_oriented_rcnn.ipynb` | DOTA v1.0 → DOTA `labelTxt` | Oriented R-CNN 旋转框检测 |
| `04_deformable_detr.ipynb` | DIOR → COCO | Deformable DETR 多尺度检测 |
| `05_lightweight.ipynb` | DIOR → YOLO | 轻量化 YOLO 与 ONNX 部署 |

Notebook 会从真实数据中按固定随机种子生成教学子集；教学子集用于控制课堂运行规模，不代表完整数据集性能。

## 框架隔离

Ultralytics、MMDetection 和 MMRotate 建议使用独立环境。`third_party/` 已包含 MMDetection `v3.1.0` 和 MMRotate `v0.3.3` 的官方 tag 源码归档与解压目录；两个框架仍需使用相互隔离的环境，配置文件通过 `MMDET_ROOT` 和 `MMROTATE_ROOT` 指向对应目录。

基础环境可使用：

```powershell
conda env create -f environment.yml
conda activate rsdet-lab
pip install -r requirements.txt
pip install -e .
```

两个 OpenMMLab 实验使用独立环境：

```powershell
conda env create -f environment_mmdet.yml
conda env create -f environment_mmrotate.yml
```

其中 MMDetection 环境目标版本为 Python 3.10、PyTorch 2.0.1、TorchVision 0.15.2、CUDA 11.8、MMCV 2.0.1、MMEngine 0.7.x 以上和 MMDetection v3.1.0；MMRotate 环境目标版本为 Python 3.8、PyTorch 1.10.2、TorchVision 0.11.3、CUDA 11.3、mmcv-full 1.6.2、MMDetection 2.28.2 和 MMRotate v0.3.3。两个环境不能混装。

正式训练前，应保存运行命令、软件版本、GPU 信息、训练日志、指标、预测图和 checkpoint。

## 代码检查

在项目根目录运行：

```powershell
pytest -q
python -m compileall -q src
```

`runs/`、临时文件、模型权重和实际数据属于运行产物，不随本教学包提供。
