YOLOF精读【CVPR2021】

YOLOF

You Only Look One-level Feature

1 Prev

YOLOF全称You Only Look One-level Feature(只看一层特征),是收录于CVPR2021的目标检测文章。因为之前研究遥感图像的细粒度目标检测用的就是YOLO算法(v5s、v5l等),所以一看文章标题很感兴趣,但实际上这篇文章跟YOLO一点关系没有,而是基于特征金字塔网络(FPN)做的理论验证工作。
这其实也是YOLOF的一大亮点,对以往工作中习以为常的原理进行深入地探究,得到了与我们预期不同的结论,并且能够基于自己的新发现进行改进。

看似寻常最奇崛,成如容易却艰辛。

论文地址

https://arxiv.org/abs/2103.09460

论文源码

https://github.com/megvii-model/YOLOF

2 Abstract&Intro

2.1 FPN

FPN为研究者称赞的两点优势:1)multi-scale feature fusion:多尺度的特征融合,能够将高层的低分辨率和底层的高分辨率的特征融合从而获得抽象的表示;2)divide-and-conquer:分治策略,对不同尺度的物体在不同的特征图上进行检测。
在这里插入图片描述

2.2 解耦实验

得益于以上两点,FPN确为one-stage目标检测和anchor-free目标检测做出了突出贡献。但是YOLOF指出FPN最成功的地方在于对优化问题的分治策略,而非大多数研究者所认为的多尺度特征融合。作者通过设计实验解耦多尺度特征融合和分治两部分:

具体而言,将FPN视作一个多进多出(MiMo)编码器,它从backbone编码多尺度特征并且为解码器提供特征表示,并将其与单进多出(SiMo)、多进单出(MiSo)和单进单出(SiSo)编码器进行了对比实验,结果如下图。

在这里插入图片描述

通过设计对比实验得出以下结论:1)ab与cd输出结构分别是multipl-out、single-out,相同输出结构下的区别仅在于输入特征图尺度的不同,即是否存在多尺度特征融合。通过ab(或cd)之间的对比可以看出,多尺度融合带来的提升达不到1mAP;2)ac与bd的输入结构分别是multiple-in、single-in结构,相同输入结构下的区别在于输出特征图尺度不同,即是否存在分治策略对不同尺度的物体进行检测从而得到多尺度输出。通过ac(或bd)之间的对比可以看出,分治策略带来的提升超过10mAP

2.3 解耦实验结论

我想我们已经发现了一个令人惊讶的现象,SiMo编码器竟然获得了几乎媲美MiMo编码器的表现,而So结构则有非常大的性能下降。这些实验表明了两个事实:1)C5特征图已经包含了用于检测不同尺度目标的上下文信息,这也是SiMo表现优异的原因;2)多尺度特征融合带来的收益远小于分治策略的收益,所以多尺度特征融合并非FPN的关键得分点!

3 Cost Analysis

上文提到FPN作为MiMo结构的代表,成功将分治策略应用到优化问题中,但是FPN固有的多层特征图的处理方式不可避免地增加了计算和内存负担。所以作者接下来基于RetinaNet将检测任务分为了三部分:Backbone、Encoder、Decoder,对MiMo编码器进行了定量分析。

利用Backbone、Encoder、Decoder这3个组件分别实验,得到下图结果:
在这里插入图片描述

左纵轴的数据表明,Backbone所带来的内存开销是相同的,但MiMo结构给Encoder和Decoder带来了巨大的内存开销,而SiMo结构的内存开销则少得多;右边纵轴数据表明,MiMo结构的模型运行速度也要显著低于SiSo,作者认为是高分辨率特征图C3给MiMo带来了运行负担。

既然MiMo存在如此大的劣势,我们自然而然地想到,参考SiMo的优势对MiMo结构进行优化,保证改进后的检测器高速和高效,这就是下一节作者所提出的方法。

4 Methods

受上述目标驱动,作者尝试使用SiSo结构替换MiMo,但是这种替换并非易事,因为上述的实验结果已经表明将MiMo替换为SiSo后性能会骤降。对于这种结果,作者仔细分析后得出以下两个原因:

