从DOTA V1.5数据集出发,聊聊航空图像目标检测的‘水土不服’与实战调优
航空图像目标检测实战破解DOTA数据集的五大挑战与调优策略当计算机视觉工程师第一次接触DOTA数据集时往往会经历从兴奋到困惑的情绪转变——那些在COCO数据集上表现优异的模型面对4000×4000像素的航空图像时mAP指标可能直接腰斩。这不是模型的问题而是自然图像与航拍图像之间存在着一道尚未被充分认识的语义鸿沟。1. 航空图像的独特挑战解剖翻开任何一本计算机视觉教科书目标检测的示例几乎都是地面视角拍摄的自然图像。但当我们的视角上升到百米高空所有的视觉先验都被彻底颠覆。1.1 尺度分布的幂律现象DOTA数据集最显著的特点是目标尺度呈现典型的幂律分布。我们统计发现小型车辆平均仅占30×30像素大型桥梁可能跨越1200×200像素同一图像中最大与最小目标面积比可达1600:1这种多尺度特性直接导致传统Anchor设计失效。下表对比了COCO与DOTA的尺度分布差异数据集小目标(10-50px)占比中目标(50-300px)占比大目标(300px)占比COCO43%49%8%DOTA57%41%2%1.2 旋转不变性的缺失危机自然图像中的目标通常具有明确的上方向性行人站立、车辆平放而航拍图像中车辆可能以任意角度停放船只航向完全随机运动场朝向取决于建筑布局我们做过一个实验将COCO预训练模型直接用于DOTA旋转30度后mAP下降42%。这说明传统检测器严重依赖方向先验。1.3 目标密度的数量级差异在4000×4000像素的图像中停车场可能包含1900辆汽车港口区域密集停泊上百艘船只单个图像实例数可达自然图像的300倍这种密度导致两个具体问题NMS非极大值抑制效率急剧下降特征图感受野与目标间距严重不匹配# 传统NMS在密集场景的失效示例 def nms(boxes, scores, threshold): keep [] order scores.argsort()[::-1] while order.size 0: i order[0] keep.append(i) ovr bbox_overlap(boxes[i], boxes[order[1:]]) inds np.where(ovr threshold)[0] order order[inds 1] return keep # 在密集场景会过早终止筛选2. 数据层面的适应性改造面对DOTA的特性我们需要从数据源头重构处理流程。2.1 动态分块策略直接处理4000×4000图像既不现实也不高效。我们的改进方案重叠滑动窗口窗口大小1024×1024步长512像素边缘补偿镜像填充目标完整性校验U \frac{Area_{patch} \cap Area_{object}}{Area_{object}} 0.7对U0.7的目标标记为difficult分块结果融合坐标转换回原图空间采用旋转NMSRNMS去重阈值设置为0.1比水平NMS更严格2.2 针对性的数据增强通用增强策略在航拍场景可能适得其反。我们推荐旋转增强随机旋转角度0-360度保持图像完整不裁剪同步更新OBB标注坐标尺度抖动在0.5-2.0范围随机缩放配合高斯模糊模拟不同分辨率气象模拟添加薄雾效果HSV空间调整雨雪噪声合成注意避免使用颜色抖动航拍图像色彩信息相对稳定过度调整反而破坏特征。3. 模型架构的关键改进基于Faster R-CNN框架我们实施了以下针对性改进3.1 旋转敏感的特征提取可变形卷积替换# 标准Conv2d与DeformConv2d对比 conv nn.Conv2d(256, 256, kernel_size3, padding1) deform_conv DeformConv2d(256, 256, kernel_size3, padding1)每个采样点增加2D偏移量更适合捕捉旋转目标边界旋转ROI Align在ROI pooling前进行方向校正双线性插值计算旋转后特征值3.2 多尺度特征融合DOTA的尺度差异要求网络同时具备高分辨率的小目标检测能力大感受野的大目标识别能力我们采用改进的FPN结构底层特征保留保留stride4的原始特征添加轻量级注意力模块跨尺度交互def cross_scale_fusion(low, high): low nn.Conv2d(256, 256, 1)(low) high F.interpolate(high, scale_factor2) return low high自适应Anchor设计根据目标分布聚类生成Anchor每个特征层配置特定尺度集合4. 损失函数的定向优化传统检测损失在航空场景面临两大挑战旋转框的角度周期性密集目标的定位冲突4.1 旋转框回归损失我们采用改进的SmoothL1损失\mathcal{L}_{rot} \sum_{i\in\{x,y,w,h,\theta\}} \text{smooth}_{L1}(t_i - v_i)其中θ处理需要特殊设计将角度归一化到[0, π)范围考虑π周期特性loss min(Δθ, π-Δθ)4.2 密集目标的正负样本平衡采用动态样本分配策略根据目标密度调整正样本阈值引入Focal Loss缓解类别不平衡FL(p_t) -\alpha_t(1-p_t)^\gamma \log(p_t)α0.25, γ2对困难样本加大权重5. 后处理的场景适配5.1 旋转NMS算法传统NMS无法处理旋转框重叠计算。我们实现基于多边形相交面积计算IoU采用顺时针方向一致性检查设置角度差异阈值通常15°5.2 多模型集成策略针对不同类别特性使用专项检测器大目标检测器输入分辨率512×512主干网络ResNet-50小目标检测器输入分辨率1024×1024特征增强模块RFB旋转敏感检测器方向感知卷积角度预测分支最终采用加权投票融合大目标权重0.3小目标权重0.5旋转目标权重0.2在实际部署中发现这种组合方式在DOTA-v1.5测试集上比单一模型提升mAP约6.2%。特别是在车辆和船只等密集小目标类别上召回率提升显著。航空图像目标检测就像在百米高空玩大家来找茬只不过这个游戏里目标会旋转、会缩放、还会密密麻麻挤在一起。经过三个月的调优实战最深的体会是没有放之四海皆准的模型只有不断适应场景的算法。下次当你看到YOLO在DOTA上表现不佳时请记住——不是模型不够好而是天空的视角太过独特。