SSD: Single Shot MultiBox Detector
我们提出了一种使用单个深度神经网络检测图像中的对象的方法。我们的方法命名为SSD,将边界框的输出空间离散化为一组默认框,分布在不同的宽高比和每个要素图位置的比例上。在预测时,网络为每个默认框中的每个对象类别的存在生成分数,并产生对框的调整以更好地匹配对象形状。另外,网络将来自具有不同分辨率的多个特征图的预测组合在一起以自然地处理各种尺寸的对象。SSD相对于需要目标提议的方法而言是简单的,因为它完全消除了提议生成和后续像素或特征重采样阶段,并将所有计算封装在单个网络中。这使得SSD易于训练并且可以直接集成到需要检测组件的系统中。PASCAL VOC,COCO和ILSVRC数据集的实验结果证实,SSD与使用额外对象提议步骤的方法相比具有竞争力,并且速度更快,同时为培训和推理提供了统一的框架。对于300×300的输入,SSD在Nvidia Titan X上以59FPS进行VOC2007测试时达到74.3% mAP,对于512×512的输入,SSD达到76.9% mAP,优于同类最先进的Faster R-CNN模型。与其他单级方法相比,即使输入图像尺寸较小,SSD也具有更高的精度。
关键词: 实时目标检测、卷积神经网络
当前最先进的对象检测系统是以下方法的变体:假定边界框,重新采样每个框的像素或特征,以及应用高品质的分类器。自从选择性搜索工作[1]以及PASCAL VOC,COCO和ILSVRC检测的当前领先结果全部基于Faster R-CNN[2]以来,该管道已经在检测基准上占优势,尽管具有更深的特征,如[3]。虽然准确,但这些方法对于嵌入式系统来说计算量太大,即使使用高端硬件,对于实时应用来说也太慢了。这些方法的检测速度通常以每秒帧数来衡量,即使是最快的高精度检测器,速度更快的R-CNN,也只能以每秒7帧(FPS)的速度运行。已经有许多尝试通过每个阶段附加检测管道的方法(见第4章相关工作。)来构建速度更快的探测器,但到目前为止,显著上升速度,需要付出在显著降低检测精度的成本。
本文介绍了第一个基于深度网络的目标探测器,它不会对边界框假设重新采样像素或特征,并且与方法一样准确。这导致高精度检测的速度显着提高(在VOC2007测试中具有mAP为74.3%的59 FPS,与具有mAP为73.2%的Faster R-CNN 7 FPS或具有mAP为63.4%的YOLO 45 FPS)。速度的根本改进来自于消除边界框提议以及随后的像素或特征重采样阶段。我们不是第一个做到这一点(见[4,5]),但加入了一系列的改进,我们能够在以前的尝试显著提高精度。我们的改进包括使用小卷积滤波器来预测边界框位置中的对象类别和偏移,使用单独的预测变量(滤波器)进行不同的宽高比检测,并将这些滤波器应用于网络后期的多个要素图以执行多尺度检测。通过这些修改-特别是使用多个层来进行不同尺度的预测-我们可以使用相对低分辨率的输入来实现高精度,从而进一步提高检测速度。虽然这些贡献可能看起来很小,但我们注意到,由此产生的系统提高了PASCAL VOC的实时检测准确度,从YOLO的63.4%mAP到我们SSD的74.3%mAP。与最近在残差网络上非常引人注目的工作相比,这在检测精度上有了更大的相对改善[3]。此外,显着提高高质量检测的速度可以扩大计算机视觉有用的设置范围。
我们总结了我们的贡献如下:
我们推出SSD,一种用于多种类别的single shot detectors,比single shot detectors(YOLO)的先前技术更快,并且显着更准确,实际上与执行显式区域提议的较慢技术一样准确和汇集(包括更快的R-CNN)。
SSD的核心是使用应用于特征映射的小卷积滤波器来预测固定的一组默认边界框的类别得分和框架集。
为了获得高检测精度,我们从不同尺度的特征图产生不同尺度的预测,并通过纵横比明确地分开预测。
这些设计特点导致简单的端到端训练和高精度,即使在低分辨率输入图像上,也进一步提高了速度与精度之间的权衡。
实验包括对PASCAL VOC,COCO和ILSVRC评估的输入尺寸变化的模型进行定时和精度分析,并与一系列最新的最新方法进行比较。
图1 SSD框架。(a)SSD在训练期间仅需要每个对象的输入图像和ground truth boxes。以卷积方式,我们在具有不同尺度的若干特征图中评估每个位置处的不同宽高比的小集(例如4个)默认框(例如,(b)和(c)中的8×8和4×4)。对于每个默认框,我们预测形状偏移和所有对象类别的置信度((c1,c2,…,cp))。在训练时,我们首先将这些默认框与ground truth box匹配。例如,我们已经将两个默认框与猫匹配,一个与狗匹配,将其视为正数,其余为负数。模型损失是定位损失(例如,平滑L1[6])和置信度损失(例如Softmax)之间的加权和。(框架实现目标定位的原理介绍)
本节描述了我们提出的用于检测的SSD框架(第2.1节)和相关的训练方法(第2.2节)。之后,Sect 3介绍数据集特定的模型细节和实验结果。
SSD方法基于前馈卷积网络,该网络生成固定大小的边界框集合以及在该框中存在对象类实例的分数,随后是非极大值抑制步骤以产生最终检测。早期的网络层基于用于高质量图像分类的标准体系结构(在任何分类层之前被截断),我们称之为基础网络[1]。然后,我们将辅助结构添加到网络中,以生成具有以下主要功能的检测:
图2两种single shot detectors模型的比较:SSD和YOLO[5]。我们的SSD模型在基础网络末端添加了几个要素图层,可以预测不同比例和宽高比的默认框的偏移量及其相关信任。具有300×300输入尺寸的SSD在VOC2007测试中的精度明显优于其448×448YOLO同类产品,同时还提高了速度。(网络结构介绍)
用于检测的多尺度特征图。我们将卷积特征层添加到截断的基础网络的末尾。这些层的尺寸逐渐减小,并允许在多个尺度上预测检测。用于预测检测的卷积模型对于每个特征层是不同的(参见在单一尺度特征图上操作的Overfeat[4]和YOLO[5])。
用于检测的卷积预测因子。每个添加的特征层(或者可选地来自基础网络的现有特征层)可以使用一组卷积滤波器产生一组固定的检测预测。这些在图2中的SSD网络架构之上有指示。对于具有p个通道的大小为m×n的特征层,用于预测潜在检测的参数的基本元素是3×3×p小内核,其产生类别的分数或相对于默认框的形状偏移。坐标。在应用内核的m×n个位置中的每一个处,它产生输出值。边界框偏移输出值是相对于每个特征地图位置的默认框位置测量的(参见YOLO[5]的体系结构,在此步骤中使用中间完全连接层而不是卷积滤波器)。
默认框和宽高比。我们将一组默认边界框与每个要素图单元关联,以用于网络顶部的多个要素图。默认框以卷积方式平铺特征图,以便每个框相对于其对应单元的位置是固定的。在每个要素图单元格中,我们预测相对于单元格中默认框形状的偏移量,以及指示每个框中是否存在类实例的每个类别得分。具体来说,对于给定位置的k个中的每个框,我们计算c类分数和相对于原始默认框形状的4个偏移。这导致总共(c+4)k在要素图中的每个位置周围应用的滤波器,产生(c+4)kmn输出m×n特征图。有关默认框的说明,请参阅图1。我们的默认框类似于Faster R-CNN[2]中使用的锚框,但是我们将它们应用于不同分辨率的几个特征图。允许在多个要素图中使用不同的默认框形状,可以有效地离散可能的输出框形状的空间。
训练SSD和训练使用区域建议的典型探测器之间的关键区别在于,需要将ground truth box信息分配给固定探测器输出组中的特定输出。YOLO[5]和Faster R-CNN[2]和MultiBox[7]的区域建议阶段也需要一些模型的训练。一旦确定了该分配,就会端到端地应用损失函数和反向传播。训练还涉及选择一组默认框和检测尺度以及硬负面挖掘和数据增强策略。
匹配策略。在训练期间,我们需要确定哪些默认框对应于ground truth detection并且相应地训练网络。对于每个ground truth box,我们从默认框中选择,这些框在位置,宽高比和比例上有所不同。我们首先将每个ground truth box与具有最佳Jaccard重叠的默认框匹配(如MultiBox[7]中所述)。与MultiBox不同,我们然后将默认框与Jaccard重叠高于阈值(0.5)的任何ground truth匹配。这简化了学习问题,允许网络预测多个重叠默认框的高分,而不是要求它仅选择具有最大重叠的框。
训练目的。所述SSD训练目标是从MultiBox目标中衍生的[7,8],但扩展到处理多个对象类别。设 x i j p = ( 1 , 0 ) x_{ij}^p = {(1,0)} xijp=(1,0)是将第i个默认框与p类别的第j个ground truth box匹配的指示符。在上面的匹配策略中,我们可以得到 ∑ i x i j p ≥ 1 ∑_{i}x_{ij}^p ≥ 1 ∑ixijp≥1。总体客观损失函数是localization loss (loc)和置信度损失(conf)的加权和:
L ( x , c , l , g ) = 1 / N ( L c o n f ( x , c ) + α L l o c ( x , l , g ) ) ( 1 ) L(x,c,l,g)=1/N (L_{conf} (x,c)+αL_{loc} (x,l,g)) (1) L(x,c,l,g)=1/N(Lconf(x,c)+αLloc(x,l,g))(1)
**其中N是匹配的默认框的数量,并且定位损失是预测框(l)和ground truth box(g)参数之间的平滑L1损失[6]。类似于Faster R-CNN[2],我们回归到边界框的中心及其宽度和高度的偏移。我们的置信度损失是多类置信度(c)的softmax损失,并且通过交叉验证将权重项α设置为1。
选择默认框的比例和宽高比。为了处理不同尺度的对象,一些方法[4,9]建议在处理不同大小的图像,结果事后结合。然而,通过利用来自单个网络中的若干不同层的特征图进行预测,我们可以模仿相同的效果,同时还可以跨所有对象尺度进行参数化。以前的工作[10,11]表明,使用特征地图从较低层可以提高语义分割质量,因为较低层捕获输入对象的更精细的细节。同样地,[12]认为添加从特征图汇集的全局上下文可以帮助平滑分割结果。在这些方法的推动下,我们使用下部和上部特征图进行检测。图1显示了框架中使用的两个示例性特征映射(8×8和4×4)。实际上,我们可以使用更多的计算开销。
我们设计了默认框的平铺,以便特定的特征图学习响应特定的对象尺度。假设我们想要使用m个特征映射进行预测。每个要素图的默认框的比例计算如下:
s k = s m i n + ( s m a x − s m i n ) / ( m − 1 ) ( k − 1 ) , k ϵ [ 1 , m ] ( 2 ) s_k=s_{min}+(s_{max}-s_{min})/(m-1) (k-1),kϵ[1,m] (2) sk=smin+(smax−smin)/(m−1)(k−1),kϵ[1,m](2)
其中s_min是0.2和s_max为0.9,意味着最低层的刻度为0.2,最高层的刻度为0.9,其间的所有层均规则间隔。我们对默认框施加不同的宽高比,并用 α r ϵ 1 , 2 , 3 , 1 / 2 , 1 / 3 α_r ϵ{1,2,3,1/2,1/3} αrϵ1,2,3,1/2,1/3表示它们。我们可以计算每个默认框的宽度 w k a = s k a r w_k^a=s_k \sqrt{a_r } wka=skar和高度 h k a = s k / a r h_k^a=s_k/\sqrt{a_r} hka=sk/ar。对于宽高比为1,我们还添加了一个默认框的比例为 s k ′ = s k ∗ s ( k + 1 ) s_k'=\sqrt{s_k*s_{(k+1)}} sk′=sk∗s(k+1),每个要素图位置产生6个默认框。我们将每个默认框的中心设置为 ( ( i + 0.5 ) / ∣ f k ∣ , ( j + 0.5 ) / ∣ f k ∣ ) ((i+0.5)/|f_k | ,(j+0.5)/|f_k | ) ((i+0.5)/∣fk∣,(j+0.5)/∣fk∣),其中 ∣ f k ∣ |f_k | ∣fk∣是第k个正方形特征映射的大小, i , j ϵ [ 0 , ∣ f k ∣ ) i,jϵ[0,|f_k |) i,jϵ[0,∣fk∣)。在实践中,还可以设计默认框的分布以最佳地适合特定数据集。
通过结合来自许多特征图的所有位置的具有不同比例和纵横比的所有默认框的预测,我们具有多种预测,涵盖各种输入对象大小和形状。例如,在图1中,狗匹配4×4特征图中的默认框,但不匹配8×8特征图中的任何默认框。这是因为那些盒子具有不同的尺度并且与狗的框不匹配,因此在训练期间被认为是负值。
硬负面挖掘。在匹配步骤之后,大多数默认框都是负值,尤其是当可能的默认框的数量很大时。这引入了正面和负面训练示例之间的显著不平衡。我们不是使用所有的负面例子,而是使用每个默认框中最高的置信度损失对它们进行排序,然后选择顶部的那些,以便负数和优势之间的比率最多为3:1。我们发现这可以带来更快的优化和更稳定的训练。
数据扩充。为了使模型对各种输入对象大小和形状更加健壮,每个训练图像由以下选项之一随机采样:
使用整个原始输入图像。
对贴片进行采样,使最小Jaccard与对象重叠为0.1,0.3,0.5,0.7或0.9。
随机抽样补丁。
每个采样贴片的尺寸为原始图像尺寸的[0.1,1],纵横比介于1/2和2两者之间。如果它的中心位于采样补丁中,我们保留地面实况框的重叠部分。在上述采样步骤之后,除了应用类似于[13]中描述的一些光度尺度失真之外,每个完整的贴片被调整大小到固定大小并且以0.5的概率水平翻转。
基础网络。我们的实验都是基于VGG16[14],它是在ILSVRC CLS-LOC数据集上预先训练的[15]。与DeepLab-LargeFOV[16]类似,我们将fc6和fc7转换为卷积层,从fc6和fc7转换子样本参数,将pool5从2×2-s2改为3×3-s1,并使用atrous算法填充“漏洞””。我们删除所有的dropout图层和fc8图层。我们使用SGD对初始学习模型进行微调,初始学习率为〖10〗^(-3),动量为0.9,动态衰减为0.0005,批量大小为32。每个数据集的学习率衰减策略略有不同,稍后我们将详细描述。完整的培训和测试代码建立在Caffe[17]上,并在https://github.com/weiliu89/caffe/tree/ssd上开源。
在这个数据集上,我们在VOC2007测试(4952图像)上与Fast R-CNN[6]和Faster R-CNN[2]进行比较。所有方法都使用相同的预先训练的VGG16网络。
图2显示了SSD300模型的架构细节。我们使conv4_3,conv7(fc7),conv8_2,conv9_2,conv10_2,和conv11_2预测位置和置信度[2]。我们初始化为所有与“xavier”方法[18]新添加的卷积层的参数。对于conv4_3,conv10_2和conv11_2,我们只在每个要素图位置关联4个默认框 - 省略1/3和3的纵横比。对于所有其他图层,我们按照Sect 2.2中所述放置6个默认框。因为,正如[12]中指出的那样,conv4_3与其他层相比具有不同的特征尺度,我们使用[12]中引入的L2归一化技术将特征图中每个位置的特征范数缩放到20并在反向传播期间学习尺度。我们使用〖10〗(-3)学习率为40k迭代,然后我们继续用〖10〗(-4)和〖10〗^(-5)训练10k次迭代。在对VOC2007 trainval进行训练时,表1显示我们的低分辨率SSD300型号已经比Fast R-CNN更精确。当我们在更大的512×512输入图像上训练SSD时,它甚至更准确,超过Faster R-CNN1.7% mAP。如果我们用更多(即07+12)数据训练SSD,我们观察到SSD300已经比Fast R-CNN好0.9%,SSD512好3.6%。如果我们采用COCO trainval35k训练的模型,如Sect 3.4并使用SSD512对07+12数据集进行微调,我们获得了最佳结果:81.5%mAP。
表1.PASCAL VOC2007测试检测结果。Fast R-CNN和Faster R-CNN都使用最小尺寸为600的输入图像。两种SSD型号具有完全相同的设置,除了它们具有不同的输入尺寸(300×300与512×512)。很明显,更大的输入大小可以带来更好的结果,而更多的数据总是有帮助的。数据:“07”:VOC2007trainval,“07+12”:VOC2007和VOC2012trainval的联合。“07+12+COCO”:首先在COCOtrainval35k上训练,然后在07+12微调。
**为了更详细地了解我们的两个SSD型号的性能,我们使用了[19]中的检测分析工具。图3显示SSD可以检测高质量的各种对象类别(大白区)。其大部分自信的检测都是正确的。召回率约为85-90%,并且在“弱”(0.1 Jaccard重叠)标准下更高。与R-CNN[20]相比,SSD具有较少的定位误差,表明SSD可以更好地定位对象,因为它直接学习回归对象形状并对对象类别进行分类,而不是使用两个解耦步骤。然而,SSD对类似对象类别(特别是动物)的混淆更多,部分原因是我们共享多个类别的位置。图4显示SSD对边界框大小非常敏感。换句话说,它在较小的对象上比较大的对象具有更差的性能。这并不奇怪,因为这些小物件可能甚至没有在最顶层的任何信息。增加输入尺寸(例如从300×300到512×512)可以帮助改进检测小物体,但仍有很大的改进空间。在正确(积极)的一面,我们可以清楚地看到,SSD大型物体上执行得很好。并且它对于不同的对象宽高比非常稳健,因为我们使用每个特征映射位置的各种宽高比的默认框。
如图3所示 使用[19]从VOC2007测试可视化动物,车辆和家具上SSD512的性能。顶行显示由于不良定位(Loc),与类似类别(Sim),其他(Oth)或背景(BG)的混淆而正确(Cor)或误报的检测的累积分数。底行显示排名最高的误报类型的分布。
图4 使用[19]对不同物体特性对VOC2007测试仪的灵敏度和影响。左侧的图显示了每个类别的BBox面积的影响,右侧的图显示了宽高比的影响。
为了更好地理解SSD,我们进行了对照实验,以检查每个组件如何影响性能。对于所有实验,除了对设置或组件的指定更改外,我们使用相同的设置和输入大小(300×300)。
表2 各种设计选择和组件对SSD性能的影响。
数据扩充至关重要。Fast R-CNN和Faster R-CNN使用原始图像和水平翻转来训练。我们使用更广泛的采样策略,类似于YOLO[5]。表2显示,采用此抽样策略,我们可以提高8.8%的mAP。我们不知道我们的采样策略对Fast R-CNN和Faster R-CNN有多大益处,但它们可能会受益更少,因为它们在分类期间使用特征池步骤,这对于设计的对象转换相对稳健。
更多默认的盒子形状更好。如Sect 2.2中所,默认情况下,我们每个位置使用6个默认框。如果我们删除具有1/3和3之间的宽高比的框,性能下降0.6%。通过删除具有1/2和2之间的宽高比的框,性能下降2.1%。使用各种默认的box形状似乎使网络预测框的任务更容易。
Atrous更快。如Sect 3中所述,我们使用了DeepLab-LargeFOV[16]之后的二次采样VGG16的atrous版本。如果我们使用完整的VGG16,保持pool5具有2×2-s2而不是来自fc6和fc7的子采样参数,并添加conv5_3用于预测,结果大致相同,而速度慢约20%。
不同分辨率的多个输出层更好。SSD的主要贡献是在不同的输出层上使用不同比例的默认框。为了衡量获得的优势,我们逐步删除图层并比较结果。为了公平比较,每次我们删除一个图层时,我们都会调整默认的框图平铺,以使框的总数与原始图像相同(8732)。这是通过在剩余层上堆叠更多刻度的盒子并根据需要调整盒子的比例来完成的。我们没有详尽地优化每个设置的平铺。表3显示了较少层的精度降低,单调下降从74.3降至62.4。当我们在一个图层上堆叠多个刻度的框时,许多都在图像边界上,需要小心处理。我们尝试了Faster R-CNN[2]中使用的策略,忽略了边界上的框。我们观察到有趣的趋势。例如,如果我们使用非常粗略的特征映射(例如conv11_2(1×1)或conv10_2(3×3)),它会大幅损害性能。原因可能是我们在修剪后没有足够的框来覆盖大型物体。当我们使用主要更精细的分辨率地图时,性能会再次开始增加,因为即使在修剪后仍然存在足够数量的大盒子。如果我们只使用conv7进行预测,那么性能就是最差的,这强化了这样的信息,即在不同层上传播不同比例的boxes至关重要。
我们使用与上述基本VOC2007实验相同的设置,我们除了使用VOC2012 trainval和VOC2007 trainval和测试(21503个图像)进行训练,并测试VOC2012测试(10991个图像)。我们训练模型的用〖10〗(-3)学习率进行60k迭代,然后用〖10〗(-4)的学习率进行20k迭代。表4显示了我们的SSD300和SSD5123型号的结果。我们看到了与我们在VOC2007测试中观察到的相同的性能趋势。我们的SSD300提高了快速/快速R-CNN的准确性。通过将训练和测试图像尺寸增加到512×512,我们比更快的R-CNN准确度高4.5%。与YOLO相比,SSD显着更准确,可能是由于使用了来自多个特征图的卷积默认框以及我们在训练期间的匹配策略。当通过COCO培训模型进行调整时,我们的SSD512的mAP达到80.0%,比Faster R-CNN高出4.1%。
为了进一步验证SSD框架,我们在COCO数据集上培训了SSD300和SSD512架构。由于COCO中的物体往往小于PASCALVOC,因此我们对所有层使用较小的默认框。我们遵循Sect中提到的策略。2.2,但现在我们最小的默认框的比例为0.15而不是0.2,以及conv4上默认框的比例 3是0.07(例如对于300×300图像是21个像素)。
我们使用trainval35k[21]进行训练。我们首先训练模型以10-3学习率进行160k次迭代,然后以10-4的学习率继续40k次迭代,和以10-5 学习率进行40k迭代。表5显示了结果test-dev2015。与我们在PASCALVOC数据集中观察到的类似,SSD300在[email protected]和mAP@[0.5:0.95]中均优于Fast R-CNN。SSD300与Faster R-CNN[22]具有相似的mAP@[0.5:0.95]。但是,[email protected]更糟糕,我们推测这是因为image尺寸太小,这阻止了模型检测到许多小物体。但总的来说,SSD可以更准确地定位对象。通过将图像尺寸增加到512×512,我们的SSD512在两个标准中都优于Faster R-CNN。此外,我们的SSD512模型也优于ION[21],这是一种多尺度版本的Fast R-CNN,使用循环网络对上下文进行显式建模。在图5中,我们展示了使用SSD512模型的COCO test-dev的一些检测示例。
表4.PASCALVOC2012测试检测结果。快速而快速的R-CNN使用最小尺寸为600的图像,而YOLO的图像尺寸为448×448。数据:“07++12”:VOC2007trainval的联合和测试和VOC2012trainval。“07++12+COCO”:COCOtrainval35k上的第一列火车然后在07++12上进行微调。
表5.COCO测试dev2015的检测结果。
我们将用于COCO的相同网络架构应用于ILSVRCDET数据集[15]。我们使用ILSVRC2014 DET训练和[20]中使用的val1训练SSD300模型。我们首先用10-3学习率训练模型进行320k次迭代,然后以10-4学习率继续训练80k次迭代,和以10-5学习率40k迭代。我们可以在val2集上实现43.2mAP[20]。同样,它验证了SSD是高质量实时检测的通用框架。
考虑到从我们的方法生成的大量方框,必须在推理期间有效地执行非最大抑制(nms)。通过使用0.01的置信度阈值,我们可以过滤掉大多数框。然后我们申请nmsJaccard重叠每个类别0.45并保持每个图像的前200个检测。对于SSD300和20个VOC类,此步骤每张图像的成本约为1.7毫秒,这接近于在所有新添加的层上花费的总时间(2.4毫秒)。
表6显示了SSD,更快的R-CNN[2]和YOLO[5]的比较。我们的SSD300和SSD512方法在速度和精度方面均优于更快的R-CNN。虽然Fast YOLO[5]可以在155FPS下运行,但它的准确度却低了近22% mAP。据我们所知,SSD300是第一种实现70%以上mAP的实时方法。请注意,大约80%的转发时间花费在基础网络上(在我们的例子中是VGG16)。因此,使用更快的基础网络可以进一步提高速度,使SSD512模型也是实时的。
表6.PascalVOC2007测试的结果。SSD300是唯一可实现70%以上mAP的实时检测方法。通过使用更大的输入图像,SSD512在保持接近实时速度的同时优于所有精确度方法。使用大小为8的测试batch可以进一步提高速度。
在图像中有两种用于对象检测的既定方法,一种基于滑动窗口,另一种基于区域建议分类。在卷积神经网络出现之前,这两种方法-可变形零件模型(DPM)[23]和选择性搜索[1]的现有技术具有可比性。然而,在R-CNN[20]带来的显着改进之后,区域提议对象检测方法变得普遍,后者结合了选择性搜索区域提议和基于卷积网络的后分类。
最初的R-CNN方法已经以各种方式得到改进。第一组方法提高了分类后的质量和速度,因为它需要对数千种图像作物进行分类,这种方法既昂贵又耗时。SPPnet[9]显着加速了原始的R-CNN方法。它引入了一个空间金字塔池层,它对区域大小和比例更加稳健,并允许分类层重用在多个图像分辨率下生成的特征图上计算的特征。快速R-CNN[6]扩展了SPPnet,因此它可以通过最小化置信度和边界框回归的损失来端到端地微调所有层,这在MultiBox[7]中首次被介绍用于学习对象。
第二组方法使用深度神经网络提高了提议生成的质量。在最近的作品等MultiBox的[7,8],选择性搜索区域的建议,这是基于低LEVEL图像的特征,通过直接从一个单独的深层神经网络生成的建议更换。这进一步提高了检测精度,但导致设置有些复杂,需要训练两个具有依赖性的神经网络。更快的R-CNN[2]用从区域提议网络(RPN)获得的选择来替代选择性搜索提议,并且引入了通过在微调共享卷积层和预测层之间交替来将RPN与快速R-CNN集成的方法。这两个网络。这种方式区域提议用于汇集中级特征,最终分类步骤更便宜。我们的SSD与快速R-CNN中的区域提议网络(RPN)非常相似,我们还使用一组固定的(默认)框进行预测,类似于RPN中的achor框。但是,我们不是使用这些功能来汇集功能并评估另一个分类器,而是同时为每个框中的每个对象类别生成一个分数。因此,我们的方法避免了将RPN与Fast R-CNN合并的复杂性,并且更容易训练,更快,更直接地集成到其他任务中。
另一组与我们的方法直接相关的方法完全跳过提议步骤,直接预测多个类别的边界框和置信度。OverFeat[4]是滑动窗口方法的深层版本,在知道底层对象类别的置信度后,直接从最顶层要素图的每个位置预测一个边界框。YOLO[5]使用整个最顶层的特征映射来预测多个类别和边界框的置信度(对于这些类别都是如此)。我们的SSD方法属于此类别,因为我们没有提议步骤但使用默认框。然而,我们的方法比现有方法更灵活,因为我们可以在不同尺度的多个特征图上使用每个特征位置上的不同宽高比的默认框。如果我们只使用最顶层特征图中每个位置的一个默认框,我们的SSD将具有与OverFeat类似的架构[4];如果我们使用整个最顶层的特征图并添加一个完全连接的层来进行预测而不是我们的卷积预测器,并且没有明确考虑多个宽高比,我们可以大致重现YOLO[5]。
图5 使用SSD512模型的COCO test-dev上的检测示例。我们显示分数高于0.6的检测结果。每种颜色对应一个对象类别。
本文介绍了SSD,一种用于多种类别的快速单次物体探测器。使用附加到网络顶部多个特征图的多次卷积边界框输出的模型。这种表示使我们能够有效地模拟可能的盒子形状的空间。我们通过实验验证,在给定适当的训练策略的情况下,大量精心选择的默认边界框可以提高性能。与现有方法相比,我们构建的SSD模型至少有一个数量级的盒子预测采样位置,比例和纵横比[5,7]。
我们证明,在相同的VGG-16基础架构下,SSD在精度和速度方面都优于其最先进的物体探测器对应物。我们的SSD512型号在PASCALVOC和COCO的准确度方面明显优于最先进的快速R-CNN[2],同时速度提高了3倍。我们的实时SSD300型号运行速度为59FPS,这是当前实时的YOLO[5]替代方案,同时产生了极高的检测精度。
除了独立的实用程序,我们相信我们的单片和相对简单的SSD模型为使用对象检测组件的大型系统提供了有用的构建块。一个充满希望的未来方向是探索其作为系统的一部分的使用,使用递归神经网络同时检测和跟踪视频中的对象。
这项工作最初是作为Google的实习项目开始的,并在UNC继续进行。我们要感谢Alex Toshev的有益讨论,感谢Google的Image Understanding和DistBelief团队。我们也感谢Philip Ammirato和Patrick Poirson的有益意见。我们感谢NVIDIA提供GPU并感谢NSF 1452851,1446631,1526367,1533771的支持。
本文章翻译可能存在部分不足,但是基本上已经把所有的意思说明白了,有兴趣的大家可以讨论一下其中的一些知识。