《SSD:Single Shot MultiBox Detector》 单点多尺度目标检测器
- 作者:Wei Liu,DragomirAnguelov,Dumitru Erhan
- 发表会议及时间:ECCV 2016
目标检测 object detection
随着人工智能技术的发展,目标检测被广泛地应用于各个商业领域,如自动驾驶、安防监控和机器人等,给我们的生活带来极大的改善,有着极大的使用价值,其研究意义可想而知。
目标检测发展历史
基于手工特征的目标检测
将可疑目标从原始图像中分割出来,然后对分割出来的目标进行特征提取,这些特征都是认为设计的,常用的方法有SIFT、HOG、SURF等等。最后对提取出来的目标进行分类。这里常用的分类器有SVM、Adaboost等等。
- 面临问题:
- 基于滑动窗口的区域选择策略,容易产生窗口冗余
- 手工设计的特征对于目标多样性的问题并没有好的鲁棒性
基于深度学习的目标检测
与传统方法不同,随着卷积神经网络的兴起,其对于特征的抽象能力越来越强,于是可以用卷积神经网络对图像进行特征提取,代替手工特征,而且深度神经网络学到的特征鲁棒性以及表达能力特别强,在精度方面上大大提升。
- 基本方法:
- 基于区域提名的目标检测算法
- 区域提名,即针对图像中目标物体位置,预先提出候选区域的方法。然后再通过卷积神经网络对候选区域进行样本分类,俗称two-stage检测
- 主流方法:
R-CNN、Fast R-CNN、Faster R-CNN等。
- 基于端到端学习的目标检测算法
- 无需预先提出候选区域,网络直接预测输出物体的类别概率和位置坐标值,即我们的网络是统一的网络,经过单次检测即可直接得到最终的预测结果,俗称one-stage检测
- 主流方法:
YOLO和SSD等。
SSD研究背景
由于one-stage和two-stage检测器都存在这速度和精度平衡的问题,所以,通过借鉴yolo的网络架构,Faster R-CNN中anchor boxes实现多尺度的思想设计出SSD网络。
成果
SSD在PASCAL VOC、COCO和ILSVRC数据集上均获得了最先进的结果,在voc2007测试集中,获得了59FPS和74.3%的mAp,SSD无论是在速度上还是在精度上都超过了当时最快的高精度检测器Faster R-CNN。
SSD贡献
- 速度快
提出了新的物体检测方法:SSD,比原先最快的YoLo方法,还要快,还要精确。保证速度的同时,其结果的mAP可与 Faster R-CNN相媲美。 - 不同层次
本文中为了得到高精度的检测结果,在不同层次的 feature maps上去 predict object,box offsets,同时,还得到不同 aspect ratio的 predictions - 保证精度
本文的这些改进设计,能够在当输入分辨率较低的图像时,保证检测的精度。同时,这个整体end-to-end的设计,训练也变得简单。在检测速度、检测精度之间取得较好的 trade-off
摘要 (abstract)
- 提出了SSD目标检测算法
a.基于端对端学习的目标检测
b.将边界框的输出空间离散化为一组默认框
c.预结果来自于不同层次的特征图 - 介绍了SSD的性能
a. 300 * 300分辨率的输入voc2007测试集上获得74.3%Map和59FPs
b. 512 * 512分辨率的输入,获得了76.9%的Map,超过了最先进的FasterRcnn
引言 introduction
- 介绍了当前目标检测的常用方法
step1. 提出候选框
step2. 对每个框重新取样像素或特征
step3. 应用高精度分类器分类 - 介绍了当前目标检测方法的缺点
计算量太大,速度慢,不适合实时系统
提升速度通常以降低精度为代价 - 简单介绍了SSD的改进
a. 不需要预先提出候选框
b. 不需要像素或者特征的重采样
c. 采用了多尺度的 fliters
d. 在多个特征图上预测 - 简单介绍了SSD的成果
速度和精度大幅度提升 - 介绍了SSD的贡献
a. SSD方法的核心是使用小卷积滤波器来预测特征图上固定的一组默认边界框的类别分数和位置偏移。
b. 为了实现高检测精度,我们从不同尺度的特征图产生不同尺度的预测,并且通过宽高比来明确地分离预测
c. 总之,这些设计特性得到了简单的端到端训练和高精度,进一步提高速度和精度的权衡,即使输入相对低分辨率图像
d. 实验包括在 PASCAL VOC, MS COCO和ILSVRC上评估不同输入大小下模型耗时和精度分析,并与一系列最新的先进方法进行比较
介绍 Faster Rcnn和Yolo算法
SSD算法是基于这两种算法的改进。
faster Rcnn算法介绍 (Introduction to faster Rcnn)
- 算法介绍
a. Featrue Extraction使用cnn特取特征
b. RPN Net生成 proposal
c. RoiPooling利用 proposa和cnn提取的 featrue得到固定大小的 featrue Map
d. Classification and regression利用 RoiPooling得到的 featrue进行分类和位置回归 - anchor设计
在 Featrue Extraction的最后一层特征上产生 anchor,每个像素点产生个3种ratio,3种 scale的 anchor
SSD网络结构
ssd default box设计
default box
- default box数量
default box在不同的 feature层有不同的scale,在同一个 feature层又有不同的aspect ratio,因此基本上可以覆盖输入图像中的各种形状和大小的 object, default box的总数为:
(38 * 38 * 4+19 * 19 * 6+10 * 10 * 6+5 * 5 * 6+3 * 3 * 4+1 * 1 * 4)=8732 - default box公式
sk=[0.2,0.34,0.48,0.62,0.76,0.9]
ar={1, 2, 3, 1/2, 1/3}
宽求解公式:w_k^a=sk* sqrt{a_r}
高求解公式:h_k^a=sk/ sqrt{a_r}
当ar=1时,s_k^{’}= sqrt{s_{k}s_{k+1}}
ssd匹配策略 (Matching strategy)
- iou简介
交并比( Intersection- over-Union,loU),目标检测中使用的一个概念,是产生的候选框( candidate bound)与原标记框( ground truth bound)的交叠率,即它们的交集与并集的比值。最理想情况是完全重叠,即比值为1 - 正负样本选取
将 default box和 grount truth box按照IoU( JaccardOverlap)进行匹配,匹配成功则这个default box就是 positive example(正样本);如果匹配不上,就是 negative example(负样本).在本论文中我们的iou阈值为0.5。
ssd损失函数(Loss Function)
- 位置损失
只对正样本求解位置损失,损失函数采用Smooth L1 - 置信度损失
参与损失的样本采用难例挖掘策略,损失函数用 softmax loss - 总损失
位置损失和置信度损失加权求和
ssd难例挖掘 (Hard negative mining)
- 难易样本简介
简单负样本:与g没有任何交集
简单正样本:与gt集远大于阈值
困难负样本:与g有交集,但小于阈值
困难正样本:与gt有交集,略大于阈值 - 难例挖掘策略
a. 选取所有正样本,数量k
b. 对所有负样本求loss,递减排序,取前3k
c. k个正样本,3k个负样本参与损失计算
ssd数据增强 (Data augmentation)
- 数据增强目的
使得该算法对输入的不同大小和不同形状的目标具有更好的棒性。 - 数据增强方法
水平翻转、裁剪、放大和縮小等。 - 数据增强效果
通过采用数据增强明显提升了算法的性能。
ssd对比 Faster Rcnn (SSD contrast Faster Rcnn)
SSD跟 faster-RCNN比,在精度(MAP指标)几乎保持不变的情况下,速度提升非常多,达到实时级别
- ssd属于端对端学习
- default box在不同特征图上有不同的大小
ssd对比Yolo (SSD contrast YOLO)
SSD与YOLO相比,不仅速度快同时精度大大提高
- SSD用CNN来直接进行检测,而YOLOv1使用全连接进行检测
- SSD在多个层次上进行预测,增加了多尺度的鲁棒性
- SSD采用了 Faster rcnn中的 anchor技术,利用不同长宽比先验框进行对象检测;而YOLOv1没有用 anchors技术。
SSD实验(The exper iment of SSD)
- 基础网络:我们的实验基于VGG16网络,在 SVRC CLS-LOC数据集预训练
- 类似于 DeepLab-LargeFoV [16].将fc6和fc7转换为卷积层,从fc6和fc7两层采样得到参数
- 将pool5从2×2-s2更改为3×3-s1,并使用atrous算法填“洞”。
- 删除了所有的dropout层和fc8层
- 使用SGD对这个模型进行fine-tune,初始学习率0.001,0.9 momentum,0.0005 weight decay, batch大小32
- 使用conv4_3,conv7(fc7),conv8_2,conv9_2,conv10_2和pool11来预测位置和置信度
- 用“xavier”方法初始化所有新添加的卷积层的参数
- 由于conv4_3的大小较大(38×38),因此只在其上放置3个默认框:一个0.1比例的框和另外纵横比为1/2和2的框,对于所有其他层,我们设置6个默认框
- conv4_3层采用L2正则化技术,将特征图中每个位置处的特征范数缩放为20
ssd之 Atrous
- Atrous介绍
空洞卷积( atrous convolutions) 又名扩张卷积( dilated convolutions),向卷积层引入了一个称为“扩张率( dilation rate)的新参数,该参数定义了卷积核处理数据时各值的间距。 - Atrous优点
在相同的计算条件下,空洞卷积提供了更大的感受野。空洞卷积经常用在实时图像分割中。当网络层需要较大的感受野,但计算资源有限而无法提高卷积核数量或大小时,可以考虑空洞卷积。
ssd分析 (The analysis of the SSD)
- Data augmentation is crucial
- More default box shapes is better
- Atrous is faster
- ssd存在的问题
由于浅层提取的 feature map表征能力不够强,导致ssd对小目标不够鲁棒
论文主要创新点
- 多尺度
融合多级的 feature进行预测 - anchor思想
设计各种形状大小的默认框 - 多种网络细节和训练技巧
Atrous,数据增强,难例挖掘