You Only Look One-level Feature(cvpr2021论文)

150 阅读17分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

参考

author

image.png

paper

2103.09460.pdf (arxiv.org)

code

megvii-model/YOLOF (github.com)

data

Abstract

  • 本文回顾了用于单级探测器的特征金字塔网络(FPN),指出FPN的成功是由于其对目标检测中优化问题的分而治之的解决方案,而不是多尺度有限元融合。从优化的角度来看,我们引入了一种替代方法来解决这个问题,而不是采用复杂的特征金字塔——只利用一个级别的特征进行检测。基于简单而高效的解决方案,我们向您展示的仅是一级有限元(YOLOF)。在我们的方法中,提出了两个关键组件:扩展编码器和均匀匹配,并带来了相当大的改进。在COCO基准上的大量实验证明了该模型的有效性。我们的YOLOF在速度为2.5倍的情况下,实现了与特征金字塔对应的视网膜网相当的结果。在没有变压器层的情况下,YOLOF可以以单级特征的方式与DETR的性能相匹配,并且训练次数可以减少7倍。在图像大小为608×608的情况下,YOLOF在2080Ti上以60 fps的速度实现了44.3的mAP,比YOLOv4快13%。

1. Introduction

  • 在最先进的两级探测器[22,13,3]和一级探测器[23,38]中,特征金字塔成为必不可少的组成部分。构建特征金字塔最常用的方法是特征金字塔网络(FPN)[22],它主要带来两个好处:(1)多尺度特征融合:融合多个低分辨率和高分辨率特征输入,以获得更好的表示;(2) 分而治之 :根据物体的大小在不同层次上检测物体。FPN的一个普遍信念是,它的成功依赖于多层次特征的融合,从而引出了一系列研究,以手动设计复杂的融合方法[25,17,28],或通过神经架构搜索(NAS)算法[9,37]。然而,这种信念忽视了分而治之在FPN中的作用。这导致关于这两种益处如何促进FPN成功并可能阻碍新进展的研究较少。

image.png

  • 本文研究了FPN的两个优点对单级探测器的影响。我们通过将多尺度特征融合和分治功能与视网膜网去耦合来设计实验[23]。具体而言,我们将FPN视为一种多入多出(MiMo)编码器,它对来自背部骨骼的多尺度特征进行编码,并为解码器(检测头)提供特征表示。我们在图1中的多输入多输出(MiMo)、单输入多输出(SiMo)、多输入单输出(MiSo)和单输入单输出(SiSo)编码器之间进行受控比较。令人惊讶的是,SiMo编码器只有一个输入特征C5,不执行特征融合,可以实现与MiMo编码器(即FPN)的相似性能。性能差距小于1。相比之下,性能急剧下降(≥ 12)在MiSo和SiSo编码器中。这些现象表明了两个事实:(1)C5特征具有足够的上下文,可以在各种尺度上检测对象,这使得SiMo编码器能够获得可比的结果;(2) 多尺度特征融合的好处远不如分而治之的好处重要,因此多尺度特征融合可能不是FPN最显著的好处,ExFuse[50]在语义分割中也证明了这一点。再深入一步,分而治之与目标检测中的优化问题有关。它将复杂检测问题按对象规模划分为多个子问题,便于优化过程。

  • 上述分析表明,FPN成功的关键因素是它解决了目标检测中的优化问题。分而治之的解决方案是一个好办法。但它带来了记忆负担,减慢了探测器的速度,并使像视网膜网这样的单级探测器的结构变得复杂[23]。鉴于C5特征具有足够的检测上下文,我们展示了一种解决优化问题的简单方法。

  • 我们建议You Only Look One-level Feature (YOLOF), 它只使用一个C5特征(下采样率为32)进行检测。为了弥合SiSo编码器和MiMo编码器之间的性能差距,我们首先适当设计编码器的结构,以提取不同尺度上对象的多尺度上下文,弥补多尺度特征的不足;然后,我们采用一致匹配机制来解决单个特征中稀疏锚引起的正锚的不平衡问题

  • YOLOF没有花里胡哨的情况下,实现了与金字塔特征对应的Reti naNet[23]相媲美的效果,但速度快了2.5倍。以单一特征的方式,YOLOF与最近提出的DETR[4]的性能相匹配,同时收敛速度更快(7×)。使用608×608的图像大小和其他技术[1,47],YOLOF在2080Ti上以60 fps的速度实现了44.3 mAP,比YOLOv4[1]快13%。简言之,本文的贡献如下:

  • •我们表明,FPN最显著的优点是它对密集目标检测中的优化问题的分而治之的解决方案,而不是多尺度特征融合。

    •我们介绍了YOLOF,它是一种简单有效的基线,不使用FPN。在YOLOF,我们提出扩展编码器和均匀匹配这两个关键组件弥补了SiSo编码器和MiMo编码器之间的性能差距。

    •COCO基准测试的大量实验表明了每个组件的重要性。此外,我们还与RetinaNet[23]、DETR[4]和YOLOv4[1]进行了导管比较。我们可以在GPU上以更快的速度获得类似的结果。

