[YOLOF CVPR2021] You Only Look One-level Feature [笔记]

原作者:Qiang Chen等    机构:中科院,国科大,旷视    笔记整理:ganyongdong 2021.04.02

论文:https://arxiv.org/pdf/2103.09460.pdf
代码:https://github.com/megvii-model/YOLOF

 

1.摘要

  • 重新研究一阶段目标检测器中的FPN,通常认为多特征融合是FPN最大的好处,而文章指出其成功的地方:
    • 将目标检测中的优化难问题分开处理,分而治之
  • 从缓解优化难问题着手,文章提出更简单高效的YOLOF,以及其两个关键组件:
    • Dilated Encoder (扩张编码器)
    • Uniform Matching (统一匹配)
  • 提出了一种新的方法替代FPN,更简单快速
  • 实验效果:
    • 对比有fPN的RetinaNet,快2.5倍
    • 对比DETR,减少了7倍的训练epoch
    • 对比YOLOv4,快13%
    • 输入尺寸608x608时,达到44.3mAP,60fps(2080Ti)

 

2.FPN真正的作用

  • 通过设计对 RetinaNet 的解耦实验,研究“多尺度融合(multi-scale feature fusion)”和“分治优化(divide-and-conquer)”两者对一阶段目标检测器的影响。
    FCOS网络结构图.png
  • 这里附一张FCOS的图,注意不是本文网络图,其backbone和FPN与RetinaNet很相似,主要看前半部分标注了C3 C4 C5 P3 P4 P5 P6 P7

  • 实验过程,将 FPN 理解成 Multiple-in-Multiple-out (MiMo) 编码器,它将 backbone 输出多尺度特征编码成另一个多尺度特征,然后提供给 detection heads 进行解码,按照下图控制输入输出。

    YOLOF_MIMO实验

  • 实验结果

    • SiMo encoder 只用了C5的输入特征,没有进行特征融合,但是性能并不比 MiMo encoder 低多少,小于1个mAP。
    • 而 MiSo encoder 和 SiSo 性能就比 MiMo 差很多(≥12mAP)。
  • 分析

    • C5单层特征足以为不同尺寸的目标提供足够的上下文信息。
    • 多尺度特征融合的好处远不如分而治之(divide-and-conquer)的好处,FPN的成功之处应该是是分而治之将不同尺度的目标检测进行拆分处理,缓解了优化难问题。

 

3.MiMo编码器的成本分析

  • 文章专门研究分析了MiMo、SiSo和YOLOF的成本。即将pipeline划分为backbone,encoder,decoder三部分,量化RetinaNet和YOLOF各模块的参数计算量及FPS进行对比,如下图所示:

    YOLOF_FLOPS和FPS各模块对比图.png

  • 通过曲线可以看出:

    • MiMo encoder和 Decoder 内存占用(134G)确实比 SiSo(6G)大很多;
    • FPS也很低(13FPS vs. 34FPS);
    • 导致速度变慢的主要是为高分辨率特征部分(即C3特征部分)的目标检测。

      FLOPs:是模型所需的计算力。指浮点运算数,可以理解为计算量。用来衡量算法/模型的复杂度。具体来说,模型中各种操作都需要计算量,比如一个卷积操作,特征图大小5x5,卷积核大小3x3,则这一次卷积所需运算量为(3x3)个乘法+(3x3-1)个加法=17,整图卷积完成则需要17x9=153的计算量。

 

4.SiSo相比MiMo存在的问题及文章提出的解决方法

  • 通过以上分析发现:
    • FPN分而治缓解优化难问题是有效的
    • FPN结构复杂,也带来了更大的内存开销,降低了检测器速度。
    • 只使用C5层输入特征,也能给后续目标检测提供足够的上下文信息。
  • 所以文章希望使用SiSo替代MiMo,但是性能下降是一个问题(23.7mAP vs 35.9mAP),进一步研究导致SiSo性能比不上MiMo的影响因素及解决办法
    • 不同尺度的目标能匹配到C5特征图的感受野范围是有限的,导致检测器在目标尺度存在差异时,性能表现较差

      感受野:卷积神经网络中每层的特征图上的像素点在原始图像中映射的区域大小。

      • 提出Dilated Encoder,对应解决单特征图的尺度范围限制问题。

      • 首先尝试通过叠加标准卷积和空洞卷积来扩大感受野,虽然覆盖面积增大了,但是还是不能覆盖所有尺度的目标对象,并且偏向于检测大目标,对应图像中的(b)。

      • 接着通过把原始尺度范围和扩大尺度范围相加组合起来,就能包含多尺度目标的多种感受野。这可以通过在中间的3x3空洞卷积层上构建残差块来实现。

        yolof_扩大感受野示意图

      • 文章作者通过上述讨论设计并命名了一个扩张编码器模块(Dilated Encoder),它包括两个组件:Prejector 和 Residual Block。Prejector采用1x1卷积,然后采用3x3卷积提取上下文语义信息。然后堆叠四个不同扩张因子的残差模块以生成多感受野的输出特征,覆盖所有的目标尺度。


        yolof_dilated_encoder结构
    • 正样本 anchors 不平衡问题。只使用单级特征进行检测,anchors更稀疏,大尺度的ground-truth会比小尺度的ground-truth分配到更多的正样本,加剧正负样本不均衡问题。

      • 提出平衡匹配方法,减缓正负样本不均衡问题。
      • 具体统一匹配策略:对于每个目标框采用k近邻锚点作为正锚点,这就确保了所有的目标框能够以相同数量的正锚点进行均匀匹配。同时忽略和ground truth IOU大于0.7的负样本,忽略IOU小于0.15的正样本。

 

5.YOLOF

  • 基于上述解决方案,文章作者提出一种使用单级特征的快速和简单框架 - YOLOF,分为三部分:Backbone, Encoder, Decoder

    yolof_网络结构

    • Backbone
      • ResNet与ResNeXt作为骨干网络,所有模型在ImageNet上与训练,输出C5特征该通道数为2048,下采样倍率为32。
    • Encoder
      • 参考FPN添加了两个投影层,将通道数降到512,然后堆叠四个不同扩张因子的残差模块;
    • Decoder
      • RetinaNet的主要设计思路,它包含两个并行的任务相关的Head分别用于分类和回归。作者仅仅添加两个微小改动:
        • (1) 参考DETR中的FFN设计让两个Head的卷积数量不同,回归Head包含4个卷积而分类Head则仅包含两个卷积;
        • (2) 作者参考AutoAssign在回归Head上对每个锚点添加了一个隐式目标预测
  • 其他细节

    • YOLOF采用单级特征,其预定义锚点是稀疏的,这会导致目标框与锚点之间的匹配质量下降。作者在图像上添加了一个随机移动操作以缓解该问题,同时作者发现这种移动对于最终的分类是有帮助的。

 

6.实验

  • COCO2017,对比RetinaNet及其改进版本实验结果


    yolof_实验
  • 更多实验略

 

7.对自己的启发

  • 空洞卷积可以扩大感受野,用于检测大尺度目标。
  • 文章实验验证FPN的真实作用是后面的多特征分层,前面的特征融合作用有限,即考虑速度的时候SiSo也不失为一种好方法。

8.参考

  • https://www.jianshu.com/p/d0fd7281853a

你可能感兴趣的:([YOLOF CVPR2021] You Only Look One-level Feature [笔记])