文章目录
1、概述
通常目标检测系统的套路是:
- 假设边界框
- 重采样每个框的像素或特征
- 使用高质量分类器
这个套路虽然管用,但是计算量太大,见效慢,应用在嵌入式系统中,即使使用高端硬件也很难达到实时运算速度。
作者提出了一种称之为 S S D SSD SSD 的方法,它将边界框输出空间离散化为每个特征图位置下的具有不同纵横比和尺度的一组默认框。预测时,网络为每个默认框生成各目标类出现在该框的概率,并调整默认框更好地匹配目标形状。此外,网络结合不同分辨率的多特征图的预测来处理不同大小的目标。 S S D SSD SSD 相对于目标提议的方法更简单,因为它完全消除了提议生成和随后的像素或特征重采样阶段,并将所有计算封装在单个网络中。 源码在这里
S S D SSD SSD 相对于 F a s t e r R − C N N Faster~R-CNN Faster R−CNN 等方法速度更快,而且检测精度相当。速度上的提升主要源于去除了边界框提议,以及随后的像素或特征重采样步骤。 这并非 S S D SSD SSD 首创,但是作者通过一系列改进,设法提升了精度。改进包括:
- 使用小卷积核预测目标类别及边界框位置偏置
- 使用单独的预测器(卷积核)用于不同纵横比的检测
- 将这些卷积核应用于网络后期的多个特征图,以实现多尺度检测
主要贡献如下:
- 作者提出 S S D SSD SSD 检测速度更快但是相对更精确
- S S D SSD SSD 核心是在特征图上使用小卷积核来预测多类别概率以及一组固定默认框的偏置
- 从不同尺度特征图中产生不同尺度预测,按照纵横比将预测分开
- 网络能够进行端到端的训练,即使在输入分辨率较低的情况下也能获得较高的精度。
2、SSD 模型
S S D SSD SSD 方法通过前向卷积产生固定数量的边界框,以及目标类别实例出现在这些边界框中的概率,随后通过非最大抑制产生最终预测。 网络的前几层基于用于高质量图像分类的网络架构(在分类层之前截断),作者称之为基本网络。然后在网络中添加辅助结构,产生具有以下关键特性的检测:
- 用于检测的多尺度特征图 作者在截断基本网络后面添加卷积特征层。这些层的尺寸逐渐减小,并允许在多个尺度上预测检测结果。对于每个特征层,预测检测的卷积模型是不同的(肯定不同啊,特征图大小不一样,使用相同的预测网络,输出的结果维数就不确定了)
- 用于检测的卷积预测器 每个添加的特征层(或者基础网络已有的特征层)可以使用一组卷积核产生一组固定的检测预测。如图
2
2
2 网络头部所示。对于大小为
m
×
n
m\times n
m×n 通道为
p
p
p 的特征层,使用
3
×
3
×
p
3\times3\times p
3×3×p 的小卷积核产生类别概率或者相对默认框坐标的形状偏置(不是使用
1
×
1
1\times1
1×1 卷积)。边界框偏移输出值是相对于 默认框相对于每个特征图的相对位置 来测量的(这句话有点绕)。
- 默认框及纵横比 将一组默认的边界框与特征图单元(类似于
Y
O
L
O
YOLO
YOLO 的
g
r
i
d
grid
grid)相关联,用于网络顶部的多特征图。默认框以卷积的方式平铺特征图,这样每个框相对于其对应单元格的位置是固定的。在每一个特征图单元,在单元中预测相对于默认框形状的偏置(不是相对于默认框坐标偏置,而是相对于默认框形状,想想原因~),以及在那些框中的每一个上,出现每一类目标实例的概率。对于给定位置
k
k
k 个框中的每一个,计算
c
c
c 个类别概率,以及相对于原始默认框形状的
4
4
4 个位置偏量。这导致特征图的每个位置上需要使用
(
c
+
4
)
k
(c+4)k
(c+4)k 个卷积核,对于大小为
m
×
n
m\times n
m×n 的特征图,总共产生
(
c
+
4
)
k
m
n
(c+4)kmn
(c+4)kmn 个输出。默认框的表述参考图
1
1
1。默认框类似于
F
a
s
t
e
r
R
−
C
N
N
Faster~R-CNN
Faster R−CNN 中的
a
n
c
h
o
r
anchor
anchor 框。但是作者将它们用于不同分辨率下的多个特征图。在多个特征图中存在不同形状的默认框使
S
S
D
SSD
SSD 能够更有效地离散可能的输出框形状的空间。
3、训练
训练 S S D SSD SSD 与训练使用区域提议的检测器的主要区别在于, g r o u n d t r u t h ground~truth ground truth 信息需要分配给一组固定的检测器输出中的特定的一个( Y O L O YOLO YOLO 将一个目标的检测分配给该目标坐标中心所在的 g r i d c e l l grid~cell grid cell)。这个分配一旦敲定,损失函数和反向传播能够端到端进行。训练也涉及到选择用于检测的一组默认框及其尺度大小,以及难分负样本挖掘和数据增强策略。(难负样本为模型误认为是正样本的负样本,即 F P FP FP)
匹配策略
训练时需要确定哪个默认框对应 g r o u n d t r u t h ground~truth ground truth 检测,并相应地训练网络。对于每个 g r o u n d t r u t h ground~truth ground truth,从具有不同位置,纵横比,尺度的默认框中挑选。首先将每个 g r o u n d t r u t h ground~truth ground truth 与和它具有最佳 j a c c a r d jaccard jaccard 重叠(就是 I o U IoU IoU)的默认框进行匹配(如 M u l t i B o x MultiBox MultiBox 一样的做法)。不同的是,之后将默认框与 j a c c a r d jaccard jaccard 重叠高于阈值( 0.5 0.5 0.5)的任意 g r o u n d t r u t h ground~truth ground truth 匹配。这简化了学习问题,使网络能够为多个重叠默认框预测高分(大概率),而不是要求它只选择重叠最大的一个。
损失函数
S
S
D
SSD
SSD 损失函数源于
M
u
l
t
i
B
o
x
MultiBox
MultiBox 但是被扩展到能够处理多个目标类别。
x
i
j
p
=
{
1
,
0
}
x_{ij}^p=\{1,0\}
xijp={1,0} 指示第
i
i
i 个默认框是否与
p
p
p 类第
j
j
j 个
g
r
o
u
n
d
t
r
u
t
h
ground~truth
ground truth 框匹配。根据以上匹配策略可以得到,
∑
i
x
i
j
p
≥
1
\sum_ix_{ij}^p\ge1
∑ixijp≥1。整体目标损失函数是定位损失(
l
o
c
loc
loc)和置信损失(
c
o
n
f
conf
conf)的加权和。
(1)
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}\big(L_{conf}(x,c)+\alpha L_{loc}(x,l,g)\big)\tag1
L(x,c,l,g)=N1(Lconf(x,c)+αLloc(x,l,g))(1)
其中,
N
N
N 是匹配的默认框数量。若
N
=
0
N=0
N=0 则将损失设置为
0
0
0。定位损失是一个在预测框(
l
l
l)和
g
r
o
u
n
d
t
r
u
t
h
ground~truth
ground truth 框(
g
g
g)之间的
S
m
o
o
t
h
L
1
Smooth~L1
Smooth L1 损失。默认框(
d
d
d)的中心为
(
c
x
,
c
y
)
(cx,cy)
(cx,cy) 宽度为
w
w
w 高度为
h
h
h。
(2)
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
)
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
g
^
j
w
=
l
o
g
(
g
j
w
d
i
w
)
g
^
j
h
=
l
o
g
(
g
j
h
d
i
h
)
\begin{aligned} L_{loc}(x,l,g)&=\sum\limits_{i\in Pos}^{N}\sum\limits_{m\in\{cx,cy,w,h\}}x_{ij}^ksmooth_{L1}(l_i^m-\hat g_j^m)\\ \hat g_j^{cx}&=(g_j^{cx}-d_i^{cx})/d_i^w~~~~~~\hat g_j^{cy}=(g_j^{cy}-d_i^{cy})/d_i^h\\ \hat g_j^w&=log\big(\frac{g_j^w}{d_i^w}\big) ~~~~~~~~~~~~~~~~\hat g_j^h=log\big(\frac{g_j^h}{d_i^h}\big) \end{aligned}\tag2
Lloc(x,l,g)g^jcxg^jw=i∈Pos∑Nm∈{cx,cy,w,h}∑xijksmoothL1(lim−g^jm)=(gjcx−dicx)/diw g^jcy=(gjcy−dicy)/dih=log(diwgjw) g^jh=log(dihgjh)(2)
置信度损失为多类别概率的
s
o
f
t
m
a
x
softmax
softmax 损失。
(3)
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
p
)
w
h
e
r
e
c
^
i
p
=
e
x
p
(
c
i
p
)
∑
p
e
x
p
(
c
i
p
)
\begin{aligned} L_{conf}(x,c)&=-\sum\limits_{i\in Pos}^Nx_{ij}^plog(\hat c_i^p)-\sum_{i\in Neg}log(\hat c_i^p)\\ where~\hat c_i^p&=\frac{exp(c_i^p)}{\sum_pexp(c_i^p)} \end{aligned}\tag3
Lconf(x,c)where c^ip=−i∈Pos∑Nxijplog(c^ip)−i∈Neg∑log(c^ip)=∑pexp(cip)exp(cip)(3)
通过交叉验证,将权重项
α
\alpha
α 设置为
1
1
1。
选择默认框的大小和纵横比
为了检测不同尺度的目标,一些方法将图像处理为不同大小,然后结合在不同大小的图像上的检测结果。作者通过利用单个网络架构下的不同层的特征图进行预测,同时在所有目标尺度上共享参数,实现了类似的效果。之前的研究表明,使用低层特征图可以提升语义分割质量,因为低层特征能够捕获更多输入目标细节信息。同时,添加特征图池化得到的全局上下文有助于平滑分割结果。受此影响,作者使用低层和高层特征图用于检测。图 1 1 1 展示了框架中使用的两个特征图的样例( 8 × 8 8\times8 8×8 和 4 × 4 4\times4 4×4)。
同一网络不同层的特征图通常有不同大小的感受野。在
S
S
D
SSD
SSD 框架中,默认框不需要对应到每一层实际的感受野。作者设计了默认框分配,以便特征图学习对应尺度目标的响应。假设使用
m
m
m 个特征图用于检测,对于每个特征图,默认框的尺度按如下公式计算:
(4)
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}+\frac{s_{max}-s_{min}}{m-1}(k-1),~~~k\in[1,m]\tag4
sk=smin+m−1smax−smin(k−1), k∈[1,m](4)
其中,
s
m
i
n
s_{min}
smin 是
0.2
0.2
0.2,
s
m
a
x
s_{max}
smax 是
0.9
0.9
0.9。意味着最低层尺度为
0.2
0.2
0.2,最高层尺度为
0.9
0.9
0.9,中间所有层都是等间隔的。作者为默认框设计不同的纵横比
a
r
∈
{
1
,
2
,
3
,
1
2
,
1
3
}
a_r\in \{1,2,3,\frac{1}{2},\frac{1}{3}\}
ar∈{1,2,3,21,31}。每个默认框的宽度计算为
w
k
a
=
s
k
a
r
w_k^a=s_k\sqrt{a_r}
wka=skar,高度计算为
h
k
a
=
s
k
/
a
r
h_k^a=s_k/\sqrt{a_r}
hka=sk/ar。对于纵横比为
1
1
1 的情况,添加一个尺度为
s
k
′
=
s
k
s
k
+
1
s'_k=\sqrt{s_ks_{k+1}}
sk′=sksk+1 的默认框,因此,每个特征图上的每个位置对应
6
6
6 个默认框。每个默认框的中心设置为
(
i
+
0.5
∣
f
k
∣
,
j
+
0.5
∣
f
k
∣
)
(\frac{i+0.5}{|f_k|},\frac{j+0.5}{|f_k|})
(∣fk∣i+0.5,∣fk∣j+0.5),其中,
f
k
f_k
fk 是第
k
k
k 个方形特征图的尺寸,
i
,
j
∈
[
0
,
∣
f
k
∣
)
i,j\in[0,|f_k|)
i,j∈[0,∣fk∣)。实际上,也可以根据特定数据集的特点,设计默认框的分布(
Y
O
L
O
v
3
YOLOv3
YOLOv3 就是根据数据集特点,使用
K
N
N
KNN
KNN 算法学习目标尺度先验,依此为
a
n
c
h
o
r
anchor
anchor 初始化参数)。
通过将许多特征图所有位置上不同尺度和纵横比的默认框的预测结合起来,得到一组涵盖不同输入目标尺度和形状的预测。如图 1 1 1,狗和 4 × 4 4\times4 4×4 特征图中的默认框相匹配,但是不和 8 × 8 8\times8 8×8 特征图中的任何默认框相匹配。因为那些框和狗框尺度不同,无法匹配,因此在训练过程中将它们看作负例。
难分负样本挖掘
匹配过后,大部分默认框为负样本,特别当可能的默认框数量巨大时。这导致训练中的正负样本数量极度不平衡。作者并未使用所有负样本,而是根据每个默认框的最高置信度损失对它们进行排序,挑选最前面的框(越靠前说明置信度损失越大,模型对这些负样本的分类效果不理想),保证负正样本比例为 3 : 1 3:1 3:1。作者发现这样做能够加速优化速度,使训练更稳定。
数据增强
为了使模型对不同输入目标的尺度和形状更鲁棒,每张训练图像通过以下选项随机采样:
- 使用原始输入图像
- 采样一个图像块,使和目标的最小 j a c c a r d jaccard jaccard 重叠为 0.1 , 0.3 , 0.5 , 0.7 0.1,0.3,0.5,0.7 0.1,0.3,0.5,0.7 或 0.9 0.9 0.9。
- 随机采样一个图像块
每个样本块的大小为原始图像的 [ 0.1 , 1 ] [0.1,1] [0.1,1] 倍,纵横比在 1 2 \frac{1}{2} 21 到 2 2 2 之间。如果 g r o u n d t r u t h ground~truth ground truth 的中心在采样块中则保持重叠的部分。经过上述采样步骤后,除了应用一些 p h o t o − m e t r i c d i s t o r t i o n s photo-metric~distortions photo−metric distortions 之外,每个采样块被调整到固定大小,并以 0.5 0.5 0.5 的概率水平翻转。
4、实验结果
基础网络
使用在 I L S V R C C L S − L O C ILSVRC~CLS-LOC ILSVRC CLS−LOC 上进行预训练的 V G G 16 VGG16 VGG16。作者将 f c 6 fc6 fc6 和 f c 7 fc7 fc7 改为卷积网络,减少相应层的参数,将 p o o l 5 pool5 pool5 从 2 × 2 − s 2 2\times2-s2 2×2−s2 改为 3 × 3 − s 1 3\times3-s1 3×3−s1,并且使用 a ˋ t r o u s à~trous aˋ trous 算法填充 “洞”。移除所有的 d r o p o u t dropout dropout 层以及 f c 8 fc8 fc8 层。微调网络使用 S G D SGD SGD,初始学习率为 1 0 − 3 10^{-3} 10−3, 0.9 m o m e n t u m 0.9~momentum 0.9 momentum, 0.0005 0.0005 0.0005 权重衰减, b a t c h s i z e batch~size batch size 为 32 32 32。训练和测试源码基于 C a f f e Caffe Caffe
4.1、PASCAL VOC2007
图
2
2
2 为
S
S
D
300
SSD300
SSD300 模型架构详情。作者使用
c
o
n
v
4
_
3
conv4\_3
conv4_3、
c
o
n
v
7
(
f
c
7
)
conv7(fc7)
conv7(fc7)、
c
o
n
v
8
_
2
conv8\_2
conv8_2、
c
o
n
v
9
_
2
conv9\_2
conv9_2、
c
o
n
v
10
_
2
conv10\_2
conv10_2 以及
c
o
n
v
11
_
2
conv11\_2
conv11_2 预测位置和置信度。设置
c
o
n
v
4
_
3
conv4\_3
conv4_3 上默认框尺度为
0.1
0.1
0.1。使用
x
a
v
i
e
r
xavier
xavier 方法为所有新加的卷积层初始化参数。对于
c
o
n
v
4
_
3
conv4\_3
conv4_3、
c
o
n
v
10
_
2
conv10\_2
conv10_2 以及
c
o
n
v
11
_
2
conv11\_2
conv11_2 在每个特征图位置仅设置
4
4
4 个默认框—去除纵横比为
1
3
\frac{1}{3}
31 和
3
3
3 的默认框,其它层每个位置
6
6
6 个默认框。相比于其它层,
c
o
n
v
4
_
3
conv4\_3
conv4_3 有不同的特征尺度,作者使用
L
2
L2
L2 归一化技术将特征图中每个位置的特征范数缩放至
20
20
20,并在反向传播过程中学习尺度(这里没搞懂。。。)。前
40
k
40k
40k 迭代,学习率为
1
0
−
3
10^{-3}
10−3,然后继续训练
10
k
10k
10k 代,学习率为
1
0
−
4
10^{-4}
10−4 和
1
0
−
5
10^{-5}
10−5。表
1
1
1 为
S
S
D
SSD
SSD 的相关精度数据。
图
3
3
3 表明
S
S
D
SSD
SSD 能够检测不同目标类别(
l
a
r
g
e
w
h
i
t
e
a
r
e
a
large~white~area
large white area)。
S
S
D
SSD
SSD 能够更好地定位目标,因为它能够直接学习回归目标形状,并划分目标类别而不是使用两个解耦的步骤。然而
S
S
D
SSD
SSD 更难区分相似目标类(尤其是动物),部分原因是多类别共享位置信息(网络输出的位置信息和分类信息共享低层特征,考虑到位置回归所需要的特征和分类特征存在
d
o
m
a
i
n
g
a
p
domain~gap
domain gap,所以网络学习到的特征可以理解为位置回归特征与纯分类特征的
c
o
m
p
r
o
m
i
s
e
compromise
compromise)。图
4
4
4 表明,
S
S
D
SSD
SSD 对边界框的大小非常敏感。换句话说,它在小目标上的检测性能比大目标差得多。因为那些小目标可能在最顶层没有任何信息(顶层的感受野较大,小目标的图像信息在前向传播过程中可能已经损失到忽略不计)。增加输入大小(从
300
×
300
300\times300
300×300 到
512
×
512
512\times512
512×512)有助于提升小目标检测性能,但是仍然有很大的提升空间。另一方面,
S
S
D
SSD
SSD 对大目标的检测性能相当不错,而且由于在特征图每个位置使用不同纵横比的默认框,它对不同纵横比的目标非常鲁棒。
4.2、模型分析
为了测试各部分作用,作者进行了一系列实验,除了特定的部分,所有实验使用相同设置,输入大小为 ( 300 × 300 ) (300\times300) (300×300)。
数据增强至关重要
作者使用了类似于
Y
O
L
O
YOLO
YOLO 的采样策略,表
2
2
2 表明使用这些策略
m
A
P
mAP
mAP 提升了
8.8
%
8.8\%
8.8%。类似的策略对于
F
a
s
t
Fast
Fast 和
F
a
s
t
e
r
R
−
C
N
N
Faster~R-CNN
Faster R−CNN 来说,性能提升可能并没有那么明显,因为它们在分类过程中使用了特征池化操作,使算法对目标平移相对鲁棒。
更多的默认框效果更好
作者在特征图的每个位置使用 6 6 6 个默认框,如果去掉 1 3 \frac{1}{3} 31 和 3 3 3 纵横比的默认框,性能下降 0.6 % 0.6\% 0.6%,如果进一步去掉 1 2 \frac{1}{2} 21 和 2 2 2 纵横比的默认框,性能再下降 2.1 % 2.1\% 2.1%。使用多种纵横比的默认框看起来使预测框的任务更加简单。
A t r o u s Atrous Atrous 是更快的
S S D SSD SSD 使用了下采样 V G G 16 VGG16 VGG16 的 a t r o u s atrous atrous 版本,后面连接 D e e p L a b − L a r g e F O V DeepLab-LargeFOV DeepLab−LargeFOV。如果使用完整 V G G 16 VGG16 VGG16,保持 p o o l 5 pool5 pool5 设置 2 × 2 − s 2 2\times2-s2 2×2−s2 并且不对 f c 6 fc6 fc6 和 f c 7 fc7 fc7 的参数下采样,为预测添加 c o n v 5 _ 3 conv5\_3 conv5_3,检测性能大致相同,但是速度慢了大约 20 % 20\% 20%。
不同分辨率的多输出层
S
S
D
SSD
SSD 的主要贡献之一是,不同输出层使用不同尺度的默认框。为了进行公平比较,每次去掉一层,并调整默认框分布,保持框的总数与原来近似(
8732
8732
8732)。这通过在剩余层堆叠更多尺度的框,并且在必要时调整框的尺度来实现。表
3
3
3 表明,随着层的减少精度单调下降。当在一层堆叠多个尺度的框时,许多框位于图像边缘,需要小心处理。作者尝试
F
a
s
t
e
r
R
−
C
N
N
Faster~R-CNN
Faster R−CNN 使用的策略,忽略边缘上的框。作者观察到,如果使用非常粗糙的特征图(即,
c
o
n
v
11
_
2
(
1
×
1
)
conv11\_2(1\times1)
conv11_2(1×1) 或
c
o
n
v
10
_
2
(
3
×
3
)
conv10\_2(3\times3)
conv10_2(3×3)),会对性能造成很大损害。原因可能是在修剪之后,没有足够大的框覆盖大目标。当使用分辨率更高的特征图时,性能又开始提高,因为即使修剪之后,仍然剩余足够数量的大框。 如果只使用
c
o
n
v
7
conv7
conv7 进行预测,那么性能将是最差的。这表明,给不同层分配不同尺度的默认框是重要的。此外,由于
S
S
D
SSD
SSD 预测不依赖于
R
O
I
ROI
ROI 池化,在低分辨率特征图中没有
c
o
l
l
a
p
s
i
n
g
b
i
n
s
collapsing~bins
collapsing bins 问题。
S
S
D
SSD
SSD 框架结合了不同分辨率的特征图的预测,当使用低分辨率输入图像时,达到了堪比
F
a
s
t
e
r
R
−
C
N
N
Faster~R-CNN
Faster R−CNN 的精度。
4.3、PASCAL VOC2012
表
4
4
4 为
S
S
D
300
SSD300
SSD300 和
S
S
D
51
2
4
SSD512^4
SSD5124 在数据集
V
O
C
2012
VOC2012
VOC2012 上的测试结果。
4.4、COCO
表
5
5
5 为模型在
t
e
s
t
−
d
e
v
2015
test-dev2015
test−dev2015 上的结果。
4.5、用于提升小目标检测性能的数据增强策略
随机裁剪可以被看作放大操作,产生许多更大的训练样本。为了提升小目标检测性能,作者还采用了缩小策略以产生适合训练小目标检测的样本。首先将图像随机放进大小为原图
16
×
16\times
16× 的画布中,在进行随机裁剪操作之前,使用均值填充画布(骚操作。。。)。由于引入这种新的“扩展”数据增强技巧,获得了更多训练图像,因此必须将训练迭代加倍。如表
6
6
6 所示,多个数据集上的
m
A
P
mAP
mAP 提升了
2
%
−
3
%
2\%-3\%
2%−3%。图
6
6
6 表明,新的数据增强技巧极大提升了小目标检测性能。这一结果说明,数据增强策略对最终模型精度的重要性。
改进
S
S
D
SSD
SSD 的另一种方法是设计一个更好的默认框分布,使其位置和尺度更好地与特征图上每个位置的感受野对齐。
4.6、推理时间
考虑到默认框的数量,推理时有效地执行非最大抑制。通过将置信度阈值设计为 0.01 0.01 0.01,可以过滤掉大部分框。然后使用每类 j a c c a r d jaccard jaccard 重叠为 0.45 0.45 0.45,每幅图像保留前 200 200 200 个检测。
表
7
7
7 对
S
S
D
SSD
SSD、
F
a
s
t
e
r
R
−
C
N
N
Faster~R-CNN
Faster R−CNN 以及
Y
O
L
O
YOLO
YOLO 进行了比较,
S
S
D
300
SSD300
SSD300 和
S
S
D
512
SSD512
SSD512 在速度和精度上均超越了
F
a
s
t
e
r
R
−
C
N
N
Faster~R-CNN
Faster R−CNN。尽管
F
a
s
t
Y
O
L
O
Fast~YOLO
Fast YOLO 可以达到
155
f
p
s
155fps
155fps。它的
m
A
P
mAP
mAP 比
S
S
D
SSD
SSD 低近
22
%
22\%
22%。
S
S
D
300
SSD300
SSD300 是第一个
m
A
P
mAP
mAP 超过
70
%
70\%
70% 的实时检测方法。前向运行的
80
%
80\%
80% 的时间花在基础网络(
V
G
G
16
VGG16
VGG16),因此使用更快的基础网络可以进一步提升速度,这或许使
S
S
D
512
SSD512
SSD512 也能实现实时检测。
5、总结
S S D SSD SSD 有以下特点:
- 在不同分辨率的特征图上进行检测,使网络能够检测不同大小的目标。实验表明,减少用于检测的特征层,精度单调下降
- 特征图的每个位置上初始化不同纵横比的默认框,使网络能够检测不同形状的目标。实验表明,在适当的训练策略下,更多精心设计的默认框可以提升检测性能
- 基础网络使用 V G G 16 VGG16 VGG16 的 a t r o u s atrous atrous 版本,使网络运行速度更快
- 不同于 Y O L O YOLO YOLO, S S D SSD SSD 使用小卷积核而不是全连接层产生检测结果
- 采用难分负样本挖掘,加速优化,使训练更稳定
- 采用更多数据增强技巧,尤其是使用 “缩小” 策略,增加小目标训练样本数,从而提升模型对小目标的检测性能