发表会议:2016 ECCV
作者:Wei Liu
论文:https://arxiv.org/abs/1512.02325
代码:https://github.com/weiliu89/caffe/tree/ssd
一:模型结构
SSD由VGG-16扩展并添加四个卷积层而成。
图1:网络结构模型图
图2:网络模型详细结构图
二:核心算法
2.1多尺度特征图
作者同时采用低层和高层的不同尺度的feature map做检测。 所谓多尺度采用大小不同的特征图,CNN网络一般前面的特征图比较大,后面会逐渐采用stride=2的卷积或者pool来降低特征图大小。如下图所示:一个比较大的特征图和一个比较小的特征图,它们都用来做检测。这样做的好处是比较大的特征图来用来检测相对较小的目标,而小的特征图负责检测大目标。
图3 :多尺度特征图
2.2:default box(对特征图切割)
default box 就是每一个格子上,一系列固定大小的 box,即图中虚线所形成的一系列 boxes。
图4:多尺度特征图上产生k个default box
3.3 Default box 生成规则
3.4 prior box
prior box是指实际中选择的default box(每一个feature map cell 中的k个default box选取一部分)。prior box则是实际的选取。训练中一张完整的图片送进网络获得各个feature map,将prior box与ground truth box做匹配,将prior box尽可能回归到ground truth box。
图5:通过Prior box后进行NMS选择final box
3.5 正负样本
在生成一系列的 predictions boxs之后,会产生很多个符合 ground truth box 的 predictions boxes,但不符合 ground truth boxes 也很多,而且 negative boxes远多于 positive boxes,会造 negative boxes、positive boxes 之间的不均衡。训练时难以收敛。 因此作者采取先将每一个物体位置上对应predictions(default boxes)是 negative 的 boxes 进行排序,按照default boxes的confidence 的大小。选择最高的几个,保证最后 negatives、positives 的比例在 3:1。
3.6 损失函数
四:实验结果分析总结
1)SSD采用CNN直接进行检测,然而YOLO在全连接层之后进行检测;
2)SSD提取的不同尺度的feature map来做检测,大尺度的特征图(靠前的特征图)用来检测比较小的物体,而小尺度的特征图用来检测大物体;
3)SSD采用了不同尺度和不同长宽比的先验框(Prior Box ,Default Box,在faster r-cnn中叫做锚,Anchor); SSD算法是在YOLO的基础上改进的单阶段方法,通过融合多个feature map上的BB,在提高速度的同时提高了检测的精度,性能超过了YOLO和Faster-rcnn。