SSD: Single Shot MultiBox Detector原文链接
SSD: Single Shot MultiBox Detector(2015)阅读笔记
一、解决问题
基于RP的两阶段模型所需的计算资源较大并且检测速度太慢。虽然有很多研究尝试构建更快的检测器,但是到目前为止,显著提高的速度都以显著降低的检测精度为代价。
二、解决方法
与两阶段检测器相比,去掉了生成边界框和随后的特征重采样两个阶段,让检测速度大大提高。YOLO也是这么做的,代价是精度大幅度降低。但是SSD通过增加一系列改进,相比以前的尝试(YOLO)显著提高了准确性。
改进包括使用小型卷积滤波器来预测边界框位置中的目标类别和偏移量,使用不同长宽比检测的单独预测器(滤波器),并将这些滤波器应用于网络后期的多个特征映射中,以执行多尺度检测。通过这些修改,特别是使用不同尺度的特征图进行预测,提高了检测速度。
(一)整体过程
基于前馈卷积网络产生固定大小的边界框集合(锚点),并对这些边界框中存在的目标类别实例进行评分,然后进行非极大值抑制步骤来产生最终的检测结果。
此前馈卷积网络分为两个部分。一是基础网络:对一般图像分类的标准架构在分类层之前进行截断。二是辅助结构:用于产生多尺度特征映射的操作和用于检测的卷积预测器。结构图如下。
其中黄框内为基础结构,红框内为辅助结构。
(二)多尺度特征映射(辅助结构产生)
在基础网络的末端添加一组卷积层用于生产一些列特征图,这些卷积层在尺寸上逐渐减小,使生成的特征图拥有多个尺度,以便在多个尺度上对检测结果进行预测。
(三)默认框
对各个尺度的每个特征图的图单元都分别关联一组默认边界框(k个)。在每个特征图图单元格中,我们预测相对于单元格中默认框形状的偏移量,以及指示每个框中是否存在类实例的每个类别得分。具体来说,对于每个框,我们计算c类分数和相对于原始默认框形状的4个偏移。这导致在特征图中的每个位置周围应用总共
(
c
+
4
)
∗
k
(c+4)*k
(c+4)∗k个滤波器,对于尺寸为m×n的特征图产生
(
c
+
4
)
∗
k
∗
m
∗
n
(c + 4)*k*m*n
(c+4)∗k∗m∗n的输出。默认框的说明参阅下。默认框类似于Fast R-CNN中使用的锚框(锚点),但是我们将它们应用于不同分辨率的几个特征图。允许在多个特征图中使用不同的默认框形状,可以有效地离散可能的输出框形状的空间。
(四)训练
1.训练样本
给定输入图像以及每个物体的Ground Truth,首先找到每个Ground True Box对应的Default Box中IOU最大的作为正样本。然后,在剩下的Default Box中找到那些与任意一个Ground Truth Box的IOU大于0.5的Default Box作为正样本。其他的作为负样本(每个Default Box要么是正样本Box要么是负样本Box)。
2.损失函数
与Faster-RCNN中的RPN相似。不过RPN是预测Box里面有没有Object,并没有识别目标类别的功能。而SSD直接用的Softmax分类。Location的损失,都是用Predict box和Default Box/Anchor的差 与 Ground Truth Box和Default Box/Anchor的差进行对比来求损失。
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) =\frac{1}{N} (L_{conf}(x,c) + αL_{loc}(x,l,g))
L(x,c,l,g)=N1(Lconf(x,c)+αLloc(x,l,g))
其中N是匹配的默认框的数量,如果N = 0,则将损耗设置为0.
L
l
o
c
L_{loc}
Lloc是预测框
I
I
I和地面实况框
g
g
g参数之间的平滑L1损失。回归到默认边界框
d
d
d的中心
(
c
x
,
c
y
)
(cx,cy)
(cx,cy)及其宽度(
w
w
w)和高度(
h
h
h)的偏移。
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) =∑^{N}_{i ∈Pos}∑_{m∈(cx,cy,w,h)}x^{k}_{ij}smooth_{L1}(l^{m}_{i} −g^{ˆm}_{j} )
Lloc(x,l,g)=i∈Pos∑Nm∈(cx,cy,w,h)∑xijksmoothL1(lim−gjˆm)
x
i
j
k
x^{k}_{ij}
xijk取0或1,作为一个指示器,用于将第i个默认框与第j个地面实况框关于第k类进行匹配。
L
c
o
n
f
L_{conf}
Lconf是多类别置信度下的softmax损失
L
c
o
n
f
(
x
,
c
)
=
−
∑
i
∈
P
o
s
i
t
i
v
e
N
x
i
j
p
l
o
g
(
e
x
p
(
c
i
p
)
∑
p
e
x
p
(
c
i
p
)
)
−
∑
i
∈
N
e
g
a
t
i
v
e
l
o
g
(
e
x
p
(
c
i
0
)
∑
p
e
x
p
(
c
i
p
)
)
L_{conf}(x,c) = −∑^{N}_{i ∈Positive}x^{p}_{ij}log(\frac{exp(c^{p}_{i})}{∑_{p}exp(c^{p}_{i})})−∑_{i∈Negative}log(\frac{exp(c^{0}_{i})}{∑_{p}exp(c^{p}_{i})})
Lconf(x,c)=−i∈Positive∑Nxijplog(∑pexp(cip)exp(cip))−i∈Negative∑log(∑pexp(cip)exp(ci0))
三、效果
比YOLO更快的速度,和Faster RCNN一样的精度