SSD的模型结构
SSD采用多个卷积层的输出来做分类和位置回归。
SSD采用VGG16作为backbone,然后从Conv4_3层开始输出feature map。在shape比较小的feature map用于检测大的物体,较大的检测小物体(feature map的size越来越小,感受野越来越大,只有大的物体才容易保留信息,小物体的信息会逐渐丢失,所以在feature map shape教大时比较容易检测小物体)。使用Extra Feature layers生成bbox,最后会将所有的bbox汇集到一起,然后使用NMS去重。
Extra Feature layers
每一个feature map的Extra Feature layers操作是使用Conv 3x3x(kx(Class+4))对每个anchor进行bbox的探测,其中k代表不同尺度探测框的数量,Class+4是每个类的score加上x,y,w,h的偏移与缩放的因子。总共最多有6层feature map进行候选框的探测,其中,k的值依次为4、6、6、6、4、4。
探测框
探测框的初始尺度为 S k S_k Sk:
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\epsilon[1,m] Sk=smin+m−1smax−smin(k−1),kϵ[1,m], m m 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\epsilon\lbrace 1,2,3,\frac{1}{2},\frac{1}{3} \rbrace arϵ{
1,2,3,21