目标检测论文阅读:YOLOF算法笔记

标题:You Only Look One-level Feature
会议:CVPR2021
论文地址:https://ieeexplore.ieee.org/document/9578360/
被标题骗了,这篇文章和YOLO系列其实一点关系都没有。这篇文章的切入点很巧妙,在精心设计FPN的时代另辟蹊径,指出FPN复杂的特征融合并不是取得高效检测的关键。YOLOF简单的结构可以作为baseline给后续研究带来启发,不过在mmdetection中用该算法似乎不太稳定,官方代码也被指出了这个问题,或许这也是文中实验实施细节那么多的原因吧。

Abstract

本文重新审视了单阶段检测器中的特征金字塔网络(FPN),并指出FPN的成功是由于其对目标检测优化问题的分治解决方案,而不是多尺度特征融合。从优化的角度出发,我们引入了一种替代的方法来解决这个问题——只用单层特征实现检测,而不是采用复杂的特征金字塔。基于这种简单高效的解决方案,我们提出了YOLOF。我们的方法提出了两个关键组件:空洞编码(Dilated Encoder)和均衡匹配(Uniform Matching),并且带来了很大提升。在COCO上的大量实验证明了所提出的模型的有效性。我们的YOLOF取得了和对应FPN版本的RetinaNet相当的结果,同时速度提高了2.5倍。在没有transformer层的情况下,YOLOF可以用7倍少的训练epoch数,获得和单层特征方式下的DETR相当的性能。

1. Introduction

特征金字塔已经成为SOTA检测器不可或缺的组成部分。构建特征金字塔最常见的方法是特征金字塔网络(FPN),它主要可以带来两个收益(benefits):①多尺度特征融合:融合多个低分辨率和高分辨率的输入特征来获得更好的表示;②分而治之:根据目标的尺度来用不同层进行检测。此前普遍的共识是,FPN的成功之处在于其进行了多层特征融合,这引起了一系列通过手动或用NAS算法来设计更加复杂融合方法的研究。然而,这种共识忽略了FPN中的分治操作。这导致很少有人研究上述的两个收益分别给FPN的成功带来了怎样的贡献,并可能阻碍新的进展。
本文研究了单阶段检测器中FPN的这两个收益。我们通过把Retinanet中的多尺度特征融合和分治操作解耦来设计实验。具体来说,我们把FPN看做一个多进多出(Multiple-in-Multiple-out,MiMo)编码器,它把来自主干的多尺度特征进行编码,并为解码器(检测头)提供特征表示。我们对多进多出(Multiple-in-Multiple-out,MiMo)、单进多出(Single-in-Multiple-out,SiMo)、多进单出(Multiple-in-Single-out,MiSo)和单进单出(Single-in-Single-out,SiSo)编码器进行了对照比较,如图1所示。出乎意料的是,只有单层输入特征C5没有特征融合的SiMo编码器可以取得和MiMo编码器(比如FPN)相当的表现,它们之间的差距小于1mAP。相比之下,MiSo和SiSo编码器的性能急剧下降(超过12mAP)。这些现象说明了两个事实:①C5特征携带了足够的可以用于检测不同尺度目标的上下文信息,这使得SiMo编码器能够获得相当的结果;②多尺度特征融合的收益不如分而治之的收益那么关键,多尺度特征融合可能并不是FPN最重要的收益,这在语义分割中也被证明过。深入思考,分而治之与目标检测中的优化问题有关。它根据目标的尺度把复杂的检测问题划分成多个子问题,便于优化过程。
在这里插入图片描述
上述分析表明FPN成功的根本因素是其解决了目标检测中的优化问题。分而治之的解决方案就是一种很好的方式。但这在RetinaNet等单阶段检测器中带来了内存负担,使检测器速度变慢,结构变得复杂。考虑到C5特征已经携带足够的上下文信息用于检测,我们提出了一种简单的方法来解决优化问题。
我们提出了仅使用一层C5特征(下采样率为32)的YOLOF进行检测。为了弥补SiSo编码器和MiMo编码器的性能差距,我们首先对编码器的结构进行了适当设计,以提取不同尺度目标的多尺度上下文,弥补和多层特征之间的差距;然后,我们使用均衡匹配机制来解决单层特征中稀疏锚框引起的正锚框不平衡问题。
在不加tricks的情况下,YOLOF在速度提高了2.5倍的同时取得了与具有特征金字塔的RetinaNet相当的结果。但单一特征方式下,YOLOF与最近提出的DETR性能相当,并且收敛速度快了7倍。本文的贡献如下:
我们证明了FPN最重要的收益是其对密集目标检测中优化问题分而治之的解决方案,而不是多尺度特征融合。
我们提出了一种不使用FPN的简单高效的基线方法,YOLOF。在YOLOF中,我们提出了两个关键组件:空洞编码和均衡匹配,弥补了SiSo编码器和MiMo编码器之间的性能差距。
在COCO基准上的大量实验表明了每个组件的重要性。此外,我们还与RetinaNet和DETR进行了比较。我们可以在GPU上以更快的速度实现相当的结果。