1)与C5特征图感受野匹配的目标尺度范围是有限的,阻碍了不同尺度目标的检测;
2)anchor生成策略造成正样本不均衡。接下来,作者针对这两个问题进行讨论并提出对应的解决方案。

4.1 Dilated Encoder

在这里插入图片描述

上图中绿色的点表示数据集中的多种目标尺寸,粉红色的区域代表特征能够有效表达的目标尺寸范围。

C5特征图虽然包含一定范围的尺度信息,但是尺度信息有限,如上图(a)所示;
如果使用空洞卷积(DilatedConv)代替原本的卷积核,则会出现尺度平移的问题,无法检测小尺度目标,如上图(b)所示;
作者提出了Dilated Encoder,该结构能够融合多尺度的感受野,从而能检测多种尺寸范围的目标,达到上图(c)所示的效果。

Dilated Encoder将Backbone输出的C5特征作为输入,具体流程:1x1卷积(减少通道数目)->3x3卷积(精炼语义信息,这两个操作借鉴FPN)->4个连续的扩张率不相同的残差单元(通过调整扩张率的超参可以使得残差单元在one-level feature中包含多种感受野尺度)->融合不同尺度的特征(使得网络能够应对不同尺度的任务)

4.2 Uniform Matching

Positive anchors的定义决定目标检测的优化方向。在anchor-base的方法中,positive anchors是基于pre-anchor和gt-anchor之间的IoU进行的,如RetinaNet将IoU大于0.5的pre-anchor认定为positive anchors,这种策略称为Max-IoU匹配。
在这里插入图片描述

在MiMo结构中,pre-anchor在多级特征图中分别产生,并通过与gt-anchor间的IoU产生positive anchors;但采用SiSo结构时,anchor的数量从100k锐减至5k,导致anchor非常稀疏,从而导致大尺度的gt-anchor会产生更多的positive anchors,导致检测器过于关注大尺度的anchor,从而造成positive anchors不平衡的问题。

为解决上述positive anchors不平衡问题,作者提出了Uniform Matching的策略:将每个gt-anchor的k个最近的anchor作为positive anchor,这就确保了所有的目标框能够以相同数量的positive anchor进行均匀匹配。positive anchor的平衡确保了所有的目标框都参与了训练且贡献相等。

5 YOLOF

基于上述的两点改进,作者提出了一种只使用one-level feature的简单目标检测框架:YOLOF。它包含三个主要部分:Backbone、Encoder、Decoder。
在这里插入图片描述

Backbone作者采用的是经典的ResNet和ResNeXt,选取C5特征图作为Backbone的特征输出(通道数为2048且下采样率为32);Encoder包含两部分:Projector和Residual Blocks,Projector用于精炼C5的特征信息,Residual Blocks用于获得全尺度的感受野;Decoder则与RetinaNet类似,包含两个并行的head,分别用于分类和回归。此外,作者还针对他们的结构做了的两个改动:1)按照DETR中FFN的设计,使得两个head卷积层数目不同。2)依据Autoassign,为回归分支的每个锚框增加一个隐式的objectness预测,最终的分类置信度由分类分支的输出和objectness得分相乘得到。

6 Experiment

6.1 不同Backbone情况下和RetinaNet进行比较

在这里插入图片描述

实验结果表明:1)YOLOF取得了与RetinaNet+相同的性能,同时推理速度更快,计算量更少;2)YOLOF取得了47.1 mAP的多尺度目标检测得分,且在小尺度目标检测方面取得了性能突出的31.8mAP的得分。

6.2 基于COCO2017与DETR进行比较

在这里插入图片描述

实验结果表明:1)YOLOF在小尺度目标检测方面的表现优于DETR;2)YOLOF要比DETR快接近7倍,使得YOLOF更适合作为One-level feature目标检测任务的基线。

7 参考

YOLOF:You Only Look One-level Feature(CVPR 2021)
YOLOF解读
YOLOF:You Only Look One-level Feature

OVER

猜你喜欢

转载自blog.csdn.net/weixin_43427721/article/details/122313110