前言
首先来说一下FPN的一些设计缺陷,如下图所示,FPN可以分为三个阶段:(1)特征融合前;(2)top-down特征融合;(3)特征融合后。每个阶段都存在一处设计缺陷:
- 不同层级的特征之间存在语义差异。在进行特征融合前,会先将不同层级的特征经过一个 1 × 1 1 \times 1 1×1的卷积层以降低通道数,但这一过程未考虑这些特征之间存在的巨大的语义差异。如果直接将这些特征进行融合,由于它们的语义信息是不一致的,会大大降低多尺度特征的表示能力。
- 最高层特征的信息损失。在特征融合时,是通过top-down通路将顶层的高级特征与底层的低级特征融合起来,虽然增强了底层特征的语义表示,但由于高层特征经过了降维,因此会造成信息损失。
- 启发式的RoI分配策略。在特征融合之后,每个RoI特征根据proposal的大小来选择特征层,但是那些被忽略的层上可能也存在有助于分类和回归的特征,直接忽略其它层可能会对检测结果造成影响。
针对FPN的三个缺陷,本文提出AugFPN,它包含的三个组件正好可以解决以上三个问题:
- 一致性监督(consistent supervision),通过施加相同的监督信号,确保横向连接之后的特征图包含相似的语义信息。
- 残差特征增强(residual feature augmentation),使用比例不变的自适应池(ratio-invariant adaptive pooling)提取多种上下文信息,以一种残差方式降低高级特征的信息损失。
- 软RoI选择(soft RoI selection),更好的利用不同层级的RoI特征,为后续的分类和定位提供更好的RoI特征。
方法实现
上图是AugFPN的整体结构, { C 2 , C 3 , C 4 , C 5 } \lbrace C_2,C_3,C_4,C_5 \rbrace {
C2,C3,C4,C5}是从backbone中选取的用于构建特征金字塔的特征, { M 2 , M 3 , M 4 , M 5 } \lbrace M_2,M_3,M_4,M_5 \rbrace {
M2,M3,M4,M5}是经过横向连接之后的降维的特征, { P 2 , P 3 , P 4 , P 5 } \lbrace P_2,P_3,P_4,P_5 \rbrace {
P2,P3,