SSD:Single Shot MultiBox Detector
Abstract
- 首先SSD目标检测器是一个端到端的目标检测器即
One Stage 。 - 本文对于可能存在目标的输出空间进行离散化处理,针对特征图的每一个位置预设了一系列长宽比和尺度的
bounding boxes (文中将这些框称为default boxes )。 - 预测阶段阶段网络为每一个
default boxes 生成类别分数以及与实际目标框的偏移量进行更好的拟合目标形状。 - 检测器结合不同深度卷积层的感受野大小不同,利用多尺度特征图进行不同大小目标的检测。
Introduction
- 目前主流的目标检测系统主要针对一下几个方面进行改进:
- 假设
bounding boxes 位置 - 为每个
box 区域采样像素和特征表示 - 针对采样得到的特征进行分类处理
- 本文的改进点在于减少了
bounding box 提出和特征重采样阶段
- 利用小卷积核去预测类别概率和
bounding box 的偏移量 - 针对不同长宽比的使用不同的预测器
- 多尺度特征图预测
The Single Shot Detector
Model
-
使用VGG-16网络作为骨架网络。 -
在骨架网络的尾部增加了几层卷积层,使得特征图大小逐步减小,使得后续可以进行多尺度检测。 -
在不同尺度的特征图上增加了预测头(预测类别概率和坐标偏移量),预测头也是利用卷积层实现。 -
每个特征图单元预设了一系列default boxes ,最终每个单元格预测一个类别概率和相对于default boxes 的偏移量。
- 假设每个单元格有
k
k
k个
default boxes ,类别数目为
c
c
c,坐标偏移量需要4个参数控制,即对于
m
×
n
m \times n
m×n的特征图会产生
k
(
c
+
4
)
m
n
k(c + 4)mn
k(c+4)mn个输出。
Training
- 关键区别是真实的标签信息需要分配给检测器的输出。
- 训练流程涉及的方面
- 如何选择默认框的集合
- 检测框的尺度选择
- 难负样本挖掘
- 数据增强策略
- Matching strategy
- 训练期间需要确定那些默认框和真实框对应。
- 对于每一个真实框我们从所有默认框(包括不同长宽比、尺度、不同位置)中选择一个
IOU 最大的默认框作为匹配项。 - 然后匹配默认框和所有真实框中
IOU 大于阈值(文中设为0.5)。 - Training Objective
- 整体的目标损失函数主要由定位损失和置信度损失两部分组成。
L
(
x
,
c
,
l
,
g
)
=
1
N
(
L
c
o
n
f
(
x
,
c
)
+
α
L
l
o
c
(
x
,
l
,
g
)
)
L(x,c,l,g) = \dfrac {1} {N}(L_{conf}(x, c) + \alpha L_{loc}(x, l, g))
L(x,c,l,g)=N1?(Lconf?(x,c)+αLloc?(x,l,g)) - N表示匹配默认框的个数,如果为0该损失设置为0
- 定位损失使用的是
Smooth L1 loss 在predicted box(l) 和ground truth box(g) 之间的参数。 - 需要注意的是对于坐标参数网络实际回归的是偏移量,即框的中心
(cx,cy) 相对于default bounding box(d) 。
L
l
o
c
(
x
,
l
,
g
)
=
∑
i
∈
P
o
s
N
∑
m
∈
{
c
x
,
c
y
,
w
,
h
}
x
i
j
k
s
m
o
o
t
h
L
1
(
l
i
m
?
g
^
j
m
)
L_{loc}(x, l ,g) = \sum_{i \in Pos}^N \sum_{m \in \{cx, cy, w, h\}} x_{ij}^k smooth_{L1}(l_i^m - \hat{g}_j^m)
Lloc?(x,l,g)=i∈Pos∑N?m∈{cx,cy,w,h}∑?xijk?smoothL1?(lim??g^?jm?)
g
^
j
c
x
=
(
g
j
c
x
?
d
i
c
x
)
/
d
i
w
g
^
j
c
y
=
(
g
j
c
y
?
d
i
c
y
)
/
d
i
h
\hat {g}_j^{cx} = (g_j^{cx} - d_i^{cx}) / d_i^w \qquad \hat {g}_j^{cy} = (g_j^{cy} - d_i^{cy}) / d_i^h
g^?jcx?=(gjcx??dicx?)/diw?g^?jcy?=(gjcy??dicy?)/dih?
g
^
j
w
=
l
o
g
(
g
j
w
d
i
w
)
g
^
j
h
=
l
o
g
(
g
j
h
d
i
h
)
\hat {g}_j^w = log(\dfrac {g_j^w} {d_i^w}) \qquad \hat {g}_j^h = log(\dfrac {g_j^h} {d_i^h})
g^?jw?=log(diw?gjw??)g^?jh?=log(dih?gjh??) -
x
i
j
k
x_{ij}^k
xijk?表示第i个默认框和第j个真实框相匹配,且真实框的类别信息为k。
- 置信度损失函数使用
softmax loss 。
L
c
o
n
f
(
x
,
c
)
=
?
∑
i
∈
P
o
s
N
x
i
j
p
l
o
g
(
c
^
i
p
)
?
∑
i
∈
N
e
g
l
o
g
(
c
^
i
0
)
w
h
e
r
e
c
^
i
p
=
e
x
p
(
c
i
p
)
∑
p
e
x
p
(
c
i
p
)
L_{conf}(x, c) = - \sum_{i \in Pos}^N x_{ij}^p log(\hat {c}_i^p) - \sum_{i \in Neg} log(\hat {c}_i^0) \quad where \quad \hat{c}_i^p = \dfrac {exp(c_i^p)} {\sum_p exp(c_i^p)}
Lconf?(x,c)=?i∈Pos∑N?xijp?log(c^ip?)?i∈Neg∑?log(c^i0?)wherec^ip?=∑p?exp(cip?)exp(cip?)? - Choosing scales and aspect ratios for default boxes
- 文中框的尺度采用线性均匀划分的处理方式,浅层的特征图对应小的尺度用于捕捉小的目标,深层的特征图对应大的尺度。
s
k
=
s
m
i
n
+
s
m
a
x
?
s
m
i
n
m
?
1
(
k
?
1
)
,
k
∈
[
1
,
m
]
s_k = s_{min} + \dfrac {s_{max} - s_{min}} {m -1}(k -1), k \in [1, m]
sk?=smin?+m?1smax??smin??(k?1),k∈[1,m] - 其中
s
m
i
n
s_{min}
smin?设为0.2,
s
m
a
x
s_{max}
smax?设为0.9。
- 长宽比
a
r
∈
{
1
,
2
,
3
,
1
/
2
,
1
/
3
}
a_r \in \{1, 2, 3, 1/2, 1/3\}
ar?∈{1,2,3,1/2,1/3},
w
k
a
=
s
k
a
r
h
k
a
=
s
k
/
a
r
w_k^a = s_k \sqrt{a_r} \quad h_k^a = s_k / \sqrt{a_r}
wka?=sk?ar?
?hka?=sk?/ar?
?。
- 对于长宽比为1的默认框增加了
s
′
=
s
k
s
k
+
1
s' = \sqrt{s_k s_{k+1}}
s′=sk?sk+1?
?的尺度。
- 设置默认框的中心坐标为
(
i
+
0.5
∣
f
k
∣
,
j
+
0.5
∣
f
k
∣
)
(\dfrac {i+0.5} {|f_k|}, \dfrac {j+0.5} {|f_k|})
(∣fk?∣i+0.5?,∣fk?∣j+0.5?),
∣
f
k
∣
|f_k|
∣fk?∣表示特征图的大小,
i
,
j
∈
[
0
,
∣
f
k
∣
]
i,j \in [0, |f_k|]
i,j∈[0,∣fk?∣],即默认框的中心坐标是每个单元格的中心位置,此处进行了归一化处理。
- Hard negative mining
- 默认框和真实框匹配完成后会导致大量的负样本存在,出现正负样本不均衡的问题。
- 利用置信度损失进行负样本排序,选择置信度损失高的作为负样本使得正负样本比例保持在
1
:
3
1:3
1:3.。
|