Related Works

Multiple-level feature detectors

  • 采用多种特征进行目标检测是一种常规技术。构造多个特征的典型方法可以分为图像金字塔方法和特征金字塔方法。基于图像金字塔的检测器(如DPM[8])在深度学习前的检测领域占据主导地位。在基于CNN的探测器中,图像金字塔方法也赢得了一些研究人员[34,35]的赞誉,因为它可以实现更高的开箱即用性能。然而,图像金字塔方法并不是获得多个特征的唯一方法;在CNN模型中利用特征金字塔的力量更有效、更自然。SSD[26]首先利用多个比例特征,并针对不同比例的对象在每个比例上执行对象检测。FPN[22]遵循SSD[26]和UNet[33],通过结合浅层特征和深层特征构建语义丰富的特征金字塔。之后,有几部作品[17、25、9、37]遵循FPN,重点关注如何获得更好的表现。FPN已成为一个重要组件,并在现代设计中占据主导地位。它也适用于流行的单级探测器,如RetinaNet[23]、FCOS[38]及其变体[48]。获取特征金字塔的另一种方法是使用多分支和膨胀卷积[20]。与上述工作不同,我们的方法是一种单级特征检测器。

Single-level feature detectors

  • 早期,R-CNN系列[11,10,31]和R-FCN[6]只提取单个功能的RoI特征,而它们的性能落后于多个功能的对应功能[22]。此外,在单级检测器中,YOLO[29]和YOLOv2[30]只使用主干的最后一个输出功能。它们可以是super fast,但必须承受检测性能的下降。CornerNet[19]和CenterNet[51,7]遵循这种方式,在使用单一功能(下采样率为4)检测所有对象的同时,取得了竞争性的结果。使用高分辨率特征图进行检测会带来巨大的内存成本,而且不利于部署。最近,DETR[4]引入了变压器[39]进行检测,并表明仅使用一个C5功能即可实现最先进的结果。由于完全无anchor机制和transformer learning phase,DETR需要很长的训练时间才能收敛。长时间的训练计划特征对于进一步的改进来说很麻烦。与这些论文不同,我们研究了多级检测的工作机制。从优化的角度出发,我们为广泛使用的FPN提供了另一种解决方案。此外,YOLOF收敛速度更快,性能良好;因此,YOLOF可以作为快速准确探测器的简单基线。

3. Cost Analysis of MiMo Encoders(MiMo编码器的代价分析)

image.png

image.png

  • 如第1节所述,FPN在密集目标检测中的成功是因为它解决了优化问题。然而,多层次特征范式是不可避免的,它会使检测器变得复杂,带来记忆负担,降低检测器的速度。在本节中,我们对MiMo编码器的成本进行了定量研究。我们设计了基于视网膜网[23]和ResNet-50[14]的实验。具体来说,我们将检测任务的管道格式化为三个关键部分的组合:主干、编码器和解码器(图2)。在这个视图中,我们在图3中显示了每个组件的触发器。与SiSo编码器相比,MiMo编码器给编码器和解码器带来了巨大的内存负担(134G对6G)(图3)。此外,使用MiMo编码器的检测器运行速度比使用SiSo编码器的检测器慢得多(13 FPS vs.34 FPS)(图3)。速度慢是由于使用MiMo编码器在检测器的高分辨率有限元图上检测对象造成的,例如C3功能(下采样率为8)。鉴于MiMo编码器的上述缺点,我们的目标是找到一种替代方法来解决优化问题,同时保持检测器的简单、准确和快速。

