深度学习论文: SFPN: Synthetic FPN for Object Detection及其PyTorch实现 SFPN: Synthetic FPN for Object Detection PDF: https://arxiv.org/pdf/2203.02445.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: https://github.com/shanglianlm0525/PyTorch-Networks
1 概述
SFPN将特征图缩放为1/2、1/3、1/4、1/6等,以减少尺度截断的影响。作者认为添加中等尺度的特征图可以使不同尺度的过渡更平滑,从而更好地在轻量级体系结构上检测目标。基于这个想法构建了一个只有3个输出层的Baseline,然后逐步综合插入中间尺度的层。
2 SFPN (Synthetic Fusion Pyramid Network)
CNN Backbone中使用的池化操作(或与stride=2卷积)通常将图像维度降到一半,使特征图在x和y方向上缩放到1/2、1/4、1/8等。作者认为尺度跳跃太大,导致各层的特征融合不平滑。因此在原始层之间创建各种合成层,使预测图缩放到1/2、1/3、1/4、1/6等,从而提供一个更平滑的尺度空间来拟合尺度不断变化的GT。
2-1 Synthetic Fusion Module (SFM)
SFM包含3个可选的输入,首先是线性缩放输入,然后逐像素add它们,然后与conv-3×3融合。该模块可以从原始层中合成合成层,也可以简单地用于融合特征。
2-2 Synthetic Fusion Block (SFB)
- SFB由多个SFMs构建。它将这些图层分成两批。首先,将特征从第一批层传递到第二批层,然后从第二批层传递到第一批层。
- SFB被视为集中合并特征,然后向外辐射特征。
- SFB集成了自顶向下和自顶向下的方向。
- 多个SFB的叠加可以执行多个特征融合,以获得更好的性能。
2-3 Synthetic Fusion Pyramid Network (SFPN)
将SFB堆叠3次的FPN称为合成融合金字塔网络(SFPN),将包含X个输出层的SFPN称为SFPN-X。
2-4 Naive Anchors for SOL
将SFPN连接到YOLO-Head。在YOLO架构中,Anchor的生成方法和分配策略对目标检测器的性能有显著的影响。YOLO使用k-means在训练集中找到k个先验框作为Anchor。CSL-YOLO发现,当输出层数增加时,k-means将产生许多不符合输出层比例的Anchor。作者采用了一种直接的Anchor生成方法来消除这一显著的干扰因素。作者使用比例为1×、2×和4×的优先级框作为输出特征映射的每个像素上的Anchor。该方法使3层、5层和9层的输出获得尺度拟合和一致的Anchor,证明了性能增益来自合成输出层。
3 Experimental
|