AugFPN: Improving Multi-scale Feature Learning for Object Detection 论文笔记
前言
首先来说一下FPN的一些设计缺陷,如下图所示,FPN可以分为三个阶段:(1)特征融合前;(2)top-down特征融合;(3)特征融合后。每个阶段都存在一处设计缺陷:
- 不同层级的特征之间存在语义差异。在进行特征融合前,会先将不同层级的特征经过一个的卷积层以降低通道数,但这一过程未考虑这些特征之间存在的巨大的语义差异。如果直接将这些特征进行融合,由于它们的语义信息是不一致的,会大大降低多尺度特征的表示能力。
- 最高层特征的信息损失。在特征融合时,是通过top-down通路将顶层的高级特征与底层的低级特征融合起来,虽然增强了底层特征的语义表示,但由于高层特征经过了降维,因此会造成信息损失。
- 启发式的RoI分配策略。在特征融合之后,每个RoI特征根据proposal的大小来选择特征层,但是那些被忽略的层上可能也存在有助于分类和回归的特征,直接忽略其它层可能会对检测结果造成影响。
针对FPN的三个缺陷,本文提出AugFPN,它包含的三个组件正好可以解决以上三个问题:
- 一致性监督(consistent supervision),通过施加相同的监督信号,确保横向连接之后的特征图包含相似的语义信息。
- 残差特征增强(residual feature augmentation),使用比例不变的自适应池(ratio-invariant adaptive pooling)提取多种上下文信息,以一种残差方式降低高级特征的信息损失。
- 软RoI选择(soft RoI selection),更好的利用不同层级的RoI特征,为后续的分类和定位提供更好的RoI特征。
方法实现
上图是AugFPN的整体结构,是从backbone中选取的用于构建特征金字塔的特征,是经过横向连接之后的降维的特征,是特征金字塔中的特征。
1. 一致性监督
首先构建特征金字塔,然后在其上应用RPN产生大量RoI,为了实施一致性监督,每个RoI都被映射到的所有层级上,然后通过RoI-Align得到RoI feature,然后直接对这些RoI feature做分类和回归,可以得到一个辅助损失。这些分类器和回归器的参数在不同层级间是共享的,这可以进一步强制不同的RoI feature学习相似的语义信息。
为了更稳定的优化,还添加了一个权重以平衡辅助损失和原始损失,那么,最终的损失函数就为:
其中和是产生的辅助损失,和是特征金字塔上的原始损失。和分别是中间层和特征金字塔层的预测结果。和分别是gt类标签和回归目标。是用于平衡辅助损失和原始损失的权重,是用于平衡分类损失和回归损失的权重。
定义为:
在测试时,辅助分支将会被去掉,只利用特征金字塔之后的分支进行最终的预测。因此,一致性监督没有引入任何额外的参数和计算,对模型的inference是没有影响的。
2. 残差特征增强
在FPN中,由于在向下融合低级特征时先进行降维操作,因此会造成信息损失。为了避免这种信息损失,作者认为可以将没有信息损失的融合到上,就可以减少的信息损失了。具体操作如下:
- 首先对(大小为)进行比例不变的自适应池化操作,生成不同尺度的上下文特征图;
- 然后将每个上下文特征图经过一个的卷积层以进行降维,将通道数降为256;
- 最后通过双线性插值进行上采样到大小为。
这里为了避免插值的影响,本文还提出自适应空间融合(adaptive spatial fusion,ASF),来自适应地结合这些上下文特征,ASF的结构如下图所示。ASF以上采样后的上下文特征作为输入,为每个特征生成一个空间权重图,然后根据这些权重对上下文特征进行融合,得到。
最后将与相加,得到的特征作为几乎没有信息损失的,然后用这个去融合底层特征。
3. 软RoI选择
在FPN中,是根据RoI的大小来选择将它分配到哪个特征层的,通常将较小的RoI分配给较低层级的特征,将较大的RoI分配给较高层级的特征,但这并不是最优的分配策略,如果两个RoI的大小相似,它们有可能会被分配到不同的层。因此本文提出一种soft RoI selection,通过对RoI pooling这一过程进行参数化,根据所有层级的特征生成更好的RoI feature。具体做法是:
- 首先对于每一个RoI,提取出它在不同层级的特征图上的RoI feature;
- 然后利用ASF,得到不同层级的RoI feature的空间权重图,根据这些权重对这些RoI feature进行求和,并得到最终的RoI feature。
结论
本文针对FPN设计中的三个缺陷,分别提出三种解决方法,主要体现的是一种"自适应"的思想,即根据权重进行相加或融合操作,也确实能使性能得到提升。