关于DETR相关的实践在之前的文章中很详细地介绍过,感兴趣的话可以自行移步阅读即可:
《DETR (DEtection TRansformer)基于自建数据集开发构建目标检测模型超详细教程》
《书接上文——DETR评估可视化》
基于MSTAR雷达影像数据开发构建目标检测系统,在我前面的文章中也有过实践,主要是基于YOLO系列的模型开发的模型,感兴趣的话可以自行移步阅读即可:
《基于YOLOv7开发构建MSTAR雷达影像目标检测系统》
《基于yolov5n的轻量级MSTAR遥感影像目标检测系统设计开发实战》
本文的主要目的是想要基于DETR这一新颖的检测范式来开发构建MSTAR数据的目标检测系统,首先看下效果图:
基于DETR开发训练自有数据集的超详细教程可以参考上面的博文,这里就不再赘述了。
数据集实例如下所示:
转化处理后数据集如下所示:
终端执行下面命令即可启动训练:
python main.py --dataset_file "coco" --coco_path "/0000/coco" --epoch 100 --lr=1e-4 --batch_size=32 --num_workers=0 --output_dir="outputs" --resume="weights/detr_r50_11.pth"
训练日志输出如下所示:
训练完成截图如下所示:
从评估指标结果上来看跟YOLO系列的模型还是要相差不少的。
借助于可视化组件,接下来对训练过程进行可视化,如下所示:
接下来对精确率、召回率和PR曲线进行可视化,如下所示:
【Precision曲线】
精确率曲线(Precision-Recall Curve)是一种用于评估二分类模型在不同阈值下的精确率性能的可视化工具。它通过绘制不同阈值下的精确率和召回率之间的关系图来帮助我们了解模型在不同阈值下的表现。
精确率(Precision)是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。
【Recall曲线】
召回率曲线(Recall Curve)是一种用于评估二分类模型在不同阈值下的召回率性能的可视化工具。它通过绘制不同阈值下的召回率和对应的精确率之间的关系图来帮助我们了解模型在不同阈值下的表现。
召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。召回率也被称为灵敏度(Sensitivity)或真正例率(True Positive Rate)。
【PR曲线】
精确率-召回率曲线(Precision-Recall Curve)是一种用于评估二分类模型性能的可视化工具。它通过绘制不同阈值下的精确率(Precision)和召回率(Recall)之间的关系图来帮助我们了解模型在不同阈值下的表现。
精确率是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率是指被正确预测为正例的样本数占所有实际为正例的样本数的比例
最后实际推理测试模型的检测性能,如下所示:
结果实例如下所示:
结果详情如下所示:
[["6", 0.9954103827476501, [186, 310, 287, 431]], ["6", 0.9959670305252075, [188, 308, 287, 429]], ["4", 0.999398946762085, [202, 187, 303, 307]], ["8", 0.9981775283813477, [229, 509, 318, 620]]]