SSD使用VGG-16-Atrous做为基础网络,其中黄色部分为在VGG-16基础网络上填加的特征提取层。SSD与yolo不一样之处是除了在最终特征图上作目标检测以外,还在以前选取的5个特特征图上进行预测。
SSD图1为SSD网络进行一次预测的示意图,能够看出,检测过程不只在填加特征图(conv8_2, conv9_2, conv_10_2, pool_11)上进行,为了保证网络对小目标有很好检测效果,检测过程也在基础网络特征图(conv4_3, conv_7)上进行。网络
注意:图中fc6, fc7名为fc,实际上是卷积层。
SSD图2为整个SSD训练网络的结构,因为图像所含层数太多,网络中不能看到每层细节,我重画其中部分层为绿色,做为表明。能够看出,GT标签在分特征图上生成priorbox,即再将全部priobox组合为mbox_priorbox做为全部默认框的真实值。再看预测过程,会在所选取的特征图进行两个 3x3卷积,其中一个输出每一个默认框的位置(x, y, w, h)四个值,另外一个卷积层输出每一个默认框检测到不一样类别物体的几率,输出个数为预测类别个数。再将全部的默认框位置整合为mbox_loc,将全部默认框预测类别的向量组合为mbox_conf。mbox_loc、mbox_conf为全部预测默认框,将它与全部默认框的真实值mbox_priorbox进行计算损失,获得mbox_loss。
图中data下方每一个priorbox都对应了min_size与max_size,表示不一样特征图上的默认框在原图上的最小与最大感觉野。关于不一样特征图上的min_size与max_size,论文中给出的计算公式,惋惜与实现的prototxt中的参数并不对应。
SSD的损失函数如图3所示,由每一个默认框的定位损失与分类损失构成。
函数
SSD训练过程当中使用的数据加强对网络性能影响很大,大约有6.7%的mAP提高。性能
(1) 随机剪裁:采样一个片断,使剪裁部分与目标重叠分别为0.1, 0.3, 0.5, 0.7, 0.9,剪裁完resize到固定尺寸。.net
(2) 以0.5的几率随机水平翻转。blog
基础网络部分特征图分辨率高,原图中信息更完整,感觉野较小,能够用来检测图像中的小目标,这也是SSD相对于YOLO检测小目标的优点所在。增长对基础网络conv4_3的特征图的检测可使mAP提高4%。v8
数据集中目标的开关每每各式各样,所以挑选合适形状的默认框可以提升检测效果。做者实验得出使用瘦高与宽扁默认框相对于只使用正方形默认框有2.9%mAP提高。get
一般卷积过程当中为了使特征图尺寸特征图尺寸保持不变,经过会在边缘打padding,但人为加入的padding值会引入噪声,所以,使用atrous卷积可以在保持感觉野不变的条件下,减小padding噪声,关于atrous参考。本文SSD训练过程当中而且没有使用atrous卷积,但预训练过程使用的模型为VGG-16-atrous,意味着做者给的预训练模型是使用atrous卷积训练出来的。使用atrous版本VGG-16做为预训模型比较普通VGG-16要提升0.7%mAP。io
做者发现SSD对小目标检测效果很差(但也比YOLO要好,所以多特征图检测),这是由于小物体在高层特征图上保留不多的信息,经过增长输入图像的尺寸可以解决对小物体检测效果。
基础