Learning Spatial Fusion for Single-Shot Object Detection 论文笔记
前言
特征金字塔(比如FPN)常被用来处理目标检测时的多尺度问题,但它有一个缺点,就是不同尺度之间的不一致性,尤其体现在single-shot检测器中。具体来说就是,当使用特征金字塔检测目标时,通常使用较上层的特征图来处理大目标,而用较底层的特征图来处理小目标,如果一个目标被分配给某一层级并且被看作是正样本,那么其它层级中和该目标位置相同的区域将被看作是背景。因此,如果一个图像中同时包含大目标和小目标,不同层级之间可能会发生冲突,并且这种不一致性还会影响梯度计算,降低特征金字塔的效率。
为了解决这个问题,本文提出了自适应空间特征融合(ASFF)方法,它允许网络直接过滤掉其它层级的一些特征,而仅保留有用信息以进行结合。对于位于某一层级的特征,先将其它层级的特征整合起来,然后重新调整为同样的大小,在经过训练以寻找最优的融合方式。在每个空间位置上,不同层级的特征的融合是自适应的,也就是说,在这个位置上的一些特征可能携带的是无关紧要的信息,那么就将这些特征过滤掉,而保留那些更具有辨识性的特征。
ASFF有以下几个优点:
- 由于搜索最有融合方式的操作是可微的,因此可以在反向传播中学习;
- 它与backbone无关,适用于拥有特征金字塔结构的single-shot检测器;
- 它实施起来很简单,并且增加的计算量很小。
方法实现
1. YOLO v3 baseline
为了更好的证明ASFF的有效性,本文构建了一个更强的YOLO v3 baseline,与原始YOLO v3相比,主要改进如下:
- 在训练过程中引入a bag of tricks,比如混合算法(mixup algorithm),余弦学习率(cosine learning rate)以及同步批归一化(synchronized batch normalization);
- 参考FSAF,添加anchor-free分支并和原有的anchor-based分支共同训练,同时参考guided anchoring对检测结果进行修正;
- 在原始的smooth L1 loss上采用了额外的IoU loss,以实现更好的bbox回归。

可以看到,改进之后的YOLO v3 baseline与原始YOLO v3相比,AP从33.0%提高到38.8%,并且inference的计算消耗也是很少的。
2. ASFF

上图是ASFF的一个大致的过程,在YOLO v3中共有3个特征层级,在每个特征层级上最终得到的特征融合称为一个ASFF,上图是以ASFF-3为例,即在levellevel 33上得到的特征融合。ASFF的生成主要分为两步:第一步是调整特征图的大小,第二步是加权特征融合。
调整特征图的大小
设位于层级ll(in{1,2,3}\ in \lbrace 1,2,3 \rbrace)处的特征图为xlx^l,如果我们想要得到ll上的特征融合,那么首先需要对其它层级nn(n≠ln\neq l)处的特征图xnxn的大小进行调整,将它们的大小调整为和xlxl一致。除了分辨率大小,通道数也应保持一致,
- 对于需要上采样的层,比如想要得到ASFF-3,那么就需要将x1x1调整为和x3x3一致,首先用1×11 \times 1的卷积将通道数调整为与x3x^3一致,然后用插值的方法将分辨率调整为相同大小;
- 对于需要下采样的层,比如想要得到ASFF-1,从x2x2到x1x1只需用大小为3×33 \times 3,步长为2的卷积就能同时调整通道数和分辨率;而从x3x3到x1x1时,需要在3×33 \times 3卷积之前再加一个步长为2的最大池化层。
加权特征融合
设xijn→lx^{n\to l}{ij}表示从level nn调整到level ll的特征图上位置(i,j)(i,j)处的特征向量,那么ll上的特征融合就为:

yijlyl_{ij}表示输出特征图ylyl在(i,j)(i,j)处的特征向量,αijl\alpha ^l{ij},βijl\beta l_{ij},γijl\gammal_{ij}分别表示3个层级的特征图对ll输出的特征图的贡献程度,这三个权重可以通过网络自适应的学习得到,它们在所有通道间是共享的。这里强制性的让αijl+βijl+γijl=1\alpha ^l_{ij}+\beta l_{ij}+\gammal_{ij}=1,αijl,βijl,γijl∈[0,1]\alphal_{ij},\betal_{ij},\gamma^l_{ij} \in [0,1],然后定义:

αijl\alpha ^l_{ij},βijl\beta l_{ij}和γijl\gammal_{ij}是通过softmax得到的,同时还使用了控制系数λαijl\lambdal_{\alpha_{ij}},λβijl\lambdal_{\beta_{ij}}和λγijl\lambdal_{\gamma_{ij}},而λαijl\lambdal_{\alpha_{ij}},λβijl\lambdal_{\beta_{ij}}和λγijl\lambdal_{\gamma_{ij}}是通过resize后的特征图经过1×11 \times 1的卷积得到的。
可视化分析

在第一张图中,可以看到图中的斑马是由level 1的融合特征预测的,也就是说斑马主要由level 1的原始特征表示,而level 2和level 3中相应位置的特征被过滤掉了,在训练时不会接收正向的梯度。在第二张图的羊群中,可以看到🐏更多的是被level 2和level 3的特征检测到。
结论
本文认为不同特征尺度之间的不一致性限制了具有特征金字塔结构的single-shot检测器的进一步提升。为了解决这个问题,本文提出ASFF方法,通过学习自适应的空间特征融合权重,保留那些对检测最有帮助的特征,过滤掉一些无关紧要的特征,从而在训练时排除不一致性。实验证明,在具有特征金字塔结构的single-shot检测器中应用ASFF可以提升性能,并且能达到检测效率和检测精度之间的trade-off。
