037、小目标检测专项改进:增加小目标检测层、高分辨率特征图与超参数联动调优
037、小目标检测专项改进:增加小目标检测层、高分辨率特征图与超参数联动调优从一次“漏检惨案”说起去年做智慧交通项目,摄像头架在30米高的立交桥上,画面里车辆清晰可见,但路边的锥桶、地上的小石块、远处骑电动车的人——模型几乎全漏了。当时用的是YOLOv8s,默认配置,训练了200轮,mAP@0.5:0.95在COCO上能到44%,但换成我们自己的数据集,小目标(面积小于32×32像素)的AP只有可怜的6.8%。领导开会时指着屏幕说:“这模型是不是瞎了?”我盯着那些被漏检的像素块,意识到问题不在模型结构本身,而在于特征金字塔对小目标的“不友好”。YOLOv8的Neck部分默认从P3(8倍下采样)开始检测,对于16×16像素的小目标,经过8倍下采样后只剩2×2个特征点,信息几乎被抹平。更致命的是,训练时数据增强里的随机裁剪和缩放,经常把小目标直接裁掉或缩到看不见。增加小目标检测层:不是简单加一层就完事很多教程教你在Neck里加一个P2层(4倍下采样),然后直接拼接输出。我试过,效果有提升但有限,而且推理速度掉了15%。问题出在:P2层特征图尺寸太大(比如输入640×640,P2是160×160),直接参与检测头计算会导致显存爆炸,同时引入大量背景噪声。正确做法是在P2层后加一个轻量级的特征压缩模块。我用的方案是:从Backbone的Stage2(对应P2)引出特征,经过一个1×1卷积降维到128通道,再接一个3×3深度可分离卷积(Depthwise Separable Co