YOLOF论文解读


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

摘要

本文指出FPN的成功是由于对目标检测优化问题实行分而治之的方法,而不是多尺度融合。
因此本文去掉了FPN结构,采用更加简单高效的方案。主要有两个关键结构–Dilated Encoder and Uniform Matching。
COCO数据集上的实验证明了YOLOF的有效性,它获得了和有特征金字塔版本相当的结果但是速度快了2.5倍。此外,在没有Transformer层的前提下,YOLOF可以和同样使用单层特征图的DETR媲美且训练轮次少了7倍。

介绍

回顾下FPN的样子:
在这里插入图片描述
该结构由C2-C5输出一个分支,然后每个分支都进行1×1卷积,由C5到C2进行上采样,然后四个分支除了C5之外都进行3×3卷积,然后输出。
采用FPN的好处:
1.多尺度融合,融合多个低分辨率和高分辨率特征的输入,以获得更好的表达,
2.分而治之,依据目标的不同尺度在不同级别的特征图上检测目标。
而大众普遍认为FPN的成功依赖于多尺度特征融合,从而引出了一系列研究,却忽略了分治的作用。
本文对比分析了多入多出(MIMO)、单入多出(SIMO )、多入单出(MISO)和单入单出(SISO),如下图所示。
在这里插入图片描述
由上图可见,(a)多进多出就是平时所见的FPN,而由对比可见只使用一个C5得到的精度与原来的FPN精度只相差了1%。
因此得到的结论:
1.C5有足够多的上下文来检测各种尺度的对象。(PS:就是说C5上储存的信息已经足够多,可以用于检测多尺度对象)
2.第二,多尺度特征融合带来的收益要远远小于分治策略带来的收益,因此多尺度特征融合在FPN不是最关键的功能。

FPN关键的成功因素其实是对目标检测优化问题的解决方案,分治策略是一个好的方式,然而,它也带来了比较大的内存负担,降低了检测器速度并且使得单阶段检测器的结构比较复杂。考虑到C5特征图其实已经包含了足够的信息用于目标检测,那么有没有更加优雅的方式处理优化问题呢?这就诞生了这篇论文提出的You Only Look One-level Feature(YOLOF),这是一个新的只使用32倍下采样的C5特征图的目标检测框架。为了弥补SiSo编码器和MiMo编码器之间的性能差距,作者首先对编码器的结构进行了适当的设计,以提取不同尺度目标的多尺度上下文特征,弥补多尺度特征的不足;然后,作者采用均衡匹配机制来解决单特征图中稀疏anchor引起的正样本不平衡问题。

MiMo编码器分析

在这里插入图片描述
看上图,对比RetinaNet可见(最左面两个),使用MIMO结构和SISO对比,MIMO结构会消耗大量的内存,同时MIMO的速度也很慢。同时虽然SISO的速度快,内存开销低,但是精度却只有23.7%,相较于MISO35.9%的精度,得不偿失。
对比RetinaNet-SISO以及YOLOF-SISO相比,YOLOF消耗的内存略少且速度持平。同时精度可以达到37.7%,比RetinaNet-SISO的24.6%高,跟RetinaNet-MISO的35.9%也相差不大。
那么为什么在RetinaNet对比时,SISO的效果不好呢?
原因1:C5的感受野匹配的尺度范围有限。
原因2:由于单级特征图上稀疏anchor生成策略造成的正样本不均衡问题。
下面由这两个问题阐述所提算法。

感受野受限问题

检测尺度变化范围较大的目标在目标检测领域是个比较重要的问题,一个可行的方案就是利用多级特征图。在MiMo结构和SiMo结构中,它们从不同感受野(P3-P7)的特征图构建多级特征并在和感受野匹配的尺度的感受野级别特征图上进行目标的检测。但是,单级别特征图使得玩法变得不一样了,SiSo结构中只会输出固定感受野的单级别的特征图。如下图的(a)所示,C5级别的特征图只能覆盖一个受限的感受野,当目标的尺度和感受野不匹配时,检测效果就会很差。
在这里插入图片描述

因此,必须找到一个方案让SiSo结构输出多感受野的特征图。作者首先通过堆叠标准卷积和膨胀卷积增大感受野。这样,虽然覆盖尺度范围得到了一定程度的扩大,但仍然不能覆盖所有的目标尺度,因为扩大过程相当于将一个大于1的因子乘以原来覆盖的所有尺度。这个策略可以通过上图的(b)来可视化,它其实是发生了偏移和扩大。此时,将原始特征图和扩大感受野的特征图加到一起,就能得到覆盖所有目标尺度的特征图了,如上图的©所示。这个过程其实可以通过残差连接构造膨胀模块实现,称为Dilated Encoder。

