YOLOF论文阅读
论文名称:You Only Look One-level Feature
论文链接:https://arxiv.org/pdf/2103.09460.pdf
代码链接:https://github.com/megvii-model/YOLOF
摘要
1、 作者探究了FPN之所以能提升检测效果的原因:主要是因为分治的思想而非多尺度特征融合;
2、 作者提出一种替换FPN复杂的特征金字塔的方案,仅使用一个层级的特征进行检测,提出了YOLOF,其中两个重要组件Dilated Encoder和Uniform Matching;
3、 YOLOF取得了不错的效果,速度和精度权衡的效果比YOLOv4还要好。
引言
FPN已经成为现在主流检测框架必备的组件了,FPN之所以有效源自于以下两个优点:1)多尺度特征融合,融合了高层的语义特征与低分辨率的图像特征,是特征更具有代表性。 2)分而治之的思想,将检测问题按尺度进行拆分,不同尺度的图像由不同的特征去预测。作者设计实验发现,主要是因为分而治之的思想,使得FPN如此高效。作者设计了以下实验:(PS:可以借鉴下作者设计实验的思路以及写法)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
作者设计了四组实验,通过对比发现MiMO仅仅比SiMO提升不到1%,也就说明特征融合带来的效果也就仅仅只有1%,而MiSO与MiMO却有12%的差异。通过这组对比试验就发现FPN能如此高效的主要原因是因为分而治之的思想。
但是呢,分而治之的思想除了带来了检测效果的提升,同时也带来了内存的负担,以及使得检测的结构变得复杂。
作者同样设计了实验发现,仅仅使用单层级特征(即上图SiSO)其速度、模型容量等都远小于MiMO。因此作者希望能设计算法缩小SiSo与MiMo的检测效果的差异。
作者分析后,1)需要弥补SiSo的单层级特征相比于MiMo的多层级特征在特征尺度层级上的差别; 2)需要弥补因为单层级特征导致的,候选框不平衡的问题。
因此作者提出了Dilated Encoder解决单层级特征缺少多层级语义信息的问题,Uniform Matching解决候选框不平衡的问题。
方法
Dilated Encoder
作者利用C5(下采样32倍)作为单层级的特征,发现C5特征的感受野仅仅只能覆盖一部分的尺度范围的物体(如下图(a)),这就导致了糟糕的检测效果。而要使得其特征能识别更多的物体,就要使其特征的感受野能匹配更多物体的尺寸,因此作者需要想办法扩充输出特征的感受野范围。
那就是利用空洞卷积,在TridentNet等文献中已经证明了空洞卷积在检测上的有效性。因此作者设计了以下的结构,使输出的特征包含更多的感受野范围。
Uniform Matching
在目标检测中,如何定义positive anchor是十分重要的,通常使用max-IoU matching,即anchor与Ground truth的IoU大于0.5,就认为这个anchor是positive anchor。
上面说过了,作者使用了C5的单层级特征来进行检测,使用高层级特征必然就会更倾向于预测大物体(感受野比较大,则会更倾向于预测大物体),因此也就会导致如果使用Max-IoU match的话,positive anchor肯定大部分都是大物体,小物体的positive anchor会很少,因此存在严重的不平衡问题。(就是小物体的检出率会严重下降)。为了保持大物体与小物体anchor数目的差距,作者使用了k-nearest算法,把每个Groundtruth附近的k个anchor作为正样本,这样不管物体尺寸是多少,其positive anchor的数量是一致的。并且作者做了一些调整,对于选出来的anchor, 如果IoU > 0.7 那么不能算作 negative anchors 如果IoU < 0.15,不能作为positive anchor。
最后实验结果如下:
##感想
本文的行文方式,着实让我有些摸不着头脑,前面探究FPN表现如此出色的原因是因为分治的思想,后续并没有按照分治的思想来做。
再有就是大家都在讨论的,C5层的特征感受野已经足够大了,文章还在继续增大其输出特征的感受野,这明显会牺牲小物体的检出,虽然文章在最后的实验部分提到,在大物体检测上提升了3.3%,小物体上下降了3.1%。但小物体的检测不应该才是重点嘛。
文章的两个创新点,1)利用空洞卷积提升输出的单层级特征感受野的范围 而在TridentNet里利用分治的思想,不同特征不同感受野来预测效果明显要更佳。 2)利用k-近邻来筛选anchor。这些都不能算上出色的创新点。