2. Related Works

多层特征检测器:利用多特征的典型方法可以分为图像金字塔方法和特征金字塔方法。
单层特征检测器:大都是一些比较老的方法,CornerNet和CenterNet内存消耗大,DETR的训练时间很长。

3. Cost Analysis of MiMo Encoders

正如第一节提到的,FPN在密集目标检测中的成功受益于其对优化问题的解决方案。然而,多层特征范式会不可避免地给检测器带来内存负担,使检测器变得更复杂更慢。本节我们对MiMo编码器的消耗进行了定量研究。
在这里插入图片描述
我们基于ResNet-50的RetinaNet设计了实验。具体来说,我们把检测任务pipeline当作三个关键部分的组合:主干、编码器和解码器(图2)。鉴于此,我们在图3中展示了每个部分的FLOPs。与SiSo编码器相比,MiMo编码器给编码器和解码器带来了巨大的内存负担(134G vs 6G)。此外,采用MiMo编码器的检测器运行速度要远低于采用SiSo编码器的检测器(13 FPS vs 34 FPS)。速度慢是因为使用MiMo编码器的检测器会检测高分辨率特征图上的目标,比如C3特征层(下采样率为8)。鉴于MiMo编码器的上述缺点,我们旨在寻找一种替代的方法来解决优化问题,同时保持检测器简单、准确和快速。
在这里插入图片描述

4. Method

受上述内容启发,并且考虑到C5特征包含了足够的上下文来检测大量目标,本节尝试将复杂的MiMo编码器替换为简单的SiSo编码器。但是根据图3的结果,这种替换是nontrivial的,因为在使用SiSo编码器时,性能会大幅下降。鉴于此,我们仔细分析了阻碍SiSo编码器获得与MiMo编码器相当性能的障碍所在。我们发现了导致SiSo编码器性能下降的两个问题所在。第一个问题是与C5特征感受野匹配的尺度范围有限,阻碍了对不同尺度目标的检测性能。第二个问题是单层特征上稀疏锚框带来的正锚框不平衡问题。

4.1 Limited Scale Range

