2024.11.16随笔
2024.11.16随笔
Mice开始的地方:数据集和准备工作
最开始,我选择了 MTDC-UAV 数据集,这个数据集包含了许多图像和标注,适合做目标检测和回归任务。我编写了一个脚本,把 800 张有标注的图像按照 7:2:1 的比例随机分配成 Train、Valid、Test 集。重要的是,确保每个集合里的图片都是随机选取的,三个集合之间没有重复,并且每张图像都能找到对应的标注文件。
YOLOv5的初步实验:尺寸与置信度的探索
一开始,我决定用 YOLOv5 来做一些基础实验,主要测试不同的训练和预测输入尺寸。具体来说,就是使用 640 和 1280 的组合来看看效果。最开始我随便设置了一个置信度(conf)值,然后再根据结果调整。可是后来发现这种方法效率太低了,一次次手动调整实在太浪费时间。
转折点:写脚本优化效率
意识到这个问题后,我写了个脚本,可以自动调整 conf 值的范围,来提高实验效率。我先把这个脚本用在了 YOLOv5 上,结果发现效果有了明显提升。
数据存储与可视化
为了方便分析,我写了个功能,把每次调整的结果存储到 Excel 中。这样我就可以直观地看到每个参数组合下的回归结果。接着,我又加了一个功能,能够根据 Excel 生成 MAE、RMSE、R² 的统计图,这样就能清晰地看到哪些配置最优。
继续实验:YOLOv8和YOLO11
接下来,我把相同的方法应用到了 YOLOv8 和 YOLO11 上,分别对它们进行了同样的实验。每个模型的不同配置下的表现都不错,我得到了 36 张统计图 和 3 个版本的统计表。
最终的结果:12条最优组合
根据这些实验结果,我得出了 12条最优数据组合。这些组合代表了每个模型和配置的最佳表现,可以通过下表查看。
YOLO Ver. | Train Img | Test Img | SOpt. Conf. | MAE | RMSE | R² |
---|---|---|---|---|---|---|
yolov5n | 640 | 640 | 0.31 | 5.9375 | 7.8509554 | 0.9541248 |
yolov5n | 640 | 1280 | 0.47 | 6.2125 | 8.1693023 | 0.950329 |
yolov5n | 1280 | 640 | 0.18 | 6.7375 | 9.1917082 | 0.9371181 |
yolov5n | 1280 | 1280 | 0.33 | 5.4 | 7.0816665 | 0.9626746 |
yolov8n | 640 | 640 | 0.29 | 6.2625 | 7.9348913 | 0.9531386 |
yolov8n | 640 | 1280 | 0.39 | 6.275 | 8.4926439 | 0.9463192 |
yolov8n | 1280 | 640 | 0.29 | 6.2625 | 7.9348913 | 0.9531386 |
yolov8n | 1280 | 1280 | 0.39 | 6.275 | 8.4926439 | 0.9463192 |
yolo11n | 640 | 640 | 0.35 | 6 | 7.930952 | 0.9531851 |
yolo11n | 640 | 1280 | 0.51 | 7.0875 | 9.2472969 | 0.9363552 |
yolo11n | 1280 | 640 | 0.23 | 7.0125 | 9.3828301 | 0.9344759 |
yolo11n | 1280 | 1280 | 0.32 | 5.1875 | 7.1388024 | 0.9620699 |
总结
YOLO在回归计数任务中的表现非常出色,尤其是当我通过调整 conf 值后,性能提升显著。这些实验结果表明,YOLO不仅在目标检测中表现出色,在回归任务中也能大展拳脚,尤其是在密集计数或小物体检测场景下。