SSD: Single Shot MultiBox Detector

SSD: Single Shot MultiBox Detector论文解读

论文下载地址
github源码地址

背景

CVPR2016,在目标检测的领域上,RBG大神又参与了YOLO的工作,提出了一种新的目标检测的思路。YOLO的方法有了一个明显的优点就是速度很快,能达到45FPS,并且保持mAP63.4的精度。这种方法的提出,为实时性目标检测提供了可能,但是缺点也很明显,就是精度比较低,之前的方法Faster-RCNN 速度7FPS, mAP 能达到73.2。也就是说YOLO虽然检索速度快了,但是这种快是牺牲精度达到的。所以,作者提出了一种新的构想,能不能让目标检测又快又好呢?答案是确定的。YOLO快主要是利用了回归的想法,不需要寻找region proposal,而是直接预测目标的位置和置信度。 但是Faster-RCNN准,却利用了anchor box的思想,利用卷积层的特征来预测多尺度的box,不像YOLO一样,每一个box只预测一个目标,显得更加合理。作者的思路很明显,就是Faster RCNN+YOLO,利用YOLO的思路和Faster RCNN的anchor box的思想,于是SSD诞生了。

主要工作

整个论文主要做了如下的工作:

  • 设计了一个SSD的网络结构,比YOLO快,更加精确
  • 在feature map用3*3的卷积核,预测多尺度的一系列的Box offsets和category scores
  • SSD主要利用不同层的feature map,获得不同比例的图像。
  • 设计了一个end-to-end的训练
  • 通过实验,在不同的数据集训练,验证自己的效果的确优于其他方法。

对于论文,个人觉得论文这几句话道出了本文的精辟。
The fundamental improvement in speed comes from eliminating bounding box proposals and the subsequent pixel or feature resampling stage.
Our improvements include using a small convolutional filter to predict object categories and offsets in bounding box locations, using separate predictors (filters) for different aspect ratio detections, and applying these filters to multiple feature maps from the later stages of a network in order to perform detection at multiple scales.

SSD

Model


图1

上图是SSD300的模型。观察上图可以发现,不同的feature map都会用一个卷积核进行卷积操作,不同的feature map对应着不同的感受野,在低层的feature map,感受野比较小,高层的感受野比较大,在不同的feature map进行卷积,可以达到多尺度的目的。观察YOLO,后面存在两个全连接层,全连接层以后,每一个输出都会观察到整幅图像,并不是很合理。但是SSD去掉了全连接层,每一个输出只会感受到目标周围的信息,包括上下文。这样来做就增加了合理性。并且不同的feature map,预测不同宽高比的图像,这样比YOLO增加了预测更多的比例的box。

对于上图如何得到8732是怎么得到的?在阅读paper的时候一直很迷惑,后来论文看完才豁然开朗。Conv4_3 38*38的feature map通过3*3的卷积层预测4个不同宽高比的box,Conv7 19*19预测6个,Conv8_2, Conv9_2预测6个不同长宽比的box,Conv 10_2,Conv11_2预测4个。所以38*38*4+19*19*6+10*10*6+5*5*6+3*3*4+4 = 8732。

Training

训练的过程中,SSD的Ground Truth需要应用到位置的输出box的位置上。在训练好的8732个类别以后,需要应用到softmax进行分类,这里就要用到了分类的正负样本。这里需要采集正负样本,正样本设定为ground truth和预测的box,如果两者的IOU阈值为0.5,就设定为正样本,其他的设定为负样本。实验的过程中,IOU的阈值可以手动设定。

SSD训练的目标函数如下所示:

L(x,c,l,g)=1N(Lconf(x,c)+αLloc(x,l,g))(1)

公式(1)中N代表正样本的数目。


这里写图片描述

这里写图片描述

实验结果

SSD 主要是VGG16基础上fine-tuning得到的。作者把网络的fc6,fc7变成了卷积层。
在VOC2007数据集的实验结果如下所示:


这里写图片描述

SSD在小的目标检测效果比大目标要差,也是理所应当,小目标在top layer信息很少,提高图像的大小可以提高实验的效果。

在VOC2012数据集的实验结果如下所示:


这里写图片描述

在COCO数据集的实验结果如下所示:


这里写图片描述

实验的时间如下图所示:


这里写图片描述

总结

Hard negative mining

在Matching的过程中,大部分的box都是负例,导致了正负样本不平衡,本文中作者根据confidence loss对所有的box进行排序,使正负例的比例保持在1:3,这样做能提高4%左右。

Data augmentation

为了模型更加鲁棒,需要使用不同尺寸的输入和形状,作者对数据进行了如下方式的随机采样:

  • 使用整张图片
  • 使用IOU和目标物体为0.1, 0.3,0.5, 0.7, 0.9的patch
  • 随机采取一个patch

使用数据增益通过实验证明,能够将数据mAP增加8.8%。


这里写图片描述

More default box shape

从table2 可以看出,使用更多比例的box,mAP的准确率会大大提升。

Atrous is faster

Multiple output layers at different resolutions is better

参考文章

SSD: Single Shot MultiBox Detector ECCV2016

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值