阅读:2019.7.22-7.31
期刊:ECCV 2016
引用:Liu W, Anguelov D, Erhan D, et al. SSD: Single Shot MultiBox Detector[J]. In European conference on computer vision, pages 21–37.Springer, 2016.


SSD:Single Shot MultiBox Detector - 图1
图3.1 SSD结构图

1 SSD概述


SSD 是“one-stage”目标检测算法。准确率比“Faster R-CNN”高,检测速度比“YOLO V1”快,如图3.2所示。
SSD:Single Shot MultiBox Detector - 图2
图3.2 不同目标检测算法的测试速度和mAP比较
通过将不同大小的特征图送入检测器,大的特征图(浅层)具有跟高的分辨率,包含更多的细节信息,适合检测小尺度物体,小的特征图(深层)具有更强的语义信息,能光滑分割结果,适合检测大尺度物体,从而增强了对“多尺度”物体的检测能力(这个思想与FPN类似);采用了不同尺度和宽高比的先验框(default boxes,类似Faster R-CNN的anchor);采用数据增强技术,提升SSD对小目标的检测性能。从而提升了检测准确率。
通过去除RPN网络及后续的像素或特征重采样阶段、使用多个卷积层的输出来做分类和位置回归(而不是用FC),提高了检测速度。

2 创新点


  1. 将不同尺寸的特征图送入检测器
    2. 采用小卷积核的卷积层进行分类预测和位置回归

    3 The Single Shot Detector(SSD)


3.1 Model

SSD特征提取网络设计的核心思想是“特征分层提取”,将一系列不同尺寸的特征送入检测器,依次进行分类和边界框回归,从而增强算法“多尺度”检测能力。算法流程如下:
(1)特征提取网络生成6种不同尺寸的特征图{P1,P2,P3,P4,P5,P6};
(2)将{P1,P2,P3,P4,P5,P6}送入检测器,在每张特征图上生成同时进行三种操作:
a) 每张的特征图的每个cell都生成k个“default box”
b) 采用卷积操作,对每个“default box”进行分类预测
c) 采用卷积操作,计算每个“default box”的offset
(3)筛选每张特征图产生的边界框(bounding box,bbox)
a) 筛选超出图像边界的bbox
b) NMS筛选
(4)汇总所有预测的bbox,再使用NMS筛选,得出最终的检测结果
1. Multi-scale feature maps for detection
SSD每个模块的输出特征图逐步缩小,将新添加的每个卷积模块的最后一层输出都送到检测器中(如图3.3红框内所示),即将不同尺寸的特征图送入检测器
SSD:Single Shot MultiBox Detector - 图3
图3.3 SSD网络结构
大的特征图(浅层)具有跟高的分辨率,包含更多的细节信息,适合检测小尺度物体,小的特征图(深层)具有更强的语义信息,能光滑分割结果,适合检测大尺度物体,所以能够增强“多尺度”检测能力。如图3.4所示,左边浅层的特征图尺寸较大,anchor覆盖区域远比gt_box小,IoU值较小;右边深层的特征图尺寸比较小,anchor覆盖区域较大远超gt_box范围,IoU值也较小;中间的特征图大小比较合适,anchor与gt_box的IoU值较大[3]。通过同时对多个层次的特征图上的anchor计算IoU,能够找到与gt_box尺寸、位置最接近的anchor
SSD:Single Shot MultiBox Detector - 图4
图3.4 不同尺寸特征图对目标检测的影响比较[3]
2. Convolutional predictors for detection
采用“3x3 conv”计算每张特征图的每个cell的“分类得分”和“bbox偏移量”。如输入的特征图为mnp,那么filter为“33p”,这也是一个“detector/classifier”的参数量,它的输出是对应bbox的“分类得分”或者“bbox偏移量”,如图3.5所示。具体用于计算分类得分和bbox 偏移量的filter数量在“Default boxes and aspect ratio”小结会提到。
SSD:Single Shot MultiBox Detector - 图5
图3.5 采用卷积操作计算“分类得分”和“bbox偏移量”[4]
3. Default boxes and aspect ratio
特征提取阶段将6个不同尺寸的特征图送入检测器,每个特征图的每个cell都生成k个default box,如图3.6所示。在SSD中,default box的scale不需要人为给定,而是通过送入不同尺寸的特征图而确定的,但aspect ratio仍需要人为给定:{1, 2, 3, 1/2, 1/3}。
SSD:Single Shot MultiBox Detector - 图6
图3.6 SSD生成default box[4]
计算分类得分和bbox偏移量的filter数量如下:
(1)default box共有c个类别,实际有(c-1)个类别,加上一个“前景/背景”类别;
(2)bbox偏移量由中间坐标和bbox宽高的偏移量组成,共4个数值。
所以每个cell需要“(c+4)k”个filter,用于计算分类得分、bbox偏移量。一个mn的特征图需要“(c+4)kmn”个filter,如图3.7所示,假设m=n=5,k=6,c=1。
SSD:Single Shot MultiBox Detector - 图7
图3.7 预测框分类、偏移量特征向量的生成

