1. 解决了什么问题?
目标检测取得了显著成绩,但是检测不同尺度的目标仍然是一个挑战。金字塔或多层级特征是解决目标检测中尺度变化的常用手段。但对于单阶段目标检测器而言,各特征尺度之间不一致性制约了算法的表现。与图像金字塔相比,特征金字塔在各尺度间是不一致的,要用到启发式的特征选取策略:大目标通常与高层级特征图有关,而小目标则和低层级特征图有关系。当某层级的特征图上的目标被分配为正样本,其它层级特征图的相应区域就会被看作为背景。这种不一致性会对梯度计算造成影响,使特征金字塔的效力降低。
2. 提出了什么方法?
ASFF 解决单阶段目标检测器中特征金字塔存在的不一致性。ASFF 使网络学习过滤掉其它层级有冲突的信息,只保留有用的信息。对于某层级特征,首先整合其它层级的特征,缩放到相同大小的分辨率,然后进行训练,找到最佳的融合方案。在每个空间位置上,自适应地融合不同层级的特征。一些特征因为它们携带了冲突信息,就会被滤掉;另一些特征因为信息更具判别度则发挥更加重要的作用。
2.1 Baseline
采用了 YOLOv3 框架,包含了 DarkNet-53 主干网络,以及三个层级的 FPN。采用了诸多 tricks 来提升性能,如 mixup 数据增强、余弦退火学习率机制,以及 Sync-BN。此外,使用了一个 anchor-free 分支,与 anchor-based 分支协同训练。在原来的 smooth L1 损失基础上,增加了 IOU 损失函数,更好地进行边框回归。
2.2 ASFF
之前的方法使用 element-wise 求和或 concat 操作来整合多层级特征,本方法则自适应地学习各尺度特征图在融合时的空间权重。包括了两个步骤:恒等缩放、自适应融合。
2.2.1 特征缩放
将第 l ∈ { 1 , 2 , 3 } l\in\lbrace1,2,3\rbrace l∈{1,2,3}层级的特征记做 x l \mathbf{x}^l xl。对于层级 l l l,将其它层级 n ( n ≠ l ) n(n\neq l) n(n=l)的特征 x n \mathbf{x}^n xn缩放至与 x l \mathbf{x}^l xl相同的大小。因为 YOLOv3 三个层级的分辨率和通道数都不相同,因此要修改每个尺度的上采样和下采样策略。对于上采样,首先用一个 1 × 1 1\times 1 1×1卷积来压缩特征通道数,与层级 l l l通道数相等,然后通过插值增大分辨率。对于 1 / 2 1/2 1/2比率的下采样,使用步长为 2 2 2的 3 × 3 3\times 3 3×3卷积层,同时调整通道数和分辨率(对于尺度比率为 1 / 4 1/4 1/4的情况,在步长为 2 2 2的卷积层前增加一个步长为 2 2 2的最大池化层)。
2.2.2 自适应融合
在由层级
n
n
n缩放到
l
l
l的特征图上,位置
(
i
,
j
)
(i,j)
(i,j)的特征向量记做
x
i
j
n
→
l
\mathbf{x}_{ij}^{n\rightarrow l}
xijn→l。融合相应层级
l
l
l的特征:
y
i
j
l
=
α
i
j
l
⋅
x
i
j
1
→
l
+
β
i
j
l
⋅
x
i
j
2
→
l
+
γ
i
j
l
⋅
x
i
j
3
→
l
\mathbf{y}_{ij}^l = \alpha_{ij}^l \cdot \mathbf{x}_{ij}^{1\rightarrow l} + \beta_{ij}^l \cdot \mathbf{x}_{ij}^{2\rightarrow l} + \gamma_{ij}^l \cdot \mathbf{x}_{ij}^{3\rightarrow l}
yijl=αijl⋅xij1→l+βijl⋅xij2→l+γijl⋅xij3→l
y
i
j
l
\mathbf{y}_{ij}^l
yijl是输出特征图
y
l
\mathbf{y}^l
yl上第
(
i
,
j
)
(i,j)
(i,j)个向量。
α
i
j
l
,
β
i
j
l
,
γ
i
j
l
\alpha_{ij}^l,\beta_{ij}^l,\gamma_{ij}^l
αijl,βijl,γijl是特征图上三个层级相对于层级
l
l
l的空间权重,由网络自适应地学习得到。
α
i
j
l
,
β
i
j
l
,
γ
i
j
l
\alpha_{ij}^l,\beta_{ij}^l,\gamma_{ij}^l
αijl,βijl,γijl可以是简单的标量变量,在所有通道之间共享。要求
α
i
j
l
+
β
i
j
l
+
γ
i
j
l
=
1
\alpha_{ij}^l+\beta_{ij}^l+\gamma_{ij}^l=1
αijl+βijl+γijl=1,
α
i
j
l
,
β
i
j
l
,
γ
i
j
l
∈
[
0
,
1
]
\alpha_{ij}^l,\beta_{ij}^l,\gamma_{ij}^l\in \left[0,1\right]
αijl,βijl,γijl∈[0,1],
α
i
j
l
=
e
λ
α
i
j
l
e
λ
α
i
j
l
+
e
λ
β
i
j
l
+
e
λ
γ
i
j
l
\alpha_{ij}^l=\frac{e^{\lambda_{\alpha_{ij}}^l}}{e^{\lambda_{\alpha_{ij}}^l}+e^{\lambda_{\beta_{ij}}^l}+e^{\lambda_{\gamma_{ij}}^l}}
αijl=eλαijl+eλβijl+eλγijleλαijl
这里 α i j l , β i j l , γ i j l \alpha_{ij}^l,\beta_{ij}^l,\gamma_{ij}^l αijl,βijl,γijl用 softmax 函数计算, λ α i j l , λ β i j l , λ γ i j l \lambda_{\alpha_{ij}}^l,\lambda_{\beta_{ij}}^l,\lambda_{\gamma_{ij}}^l λαijl,λβijl,λγijl是控制参数。使用 1 × 1 1\times 1 1×1卷积层分别从 x 1 → l , x 2 → l , x 3 → l \mathbf{x}^{1\rightarrow l},\mathbf{x}^{2\rightarrow l},\mathbf{x}^{3\rightarrow l} x1→l,x2→l,x3→l计算权重标量图 λ α i j l , λ β i j l , λ γ i j l \lambda_{\alpha_{ij}}^l,\lambda_{\beta_{ij}}^l,\lambda_{\gamma_{ij}}^l λαijl,λβijl,λγijl。因而可用反向传播学习。于是,各尺度层级的特征都可自适应地融合起来。然后用 { y 1 , y 2 , y 3 } \lbrace\mathbf{y}^1,\mathbf{y}^2,\mathbf{y}^3\rbrace {y1,y2,y3}用于 YOLOv3 后续的检测。