4.Method

  • 出于上述目的以及C5特征包含足够的上下文来检测大量对象的发现,我们在本节中尝试用简单的SiSo编码器替换复杂的MiMo编码器。但是,根据图3中的结果,当应用SiSo编码器时,这种替换并不重要,因为性能会大幅下降。鉴于这种情况,我们仔细分析了阻碍SiSo编码器获得与MiMo编码器相当的性能的障碍。我们发现SiSo编码器带来的两个问题是导致性能下降的原因。第一个问题是,与C5特征的感受野相匹配的尺度范围有限,这阻碍了在不同尺度上对物体的检测性能。第二个问题是单级特征中稀疏anchor引起的正锚不平衡问题。接下来,我们将详细讨论这两个问题并提供解决方案。

4.1. Limited Scale Range

image.png

  • 在目标检测中,识别不同尺度的目标是一项有趣而艰巨的挑战。解决这一挑战的一个可行方法是利用多层次的特性。在带有MiMo或SiMo编码器的检测器中,它们构造了具有不同感受野(P3-P7)的多水平特征,并在感受野与其尺度匹配的水平上检测物体。但是,单级功能设置会改变游戏。SiSo编码器只有一个output feature,其感受野是一个常数。如图4(a).C5功能的感受野只能覆盖有限的范围,如果对象的范围与感受野不匹配,则会导致性能不佳。为了实现用SiSo编码器检测所有物体的目标,我们必须找到一种方法来生成具有各种感受野的output feature,以弥补多层次特征的不足。

  • 我们首先通过叠加的卷积操作和空洞卷积来扩大C5特征的感受野[45]。虽然覆盖比例范围扩大到了某种程度,但它仍然不能覆盖所有对象比例,因为放大过程将大于1的因子乘以所有原始覆盖比例。我们在图4(b)中说明了这种情况,与图4(a)中的情况相比,整个尺度范围向更大的尺度移动。然后,我们通过添加相应的特征,将原始的标度范围和放大的标度范围结合起来,得到一个输出特征,其中多个感受野覆盖所有对象标度(图4(c))。通过在中间的3×3卷积层上构造带有膨胀的residual blocks[14],可以很容易地实现上述操作

Dilated Encoder:

image.png

  • 基于以上设计,我们在图5中展示了我们的SiSo编码器,名为“Dilated Encoder”。它包含两个主要部件:Projector和the Residual Blocks。Projector层首先应用一个1×1卷积层来降低通道维数,然后添加一个3×3卷积层来细化语义上下文,这与FPN中的相同[22]。然后,我们在3×3卷积层中堆叠四个具有不同dilation rates的连续dilated residual blocks,生成具有多个感受野的输出特征,覆盖所有对象的尺度

Discussion:

  • 在目标检测中,Dilated convolution[45]是扩大特征感受野的常用策略。如第2节所述,TridentNet[20]使用dilated convolution生成多尺度特征。它通过多分支结构和权重共享机制来处理目标检测中的尺度变化问题,这与我们的单层特征设置不同。此外,Dilated Encode堆栈在不共享权重的情况下逐个扩展residual blocks。尽管DetNet[21]也成功地应用了扩展后的剩余块,但其目的是保持特征的空间分辨率,并在主干的输出中保留更多的细节,而我们的目的是生成一个具有多个主干接收场的特征。扩展编码器的设计使我们能够在单级特征上检测所有对象,而不是在TridentNet[20]和DetNet[21]等多级特征上。

4.2. Imbalance Problem on Positive Anchors

image.png

  • The positive anchor的定义对于目标检测中的优化问题至关重要。在基于anchor的detector中,定义正样本的策略主要是在anchor和ground truth box之间测量IOU。在RetinaNet[23]中,如果anchor和ground truth box的最大IoU大于阈值0.5,则该anchor将设置为正。我们称之为最大Iou匹配(Max-IoU matching)。
  • 在MiMo编码器中,anchor是以密集铺设的方式在多个层级上预定义的,而ground truth box根据其尺度在特征层级上生成正anchor。考虑到分治机制,最大IoU匹配使每个尺度中的ground-truth box能够生成足够数量的正anchor。然而,当我们采用SiSo编码器时,与MiMo编码器相比,锚的数量大幅减少,从100k减少到5k,导致稀疏anchors。稀疏anchors在应用最大IoU匹配时会给检测器带来匹配问题,如图6所示。大的ground-truth box比小的ground-truth box产生更多的positive anchors,这会导致positive anchors的不平衡问题。这种不平衡使得探测器在训练时只关注大的ground-truth box,而忽略了小的ground-truth box。

