SSD:Single Shot MultiBox Detector
摘要:
提出了一种利用单个深度神经网络对图像中目标进行检测的方法。我们的方法名为SSD,它将边界框的输出空间离散为一组默认框,每个特征映射位置具有不同的纵横比和比例。在预测时,网络为每个默认框中每个对象类别的存在生成评分,并对该框进行调整以更好地匹配对象形状。此外,该网络结合了来自具有不同分辨率的多个特征图的预测,以自然地处理不同大小的对象。相对于需要对象建议的方法,SSD比较简单,因为它完全消除了建议生成和随后的像素或特征重采样阶段,并将所有计算封装在一个网络中。这使得SSD易于培训,并且易于集成到需要检测组件的系统中。在PASCAL VOC、COCO和ILSVRC数据集上的实验结果证实,相对于使用附加对象建议步骤的方法,SSD具有竞争力的准确性,而且速度更快,同时为训练和推理提供了统一的框架。对于300x300输入,SSD在Nvidia Titan X上以59帧每秒的速度在VOC2007测试中实现了74.3%的mAP,对于512 512输入,SSD实现了76.9%的mAP,超过了同类的最先进的更快的R-CNN模型。与其他单阶段方法相比,即使在较小的输入图像尺寸下,SSD也具有更高的精度。
1 引言
目前最先进的目标检测系统是以下方法的变体:假设边界框,为每个框重新采样像素或特性,并应用高质量的分类器。自选择性搜索工作[1]开始,该管道就在检测基准上占据了主导地位。目前,PASCAL VOC、COCO和ILSVRC检测的主要结果都是基于更快的R-CNN[2],但具有更深的特性,如[3]。虽然这些方法很精确,但是对于嵌入式系统来说计算量太大,即使对于高端硬件,对于实时应用程序来说速度也太慢。通常,这些方法的检测速度是以每秒几秒为单位(SPF)来测量的,即使是最快的高精度检测器,更快的R-CNN,也只能以每秒7帧(FPS)的速度运行。已经有很多尝试通过攻击检测管道的每个阶段来构建更快的检测器(参见第4节中的相关工作),但是到目前为止,显著提高速度的代价是显著降低检测精度。
本文提出了一种基于深度网络的目标检测器,它不需要对像素或特征进行重新采样,也不需要对边界框假设进行重新采样,并且与现有方法一样精确。这使得高精度检测的速度有了显著提高(在VOC2007测试中,59帧FPS (mAP 74.3%),而更快的R-CNN 7帧FPS (mAP 73.2%)或YOLO 45帧FPS (mAP 63.4%)。速度的根本改进来自消除边框建议和随后的像素或特征重采样阶段。我们并不是第一个这样做的人(cf[4,5]),但是通过添加一系列改进,我们能够比以前的尝试显著提高准确度。我们的改进包括使用一个小的卷积滤波器来预测包围框位置中的对象类别和偏移量,使用独立的预测器(过滤器)来检测不同的纵横比,并将这些过滤器应用到网络后期的多个特征映射中,以便在多个尺度上进行检测。通过这些改进,特别是在不同尺度下使用多层预测,我们可以用相对较低的分辨率输入实现高精度,从而进一步提高检测速度。虽然这些独立的贡献可能看起来很小,但是我们注意到,最终的系统提高了实时检测PASCAL VOC的准确性,从YOLO的63.4% mAP提高到我们的SSD的74.3% mAP。与最近在残差网络[3]上非常引人注目的工作相比,这在检测精度方面有较大的相对提高。此外,显著提高高质量检测的速度可以扩大计算机视觉有用的设置范围。
我们总结了我们的贡献如下:
我们介绍了SSD,这是一种用于多个类别的单镜头检测器,它比以前最先进的单镜头检测器(YOLO)更快,而且更准确,实际上与执行显式区域建议和池(包括更快的R-CNN)的较慢技术一样准确。
SSD的核心是使用应用于特征图的小卷积过滤器来预测一组固定的默认边界框的类别得分和框偏移量。
为了达到较高的检测精度,我们从不同尺度的特征图中生成不同尺度的预测,并根据纵横比显式分离预测。
这、些设计特点导致了简单的端到端训练和高精度,即使在低分辨率的输入图像,进一步提高了速度与精度的权衡。
实验包括在PASCAL VOC、COCO和ILSVRC上对不同输入大小的模型进行定时和精度分析,并与一系列最新的最先进方法进行比较。
2 单次检测器(SSD)
本节介绍我们提出的用于检测的SSD框架(第2.1节)和相关的培训方法(第2.2节)。然后,第3节给出了特定于数据集的模型细节和实验结果。
图1:SSD架构。(a) SSD在训练过程中只需要为每个对象输入图像和地面真值框。以卷积的方式,我们在(b)和(c)中的几个不同尺度的feature map(如8 8和4 4 In (b) and (c))中,对每个位置不同纵横比的一小组默认框(如4)进行评估。对于每个默认框,我们预测所有对象类别的形状偏移量和置信度((c1、c2、···、cp))。在训练时,我们首先将这些默认框与地面真相框匹配。例如,我们将两个默认框与猫和一个默认框与狗匹配,这两个默认框被视为正的,其余的被视为负的。模型损失是定位损失(如光滑L1[6])和置信度损失(如Softmax)之间的加权和。
2.1 模型
SSD方法基于前馈卷积网络,其产生固定大小的边界框集合和框中对象类别的分数,接着是非最大化抑制步骤以产生最终检测。早期网络基于高质量图像分类(在任何分类层之前截断(译者注:特征提取网络,例如:VGG、googlenet、alexnet))的标准架构,我们将其称为基础网络(我们的试验中使用了VGG-16网络作为基础,其他网络也应该能产生好的结果)。然后,我们向网络添加辅助结构,产生了具有以下主要特征的检测:
多尺度特征图检测:我们将卷积特征层添加到截断的基础网络的末尾。这些层尺寸逐渐减小,得到多个尺度检测的预测值。检测的卷积模型对于每个特征层是不同的(参见在单个尺度特征图上操作的Overfeat [4]和YOLO[5])。
**图2****:两个单次检测模型之间的比较:SSD和YOLO [5]。我们的SSD模型在基础网络的末尾添加了几个特征层,这些层预测了不同尺度和宽高比对默认框的偏移及其相关置信度。300×300输入尺寸的SSD在VOC2007测试中的精度显着优于448×448输入的YOLO的精度,同时还提高了运行速度,尽管YOLO网络比VGG16快。
检测的卷积预测器:每个添加的特征层(或可选的基础网络的现有特征层)可以使用一组卷积滤波器产生固定的预测集合。这些在图2中SSD网络架构顶部已指出。对于具有p个通道的大小为m×n的特征层,使用3×3×p卷积核卷积操作,产生类别的分数或相对于默认框的坐标偏移。在每个应用卷积核运算的m×n大小位置处,产生一个输出值。边界框偏移输出值是相对于默认框测量,默认框位置则相对于特征图(参见YOLO [5]的架构,中间使用全连接层而不是用于该步骤的卷积滤波器)。
默认框与宽高比:我们将一组默认边界框与顶层网络每个特征图单元关联。默认框对特征图作卷积运算,使得每个框实例相对于其对应单元格的位置是固定的。在每个特征映射单元中,我们预测相对于单元格中的默认框形状的偏移,以及每个框中实例的每类分数。具体来说,对于在给定位置的k个框中每个框,我们计算c类分数和相对于原始默认框的4个偏移量。这使得在特征图中的每个位置需要总共(c+4)k个滤波器,对于m×n特征图产生(c+4)kmn个输出。有关默认框的说明,请参见图1。我们的默认框类似于Faster R-CNN [2]中使用的anchor boxes,但我们将其应用于不同分辨率的特征图中。在多个特征图中使用不同的默认框形状,可以有效地离散可能的输出框形状空间。
2.2 训练
训练SSD与训练典型的使用区域建议的检测器的关键区别在于,需要将地面真值信息分配给固定的检测器输出集中的特定输出。在YOLO[5]的培训和更快的R-CNN[2]和多框[7]的区域建议阶段也需要一些版本。一旦确定了这个分配,端到端应用损失函数和反向传播。培训还包括选择用于检测的默认框和刻度集,以及硬负面挖掘和数据增强策略。
匹配策略 训练过程中,我们需要确定哪些默认框对应于地面真实感检测,并据此训练网络。对于每个ground truth框,我们都是从随位置、纵横比和比例而变化的默认框中选择。我们首先将每个ground truth框匹配到具有最佳jaccard重叠的默认框(如MultiBox[7])。与MultiBox不同的是,然后我们将默认框与jaccard重叠超过阈值(0.5)的任何ground truth匹配。这简化了学习问题,允许网络预测多个重叠默认框的高分,而不是要求它只选择重叠最大的一个。
训练目标:SSD训练来自MultiBox[7,8],但扩展到处理多个对象类别。以
,意味着可以有多于一个与第j个真实标签框相匹配的默认框。总体目标损失函数是位置损失(loc)和置信损失(conf)的加权和:
其中N为匹配的默认框数。如果N = 0, wet将损失设置为0。定位损失是一个平稳的L1损失[6]之间的预测框(l)和地面真相框(g)的参数。与更快的R-CNN[2]类似,我们退回到默认包围框(d)的中心(cx, cy)及其宽度(w)和高度(h)的偏移量。
置信损失是softmax损失对多类别置信(c)和权重项α设置为1的交叉验证。
重量项α通过交叉验证设置为1。
选择默认框的尺度和横宽比:大多数卷积网络通过加深层数减小特征图的大小。这不仅减少计算和存储消耗(小卷积核减少了参数所以节省了空间),而且还提供一定程度的平移和尺寸不变性。为了处理不同的目标尺寸,一些方法[4,9]建议将图像转换为不同的尺寸,然后单独处理每个尺寸,然后组合结果。然而,通过用单个网络中的若干不同层的特征图来进行预测,我们可以得到相同的效果,同时还在所有目标尺度上共享参数。之前的研究[10,11]已经表明使用来自较低层的特征图可以提高语义分割质量,因为较低层捕获到输入对象的更精细的细节。类似地,[12]表明,添加从特征图下采样的全局背景可以帮助平滑分割结果。受这些方法的启发,我们使用低层和高层的特征图进行检测预测。图1示出了在框架中使用的两个示例特征图(8×8和4×4),当然在实践中,在实践中,我们可以使用更多的小计算量的特征图(即较小的卷积核)。
已知网络中不同层次的特征图具有不同的(经验的)感受野大小[13]。幸运的是,在SSD框架内,默认框不需要对应每层的实际感受野。我们可以设计默认框平铺,以便特定的特征图学习响应目标的特定尺度。假设我们要使用m个特征图做预测。每个特征图的默认框的比例计算如下:
通过组合许多特征图在所有位置的不同尺寸和宽高比的所有默认框的预测,我们具有多样化的预测集合,覆盖各种输入对象尺寸和形状。例如图 1中,狗被匹配到4×4特征图中的默认框,但不匹配到8×8特征图中的任何默认框。这是因为那些框具有不同的尺度且不匹配狗的真实框,因此在训练期间被认为是负样本。
Hard negative mining(难负挖掘) :在匹配步骤之后,大多数默认框都是负样本,特别是当可能的默认框数量很大时。这导致了训练期间正负样本的严重不平衡(正负样本的不均衡会导致发散或者精度经常保持为1)。我们不是使用所有负样本,而是使用每个默认框的最高置信度来使负样本排序,然后挑选较高置信度的负样本,以便负样本和正样本之间的比率至多为3:1。我们发现,这导致更快的优化和更稳定的训练。
数据增强:为了使模型对于各种输入对象大小和形状更加鲁棒,每个训练图像通过以下选项之一随机采样:
使用整个原始输入图像
采样一个片段,使对象最小的jaccard重叠为0.1,0.3,0.5,0.7或0.9。
- 随机采样一个片段
每个采样片段的大小为原始图像大小的[0.1,1],横宽比在1/2和2之间。如果真实标签框中心在采样片段内,则保留重叠部分。在上述采样步骤之后,除了应用类似于[14]中所述的一些光度失真之外,将每个采样片段调整为固定大小并以0.5的概率水平翻转。
3 实验结果
基础网络:我们的实验都是基于VGG16[15],它是在ILSVRC cl - loc数据集[16]上预先训练的。与DeepLab-LargeFOV[17]类似,我们将fc6和fc7转换为卷积层,子样本参数从fc6和fc7转换为pool5,从22s2转换为333 s1,并使用a trous算法[18]填充漏洞。我们删除了所有的dropout层和fc8层。我们使用SGD对模型进行微调,初始学习率为10 3,动量为0.9,重量衰减为0.0005,批量大小为32。对于每个数据集,学习速率衰减策略略有不同,稍后我们将详细描述。
3.1 PASCAL VOC2007
在这个数据集上,我们比较了Fast R-CNN [6]和Faster R-CNN [2]。所有方法使用相同的训练数据和预训练的VGG16网络。特别地,我们在VOC2007train val和VOC2012 train val(16551images)上训练,在VOC2007(4952图像)测试。
图2显示了SSD300模型的架构细节。我们使用conv4_3,conv7(fc7),conv8_2,conv9_2,conv10_2和pool11来预测位置和置信度(对SSD500模型,额外增加了conv11_2用于预测),我们在conv4_3^3上设置了比例为0.1的默认框。用“xavier”方法初始化所有新添加的卷积层的参数[18]。由于conv4_3的大小较大(38×38),因此我们只在其上放置3个默认框:一个0.1比例的框和另外纵横比为1/2和2的框。(对于conv4_3,conv10_2和conv11_2,我们只在每个特征图位置关联4个默认框- 省略1/3和3的纵横比。)对于所有其他层,我们设置6个默认框,如第 2.2节。如[12]中所指出的,由于conv4_3与其他层相比具有不同的特征尺度,我们使用[12]中引入的L2(2范数)正则化技术,将特征图中每个位置处的特征范数(特征标准)缩放为20,并在反向传播期间学习这种缩放(尺度)。我们使用学习速率0.001进行40k次迭代,然后将其衰减到0.0001,并继续训练另外20k次迭代(并使用学习率0.0001和0.00001分别继续训练10K次迭代)。当我们在VOC2007训练集上训练时,表1显示,我们的SSD300模型已经比Fast R-CNN更准确。当以更大的500×500输入图像训练SSD,结果更准确,甚至惊人的超过了Faster R-CNN 1.9% mAP(mAP表示平均精度的均值)(当在更大的512x512输入图像上训练SSD时,结果甚至更加准确,惊人的超过了Faster R-CNN有1.7%的mAP)。如果使用更多的数据(例如VOC2007加上VOC2012)训练SSD,我们看到SSD300已经可以优于Faster R-CNN约1.1%,而SSD512更是达到3.6%。如果使用这个模型去训练如3.4节描述的COCO trainval135k和在07+12数据集使用SSD512微调,我们获得了最好的结果:81.6%mAP。
为了更详细地了解我们的两个SSD模型的性能,我们使用了来自[19]的检测分析工具。图3显示SSD可以高质量检测(大、白色区域)各种对象类别。它的大部分置信度高的检测是正确的。召回率在85-90%左右,并且比“弱”(0.1 jaccard重叠(jaccard相似度可以看成两个集合A,B的交集占并集的比例:Jaccard Sim = (A∩B) / (A∪B),其实就是计算A与B产生重叠的程度。))标准高得多。与R-CNN [20]相比,SSD具有较少的定位误差,表明SSD可以更好地定位目标,因为它直接学习回归对象形状并对对象类别进行分类,而不是使用两个分离的步骤。然而,SSD对相似对象类别(尤其是动物)有更多的混淆,部分是因为多个类别共享了位置。 图4显示SSD对边界框尺寸非常敏感。换句话说,它对较小的对象比对较大的对象具有更差的性能。这毫不意外,因为小对象在最顶层可能没有任何信息保留下来。增加输入尺寸(例如从300×300到500×500)可以帮助改善检测小对象,但是仍然有很大改进空间。积极的一面是,我们可以清楚地看到SSD在大对象上表现很好。并且对于不同的对象宽高比非常鲁棒,因为我们对每个特征图位置使用各种长宽比的默认框。
表1 : PASCAL VOC2007测试集检测结果。Fast和Faster R-CNN输入图像最小尺寸为600。两个SSD模型除了输入图像尺寸(300300和512512),其他设置与其相同。很明显,更大的输入尺寸得到更好的结果,并且使用更多的数据是有帮助的。数据:“07”表示“VOC2007 train_val”,“07+12”表示“VOC2007和VOC2012 train_val”,“07+12+COCO”表示“首先使用COCO trainval35K训练,然后利用训练好的模型对07+12进行微调训练”。
3.2 模型分析
为了更好地理解SSD,我们还进行了几组对照实验,以检查每个组件如何影响最终性能。对于所有实验,我们使用完全相同的设置和输入大小(300×300),除了变动的组件。
表2:各种设计选择和组件对SSD性能的影响
数据扩充是至关重要的:Fast和Faster R-CNN使用原始图像和水平翻转(0.5概率)图像训练 。我们使用更广泛的抽样策略,类似于YOLO[5],但它使用了我们没有使用的光度失真 。表2显示,采用这种抽样策略,我们可以改进8.8%的mAP。我们不知道我们的采样策略将对Fast和Faster R-CNN提升多少,但可能效果不大 ,因为在分类过程中使用了一个特征池化(feature pooling)步骤,这对设计中的对象翻转来说相对鲁棒 。
图3:VOC2007测试集上SSD 500对动物、车辆和家具性能的可视化。 第一行显示由于定位不良(Loc),与类似类别(Sim)、其他类别(Oth)或背景(BG)混淆的正确检测(Cor)、假阳性检测的累积分数。 红色实线反映了随着检测次数的增加,“强”标准(0.5 jaccard重叠)的召回率变化。 红色虚线使用“弱”标准(0.1 jaccard重叠)。底行显示排名靠前的假阳性类型的分布。
图4:不同目标特性对VOC2007测试集的灵敏度和影响[21]。每个红点显示标准错误栏的标准化的AP(平均准确率)。 黑色虚线表示整体归一化的AP。左边的图显示了BBox(边框bounding box)面积对每个类别的影响,右边的图显示了纵横比的影响。Key: BBox Area: XS=extra-small; S=small; M=medium; L=large; XL =extra-large. Aspect Ratio: XT=extra-tall/narrow; T=tall; M=medium; W=wide; XW =extra-wide.
更多特征图的提升 受许多语义分割工作启发[10,11,12],我们也使用底层特征图来预测边界框输出。我们比较使用conv4_3预测的模型和没有它的模型。从表2,我们可以看出,通过添加conv4_3进行预测,它有明显更好的结果(72.1% vs 68.1%)。这也符合我们的直觉,conv4_3可以捕获对象更好的细粒度,特别是细小的细节。
更多的默认框形状效果更好 如第2.2节所述,默认情况下,每个位置使用6个默认框。如果我们删除具有1/3和3宽高比的框,性能下降0.9%(0.6%)。通过进一步移除1/2和2纵横比的框,性能再下降2%。使用多种默认框形状似乎使网络预测任务更容易。
Atrous算法(一种卷积算法atrous convlution)更好更快 如第3节所述,我们使用了下采样网络VGG16的atrous版本,遵循DeepLabLargeFOV[16](这篇论文详细介绍了atrous convlution)。如果我们使用完整的VGG16,保持pool5使用2×2-s2,并且不从fc6和fc7的采集参数,添加conv5_3来预测,结果稍差(0.7%),而速度减慢大约50%(结果大致相同但速度慢了20%)。
表3:使用多个输出层的效果。
多个不同分辨率的输出图层更好 SSD的主要贡献是在不同的输出层使用不同尺度的默认框。为了衡量所获得的优势,我们逐步删除图层并比较结果。为了公平比较,每次我们删除一个图层,我们调整默认框平铺,以保持类似于原始默认框的总数(8732)(删减层后调节每一层的框的个数以保持框的总数不变)。这是通过在剩余层上堆叠更多尺度的框并根据需要调整框的尺度来完成的。我们没有详尽地优化每个设置的平铺。 表3显示随着层数减少精度随之下降,从74.3单调地下降到62.4。当我们在一个图层上堆叠多个尺度的框时,很多框都会在图像边界上,并且需要小心处理。我们尝试了Faster R-CNN [2]中使用的策略,忽略了边界上的方框。 我们观察一些有趣的趋势。例如,如果我们使用非常粗糙的特征映射(如conv11_2(1x1)或者conv10_2(3x3)),会大大地损害性能。原因可能是裁剪后我们没有足够大的框来覆盖大的目标。当我们主要使用更高分辨率的图时,性能开始再次上升,因为即使裁剪之后仍然剩余足够数量的大框。如果我们只使用conv7进行预测,那么性能是最糟糕的,这就强化了在不同层上传播不同尺度的框的至关重要的信息。此外,由于我们的预测不像[6]那样依赖于ROI池化,所以我们在低分辨率特征映射中没有collapsing bins的问题[23]。SSD架构将来自各种分辨率的特征图的预测结合起来,以达到与Faster R-CNN相当的精确度,同时使用较低分辨率的输入图像。
3.3 PASCAL VOC2012
我们采用和VOC2007实验一样的设置,这次,用VOC2012 trainval、VOC2007 trainval和test(21503张图像)三个数据集做训练,在VOC2012 test(10991张图像)测试。由于有了更多的训练数据,模型训练时以0.001学习率进行60K次迭代,再减小到0.0001继续迭代20K次。表3(表4)显示了SSD300和SSD500(SSD512^4)模型的结果。我们看到与我们在VOC2007测试中观察到的相同的性能趋势。我们的SSD300已经优于Fast R-CNN,并且非常接近Faster R-CNN(只有0.1%的差异)(我们的SSD300提高了精度比Fast/Faster R-CNN)。通过将训练和测试图像大小增加到500×500(512x512),我们的精度比Faster R-CNN高2.7%(4.5%)。与YOLO相比,SSD显著精确,可能是由于使用来自多特征图的卷积默认框和训练期间的匹配策略。当我们在使用COCO模型微调训练时,我们的SSD512实现了80.0%的mAP,这比Faster R-CNN高了4.1%。
表4:PASCAL VOC2012 test 检测结果。Fast R-CNN和Faster R-CNN使用最小尺寸为600的图像,而YOLO的图像尺寸是448x448。数据:“07++12”表示“VOC2007 trainval、VOC2007 test和VOC2012 trainval三个数据集的组合”;“07++12+COCO”表示“首先使用COCO trainval35K训练模型然后利用该模型微调训练07++12”。
3.4 MSCOCO(COCO)
为了进一步验证SSD架构,我们在MS COCO(COCO)数据集上训练了我们的SSD300和SSD500(SSD512)架构。由于COCO中的对象往往比PASCAL VOC数据集更小,因此我们对所有层使用较小的默认框。我们遵循第2.2节中提到的策略方法,但是现在我们最小的默认框具有0.1而不是0.2的缩放比例,并且conv4_3上默认框的缩放比例是0.07(但现在我们最小的默认框的尺度是0.15而不是0.2,conv4 3的默认框的尺度是0.07)(例如,对应于300×300图像的21个像素)^5。
我们使用trainval35k [21]来训练我们的模型。由于COCO有更多的对象类别,开始时的梯度不稳定。我们首先用8× 的学习率迭代4K次训练模型,接着以 学习率进行140K次迭代,再以 学习率迭代60K次, 学习率迭代40K次。表4显示了test-dev2015上的结果。与我们在PASCAL VOC数据集上观察到的类似,SSD300在mAP@0.5和mAP@[0.5:0.95]中优于Fast R-CNN,在 mAP@[0.5:0.95](mAP@0.75)与ION[24]和Faster R-CNN近似然而,但在mAP@0.5上更糟。我们推测,这是因为图像尺寸太小,这阻止了模型精确定位许多小对象。通过将图像大小增加到500×500(512x512),我们的SSD500(SSD512)在两个标准中都优于Faster R-CNN。有趣的是,我们观察到SSD512的mAP@0.75高了5.3%,但mAP@0.5仅仅高了1.2%。我们也观察到它的AP(平均准确率)和AR(平均召回率)分别提高了4.8%和4.6%对于大目标,但对于相对应的小目标只有更小的AP(1.3%)和AR(2.0%)。此外,我们的SSD500模型也比ION[21]更好,它是一个多尺寸版本的Fast R-CNN,使用循环网络显式模拟上下文。在图5中,我们展示了使用SSD500(SSD512)模型在MSCOCO test-dev的一些检测示例。
表5:COCO test-dev2015检测结果。
3.5 ILSVRC初步结果
我们将用于COCO的相同网络架构应用于ILSVRC DET数据集[16]。我们使用ILSVRC2014 DET火车和在[22]中使用的val1训练SSD300模型。我们首先用10个3的学习率对模型进行320k迭代的训练,然后继续用10个4的80k迭代和10个5的40k迭代进行训练。我们可以在val2集合[22]上实现43.4 mAP。再次验证了SSD是一个高质量实时检测的通用框架。
3.6 用于小对象精度的数据增强
没有如Faster R-CNN中的后续的特征重采样步骤,小目标的分类任务对于SSD来说相对困难,正如我们的分析(见图4)所示。第2.2节中描述的数据增强策略有助于显着提高性能,特别是在PASCAL VOC等小数据集上。策略产生的随机产物可以被认为是“放大(zoom in)”操作,并且可以产生许多更大的训练样例。为了实现可以创建更多小型训练示例的“缩小(zoom out)”操作,我们首先将图像随机放置在16x 的铺面上。 在我们做任何随机产物操作之前,原始图像大小的平均值被填充。因为通过引入这个新的“扩展”数据增强策略,我们有更多的训练图像,所以我们必须加倍训练迭代。如表6所示,我们看到多个数据集的mAP持续上升2%-3%。具体来说,图6显示新的增强策略显着提高了小对象的性能。这个结果强调了数据增强策略对最终模型精度的重要性。
另一种改进SSD的方法是对默认框设计一个更好的平铺,使得每个位置和比例尺度能够与特征图的每个位置的感受野相匹配对齐。 我们将这个留给未来的工作。
图5:使用SSD512模型对COCO test-dev的检测样例。我们显示了评分高于0.6的检测框,每种颜色对应一种目标类别。
**表6:当我们添加图片扩展数据增强策略时在多数据集上的结果。****SSD300和SSD512是使用新的增强的数据训练出的模型。
**图6:新的数据增强的目标尺寸对VOC2007 test的敏感和影响。****顶行显示了对于原始SSD300和SSD512的每类的BBOX Area(边框面积)的影响,而底行是对应的使用数据增强策略训练的SSD300和SSD512模型。明显可以观察到新的数据增强策略可以显著帮助检测小目标。
3.7 推论
考虑到从我们的方法普遍生成大量的框,有必要在推理期间有效地执行非最大抑制(nms)。通过使用0.01的置信度阈值,我们可以过滤掉大多数框。然后,我们使用Thrust CUDA库进行排序,使用GPU计算所有剩余框之间的重叠,对jaccard重叠为0.45的每个类应用nms,并保留每个图像的前200个检测。对于SSD300和20个VOC类别,每个图像该步骤花费大约2.2(1.7)毫秒,这接近在所有新添加的层上花费的总时间(2.4毫秒)。我们使用Titan X和cuDNN v4以Intel Xeon E5-2667v3@3.20GHz测量批量大小为8的速度。
表7显示了SSD、Faster R-CNN[2]和YOLO [5]之间的比较。Faster R-CNN对region proposal(候选区域)使用额外的预测层,并且需要特征下采样。相比之下,我们的SSD500(SSD300和SSD512)方法在速度和精度上均优于Faster R-CNN。众所周知的是,SSD300是首创的实时实现70%以上mAP的方法。虽然Fast YOLO[5]可以运行在155帧每秒,但精度只有差不多20%(22%)的mAP。请注意,大约80%的前向时间花费在基础网络上(本例中为VGG16)。因此,使用更快的基站网络可以进一步提高速度,这也可能使SSD512模型成为实时的。
**表7:Pascal VOC2007 test上的结果。****SSD300是唯一的可以实现超过70%mAP的实时检测方法。通过使用大输入图像,在保持接近实时速度的同时,SSD512在精度上优于所有方法。
4 相关工作
目前有两种已建立的用于图像中对象检测的方法,一种基于滑动窗口,另一种基于region proposal(候选区域)分类。在卷积神经网络出现之前,用于检测的两种方法DeformablePart Model(DPM)[22]和选择性搜索[1]性能接近(在卷积神经网络出现之前,检测方面最先进的两种方式——DeformablePart Model(DPM)[22]和选择性搜索[1]——有相似的性能)。然而,在R-CNN[20]带来的显着改进之后,其结合了选择性搜索region proposal和基于后分类的卷机网络,region proposal目标检测方法变得普遍。
原始的R-CNN方法已经以各种方式进行了改进。第一组方法提高了后分类的质量和速度,因为它需要对成千上万的图像作物进行分类,这是昂贵和耗时的。SPPnet[9]对原始的R-CNN方法大大提速。它引入了空间金字塔池化层,其对区域大小和比例尺度更加鲁棒,并且允许分类层重新使用在若干图像分辨率下生成的特征图特征。Fast R-CNN[6]扩展了SPPnet,使得它可以通过最小化置信度和边界框回归的损失来对所有层进行端到端微调,这在MultiBox[7]中首次引入用于学习对象。
第二组方法使用深层神经网络提高proposal(候选框)生成的质量。在最近的工作中,例如MultiBox[7,8],基于低水平图像特征的选择性搜索region proposal被直接从单独的深层神经网络生成的proposal所替代。这进一步提高了检测精度,但是导致了一些复杂的设置,需要训练两个相互依赖的神经网络。Faster R-CNN[2]通过从region proposal网络(RPN)中学习的方案替换了选择性搜索proposal,并且引入了通过微调共享两个网络的卷积层和预测层之间来交替集成RPN与Fast R-CNN的方法。用这种region proposa方法池化中等水平的特征图,最终分类步骤更简便。我们的SSD与Faster R-CNN中的region proposal网络(RPN)非常相似,因为我们还使用固定的(默认)框来进行预测,类似于RPN中的achor框。但是,不是使用这些来池化特征和评估另一个分类器,我们同时在每个框中为每个对象类别同时产生一个分数。因此,我们的方法避免了将RPN与Fast R-CNN合并的复杂性,并且更容易训练,更快速,更易于集成到其他任务中。
另一组方法与我们的方法直接相关,干脆跳过proposal步骤,直接预测多个类别的边界框和置信度。OverFeat[4]是滑动窗口方法的深度版本,在知道基础对象类别的置信度之后直接从最顶层特征图的每个位置预测边界框。YOLO [5]使用整个最高层特征图来预测多个类别和边框(这些类别共享)的置信度。我们的SSD方法属于此类别,因为我们没有proposal步骤,但使用默认框。然而,我们的方法比现有方法更灵活,因为我们可以在不同尺度的多个特征图中的每个特征位置上使用不同宽高比的默认框。如果顶层特征图每个位置只使用一个默认框,我们的SSD将具有与OverFeat[4]类似的架构;如果我们使用整个顶层特征图并且添加一个全连接层用于预测而不是我们的卷积预测器,并且没有明确考虑多个宽高比,我们可以近似地再现YOLO[5]。
5 结论
本文介绍了SSD,一种用于多个类别的快速单次目标检测器。我们的模型的一个关键特点是使用附属于网络顶部的多特征图的多尺度卷积边框输出。这种表示允许我们有效地模拟可能的框形状空间。我们实验验证,给定适当的训练策略,更大量的仔细选择的默认边框得到了性能的提高。我们建立的SSD模型比现有的方法至少要多一个数量级的框预测采样位置,比例和纵横比2,5,7。我们证明,给定相同的VGG-16基础架构,SSD在精度和速度方面胜过最先进的对象检测器。我们的SSD500(SSD512)型号在PASCAL VOC和MS COCO的精度方面明显优于最先进的Faster R-CNN [2],速度快了3倍。 我们的实时SSD300模型运行在58 FPS,这比当前的实时YOLO[5]更快,同时产生了明显更优越的检测精度。
除了它的独立的效用,我们相信,我们的完整和相对简单的SSD模型为使用目标检测组件的大型系统提供了一个有用的组成块。一个有希望的未来方向,是探索其作为使用循环神经网络的系统一部分,用以检测和跟踪视频中对象。
6 致谢
这个项目是在谷歌开始的实习项目,并在UNC继续。 我们要感谢亚历克斯·托舍夫有用的讨论,并感谢谷歌的Image Understanding和DistBelief团队。 我们也感谢菲利普·阿米拉托和帕特里克·波尔森有益的意见。我们感谢NVIDIA提供K40 GPU并感谢NSF 1452851,1446631,1526367,133771的支持。
参考文献
Uijlings, J.R., van de Sande, K.E., Gevers, T., Smeulders, A.W.: Selective search for objectrecognition. IJCV (2013)
Ren, S., He, K., Girshick, R., Sun, J.: Faster R-CNN: Towards real-time object detectionwith region proposal networks. In: NIPS. (2015)
He, K., Zhang, X., Ren, S., Sun, J.: Deep residual learning for image recognition. In: CVPR.(2016)
Sermanet, P., Eigen, D., Zhang, X., Mathieu, M., Fergus, R., LeCun, Y.: Overfeat: Integratedrecognition, localization and detection using convolutional networks. In: ICLR. (2014)SSD: Single Shot MultiBox Detector 17
Redmon, J., Divvala, S., Girshick, R., Farhadi, A.: You only look once: Unified, real-timeobject detection. In: CVPR. (2016)
Girshick, R.: Fast R-CNN. In: ICCV. (2015)
Erhan, D., Szegedy, C., Toshev, A., Anguelov, D.: Scalable object detection using deepneural networks. In: CVPR. (2014)
Szegedy, C., Reed, S., Erhan, D., Anguelov, D.: Scalable, high-quality object detection.arXiv preprint arXiv:1412.1441 v3 (2015)
He, K., Zhang, X., Ren, S., Sun, J.: Spatial pyramid pooling in deep convolutional networksfor visual recognition. In: ECCV. (2014)
Long, J., Shelhamer, E., Darrell, T.: Fully convolutional networks for semantic segmentation.In: CVPR. (2015)
Hariharan, B., Arbelaez, P., Girshick, R., Malik, J.: Hypercolumns for object segmentation ´and fine-grained localization. In: CVPR. (2015)
Liu, W., Rabinovich, A., Berg, A.C.: ParseNet: Looking wider to see better. In: ILCR. (2016)
Zhou, B., Khosla, A., Lapedriza, A., Oliva, A., Torralba, A.: Object detectors emerge in deepscene cnns. In: ICLR. (2015)
Howard, A.G.: Some improvements on deep convolutional neural network based imageclassification. arXiv preprint arXiv:1312.5402 (2013)
Simonyan, K., Zisserman, A.: Very deep convolutional networks for large-scale image recognition. In: NIPS. (2015)
Russakovsky, O., Deng, J., Su, H., Krause, J., Satheesh, S., Ma, S., Huang, Z., Karpathy, A.,Khosla, A., Bernstein, M., Berg, A.C., Fei-Fei, L.: Imagenet large scale visual recognitionchallenge. IJCV (2015)
Chen, L.C., Papandreou, G., Kokkinos, I., Murphy, K., Yuille, A.L.: Semantic image seg�mentation with deep convolutional nets and fully connected crfs. In: ICLR. (2015)
Holschneider, M., Kronland-Martinet, R., Morlet, J., Tchamitchian, P.: A real-time algorithmfor signal analysis with the help of the wavelet transform. In: Wavelets. Springer (1990)286–297
Jia, Y., Shelhamer, E., Donahue, J., Karayev, S., Long, J., Girshick, R., Guadarrama, S.,Darrell, T.: Caffe: Convolutional architecture for fast feature embedding. In: MM. (2014)
Glorot, X., Bengio, Y.: Understanding the difficulty of training deep feedforward neuralnetworks. In: AISTATS. (2010)
Hoiem, D., Chodpathumwan, Y., Dai, Q.: Diagnosing error in object detectors. In: ECCV
Girshick, R., Donahue, J., Darrell, T., Malik, J.: Rich feature hierarchies for accurate objectdetection and semantic segmentation. In: CVPR. (2014)
Girshick, R., Donahue, J., Darrell, T., Malik, J.: Rich feature hierarchies for accurate objectdetection and semantic segmentation. In: CVPR. (2014)
Zhang, L., Lin, L., Liang, X., He, K.: Is faster r-cnn doing well for pedestrian detection. In:ECCV. (2016)
Bell, S., Zitnick, C.L., Bala, K., Girshick, R.: Inside-outside net: Detecting objects in contextwith skip pooling and recurrent neural networks. In: CVPR. (2016)
COCO: Common Objects in Context. http://mscoco.org/dataset/
Felzenszwalb, P., McAllester, D., Ramanan, D.: A discriminatively trained, multiscale, deformable part model. In: CVPR. (2008)