3.2 Training

1. Matching strategy
(1)default box与gt_box匹配策略

  1. 确保每个gt_box都有个default box匹配。对于gt_box,找到与其IoU最大的default box,并与之匹配。通常,称与gt_box匹配的default box为正样本(其实是最终的bbox,但default box与bbox是一一对应的)。反之,如果一个default box没有与任何gt_box匹配,那么该default box只能与背景匹配,即负样本。
  2. 对于剩下未匹配的default box,若与某个gt_box的IoU大于某个阈值(通常为0.5),则该default就与这个gt_box匹配。这意味着,一个gt_box可以与多个default box匹配;但一个default box只与一个gt_box匹配,如果一个default box与多个gt_box的IoU大于阈值,则default box只与IoU最大的gt_box匹配。

注意:b策略在a之后:
如果只有a),则大量的default box都为负样本,正负样本极不平衡。
如果某个gt_box对应的最大IoU小于阈值,且所匹配的default box与另一gt_box的IoU大于阈值,那么default box应当优先与前一个gt_box匹配,因为首先要确定gt_box与一个default box匹配。

计算default box与gtbox之间的IoU,IoU>0.5,则gt_box与该default box匹配,所有匹配的default box全用于前景分类;在IoU<0.5的default box中选择部分作为背景分类。该策略简化了学习难度,**允许一个default box匹配多个gt_box,IoU超过阈值即可,而不仅取IoU最大的gt_box。**这与YOLO系列是不同,YOLO系列是一个gt_box只对应一个bbox。
(2)定位策略
default box\gt_box\prediction bounding box(bbpx)之间的变换关系如图3.8所示,与越接近,bbox与gt_box越接近。
SSD:Single Shot MultiBox Detector - 图8:default box与gt_box的变换关系,即偏移量
g^:bbox与 gt_box的变换关系,即偏移量
SSD:Single Shot MultiBox Detector - 图9
图3.8 default box\gt_box\prediction bounding box(bbpx)之间的变换关系[2]
*2. Training objective

