SSD: Single Shot MultiBox Detector学习总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gentelyang/article/details/84326794

发表会议: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。

猜你喜欢

转载自blog.csdn.net/gentelyang/article/details/84326794