上周调一个产线瑕疵检测模型,小目标死活检不出来。明明训练集里标注清晰的焊点缺陷,到了产线视频流里就跟隐身了似的。
把预测结果可视化出来一看,特征图在深层网络里已经糊成一片——典型的尺度崩塌问题。今天咱们就深挖这个救了我项目的技术:特征金字塔网络(FPN)。
问题根源:单尺度特征图的局限性
YOLO系列用骨干网络最后层的特征图做预测,大目标没问题,小目标特征在多次下采样后基本消失。
早期解决方案是多尺度训练和测试,但计算成本吓人。
FPN的核心思想很直观:既然深层有强语义特征,浅层有高分辨率细节,为什么不把它们融合起来?
FPN原版结构:自顶向下的特征融合
FPN不是简单把不同层特征图拼接就完事。它走的是“自顶向下+横向连接”的路子:
# 简化版FPN实现关键步骤classFPN(nn.Module):