识别不同尺度的目标是目标检测中的一个基本挑战。解决这一挑战的一个可行方案是利用多层特征。在使用MiMo或SiMo编码器的检测器中,它们构建具有不同感受野的多层特征(P3-P7),并在感受野与其尺度匹配的层次上检测目标。然而,只使用单层特征没法做到这点。SiSo编码器只有一个输出特征,其感受野为常数。如图4a所示,C5特征的感受野只能覆盖有限的尺度范围,当目标的尺度与感受野不匹配时,就会导致性能变差。为了使SiSo编码器检测到所有目标,我们必须找到一种方法来生成具有不同感受野的输出特征,以弥补和使用多级特征的差距。
在这里插入图片描述
我们首先把标准卷积和空洞卷积堆叠起来,扩大C5特征的感受野。尽管覆盖的尺度范围得到了一定程度的扩大,但由于该过程相当于对所有原本被覆盖的尺度乘以一个大于1的系数,因此仍然无法覆盖所有目标的尺度。如图4b所示,该方法相当于把图4a中的整个尺度范围向更大的尺度进行了偏移。然后,我们通过增加相应的特征,也就是把原始尺度范围和扩大尺度范围结合起来,得到一个具有多个感受野的输出特征,覆盖所有目标的尺度,如图4c所示。上述操作可以通过在中间的3 × 3卷积层中构建空洞残差块来轻松实现。
空洞编码器:基于上述设计,我们提出了图5中的SiSo编码器,命名为Dilated Encoder。它包含两个主要组成部分:Projector和Residual Blocks。projection层首先使用一个1 × 1卷积层来减少通道数,然后使用一个3 × 3卷积层来精细化上下文语义,这和FPN中一样。最后,我们堆叠4个连续的扩张率不同的空洞残差块来生成具有多个感受野的输出特征,该特征覆盖了所有目标的尺度。
讨论:空洞卷积是目标检测中增加特征感受野的常用手段。如第2节所述,TridentNet使用空洞卷积生成多尺度特征。它通过多分支结构和权重共享机制来处理目标检测中的尺度变化问题,这与我们设置的单层特征不同。此外,空洞编码器在不共享权重的情况下逐个堆叠空洞残差块。虽然DetNet也逐个使用空洞残差块,但其目的是为了保持特征的空间分辨率,并在主干输出中保留更多的细节信息,而我们是要在主干后生成一个具有多个感受野的特征。空洞编码器的设计使得我们可以在单层特征上检测所有目标,而不是在TridentNet和DetNet的多层特征上。

4.2 Imbalance Problem on Positive Anchors

正锚框的定义对于目标检测中的优化问题至关重要。在anchor-based检测器中,定义正样本的方式主要是通过计算锚框和真值框之间的IoU。在RetinaNet中,如果锚框和真值框的最大IoU大于阈值0.5,则将该锚框设置为正样本。我们称之为Max-IoU匹配。
在MiMo编码器中,锚框以密集平铺的方式在不同层上进行预定义,真值框在其对应尺度的特征层上生成正样本。在分治策略下,Max-IoU匹配使得每个尺度下的真值框都能产生足够数量的正样本。然而,当我们采用SiSo编码器时,锚框数量与MiMo编码器相比大幅减少,从100k减少到5k,导致稀疏锚框(在SiSo编码器中,我们将多层特征上的多个锚框简单地压缩到单层,例如在C5特征的每个位置上构建5个大小不同的锚框,尺寸分别是:{ 32,64,128,256,512 })。稀疏锚框在使用Max-IoU匹配时就会给检测器带来匹配问题,如图6所示。大的真值框比小的真值框产生了更多正样本,这就造成了正样本不平衡的问题。这种不平衡使得检测器在训练时更关注大的真值框而忽略了小的真值框。
在这里插入图片描述
均衡匹配:为了解决正锚框不平衡的问题,我们提出一种均衡匹配策略:将k个最近的锚框和k个最近的预测框标记为每个真值框的正样本,保证所有的真值框不论大小如何都能与相同数量的正锚框均匀匹配(图6)。正样本平衡保证了每个真值框都能参与到训练中并且平等地产生贡献。此外,借用Max-IoU匹配,我们在均衡匹配中忽略掉大IoU(>0.7)的负锚框和小IoU(<0.15)的正锚框。
讨论:和其他匹配方法的关系。在匹配过程中使用topk并不算新颖。ATSS首先在L个特征层上为每个真值框选择topk个锚框,然后通过动态IoU阈值在k × L个候选框中采样正锚框。然而,ATSS侧重于自适应地定义正负样本,而我们的均匀匹配侧重于在稀疏锚框的正样本上取得平衡。虽然此前有几种方法在正样本上实现了平衡,但是它们的匹配过程并不是针对上述不平衡问题设计的。例如,YOLO和YOLOv2将真值框与最佳的cell或anchor进行匹配;DETR使用匈牙利算法进行匹配。这些匹配方法可以视为top1匹配,是均衡匹配的一个特例。更重要的是,均匀匹配和学习匹配方法的区别在于:学习匹配方法(如FreeAnchor和PAA)是根据学习状态自适应地将锚框分为正样本和负样本,而均匀匹配是固定的,不随训练发生变化。均匀匹配是针对SiSo设计下的特殊的正锚框不平衡问题提出的。图6和表4e的对比结果证明了SiSo编码器正样本平衡的重要性。

