SSD: Single Shot MultiBox Detector
论文arxiv链接:https://arxiv.org/pdf/1605.06409v2.pdf
- 亮点在于对多个size的featuremap产生各自scale的bbox:
- scale采取的是0-1的归一化scale,假设一共利用了m个大小不同的feature map,就会有m个scale,对于一个第k个featuremap,每一个location的default bbox的scale是:
s
k
=
s
m
i
n
+
s
m
a
x
−
s
m
i
n
m
−
1
(
k
−
1
)
s_k = s_{min} + \frac{s_{max}-s_{min}}{m-1}(k-1)
sk=smin+m−1smax−smin(k−1),而aspect对每一个featuremap都是
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}, bbox的长宽计算方法是
w
=
s
a
,
h
=
s
/
a
w = s\sqrt{a}, h = s/\sqrt{a}
w=sa,h=s/a,对于
a
r
=
1
a_r=1
ar=1的情况再加一种长宽都为
s
k
s
k
+
1
\sqrt{s_ks_{k+1}}
sksk+1的bbox,所以对于每一个feature map的每一个location都有6个default bbox. 假设第k个feature map的size是
c
k
×
p
k
×
p
k
c_k \times p_k \times p_k
ck×pk×pk那么feature map
上索引为 ( i . j ) (i. j) (i.j)的default bbox的中心对应到原图的位置是 ( i + 0.5 p k , j + 0.5 p k ) (\frac{i+0.5}{p_k}, \frac{j+0.5}{p_k}) (pki+0.5,pkj+0.5)其中 i , j ∈ [ 0 , p k ) i, j \in [0, p_k) i,j∈[0,pk) - 此外有一点需要注意的是,不同于其它检测器在训练时match GTbox的时候只选择与dtbox iou最高的GTbox为GT, SSD是通过阈值选择的,也即只要iou超过某个阈值(一般是0.5),就认为是GT,也就是说同一个dt可以match到多个GT,具体还得看代码