做过无人机航拍目标检测的人,大概率都有过这种落差:
拿COCO预训练的YOLO模型跑普通场景效果挺好,一换到航拍数据就直接哑火。地面上的行人、车辆,在4K航拍画面里就是十几个像素的小点,漏检率高得离谱,要么检测不出来,要么框得歪歪扭扭,密集区域还一堆误检。调参调了半个月,mAP涨了不到两个点,越调越怀疑人生。
很多人第一反应是“模型太小了,换大模型”,结果换了YOLOv11x,速度掉了一半,精度涨了一点点,小目标该漏还是漏。
其实根本不是模型大小的问题,是原生YOLO从根上就不是为航拍小目标设计的。从网络下采样结构、锚框预设,到损失函数、特征融合,每一层设计都在“针对大目标优化”,换到航拍场景,处处都是瓶颈。
今天就从网络结构、样本分配、损失函数、特征融合四个维度,把原生YOLO在航拍小目标上失效的底层原因彻底讲透。知道了为什么不行,优化的时候才能有的放矢,不至于瞎调参数。
一、先搞懂:航拍小目标到底有多“小”?
在说原因之前,先统一一下概念。很多人对“小目标”没有量化概念,觉得看起来小就是小目标。实际上在目标检测领域,小目标有明确的像素定义。
1. 像素级量化定义
COCO数据集的标准是:面积小于32×32像素的为小目标,32×32~96×96为中目标,大于96×96为大目标。
但在航拍场景里,这个标准还要再往下细分:
- 小目标:16×16 ~ 32×32 像素
- 极小目标:8×8 ~ 16×16 像素