SSD的损失函数由定位回归损失和分类损失构成,如公式3.1所示。损失计算示意图如3.10所示。
![](https://cdn.nlark.com/yuque/__latex/c26ca077e7469a08cfeb5b35e14bddfe.svg#card=math&code=L%28x%2Cc%2Cl%2Cg%29%3D%5Cfrac%7B1%7D%7BN%7D%28L
%7Bconf%7D%28x%2Cc%29%2B%5Calpha%7Bloc%7D%28x%2Cl%2Cg%29%29&id=fLCla)(公式3.1)
SSD:Single Shot MultiBox Detector - 图10:与gt_box匹配成功的default box数量;若N=0,则loss=0
SSD:Single Shot MultiBox Detector - 图11:前景loss与背景loss 的调节比例,论文中设置为1
(1)定位回归损失
SSD:Single Shot MultiBox Detector - 图12
图3.9 Smooth L1 loss
定位回归损失只用于前景的bbox(正样本),因为对于定位而言,只要回归得到精确的变换关系即可,预测时不需要区分正负样本,而是交给分类损失来完成,将得到的变换关系用于所有的default box[2]。
与Faster R-CNN采用相同的损失函数,即Smooth L1 loss,其对离群点具有更强的鲁棒性,在x=0处不可导,使用近似表达,如图3.9所示,计算如公式3.2、3.3、3.4所示。bbox与gt_box之间的偏移量计算如公式3.4所示,如图3.8所示,通过不断地最小化两个“偏移量”,促使bbox不断靠近gt_box
![](https://cdn.nlark.com/yuque/__latex/3e5dbd6b69d09918ff61014fc771beb1.svg#card=math&code=L
%7Bloc%7D%28x%2Cl%2Cg%29%3D%5Csum%5E%7BN%7D%7Bi%5Cin%20Pos%7D%20%5Csum%7Bm%5Cin%7Bcx%2Cxy%2Cw%2Ch%7D%7D%20x%7Bi%2Cj%7D%5Ek%20smooth%7BL1%7D%28l%5Emi%20-%20%5Chat%7Bg%7D%5Em_j%29&id=l5j1O)(公式3.2)
![](https://cdn.nlark.com/yuque/__latex/2e72fb7d35c0353ca0b2c5f8546ce628.svg#card=math&code=smooth
%7BL1%7D%28x%29%3D%5Cbegin%7Bcases%7D%200.5x%5E2%20%26%20if%20%7Cx%7C%3C1%5C%5C%20%7Cx%7C-0.5%20%26%20otherwise%20%20x%3D0%20%5Cend%7Bcases%7D&id=dA1mo)(公式3.3)
SSD:Single Shot MultiBox Detector - 图13(公式3.4)

  1. ![](https://cdn.nlark.com/yuque/__latex/711c9055c7faa6d38fb7acac41c192f2.svg#card=math&code=l%5Em_i&id=mGmR9):default box与gt_box之间的偏移量<br /> ![](https://cdn.nlark.com/yuque/__latex/11773e6749af2213d8fb5e98e2d7c2d2.svg#card=math&code=%5Chat%7Bg%7D%5Em_j&id=i4h59):bbox与gt_box之间的偏移量<br /> (2)分类损失<br />是前景、背景分类的损失之和,采用softmax,交叉熵损失。如公式3.5所示。<br /> ![](https://cdn.nlark.com/yuque/__latex/ae53a9c611045c57b9a8cbad06e29b67.svg#card=math&code=%5Cbegin%7Bcases%7D%0AL_%7Bconf%7D%28x%2Cc%29%3D-%5Csum_%7Bi%20%5Cin%20Pos%7D%5EN%7Bx%5Ep_%7Bij%7Dlog%28%5Chat%7Bc%7D%5Ep_i%29%7D-%5Csum_%7Bi%20%5C%20in%20Neg%7D%7Blog%28%5Chat%7Bc%7D%5E0_i%29%7D%5C%5C%0A%5Chat%7Bc%7D%5Ep_i%3D%5Cfrac%7Bexp%28c%5Ep_i%29%7D%7B%5Csum_p%7Bexp%28c%5Ep_i%29%7D%7D%0A%5Cend%7Bcases%7D&id=MawZ2)(公式3.5)

SSD:Single Shot MultiBox Detector - 图14
图3.10 SSD损失计算示意图[3]
3. Choosing scales and aspect ratios for default boxes
(1)scale
3.3.1小结详细分析了利用不同尺寸特征图实现不同scales的理论依据。不同层次、尺寸的特征图应有不同大小(scale)的default box(如图3.11所示),计算方法如公式3.6所示。在SSD源代码中,每个cell首先生成一大一小的两个正方形default box,小方形边长为minsize,大方形边长为![](https://cdn.nlark.com/yuque/__latex/d48361325ac5cb6b823189f67a6c1437.svg#card=math&code=%5Csqrt%7Bmin%7Bsize%7D%20%2A%20max%7Bsize%7D%7D&id=r7zHQ) [3],![](https://cdn.nlark.com/yuque/__latex/c6f3c2745e39c3294b025e5a4f8206ee.svg#card=math&code=min%7Bsize%7D%2Cmax%7Bsize%7D&id=ra02R)分别为公式3.6计算得到的最小、最大值。
![](https://cdn.nlark.com/yuque/__latex/2effa949b1f4d614b13828cb67eb0fb1.svg#card=math&code=s_k%3Ds
%7Bmin%7D%2B%5Cfrac%7Bs%7Bmax%7D-s%7Bmin%7D%7D%7Bm-1%7D%28k-1%29%2Ck%20%5Cin%20%5B1%2Cm%5D&id=gdRq6)(公式3.6)
SSD:Single Shot MultiBox Detector - 图15,即最底层的scale为0.2;SSD:Single Shot MultiBox Detector - 图16,即最顶层的scale为0.9;中间层的按照公式计算即可。每个特征图负责检测不同面积大小的物体。
SSD:Single Shot MultiBox Detector - 图17
图3.11 不同尺寸的特征图具有不同尺寸的default box[1]
(2)aspect ratio
物体不仅有大小之分,宽高比(aspect ratio)也是有区别的,当两个物体的大小接近时,aspect ratio可能是不同的,SSD设定了几种aspect ratio :{1, 2, 3, 1/2, 1/3}。当aspect ratio=1时,添加一种scale,即,则每个cell共有6个不同宽高比的default box。
利用scale、aspect ratio,结合公式就能计算出default box的真实宽高(如图3.11所示),计算如公式3.7所示,中心坐标计算公式如公式3.8所示,SSD:Single Shot MultiBox Detector - 图18为第k个“square feature map”的大小,SSD:Single Shot MultiBox Detector - 图19,这个公式3.8是一个归一化坐标,最终会映射到原图上,以确定原图上对应的区域,加0.5的目的是将default box中心设在与之关联的cell的中心,如图3.12所示。
SSD:Single Shot MultiBox Detector - 图20(公式3.7)
SSD:Single Shot MultiBox Detector - 图21(公式3.8)
SSD:Single Shot MultiBox Detector - 图22
图3.11 default box尺寸的选择[3]
SSD:Single Shot MultiBox Detector - 图23
图3.12 default box中心坐标
4. Hard negative mining
生成的default box中,大部分都是负样本,正样本数量较少,导致了严重的“类别不均衡”问题,训练时难以收敛。根据confidence loss对负样本排序,选择损失最高的一部分保留(最可能不包含物体的),是的正负样本保持“1:3”的比例。SSD使用该策略获得了稳定的训练性能,加快了训练速度。
5. Data augmentation
在原有的数据上进行数据增强操作,以增强算法对不同尺寸和宽高比物体的鲁棒性、增强模型对目标平移的敏感度。策略如下:
(1)使用整张原图作为输入
(2)在原图上采样一个patch
与目标的IoU值为0.1,0.3,0.5,0.7 or 0.9
与原图的比例在[0.1, 1]之间
aspect ratio在[1/2, 2]之间
(3)每张图片随机采样1个patch
(4)对采样得到的patch会被resize到固定大小,以0.5的概率进行水平翻转

4 Experimental Results


4.1 Base network

(1)SSD 的主干网络基于VGG-16,截取cong5_3之前的结构作为主干网络的一部分,conv5_3之后添加了6个具有不同尺寸特征图的卷积模块组:conv6/7替换两个FC层、新增conv8/9/10/114层,如图3.13所示。
SSD:Single Shot MultiBox Detector - 图24
图3.13 VGG-16卷积结构
(2)训练超级参数设置
VGG-16在ILSVRC CLS-LOC数据集上预训练。
learning rate:0.001,每个训练集的初始有细小的区别
momentum:0.9
weight decay:0.0005
batch size:32

4.2 Model analysis

1. Data augmentation is crucial
数据增强策略获得了8.8的mAP增长,如表3.1所示。
表3.1 不同策略对SSD性能影响
SSD:Single Shot MultiBox Detector - 图25
2. More default box shapes is better
生成多个不同尺寸的default box有利于提升SSD性能。当去除{1/3,3}的宽高比后,性能降低0.6%,当进一步去除{1/2,2}的宽高比后,性能降低2.1%,如表3.1所示。
3. Atrous is faster
如果采用完整的VGG-16,保持pool5的“2x2 s=2”,并添加conv5_3进行预测,结果大致相同,但是速度慢了约20%。
4. Multiple output layers at different resolutions is better
SSD的一个主要特点是将不同尺寸的特征图送入检测器。为了验证其对提升SSD性能起了重要作用,论文做了消融实验,如表3.2所示。每减少一个输入特征图,就在剩余特征图上堆叠更多尺寸的default box、调整宽高比,以保持总的default box数量为8732。
当仅使用分辨率低的特征图时,SSD的性能会受到很大影响,原因可能是没有大的box来覆盖大的物体;当使用分辨率较高的特征图时,SSD性能会增强;当只使用conv7预测时,SSD性能最差,验证了不同尺寸特征图对SSD性能提升有很大贡献。
SSD没有采用ROI Pooling层,所以在处理低分辨率特征图时没有崩溃(当ROI Pooling的输入特征图大小 < ROI Pooling输出特征图时,算法崩溃)。
SSD通过结合不同尺寸的特征图,实现了与Faster R-CNN相当的准确率,同时能够使用较低分辨率的输入图像。
表3.2 不同主干网络的结构性能比较
SSD:Single Shot MultiBox Detector - 图26

4.3 Data Augmentation for Small Object Accurac

SSD没有采用特征重采样,即在feature layer后再进行特征提取,使得SSD对于小目标检测比较困难。本文的数据增强方法对提高SSD检测小目标的性能有很重要的帮助,特别在PASCAL这类小数据集上。
随机裁剪相当于对图片上某一部分进行了“zoom in(放大)”操作,使得目标可以变得比较大,也会产生较多的大目标样例。此外,还是需要保留部分小目标,为了产生“zoom out(缩小)”效果,将原始图片放置在16倍原图大小的画布上,周围空间填充图片均值,然后进行随机裁剪。使用该策略获得了更多的训练熟练数据。实验效果如表3.3所示。
表3.3 数据增强对SSD性能影响
SSD:Single Shot MultiBox Detector - 图27

5 训练与测试


5.1 训练

SSD训练流程如图3.14所示。
SSD:Single Shot MultiBox Detector - 图28
图3.14 SSD训练流程[2]

5.2 测试

SSD测试流程,部分与训练是一致的,主要参考参考文献[4]。
1. SSD整体测试结构
如图15所示。
SSD:Single Shot MultiBox Detector - 图29
图3.15 SSD整体测试结构
2. 检测器和分类器
为图16中红框部分,详细结构如图**所示。可知,检测器和分类器都是由卷积操作构成的。假设某个用于预测的feature map是5×5×256的, default box=3,那么用于定位的卷积层输出是 5×5×12 的(4×3=12,每个通道代表一个位置因素(x,y,w,h)),用于分类的卷积层输出是 5×5×63的(21×3=63,每个通道代表一个类别)[2]
每个用于预测的feature map后面可以认为接了三个并行的层,一个default box generator,一个detector,一个classifier。
SSD:Single Shot MultiBox Detector - 图30
图3.16 检测器、分类器
3. 生成default box
如图17所示。
SSD:Single Shot MultiBox Detector - 图31
图3.17 生成default box
4. 检测器和分类器对某个default box的回归
如图18所示。
SSD:Single Shot MultiBox Detector - 图32
图3.18检测器和分类器对某个default box的回归
5. 得到某个特征图的bbox
某个特征图的所有bbox回归后,经过NMS筛选,如图19所示。
SSD:Single Shot MultiBox Detector - 图33
图3.19得到某个特征图的bbox
6. 得到最终bbox
所有特征图的bbox都生成,汇总后再进行一次NMS,得到SSD最终的检测结果。如图20所示。
SSD:Single Shot MultiBox Detector - 图34
图3.20得到最终bbox

6 SSD未理解的点


(1)在“Data augmentation”中,在原图上采样一个patch,不明白怎么使其与目标的IoU值为0.1,0.3,0.5,0.7 or 0.9,待分析源码。

7 SSD思维导图


思维导图如图3.20所示。
SSD:Single Shot MultiBox Detector - 图35
图3.20 SSD思维导图

8 参考文献


[1] Liu W, Anguelov D, Erhan D, et al. SSD: Single Shot MultiBox Detector[J]. In European conference on computer vision, pages 21–37.Springer, 2016.
[2] 目标检测-SSD-Single Shot MultiBox Detector-论文笔记
https://arleyzhang.github.io/articles/786f1ca3/
[3] 解读SSD目标检测算法
https://zhuanlan.zhihu.com/p/32702478
[4] SSD讲解幻灯片
https://docs.google.com/presentation/d/1rtfeV_VmdGdZD5ObVVpPDPIODSDxKnFSU0bsN_rgZXc/pub?start=false&loop=false&delayms=3000&slide=id.g178a005570_0_18477