文章目录
- Abstract
- Introduction
- 此前
- 本文
- 贡献总结如下:
- The Single Shot Detector (SSD)
- SSD Model
- Multi-scale feature maps for detection
- Convolutional predictors for detection
- Default boxes and aspect ratios
- Training
- Matching strategy
- Training objective
- Choosing scales and aspect ratios for default boxes
- Hard negative mining(困难样本挖掘)
- Data augmentation
- Experimental Results
- PASCAL VOC2007
- Model analysis
- PASCAL VOC2012
- COCO
- 小目标精度的数据增强
- Related Work
- Conclusion
原文链接
源代码
Abstract
我们提出了一种使用单个深度神经网络检测图像中物体的方法,将边界框的输出空间离散为一组默认框,每个特征图位置具有不同的长宽比和尺度,我们的方法命名为SSD。在预测时,网络为每个默认框中每个对象类别的存在生成分数,并对框进行调整以更好地匹配目标形状。此外,该网络结合了来自不同分辨率的多个特征映射的预测,以自然地处理各种大小的对象。相对于需要目标候选框的方法,SSD是简单的,因为它完全消除了候选框生成和随后的像素或特征重新采样阶段,并将所有计算封装在单个网络中,这使得SSD易于训练和直接集成到需要检测组件的系统中。在PASCAL VOC, COCO和ILSVRC数据集上的实验结果证实,SSD具有与使用额外目标候选框步骤的方法相竞争的准确性,并且速度更快,同时为训练和推理提供了统一的框架。与其他单阶段方法相比,SSD即使在较小的输入图像尺寸下也具有更好的精度
Introduction
此前
当前最先进的目标检测系统是以下方法的变体:假设边界框,为每个框重新采样像素或特征,并应用高质量的分类器。自选择性搜索(SS)工作[1]以来,该管道在检测基准上占据了主导地位,目前PASCAL VOC, COCO和ILSVRC检测的领先结果都基于Faster R-CNN[2],尽管具有[3]等更深层的特征。这些方法虽然准确,但对于嵌入式系统来说计算量太大,即使是高端硬件,对于实时应用程序来说也太慢
已经有很多尝试通过攻击检测管道的每个阶段来构建更快的检测器(参见第4节中的相关工作),但到目前为止,速度的显著提高只以检测精度的显著降低为代价
本文
本文提出了第一个基于深度网络的目标检测器,它不需要为边界框假设重新采样像素或特征,并且与其他方法一样准确,这大大提高了高精度检测的速度
速度的根本改进来自于消除边界框生成和随后的像素或特征重采样阶段
我们的改进包括使用一个小的卷积滤波器来预测物体类别和边界框位置的偏移量,使用单独的预测器(过滤器)进行不同的宽高比检测,并将这些过滤器应用于来自网络后期阶段的多个特征映射,以便在多个尺度上执行检测
通过这些改进,特别是在不同的尺度上使用多层预测,我们可以使用相对较低的分辨率输入实现高精度,进一步提高检测速度
贡献总结如下:
— 介绍了SSD,一种针对多个类别的少样本检测器,它比以前最先进的少样本检测器(YOLO)更快,而且更准确,实际上与执行显式候选区域和池化(包括faster R-CNN)的较慢技术一样准确
— SSD的核心是使用应用于特征映射的小卷积过滤器来预测一组固定的默认边界框的类别分数和框偏移
—为了达到较高的检测精度,我们从不同比例尺的特征图中产生不同比例尺的预测,并通过纵横比明确地分离预测
—这些设计特点导致简单的端到端训练和高精度(即使在低分辨率输入图像),进一步提高速度与精度的权衡
—实验包括在PASCAL VOC、COCO和ILSVRC上对不同输入大小的模型进行时序和准确性分析,并与一系列最新的最先进的方法进行比较
The Single Shot Detector (SSD)
SSD Model
SSD方法基于前馈卷积网络,该网络生成固定大小的边界框集合和这些框中存在的对象类实例的分数,然后通过非最大抑制步骤生成最终检测,早期的网络层基于用于高质量图像分类的标准体系结构(在任何分类层之前被截断),我们将其称为基础网络,然后,我们将辅助结构添加到网络中,以产生具有以下关键特征的检测:
Multi-scale feature maps for detection
我们将卷积特征层添加到截断的基础网络的末端,这些层的尺寸逐渐减小,并允许在多个尺度上预测探测。用于预测检测的卷积模型对于每个特征层都是不同的(参见Overfeat[4]和YOLO[5],它们在单个尺度特征图上运行
Convolutional predictors for detection
每个添加的特征层(或者选择一个来自基础网络的现有特征层)可以使用一组卷积滤波器产生一组固定的检测预测,这些都显示在图2中的SSD网络架构之上
SSD和YOLO[5]两种少样本检测模型的比较
我们的SSD模型在基础网络的末端添加了几个特征层,这些特征层预测了不同比例和宽高比的默认框的偏移量及其相关的置信度。在VOC2007测试中,300 × 300输入尺寸的SSD在精度上明显优于448 × 448 YOLO,同时速度也有所提高
Default boxes and aspect ratios
对于网络顶部的多个特征图,我们将一组默认边界框与每个特征图单元相关联。默认框以卷积方式平铺特征映射,因此每个框相对于其相应单元的位置是固定的。在每个特征映射单元中,我们预测相对于单元中默认框形状的偏移量,以及每个类的分数,这些分数表明每个框中存在一个类实例。
具体来说,对于给定位置的每k个框,我们计算c类分数和相对于原始默认框形状的4个偏移量。这导致总共有**(c + 4)k个过滤器应用于特征图中的每个位置,对于一个m × n的特征图产生(c + 4)kmn输出**。我们的默认框类似于Faster R-CNN b[2]中使用的锚框,但是我们将它们应用于不同分辨率的几个特征图,允许在几个特征映射中使用不同的默认框形状,可以有效地离散可能的输出框形状的空间
Training
训练SSD和训练使用区域生成的典型检测器之间的关键区别在于,需要将基础真值信息分配给固定检测器输出集合中的特定输出
训练还包括选择检测的默认框和尺度集,以及硬负挖掘和数据增强策略
Matching strategy
我们首先将每个ground truth box与具有最佳jaccard重叠的默认box(如MultiBox[7])进行匹配。与MultiBox不同,我们然后将默认框与任何高于阈值(0.5)的jaccard重叠的基本事实相匹配,这简化了学习问题,允许网络预测多个重叠的默认框的高分,而不是要求它只选择重叠最大的一个
Training objective
SSD训练目标来源于MultiBox目标[7,8],但扩展到处理多个对象类别。设x^p ij ={1,0}为类别p的第i个默认框与第j个接地真值框匹配的指标。在上述匹配策略中,我们可以有累加求和x的p次方ij <=1。总体目标损失函数是局部损失(loc)和置信度损失(conf)的加权和
N是匹配的默认框的数量,如果N = 0,则将损失设为0。我们回归到默认边界框(d)的中心(cx,cy)及其宽度(w)和高度(h)的偏移量
置信度损失是多个类置信度©上的softmax损失
通过交叉验证将权重项α设为1
Choosing scales and aspect ratios for default boxes
通过利用单个网络中来自多个不同层的特征图进行预测,我们可以模拟相同的效果,同时还可以在所有对象尺度上共享参数
我们同时使用上下特征映射进行检测
假设我们想用m个特征映射进行预测。每个特征图的默认框的比例计算为:
其中S min为0.2,S max为0.9,这意味着最低层的尺度为0.2,最高层的尺度为0.9,中间所有层的间隔是规则的
通过将所有默认框的预测与许多特征图的所有位置的不同比例和维度相结合,我们有了一组不同的预测,涵盖了各种输入对象的大小和形状。例如,在图1中,狗与4 × 4特征图中的默认框匹配,但不与8 × 8特征图中的任何默认框匹配。这是因为这些框有不同的尺度,与狗的框不匹配,因此在训练中被认为是负面的
Hard negative mining(困难样本挖掘)
在匹配步骤之后,大多数默认框都是负的,特别是当可能的默认框的数量很大时。这就导致了正面和负面训练示例之间的严重不平衡。我们不使用所有的负面示例,而是使用每个默认框的最高置信度损失对它们进行排序,并选择顶部的示例,以便负面和正面之间的比率最多为3:1。我们发现,这导致更快的优化和更稳定的训练
Data augmentation
为了使模型对各种大小和形状的输入对象具有更强的鲁棒性,每个训练图像通过以下选项之一随机采样:
—使用完整的原始输入图像
—采样一个补丁,使最小的jaccard重叠的对象是0.1,0.3,0.5,0.7,或0.9
—随机抽取一个补丁
每个采样patch的大小为原始图像大小的[0.1,1],宽高比在1 2 ~ 2之间,如果地面真值盒的中心在采样patch中,我们保留重叠的部分
Experimental Results
我们的实验都是基于VGG16[15],它是在ILSVRC CLS-LOC数据集[16]上预训练的
PASCAL VOC2007
Model analysis
为了更好地理解SSD,我们进行了受控实验,以检查每个组件如何影响性能。对于所有的实验,我们使用相同的设置和输入大小(300 × 300),除了指定更改设置或组件
数据增强是关键
默认box形状越多越好
使用Atrous速度更快
不同分辨率下的多个输出层效果更好
PASCAL VOC2012
COCO
小目标精度的数据增强
第2.2节中描述的数据增强策略有助于显著提高性能,特别是在PASCAL VOC这样的小数据集上
该策略生成的随机作物可以被认为是一种“放大”操作,可以生成许多更大的训练示例。为了实现“缩小”操作,创建更多的小训练样例,我们首先将图像随机放置在原始图像大小的16倍的画布上,然后填充平均值,然后再进行任何随机裁剪操作。因为通过引入这种新的“扩展”数据增强技巧,我们有更多的训练图像,我们必须将训练迭代增加一倍。我们看到,mAP在多个数据集上一致地增加了2%-3%,如表6所示。具体来说,图6显示了新的增强技巧显著提高了小对象的性能。这一结果强调了数据增强策略对最终模型精度的重要性
改进SSD的另一种方法是设计更好的默认框平铺,以便其位置和比例与特征映射上每个位置的接受域更好地对齐
Related Work
图像中的目标检测方法有两类,一类是基于滑动窗口的方法,另一类是基于区域候选框分类的方法。在卷积神经网络出现之前,这两种最先进的方法——可变形部件模型(DPM)[26]和选择性搜索[1]——具有相当的性能。然而,在R-CNN[22]将选择性搜索区域候选框和基于卷积网络的后分类相结合带来了巨大的改进之后,区域候选框目标检测方法开始流行
最初的R-CNN方法已经在很多方面得到了改进,第一组方法提高了后分类的质量和速度,因为它需要对成千上万的图像进行分类,既昂贵又耗时。SPPnet[9]大大加快了原来的R-CNN方法。它引入了一个空间金字塔池层,该层对区域大小和规模具有更强的鲁棒性,并允许分类层重用在几种图像分辨率下生成的特征映射上计算的特征。Fast R-CNN[6]扩展了SPPnet,因此它可以通过最小化置信度和边界盒回归的损失来微调所有层的端到端,这在MultiBox[7]中首次引入用于学习对象
第二组方法使用深度神经网络提高候选框生成的质量。在最近的工作中,如MultiBox[7,8],基于低级图像特征的选择性搜索区域候选框被直接由单独的深度神经网络生成的候选框所取代。这进一步提高了检测精度,但导致设置有些复杂,需要训练两个神经网络,它们之间存在依赖关系。Faster R-CNN[2]采用区域生成网络(region proposal network, RPN)替代选择性搜索候选框,并引入了一种将RPN与Fast R-CNN融合的方法,该方法通过对这两个网络进行微调共享卷积层和预测层的交替进行。这种方法使用区域候选框来汇集中级特征,并且最后的分类步骤成本更低
我们的SSD与Faster R-CNN中的区域建议网络(RPN)非常相似,因为我们也使用一组固定的(默认)框进行预测,类似于RPN中的anchor框。但是,我们没有使用这些特征来汇集特征并评估另一个分类器,而是同时为每个框中的每个对象类别生成一个分数。因此,我们的方法避免了将RPN与Fast R-CNN合并的复杂性,并且更容易训练,更快,并且直接集成到其他任务中
与我们的方法直接相关的另一组方法完全跳过了候选框步骤,直接预测多个类别的边界框和置信度。OverFeat[4]是滑动窗口方法的深度版本,在知道底层对象类别的置信度后,直接从最顶层特征图的每个位置预测一个边界框。YOLO[5]使用整个最顶层的特征映射来预测多个类别和边界框(这些类别共享)的置信度。我们的SSD方法属于这一类,因为我们没有候选框步骤,而是使用默认框
我们的方法比现有的方法更灵活,因为我们可以在不同比例尺的多个特征图的每个特征位置上使用不同纵横比的默认框。如果我们只使用顶部功能图中的每个位置的默认盒子,那么我们的SSD将具有与OverFeat[4]相似的架构;如果我们使用整个最顶层的特征图,并添加一个完全连接的层来预测,而不是我们的卷积预测器,并且不明确地考虑多个纵横比,我们可以近似地重现YOLO
Conclusion
本文介绍了一种快速的多类别少样本目标检测器SSD。我们模型的一个关键特征是使用多尺度卷积边界盒输出附加到网络顶部的多个特征映射,这种表示允许我们有效地为可能的盒子形状空间建模
我们通过实验验证,在给定适当的训练策略的情况下,大量精心选择的默认边界框可以提高性能。与现有方法相比,我们构建的SSD模型至少具有一个数量级的box预测采样位置、规模和纵横比
我们证明,在相同的VGG-16基础架构下,SSD在精度和速度方面都优于其最先进的目标检测器。我们的SSD512模型在PASCAL VOC和COCO的精度方面显著优于最先进的Faster R-CNN[2],同时速度提高了3倍。我们的实时SSD300模型以59 FPS的速度运行,比目前的实时YOLO[5]更快,同时产生明显更好的检测精度
除了它的独立实用程序外,我们相信我们的单片和相对简单的SSD模型为使用对象检测组件的大型系统提供了一个有用的构建块。一个有希望的未来方向是探索其作为使用循环神经网络的系统的一部分,以同时检测和跟踪视频中的物体