MultiBox: Scalable Object Detection using Deep Neural Networks
arXiv
在此之前用于定位子任务的深度网络模型在图像中为每一个类别预测一个单一的边界框和一个置信度分数,模型能够获取围绕目标的上下文信息,但是不能处理同一类别的多个实例。本文提出一个用于目标检测的神经网络模型,预测一组类别无关的边界框和对应的分数,该分数表明边界框包含任何感兴趣目标的可能性。该模型可以处理同一类别的多个实例,并允许在网络的最高层进行跨类别泛化。
目标检测的通用范式是训练多个目标检测器,在所有的位置和尺度上应用这些检测器检测目标,该方法穷举所有可能的位置和尺度需要高昂的计算代价。为解决该问题,提出了各种方法,从级联检测器到使用分割建议少量目标假设。本文中的模型从属于后者,生成少量的边界框作为候选目标,通过一个单一的类别无关的深度网络。模型的贡献主要有三点,首先是
- 将目标检测转化为边界框坐标回归问题
- 为每一个预测边界框输出一个度量前后景的置信分数
传统方法是在预定义边界框内进行评分,该模型能够以一个紧凑高效的方式表述目标检测。
其次,将边界框回归与置信度预测模型进行联合训练,对于每一个训练样本,将当前预测框和GT框进行匹配,然后通过反向传播更新当前预测值、置信分数和底层特征。
最后是以类别无关的方式对目标框预测器进行训练。该方法可以视为一种可拓展方法,能够高效检测大量的目标类别。
我们的目标是实现类别无关的目标检测,通过预测一组表示潜在目标的边界框。使用DNN输出固定数量的边界框,同时为每一个边界框输出一个分数用于表征该边界框内包含目标的可能性。
对于第 i i i个预测边界框,预测坐标为边界框的左上角和右下角,即 l i ∈ R 4 l_i\in\mathbb R^4 li∈R4,这些坐标对图像尺寸归一化,每一个归一化坐标是由最后一层隐藏层线性变化得到。该边界框的置信度为 c i ∈ [ 0 , 1 ] c_i\in[0,1] ci∈[0,1],由最后一层隐藏层线性变换并经过Sigmoid激活函数得到。
将边界框坐标 l i , i ∈ { 1 , ⋯ , K } l_i,i\in\{1,\cdots,K\} li,i∈{1,⋯,K}联立作为线形层,置信度 c i , i ∈ { 1 , ⋯ , K } c_i,i\in\{1,\cdots, K\} ci,i∈{1,⋯,K}联立作为Sigmoid层,两者均以最后一层隐藏层连接。在推理阶段,可以使用非极大值抑制来减少边界框数量,然后用分类器对其进行分类。
1.目标损失
高置信度边界框应当与GT框匹配最好,假设对于一个训练样本,共有M个目标及标签 g j , j ∈ { 1 , ⋯ , M } g_j,j\in\{1,\cdots,M\} gj,j∈{1,⋯,M},实际上预测框数目 K K K要远大于 M M M,因此,我们尽量优化预测边界框的一个子集,使其与GT框集合匹配最好。然后优化定位来改善匹配程度并最大化置信度,同时需要最小化剩余预测边界框的置信度。
定义
x
i
j
∈
{
0
,
1
}
x_{ij}\in\{0,1\}
xij∈{0,1}表示预测框与真实框之间的匹配关系,
x
i
j
=
1
x_{ij}=1
xij=1表示第
i
i
i个预测狂与第
j
j
j个GT框相对应,该匹配目标可以表示为:
F
m
a
t
c
h
(
x
,
l
)
=
1
2
∑
i
,
j
x
i
j
∥
l
i
−
g
j
∥
2
2
F_{match}(x,l)=\frac 1 2\sum_{i,j}x_{ij}\|l_i-g_j\|^2_2
Fmatch(x,l)=21i,j∑xij∥li−gj∥22
使用
L
2
L_2
L2距离来度量预测框和GT框之间的不相似性。
此外还需要优化匹配框的置信度分数,最大化匹配预测框的置信度:
F
c
o
n
f
(
x
,
c
)
=
−
∑
i
,
j
log
(
c
i
)
−
∑
i
(
1
−
∑
j
x
i
j
)
log
(
1
−
c
i
)
F_{conf}(x,c)=-\sum_{i,j}\log(c_i)-\sum_i(1-\sum_jx_{ij})\log(1-c_i)
Fconf(x,c)=−i,j∑log(ci)−i∑(1−j∑xij)log(1−ci)
上述目标中
∑
j
x
i
j
=
1
\sum_jx_{ij}=1
∑jxij=1当且仅当预测
i
i
i匹配到真值,在这种情况下
c
i
c_i
ci应当最大化,反之(没有匹配到)应当最小化,该损失是交叉熵损失。
总目标损失为:
F
(
x
,
l
,
c
)
=
α
F
m
a
t
c
h
(
x
,
l
)
+
F
c
o
n
f
(
x
,
c
)
F(x,l,c)=\alpha F_{match}(x,l)+F_{conf}(x,c)
F(x,l,c)=αFmatch(x,l)+Fconf(x,c)
2.优化
对于每一个训练样本,我们求解最优匹配关系
x
∗
x^*
x∗:
x
∗
=
arg
min
x
F
(
x
,
l
,
c
)
s
.
t
.
x
i
j
∈
{
0
,
1
}
,
∑
i
x
i
j
=
1
x^*=\mathop{\arg\min}_xF(x,l,c)\\ s.t.\quad x_{ij}\in\{0,1\},\sum_i{x_{ij}}=1
x∗=argminxF(x,l,c)s.t.xij∈{0,1},i∑xij=1
匹配关系
x
∗
x^*
x∗可以很容易得到,然后通过反向传播更新网络参数:
∂
F
∂
l
i
=
∑
j
(
l
i
−
g
j
)
x
i
j
∗
∂
F
∂
c
i
=
∑
j
x
i
j
∗
c
i
c
i
(
1
−
c
i
)
\frac{\partial F}{\partial l_i} = \sum_j(l_i-g_j)x^*_{ij}\\ \frac{\partial F}{\partial c_i} = \frac{\sum_jx^*_{ij}c_i}{c_i(1-c_i)}
∂li∂F=j∑(li−gj)xij∗∂ci∂F=ci(1−ci)∑jxij∗ci
3.训练细节
一些修改能够让训练更快更准确。
- 对GT框位置进行聚类,遵照 K K K个集群/质心并将其作为预测位置的先验,对于每一个预测位置,网络学习关于先验的残差。
- 在匹配过程中使用先验:不是在N个GT框和K个预测之间做匹配,而是使用K个先验与GT框做匹配。
- 两步处理:先定位,再识别。