YSLAO 文章来自香港大学 ArXiv网址 https://arxiv.org/abs/2207.07889
文章指出,大规模对象的性能下降是由于集成FPN后不正确的反向传播路径引起的。它使得骨干网络的每一层都只能看到一定规模范围内的对象。
图1.基于MMDetection和Detectron2比较ResNet-50-DC5和ResNet-50-FPN之间的检测性能。训练和验证都用的COCO 2017。这里有个我之前不清楚的点,Detectron2和mmDetectron作为目标检测最出名的使用PyTorch的两个工具箱(Toolkit),也就是造轮子神器,里面集成了多种多样的backbones和模型。而对于Faster/Mask R-CNN,提供了三种不同的 backbone 组合:
有篇博客写的挺有意思的,一个完整的目标检测网络主要由三部分构成:
Detector = backbone + neck + head,
分类网络迁移过来,用作特征提取器(通过在目标检测数据集上进行微调,并且与后续的网络的共同训练,使得它提取出来的特征更适合目标检测任务),后续的网络负责从这些特征中,检测目标的位置和类别。那么,我们就将分类网络所在的环节称之为“Backbone”,后续连接的网络层称之为“Detection head”。
目前的话,neck这一部分的研究点还是相对来说比较多的,只需要提出一个好的结构或模块,加到现有的sota的网络中,看涨不涨点,涨点了,那就可以发文章了~
而head这一部分,它的作用上面也说到了,就是分类+定位的,结构没什么新颖的,研究的似乎也比较少。
backbone:提取基础特征网络,比如VGG,ResNet,各种Net
neck:提出一个好的结构或模块,更好适应feature,FPN就是一个很出名的neck,还有诸如ASFF、RFB、SPP等好用的模块【据说好,我还没看】
head:分类+定位,
扯远了回来,文章中提到,最先进的检测器成功的共同点是使用特征金字塔网络(FPN)。但在引入FPN后,发现总体检测性能的提高是建立在小目标(APS)平均精度的提高和大目标(APL)平均精度下降的基础上(可以看到APM中目标效果相对还行)。
然后文章提出了两个假设来解释为什么引入FPN会使得检测器有效:
在本文中,作者提出从优化的角度研究FPN。除了多尺度特征融合和分治之外,FPN改变的反向传播路径也将直接影响检测框架的性能。
中间解释了一段为什么FPN可以通过改变反向传播路径来影响检测框架。
因此,实现具有不同尺度范围对象的AP一致性改进的关键就在于使每个主干阶段都能在训练期间看到所有对象。You Should Look at All Objects点题。
作者扩展反向传播路径的方法是引入辅助目标函数,以便原始信号和额外信号可以共同监督相应主干层的学习。这种方法成功的关键技术是引入不确定性,以更好地平衡各种反向传播信号。修正反向传播路径的策略是以更有效的方式构建特征金字塔,从而使各级骨干网都能接收到足够的信号。该方法的关键技术是用于保证同构表示的空间紧凑性的特征分组模块。
基于FPN的检测框架
首先简单回顾了一下 FPN, 其主要包含三个部分:top-down, bottom-up 和 lateral connection, 和基础骨干网络主要的区别如上图2所示。
作者认为从优化的角度来看,有FPN的检测器优于无FPN检测器的关键原因是:无FPN检测框架的浅层在反向传播back-propogation 的时候都没有收到有效地监督信号(只有C5直接接受监督),然而有FPN的检测框架所有的骨干网络特征都能够得到直接的监督信号。
验证实验:简单来说,就是往没有FPN的检测器的特征层添加一些辅助的监督损失。往公式上说,就是除了C都戴上了个帽子。
结果肉眼可见的四条柱子都基本平了,这代表着FPN-free 和 FPN-based 检测器没有什么性能差异了。所以可以得出结论,FPN 结构中最底层的特征主要用来监督学习小目标,所以学到的 Feature 仅对小目标有比较好的检测能力。同样的,最底层的特征会向后传播,对大目标检测能力会随着传播不断减弱(梯度消失),所以最后得到的 Feature 对大目标有相对较弱的检测能力。从优化的角度来看,FPN成功的本质是缩短了目标损耗和骨干网络浅层之间的反向传播距离。文章也解释了为什么FPN总体检测性能的改进建立在APS增加和APL减少的基础上的。
文章提出两个策略,一是引入辅助损失,二是重构更好的特征金字塔。
由于引入辅助损失可以帮助拥有查看所有目标的能力,作者仿照上面柱图的方法,提出了将不确定性纳入到各个分类和回归辅助损失中,如下:
其中 α \alpha α是不确定性,是通过一个预测函数得到。这里 (x) 是 feature map, (w) 和 (b) 是可学习的参数。
这个里面有两个改动:
Feature Grouping.
原理是通过一些操作使得多层之间的交互更多。主要是通过一些操作交换不同层 feature 的信道。Mk就是用于实现信道交换的大小为Z×Z的矩阵。
大概就是几层网络得到一个特征转换器来变换 feature, 然后按信道分组,最后跨层交换信道.
Cascade Structure.
为了更好地提高空间紧凑性,作者提出使用级联结构以从粗到细的方式进行特征分组。其实就是上述得到的中间特征通过几层非线性网络fw再转换一下,在第二阶段,首先将P′l作为特征分组模块的输入,从而ˆP′l
组合 Feature Grouping 和 Cascade 结构能够提升明显,而且 Cascade 次数越多效果越好。
这项工作首先从优化的角度确定了FPN成功的性质。基于这一原理,我们成功地解释了为什么引入FPN会抑制大型目标的检测性能。我们进一步得出结论,解决{APS、APM、APL}中不一致更改问题的关键是使每个主干层都能查看所有对象。
因此,我们建议设计两种策略来实现这一目标。一种是引入辅助损失,以便包含所有对象信息的辅助信号可以直接通过主干网络的浅层。另一种是将级联特征分组结构集成到现有的FPN中,也可以修改目标函数与骨干网络浅层之间的反向传播路径。大量实验证明了本文的正确性和策略的有效性。