RT-DETR/
├── cfg/ # 模型配置文件目录
├── dataset/ # 数据集目录(YOLO格式)
├── heatmaps/ # 热图可视化结果
├── result/ # 预测结果目录
├── runs/ # 训练和检测结果
│ ├── train/ # 训练文件目录
│ └── val/ # 验证结果
├── convert_coco_to_yolo.py # COCO 格式转 YOLO 格式脚本
├── heatmap.py # 热图可视化脚本
├── blocks.py # 自定义模块具体实现
└── README.md # 项目说明文档
convert_coco_to_yolo.py 脚本用于将 COCO 格式的数据集转换为 YOLO 格式。
使用方法:
python convert_coco_to_yolo.pyheatmap.py 脚本用于生成模型预测的热图,支持多种 CAM (Class Activation Mapping) 方法,包括:
- GradCAM
- GradCAMPlusPlus
- XGradCAM
- EigenCAM
- HiResCAM
- LayerCAM
- RandomCAM
- EigenGradCAM
使用方法:
-
安装依赖:
pip install grad-cam==1.5.4
-
修改
get_params()函数中的参数,设置模型权重路径、设备、CAM 方法等。 -
运行脚本:
python heatmap.py
本项目基于 Ultralytics YOLO 框架,支持多种模型配置和数据集。
修改Ultralytics/nn/modules/block.py中内容,添加如下类等类别,并在开始的all中添加注册声明,具体类实现在blocks.py中:
class Atrous_Gateway(nn.Module):
def __init__(self, c1, c2, e=0.5):
super().__init__()
c_ = int(c2 * e) # hidden channels
self.cv1 = Conv(c1, c_, 1, 1)
self.cv2 = Conv(c1, c_, 1, 1)
self.cv3 = Conv(2 * c_, c2, 1) # optional act=FReLU(c2)
self.m = ParallelAtrousConv(c_)
def forward(self, x):
return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), 1))
... 修改Ultralytics/nn/modules/init.py。
修改Ultralytics/nn/tasks.py的参数推理内容。
训练示例:
# 使用自定义配置训练模型
python train.py --data dataset/DIOR_YOLO/data.yaml --cfg cfg/mine.yaml --epochs 72 --batch-size 16推理示例:
# 使用训练好的模型进行推理
python detect.py --weights runs/train/exp/weights/best.pt --source dataset/DIOR_YOLO/images/test --conf 0.25- DIOR:遥感目标检测数据集
- LEVIR:遥感目标检测数据集
cfg/ 目录下包含多种模型配置文件,
heatmaps/ 目录下包含使用不同 CAM 方法生成的热图结果,可用于分析模型的注意力机制和预测依据。
result/ 目录下包含模型在不同数据集上的预测结果,包括边界框和热图可视化。
runs/ 目录下包含模型训练的详细结果,包括:
- 训练和验证损失曲线
- 模型权重文件
- 预测示例
- 评估指标(mAP、F1 分数等)
- Python 3.7+
- PyTorch 1.8+
- Ultralytics
- OpenCV
- NumPy
- Matplotlib
- tqdm
- grad-cam==1.5.4 (用于热图可视化)
-
克隆项目:
git clone https://github.com/husizhtu/APFNet.git cd APFNet -
安装依赖:
pip install -r requirements.txt # 安装热图可视化依赖 pip install grad-cam==1.5.4
# 将 COCO 格式转换为 YOLO 格式
python convert_coco_to_yolo.py# 训练自定义模型
python train.py --data dataset/DIOR_YOLO/data.yaml --cfg cfg/mine.yaml --epochs 72 --batch-size 16
# 训练 R50 模型
python train.py --data dataset/DIOR_YOLO/data.yaml --cfg cfg/rtdetr-r50.yaml --epochs 72 --batch-size 16# 修改 get_params() 函数中的参数后运行
python heatmap.py# 使用训练好的模型进行推理
python detect.py --weights runs/train/*/weights/best.pt --source dataset/DIOR_YOLO/images/test --conf 0.25本项目基于 MIT 许可证。
如有问题或建议,请通过以下方式联系:
- Email: virtue9847h@163.com
- GitHub: husizhtu