Uniform Matching:

  • 为了解决positive anchor中的这种不平衡问题,我们提出了一种Uniform Matching策略,即:采用k个最近的anchor作为每个ground-truth box的positive anchors,这确保所有ground-truth box可以与相同数量的positive anchor一致匹配,而不管它们的大小(图6)。正样本中的平衡确保所有ground-truth box都参与培训并做出同等贡献。在最大IoU匹配[23]之后,我们在均匀匹配中设置IoU阈值,以忽略大IoU(>0.7)负活动锚和小IoU(<0.15)positive anchor。

Discussion: relation to other matching methods

  • 在匹配过程中应用topk并不是什么新鲜事。ATSS[48]首先为L特征级别上的每个ground truth box选择topk锚,然后通过动态IoU阈值在k×L 候选中采样positive anchor。然而,ATSS侧重于自适应地定义正和负,而我们的统一匹配侧重于在具有稀疏anchor的正样本上实现平衡。尽管有几种预处理方法在正样本上实现了平衡,但它们的匹配过程并不是针对这种不平衡问题设计的。例如,YOLO[29]和YOLOv2[30]将地面真相框与最佳匹配单元或锚匹配;DETR[4]和[36]采用匈牙利算法[18]进行匹配。这些匹配方法可以被视为top1匹配,这是我们统一匹配的一个具体案例。更重要的是,统一匹配和学习匹配方法之间的区别在于:学习匹配方法,如FreeAnchor[49]和PAA[16],根据学习状态自适应地将anchor分为正面和负面,而uniform matching是固定的,不会随着训练而演变。在SiSo设计下,提出了均匀匹配来解决正锚上的特定嵌入问题。图6中的比较和表5e中的结果证明了SiSo编码器中正平衡的重要性。

4.3. YOLOF

  • 基于上述解决方案,我们提出了一个快速而简单的框架,具有单级功能,称为YOLOF。我们将YOLOF格式化为三个部分:主干、编码器和解码器。YOLOF的草图如图9所示。在本节中,我们将简要介绍YOLOF的主要组件。

image.png

  • backbone:我们只需采用ResNet[14]和ResNeXt[43]系列作为主干。所有模型都在ImageNet上接受了预先培训。主干网的输出是C5特征图,它有2048个通道,下采样率为32。为了与其他检测器进行公平比较,主干中的所有batchnorm层默认都是冻结的。 image.png

  • Encoder。对于编码器(图5),我们首先遵循FPN,在主干之后添加两个投影层(一个1×1和一个3×3卷积),生成一个包含512个通道的特征图。然后,为了使编码器的输出特性能够覆盖不同尺度上的所有对象,我们添加由三个连续卷积组成的residual block:第一个1×1卷积以4的缩减率应用通道缩减,然后使用3×3卷积和膨胀来扩大感受野,最后,使用1×1卷积来恢复通道数。

  • Decoder。我们采用了RetinaNet的主要设计,它由两个并行的任务特定头组成:分类头和回归头(图9)。我们只添加了两个小的修改。第一个是我们遵循DETR[4]中FFN的设计,使两个头中的卷积层数不同。在回归头上有四个卷积,然后是batch normalization layers和ReLU层,而在分类头上只有两个。第二,我们遵循Autoassign[52],并为回归头上的每个anchor添加隐式对象性预测(无需直接监督)。所有预测的最终分类分数是通过将分类输出与相应的隐式对象性相乘而生成的。

  • 其他细节。如前一节所述,YOLOF中预定义的锚非常稀疏,降低了锚和地面真相盒之间的匹配质量。为了避免这个问题,我们在图像上添加了一个随机移位操作。该操作在左、右、上、下方向上随机移动图像,最多32个像素,目的是将噪声注入对象在图像中的位置,增加地面真值框与高质量锚匹配的概率。此外,我们还发现,当使用单级特征时,对锚的中心移动的限制也有助于最终分类。我们增加了一个限制,即所有锚点的中心偏移应小于32像素。

5. Experiments