4.3 YOLOF

基于上述方法,我们提出了一个简单高效的单层特征检测框架,YOLOF。我们把它分为三个部分:主干、编码器和解码器。图2是YOLOF的草图。
主干。在所有模型中,我们简单地采用Res Net和ResNeXt系列作为主干。所有模型均在ImageNet上进行预训练。主干的输出是有2048个通道、下采样率为32的C5特征图。为了与其他检测器进行公平的比较,默认冻结主干中的所有批标准化层。
编码器。对于编码器(图5),我们首先沿用FPN,在主干后面增加两个projection层(一个1 × 1卷积和一个3 × 3卷积),得到512通道的特征图。然后,为了使编码器的输出特征能够覆盖各个尺度上的所有目标,我们提出加入残差块,残差块由三个连续的卷积组成:第一个1 × 1卷积使用用来减少通道数,减少率为4,然后使用一个3 × 3的空洞卷积来扩大感受野,最后使用一个1 × 1卷积来恢复通道数。
解码器:对于解码器,我们采用RetinaNet的主要设计,它由两个并行的特定任务的头组成:分类头和回归头。我们只增加了两个小的改动。第一,我们沿用了DETR中FFN的设计,使两个头的卷积层数不同。在回归头中有四个紧接批标准化层和ReLU层的卷积层,而在分类头上只有两个卷积层。第二,我们沿用Autoassign,为回归头上的每个锚框增加一个隐式的客观预测(无直接监督)。所有预测的最终分类分数由分类输出与对应的隐式客观预测相乘得到。
其它细节。如上一节所述,YOLOF中预定义的锚框是稀疏的,降低了锚框与真值框的匹配质量。我们在图像上增加随机平移操作来避免这一问题。该操作将图像在左、右、上、下4个方向上随机移动至多32个像素,目的是向图像中目标的位置注入噪声,增加真值框与高质量锚框匹配的概率。此外,我们发现在使用单层特征时,限制锚点中心的偏移也有助于最终的分类。因此我们增加了一个限制,即所有锚框中心的偏移要小于32像素。

5. Experiments

具体实施细节可以参考原文。

5.1 Comparison with previous works

在这里插入图片描述
在这里插入图片描述
和RetinaNet、DETR相比,YOLOF具有更优越的性能。尤其是在检测大目标上,提升明显(但是比不上DETR)。具体的实验结论可以参照原文。

5.2 Ablation Experiments

在这里插入图片描述
在这里插入图片描述
做了6个方面的消融实验,实验的设计思路和结果分析都很直观,具体的实验结论可以参照原文。

6. Conclusion

在本工作中,我们发现FPN的成功是由于其对密集目标检测中的优化问题的分而治之的解决方案。考虑到FPN会使网络结构变得复杂,带来内存负担,降低检测器的速度,我们提出了一种简单但高效的方法,不使用FPN对优化问题进行不同的处理,记为YOLOF。我们通过与RetinaNet和DETR进行公平比较来证明其有效性。我们希望我们的YOLOF可以作为一个坚实的基线,并在未来的研究中为设计单层特征检测器提供参考。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Frankenstein@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值