上面这两段不想看也无妨,就是讲了SISO感受野受限的问题。下面看下作者怎样改动的吧!
在这里插入图片描述
Dilated Encoder:
为解决C5无法表达多尺度感受野的问题,在这里做了扩大感受野的处理。首先进行了projector,然后来了四个Residual Blocks,最后输出P5.
分别介绍下这两个组件:
1.projector:1×1卷积降维,加3×3卷积细化语义上下文。这一块与FPN相同。
2.Residual Block块:堆叠四个Residual Block块,这里的四个部分都采用了具有不同的膨胀率的膨胀卷积,以生成不同的感受野。
对于MISO、SIMO、MISO、SISO可能还有人有疑惑,可以看下这个图。
在这里插入图片描述
(a)是MIMO就是平时经常用的FPN结构,(b)是SIMO,少进多出结构,后面也可以很简单看出来。主要是(d),这里C5的结构,就是我们上面所说的projector,4个residual blocks部分。

正样本不均衡

这里参考(https://blog.csdn.net/Yong_Qi2015/article/details/115019103
正锚点的定义对于目标检测中的优化问题尤其重要。在基于锚点的检测方案中,正锚点的定义策略主要受锚点与真实box之间的IoU决定。在RetinaNet中,如果IoU大于0.5则锚点设为正。作者称之为Max-IoU matching。

在MiMoEncoder中,锚点在多级特征上以稠密方式进行预定义,同时按照尺度生成特征级的正锚点。在分而治之的机制下,Max-IoU匹配使得每个尺度下的真实Box可以生成充分数量的正锚点。然而,当作者采用SiSoEncoder时,锚点的数量会大量的减少(比如从100K减少到5K),导致了稀疏锚点。稀疏锚点进一步导致了采用Max-IoU匹配时的不匹配问题。以下图为例,大的目标框包含更多的正锚点,这就导致了正锚点的不平衡问题,进而导致了检测器更多关注于大目标而忽视了小目标。
在这里插入图片描述
为解决上述正锚点不平衡问题,作者提出了Uniform Matching策略:对于每个目标框采用k近邻锚点作为正锚点,这就确保了所有的目标框能够以相同数量的正锚点进行均匀匹配。正锚点的平衡确保了所有的目标框都参与了训练且贡献相等。在实现方面,参考了Max-IoU匹配,作者对Uniform matching中的IoU阈值进行设置以忽略大IoU负锚点和小IoU正锚点。

YOLOF

在这里插入图片描述
基于上述的两种解决方案,作者提出了一种只使用单级别特征图的简单目标检测框架,YOLOF,它包含三个主要部分:backbone、encoder、decoder。

backbone作者还是采用经典的ResNet和ResNeXt,选取的特征图是C5,通道数为2048且下采样率为32。关于encoder的大致思路,上面已经说明了,这里详细说一下结构。首先,和FPN类似,对backbone的输出使用两个投影层(由1x1卷积和3x3卷积组成),得到通道数为512的特征图。然后,为了获得全尺度感受野,作者这里使用了一种残差模块,它由三个卷积组成,第一个1x1卷积通道减少4倍,然后一个3x3膨胀卷积用于增大感受野,最后的1x1卷积恢复通道维度,这个残差块会重复四次。

至于decoder,则和RetinaNet类似,它包含两个并行的head分支,用于目标分类和边框回归任务。作者这里主要做了两个改动,第一,是按照DETR中FFN的设计,使得两个head卷积层数目不同。在回归分支中,是四个卷积层加上BN层和ReLU层,而在分类分支中只有两个卷积层。第二,依据Autoassign,为回归分支的每个anchor增加一个隐式的objectness(没有直接监督),最终的分类置信度由分类分支的输出和objectness得分相乘得到。

此外,作者还做了一些类似数据增强等策略,这里就不细说了,感兴趣可以参考原论文。

实验

首先是和RetinaNet进行比较,作者这里对RetinaNet做了加强以公平比较,实验结果如下图,精度和速度提升是非常恐怖的。

在这里插入图片描述

也和DETR以及YOLOv4进行了对比,结果如下。
在这里插入图片描述
在这里插入图片描述

此外,作者也进行了各个模块有效性的消融实验,我这里就不贴了,感兴趣可以查看原论文。
PS:后面作者还是做了很多实验的,可以参考。

总结:

本文就是刷新了下大家对FPN的看法,通常都是认为将FPN用于多尺度特征融合,但是本文作者发现,FPN起作用主要是他的分治作用,因此本文针对这一问题,做了实验对比,并提出了不错的结构。
但是有个疑问就是,这个模型对于大目标的图像而言,肯定是有益处的,因为C5本身就是用于检测大目标的部分,但是本文在C5部分采用不同膨胀率的空洞卷积,这样做,无疑加大了感受野,更有利于大目标检测了。但是对小目标的检测部分却不太友好。

参考

https://zhuanlan.zhihu.com/p/359472549
https://blog.csdn.net/Yong_Qi2015/article/details/115019103

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值