(44)[ECCV16] SSD: Single Shot MultiBox Detector

计划完成深度学习入门的126篇论文第四十四篇,Google的Christian Szegedy及Umich,UNC等学者研究的一种新的目标检测方法,可以看做是和YOLO single-shot思想相似的方法。[github]


Abstract

提出了一种利用单个深度神经网络对图像中目标进行检测的方法。我们的方法名为SSD,它将边界框的输出空间离散为一组默认框,每个特征映射位置具有不同的纵横比和比例。在预测时,网络为每个默认框中每个对象类别的存在生成评分,并对该框进行调整以更好地匹配对象形状。此外,该网络结合了来自具有不同分辨率的多个特征图的预测,以自然地处理不同大小的对象。相对于需要对象建议的方法,SSD比较简单,因为它完全消除了建议生成和随后的像素或特征重采样阶段,并将所有计算封装在一个网络中。这使得SSD易于训练,并且易于集成到需要检测组件的系统中。在PASCAL VOC、COCO和ILSVRC数据集上的实验结果证实,相对于使用附加对象建议步骤的方法,SSD具有竞争力的准确性,而且速度更快,同时为训练和推理提供了统一的框架。对于300300输入,SSD在Nvidia Titan X上以59帧每秒的速度在VOC2007测试中实现了74.3%的mAP,对于512 x 512输入,SSD实现了76.9%的mAP,超过了同类的最先进的更快的R-CNN模型。与其他单级方法相比,即使在较小的输入图像尺寸下,SSD也具有更高的精度。源码:SSD


1 Introduction

目前最先进的目标检测系统是以下方法的变体:假设边界框,为每个框重新采样像素或特性,并应用高质量的分类器。自选择性搜索工作Selective Search[1]开始,该管道就在检测基准上占据了主导地位。目前,PASCAL VOC、COCO和ILSVRC检测的主要结果都是基于Faster R-CNN[2],但具有更深的特性,如[3]。虽然这些方法很精确,但是对于嵌入式系统来说计算量太大,即使对于高端硬件,对于实时应用程序来说速度也太慢。

通常,这些方法的检测速度是以每秒几秒为单位(SPF)来测量的,即使是最快的高精度检测器,Faster R-CNN,也只能以每秒7帧(FPS)的速度运行。已经有很多尝试通过攻击检测管道的每个阶段来构建更快的检测器(参见第4节中的相关工作),但是到目前为止,显著提高速度的代价是显著降低检测精度。

本文提出了一种基于深度网络的目标检测器,它不需要对像素或特征进行重新采样,也不需要对边界框假设进行重新采样,并且与现有方法一样精确。这使得高精度检测的速度有了显著提高(在VOC2007测试中,59帧FPS (mAP 74.3%),而Faster R-CNN 7帧FPS (mAP 73.2%)或YOLO 45帧FPS (mAP 63.4%)。速度的根本改进来自消除边框proposals和随后的像素或特征重采样阶段。我们并不是第一个这样做的人(cf[4,5]),但是通过添加一系列改进,我们能够比以前的尝试显著提高准确度。我们的改进包括使用一个小的卷积滤波器来预测包围框位置中的对象类别和偏移量,使用独立的预测器(过滤器)来检测不同的纵横比,并将这些过滤器应用到网络后期的多个特征映射中,以便在多个尺度上进行检测。通过这些改进,特别是在不同尺度下使用多层预测,我们可以用相对较低的分辨率输入实现高精度,从而进一步提高检测速度。虽然这些独立的贡献可能看起来很小,但是我们注意到,最终的系统提高了实时检测PASCAL VOC的准确性,从YOLO的63.4% mAP提高到我们的SSD的74.3% mAP。与最近在残差网络[3]上非常引人注目的工作相比,这在检测精度方面有较大的相对提高。此外,显著提高高质量检测的速度可以扩大计算机视觉有用的设置范围。

我们总结我们的贡献如下:

  • 我们介绍了SSD,这是一种用于多个类别的single-shot检测器,它比以前最先进的single-shot检测器(YOLO)更快,而且更准确,实际上与执行显式区域建议和池(包括更快的R-CNN)的较慢技术一样准确。
  • SSD的核心是使用应用于特征图的小卷积过滤器来预测一组固定的默认边界框的类别得分和框偏移量。为了达到较高的检测精度,我们从不同尺度的特征图中生成不同尺度的预测,并根据纵横比显式分离预测。
  • 这些设计特点导致了简单的端到端训练和高精度,即使在低分辨率的输入图像,进一步提高了速度与精度的权衡。
  • 实验包括在PASCAL VOC、COCO和ILSVRC上对不同输入大小的模型进行定时和精度分析,并与一系列最新的最先进方法进行比较

2 The Single Shot Detector

本节介绍我们提出的用于检测的SSD框架(第2.1节)和相关的训练方法(第2.2节)。然后,第3节给出了特定于数据集的模型细节和实验结果。

2.1 Model

SSD方法基于一个前向卷积网络,该网络生成一个固定大小的边界框集合和这些框中对象类实例存在的得分,然后执行一个非最大抑制步骤来生成最终检测。早期的网络层基于用于高质量图像分类的标准体系结构(在任何分类层之前截断),我们将其称为基本网络(VGG-16
)。然后在网络中添加辅助结构,产生以下关键特征的检测。

Multi-scale feature maps for detection 我们在截断后的基网络的末尾添加卷积特征层。这些层的大小逐渐减小,可以在多个尺度上预测探测结果。用于预测检测的卷积模型对于每个特征层都是不同的(cf Overfeat[4]和YOLO[5]在一个尺度特征图上操作)。

Convolutional predictors for detection 每个增加的特征层(或者从基本网络中选择一个现有的特征层)都可以使用一组卷积滤波器生成一组固定的检测预测。这些在图2中SSD网络架构的顶部表示。对于具有p通道的m x n大小的特征层,预测潜在检测参数的基本元素是一个3  x 3 x p小内核,它生成一个类别的分数,或者相对于默认框坐标的形状偏移量。在应用内核的每个m x n个位置上,它都会产生一个输出值。包围框偏移量输出值相对于默认值进行测量相对于每个feature map位置的box位置(参考YOLO[5]的架构,该架构使用一个中间的全连接层,而不是用于此步骤的卷积过滤器)。

图2:两种单镜头检测模型SSD和YOLO[5]的比较。
我们的SSD模型在基本网络的末尾添加了几个特性层,这些特性层预测不同规模和纵横比的默认框的偏移量及其相关的置信度。
输入大小300×300的SSD明显优于其448×448YOLO在提高VOC2007测试准确度的同时,也提高了速度。

 

Default boxes and aspect ratios 我们将一组默认的边界框与每个feature map单元关联起来,用于网络顶部的多个feature map。默认框以卷积方式平铺feature map,因此每个框相对于对应单元格的位置是固定的。在每个feature map单元格中,我们预测相对于单元格中的默认框形状的偏移量,以及表示每个框中存在类实例的每个类的得分。具体地说,对于给定位置上k之外的每个框,我们计算c类分数和相对于原始默认框形状的4个偏移量。这将导致在特征图的每个位置周围应用(c + 4)k个过滤器,从而产生(c + 4)kmn输出的m x n特征图。有关默认框的说明,请参见图1。我们的默认框类似于Faster R-CNN[2]中使用的锚框,但是我们将它们应用于不同分辨率的几个feature maps。在多个feature map中允许不同的默认框形状,可以有效地离散可能的输出框形状的空间。

图1:SSD框架。
(a) SSD在训练过程中只需要为每个对象输入图像和ground truth框。以卷积的方式,我们在(b)和(c)中的几个不同尺度的feature map(如8 x 8和4 x 4 In (b) and (c))中,对每个位置不同纵横比的一小组默认框(如4)进行评估。对于每个默认框,我们预测所有对象类别的形状偏移量和置信度((c1;c2;···;cp))。在训练时,我们首先将这些默认框与地面真相框匹配。例如,我们将两个默认框与猫和一个默认框与狗匹配,这两个默认框被视为正的,其余的被视为负的。模型损失是定位损失(如光滑L1[6])和置信度损失(如Softmax)之间的加权和。

 

2.2 Training

训练SSD与训练典型的使用region proposals的检测器的关键区别在于,需要将ground truth信息分配给固定的检测器输出集中的特定输出。在YOLO[5]的训练和Faster R-CNN[2]和多框[7]的区域建议阶段也需要一些版本。一旦确定了这个分配,端到端应用损失函数和反向传播。训练还包括选择用于检测的默认框和刻度集,以及negative挖掘和数据增强策略。

Matching strategy 在训练过程中,我们需要确定哪些默认框对应于地面真实感检测,并相应地训练网络。对于每个ground truth框,我们都是从随位置、纵横比和比例而变化的默认框中选择。我们首先将每个ground truth框匹配到具有最佳jaccard重叠的默认框(如MultiBox[7])。与MultiBox不同的是,然后我们将默认框与jaccard重叠超过阈值(0.5)的任何ground truth匹配。这简化了学习问题,允许网络预测多个重叠默认框的高分,而不是要求它只选择重叠最大的一个。

Training objective SSD训练目标源于多盒目标[7,8],但扩展到处理多个对象类别。设x_{i j}^{p}=\{1,0\}为第i个默认框与第j个类别p的地面真值框匹配的指标。在上面的匹配策略中,我们可以得到\sum_{i} x_{i j}^{p} \geq 1。总体目标损失函数是定位损失(loc)和置信损失(conf)的加权和。

L(x, c, l, g)=\frac{1}{N}\left(L_{c o n f}(x, c)+\alpha L_{l o c}(x, l, g)\right)

其中N为匹配的默认框数。如果N = 0, wet将损失设置为0。定位损失是一个平稳的L1损失[6]之间的预测框(l)和地面真相框(g)的参数。与Faster R-CNN[2]类似,我们返回到中心的偏移量(cx;默认边界框(d)的cy),以及它的宽度(w)和高度(h)。

\begin{array}{c}{L_{l o c}(x, l, g)=\sum_{i \in P o s m \in\{c x, c y, w, h\}}^{N} \quad \sum_{i j} x_{i j}^{k} \operatorname{smooth}_{\mathrm{L} 1}\left(l_{i}^{m}-\hat{g}_{j}^{m}\right)} \\ {\hat{g}_{j}^{c x}=\left(g_{j}^{c x}-d_{i}^{c x}\right) / d_{i}^{w} \quad \hat{g}_{j}^{c y}=\left(g_{j}^{c y}-d_{i}^{c y}\right) / d_{i}^{h}} \\ {\hat{g}_{j}^{w}=\log \left(\frac{g_{j}^{w}}{d_{i}^{w}}\right) \quad \hat{g}_{j}^{h}=\log \left(\frac{g_{j}^{h}}{d_{i}^{h}}\right)}\end{array}

置信损失是多任务置信度(c)的softmax loss:

L_{c o n f}(x, c)=-\sum_{i \in P o s}^{N} x_{i j}^{p} \log \left(\hat{c}_{i}^{p}\right)-\sum_{i \in N e g} \log \left(\hat{c}_{i}^{0}\right) \quad \text { where } \quad \hat{c}_{i}^{p}=\frac{\exp \left(c_{i}^{p}\right)}{\sum_{p} \exp \left(c_{i}^{p}\right)}

和权重\alpha通过交叉验证设置为1。

Choosing scales and aspect ratios for default boxes 为了处理不同的对象尺度,一些方法[4,9]建议对不同尺寸的图像进行处理,然后将处理结果结合起来。然而,通过在单一网络中使用来自多个不同层的特征图进行预测,我们可以模拟相同的效果,同时在所有对象范围内共享参数。之前的工作[10,11]已经表明,使用来自低层的feature map可以提高语义分割的质量,因为低层可以捕获输入对象的更精细的细节。同样,[12]表明,从特征图中添加全局上下文池可以帮助平滑分割结果。 在这些方法的驱动下,我们同时使用上下特征图进行检测。图1显示了框架中使用的两个范例特征映射(8,8和4,4)。在实践中,我们可以用更少的计算开销使用更多。

网络中不同层次的特征图具有不同的(经验的)接受域大小[13]。幸运的是,在SSD框架中,默认框不需要对应于每一层的实际接受域。我们设计了默认框的平铺,以便特定的函数映射能够响应对象的特定比例。假设我们想用m个特征图来预测。每个特征映射的默认框的比例计算如下

s_{k}=s_{\min }+\frac{s_{\max }-s_{\min }}{m-1}(k-1), \quad k \in[1, m]

其中\mathcal{S}_{\text { min }}为0.2,\mathcal{S}_{\text { max}}为0.9,这意味着最低层的刻度为0.2,最高层的刻度为0.9,在这两层之间的所有层都有规则的间隔。我们对缺省框施加不同的纵横比,并将它们表示为a_r\in \left\{1,2,3, \frac{1}{2}, \frac{1}{3}\right\}。我们可以计算每个默认框的宽度(w_{k}^{a}=s_{k} \sqrt{a_{r}})和高度(h_{k}^{a}=s_{k} / \sqrt{a_{r}})。对于长宽比为1的情况,我们还添加了一个默认框,其比例为s_{k}^{\prime}=\sqrt{S_{k} s_{k+1}},每个feature map位置有6个默认框。我们将每个默认框的中心设置为\left(\frac{i+0.5}{\left|f_{k}\right|}, \frac{j+0.5}{\left|f_{k}\right|}\right);其中\left|f_{k}\right|为第k方feature map的大小,i, j \in\left[0,\left|f_{k}\right|\right.)。在实践中,还可以设计缺省框的分布,以最适合特定的数据集。如何设计最优瓷砖也是一个悬而未决的问题。

通过从许多feature map的所有位置组合对所有具有不同比例和纵横比的默认框的预测,我们得到了一组不同的预测,涵盖了不同的输入对象大小和形状。例如,在图1中,狗匹配到4 x 4 feature map中的一个默认框,但是不匹配到8 x 8 feature map中的任何一个默认框。这是因为这些盒子有不同的比例,与狗的盒子不匹配,因此在训练中被认为是消极的。

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之间。如果ground truth框的中心位于采样的patch中,那么我们将保留ground truth框的重叠部分。在上述采样步骤之后,除了应用一些类似于[14]中描述的光度量失真外,每个采样的patch都被调整到固定的大小,并且水平翻转的概率为0.5。


3 Experimental Results

Base network 我们的实验都是基于VGG16[15],它是在ILSVRC cl - loc数据集[16]上预先训练的。与DeepLab-LargeFOV[17]类似,我们将fc6和fc7转换为卷积层,子样本参数从fc6和fc7转换为pool5,从22s2转换为33s1,并使用a trous算法[18]来填充漏洞。我们删除了所有的dropout层和fc8层。我们使用SGD对模型进行微调,初始学习率为10 3,动量为0.9,重量衰减为0.0005,批量大小为32。对于每个数据集,学习速率衰减策略略有不同,稍后我们将详细描述。完整的训练和测试代码构建在Caffe[19]上,并在 开源:SSD

3.1 PASCAL VOC2007

在此数据集上,我们对比了Fast R-CNN[6]和Faster R-CNN[2]在VOC2007测试中的表现(4952幅图像)。所有方法都在同一个预先训练好的VGG16网络上进行微调。

图2显示了SSD300模型的体系结构细节。我们使用conv4_3、conv7 (fc7)、conv8_2、conv9_2、conv10_2和conv11_2来预测位置和置信度。我们在conv4_33上使用scale 0.1设置了默认框。我们使用xavier方法[20]为所有新添加的卷积层初始化参数。对于conv4_3、conv10_2和conv11_2,我们只在每个feature map位置关联4个默认框,忽略了长宽比为1 3和3的情况。对于所有其他层,我们放置6个默认框,如第2.2节所述。正如[12]中指出的,conv4_3与其他层相比具有不同的特征尺度,因此我们使用[12]中引入的L2归一化技术将特征图中每个位置的特征范数缩放到20,并在反向传播过程中学习尺度。我们对40k迭代使用10个3的学习率,然后用10个4和10个5继续训练10k迭代。在VOC2007 trainval上进行训练时,表1显示我们的低分辨率SSD300模型已经比Fast R-CNN更准确。当我们在一个更大的512 512输入图像上训练SSD时,它甚至更精确,比Faster R-CNN的1.7% mAP。如果我们用更多的数据(即07+12)训练SSD,我们看到SSD300已经比Faster R-CNN好1.1%,SSD512好3.6%。如果我们使用第3.4节中描述的COCO trainval35k上训练的模型,并在07+12数据集上使用SSD512对其进行微调,我们会得到最好的结果:81.6% mAP。

为了更详细地了解我们的两个SSD模型的性能,我们使用了来自[21]的检测分析工具。

图3显示,SSD可以高质量地检测各种对象类别(白色区域较大)。它的大部分可靠的探测是正确的。召回率在85-90%左右,如果采用较弱的(0.1 jaccard重叠)标准,召回率要高得多。与R-CNN[22]相比,SSD具有更小的定位误差,这说明SSD可以更好地定位对象,因为它直接学习对象形状的回归和对象类别的分类,而不是使用两个解耦的步骤。然而,SSD与类似的对象类别(尤其是动物)有更多的混淆,部分原因是我们为多个类别共享位置。

图4显示SSD对边界框大小非常敏感。换句话说,在更小的系统上,它的性能要比更大的对象差得多。这并不奇怪,因为这些小对象甚至可能在最顶层没有任何信息。增加输入大小(例如从300×300到512×512)可以帮助提高对小目标的检测,但仍有很大的改进空间。从积极的方面来看,我们可以清楚地看到SSD在大型对象上执行得非常好。它对不同对象的纵横比非常健壮,因为我们在每个feature map位置使用不同纵横比的默认框。

3.2 Model analysis

为了更好地理解SSD,我们进行了控制实验来检验每个组件如何影响性能。对于所有的实验,我们使用相同的设置和输入大小(300×300),除了对设置或组件指定的更改。

Data augmentation is crucial. Fast R-CNN和Faster R-CNN使用原始图像和水平翻转来训练。我们使用更广泛的抽样策略,类似于YOLO[5]。表2显示,采用这种抽样策略,我们可以改进8.8%的mAP。我们不知道我们的采样策略将在多大程度上受益于Fast R-CNN和Faster R-CNN,但它们可能受益更少,因为它们在分类过程中使用了一个特征池化步骤,该步骤对通过设计实现的对象转换相对来说比较健壮。
More default box shapes is better. 如第2.2节所述,默认情况下,每个位置使用6个默认框。如果我们去掉1/3和3纵横比的盒子,性能下降0.6%。通过进一步删除具有1/2和2纵横比的框,性能又下降了2.1%。使用各种默认的框形状似乎使预测网络框的任务变得更容易。

Atrous is faster. 如第3节所述,我们使用了子抽样的atrous版本VGG16,紧随DeepLab-LargeFOV[17]之后。如果我们使用完整的VGG16,保持pool5为2×2−s2,不使用fc6和fc7的子采样参数,并添加conv5 3进行预测,结果大致相同,但速度要慢20%左右。

Multiple output layers at different resolutions is better. SSD的一个主要贡献是在不同的输出层上使用不同规模的默认框。为了衡量所获得的优势,我们逐步删除层并比较结果。为了进行公平的比较,每次删除一个层时,我们都会调整默认的框平铺,以保持框的总数与原始的(8732)类似。这是通过在剩余的层上叠加更多的盒子比例和调整盒子的比例来实现的。我们没有对每个设置进行全面的优化。表3显示,随着层数的减少,精度下降,从74.3单调下降到62.4。当我们在一个图层上叠加多个尺度的盒子时,许多盒子都在图像边界上,需要小心处理。我们尝试了在Faster R-CNN[2]中使用的策略,忽略边界上的框。我们观察到一些有趣的趋势。例如,如果我们使用非常粗糙的feature map(例如conv11_2(11 1)或conv10_2(33 3)),它会大大降低性能。原因可能是我们没有足够的大盒子来覆盖修剪后的大对象。当我们主要使用较细分辨率的映射时,性能开始再次提高,因为即使在修剪了足够多的大框之后,仍然保留了足够多的大框。如果我们只使用conv7进行预测,那么性能是最差的,这强化了这样一个信息:在不同的层上分布不同规模的盒子是至关重要的。此外,由于我们的预测不像[6]那样依赖于ROI池,所以我们在低分辨率的功能映射[23]中不存在折叠桶的问题。SSD架构结合了来自不同分辨率特征图的预测,以达到与Faster R-CNN相当的精度,同时使用较低分辨率的输入图像。

 

3.3 PASCAL VOC2012

除了使用VOC2012 trainval和VOC2007 trainval and test(21503张图片)进行训练,以及对VOC2012 test(10991张图片)进行测试外,我们使用的设置与上述VOC2007基本实验相同。我们用10个3的学习率训练模型进行60k次迭代,然后用10个4的学习率训练模型进行20k次迭代。表4显示了我们的SSD300和SSD5124模型的结果。我们看到的性能趋势与我们在VOC2007测试中观察到的相同。我们的SSD300提高精度超过Fast/Faster RCNN。通过将训练和测试图像大小增加到512 x 512,我们比Faster R-CNN的准确率提高了4.5%。与YOLO相比,SSD明显更准确,这可能是由于在训练中使用了多个feature map中的卷积默认框以及我们的匹配策略。通过对COCO上训练的模型进行微调,我们的SSD512实现了80.0%的mAP,比Faster R-CNN高4.1%。

3.4 COCO

为了进一步验证SSD框架,我们在COCO数据集上训练了SSD300和SSD512架构。因为COCO中的对象往往小于PASCAL VOC,所以我们对所有层都使用较小的默认框。我们遵循了第2.2节中提到的策略,但是现在我们最小的默认框的缩放比例为0.15,而不是0.2,conv4 3上的默认框的缩放比例为0.07(例如,对于300300张图像,为21像素)5。

我们使用trainval35k[24]进行训练。我们首先对模型进行16万次迭代10次3次学习率的训练,然后继续对10次4次40k迭代和10次5次40k迭代进行训练。

表5显示了test-dev2015的结果。与我们在PASCAL VOC数据集上观察到的相似,SSD300在mAP@0.5和mAP@[0.5:0.95]上都优于Fast R-CNN。SSD300的mAP@0.75与ION[24]和更快的R-CNN[25]类似,但在mAP@0.5中情况更糟。通过将图像大小增加到512 512,我们的SSD512在两个条件下都优于更快的R-CNN[25]。有趣的是,我们观察到SSD512在mAP@0.75中比mAP@0.75好5.3%,但在mAP@0.5中仅好1.2%。我们还观察到,对于大型对象,它的AP(4.8%)和AR(4.6%)有更好的改善,但是对于小型对象,它的AP(1.3%)和AR(2.0%)的改善相对较小。与ION相比,AR对大、小物体的改善更为相似(5.4%对3.9%)。我们推测,更快的R-CNN在使用SSD的较小对象上更具竞争力,因为它在RPN部分和快速R-CNN部分都执行了两个box细分步骤。在图5中,我们展示了一些使用SSD512模型在COCO test-dev上进行检测的例子。

 

3.5 Preliminary ILSVRC results

我们将用于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 Data Augmentation for Small Object Accuracy

没有后续功能重采样步骤更快R-CNN,小对象的分类任务相对困难SSD,展示了在我们的分析(见图4)。秒。2.2中描述的数据扩充策略有助于大幅提高性能,尤其是在小数据集,例如PASCAL VOC。该策略生成的随机作物可以看作是一个放大操作,可以生成许多更大的训练示例。要实现创建更多小训练示例的缩小操作,我们首先将图像随机放置在画布上,画布的大小为原始图像的16倍,其中填充了平均值,然后再执行任何随机裁剪操作。因为通过引入这种新的扩展数据增强技术,我们有了更多的训练图像,所以我们必须将训练迭代加倍。我们在多个数据集中看到了一致的2%-3%的增长,如表6所示。具体来说,图6显示了新的增强技巧显著提高了小对象的性能。这一结果强调了数据增强策略对最终模型精度的重要性。

改进SSD的另一种方法是设计一个更好的默认框平铺,使其位置和比例更好地与特征图上每个位置的接受域对齐。我们把这个留给以后的工作。

3.7 Inference time

考虑到我们的方法生成了大量的框,在推理过程中有效地执行非最大抑制(nms)是非常必要的。通过使用0.01的置信阈值,我们可以过滤掉大多数框。然后我们应用每个类的jaccard重叠为0.45的nms,并保持每个图像的前200个检测值。对于SSD300和20个VOC类,这一步的每张图像花费大约1.7 msec,这接近于所有新添加图层花费的总时间(2.4 msec)。我们使用Titan X和cuDNN v4测量批量大小为8的速度,使用Intel Xeon E5-2667v3@3.20GHz。

表7显示了SSD、Faster R-CNN[2]和YOLO[5]的比较。我们的SSD300和SSD512方法在速度和精度上都优于更快的R-CNN。虽然快速的YOLO[5]可以以155帧每秒的速度运行,但是它的准确率要低22%。据我们所知,SSD300是第一个实时实现70%以上mAP的方法。注意,大约80%的转发时间花费在基本网络上(在我们的示例中是VGG16)。因此,使用更快的基站网络可以进一步提高速度,这也可能使SSD512模型实时。


4 Related Work

目前已有两种基于滑动窗口和区域建议分类的图像目标检测方法。在卷积神经网络出现之前,这两种方法的可变形部件模型(DPM)[26]和选择性搜索[1]的性能相当。然而,在R-CNN[22]将选择性搜索区域建议和基于卷积网络的后分类相结合,带来了巨大的改进之后,区域建议对象检测方法开始流行起来。原始的R-CNN方法已经在许多方面得到了改进。第一组方法提高了后分类的质量和速度,因为它需要分类成千上万的图像作物,这是昂贵和费时的。SPPnet[9]显著加快了原始的R-CNN方法。它引入了一个空间金字塔池层,该层对区域大小和尺度更健壮,并允许分类层重用在多个图像分辨率下生成的特征图上计算的特征。快速R-CNN[6]对SPPnet进行了扩展,使其能够通过最小化置信度和边界盒回归的损失来对所有层进行端到端微调。

第二组方法提高了使用深度神经网络生成提案的质量。在最近的多框[7,8]等研究中,基于低层图像特征的选择性搜索区域建议被直接由单独的深度神经网络生成的建议所替代。这进一步提高了检测精度,但结果是一个有点复杂的设置,需要训练两个神经网络之间的依赖关系。更快的R-CNN[2]用从区域建议网络(RPN)中学习到的搜索建议替换了选择性搜索建议,并介绍了一种将RPN与快速R-CNN融合的方法,该方法通过在这两个网络的finetuning共享卷积层和预测层之间交替进行。通过这种方式,区域建议被用来汇集中层特性,最终的分类步骤也更便宜。我们的SSD非常类似于fast R-CNN中的区域建议网络(RPN),因为我们还使用一组固定的(默认)框进行预测,类似于RPN中的锚框。但是,我们并没有使用它们来汇集特性并计算另一个分类器,而是同时为每个框中的每个对象类别生成一个分数。因此,我们的方法避免了将RPN与快速R-CNN合并的复杂性,并且更容易训练、更快、更容易集成到其他任务中。

另一组方法与我们的方法直接相关,它们完全跳过建议步骤,直接预测多个类别的边界框和置信度。OverFeat[4]是滑动窗口方法的深层版本,它在知道底层对象类别的机密性之后,直接从最顶层特征图的每个位置预测一个边界框。YOLO[5]使用整个最上面的功能图来预测多个类别的置信度和边界框(这些类别共享这些边界框)。我们的SSD方法属于这类,因为我们没有建议步骤,而是使用默认框。但是,我们的方法比现有方法更灵活,因为我们可以使用不同方面的默认框从不同尺度的多个特征映射中提取每个特征位置的比值。如果我们从最上面的功能图中每个位置只使用一个默认框,我们的SSD将具有类似于OverFeat[4]的架构;如果我们使用整个最上面的feature map,添加一个完全连接的层来进行预测,而不是使用卷积预测器,并且不显式地考虑多个纵横比,我们可以近似地重现YOLO[5]。


5 Conclusions

介绍了一种单镜头多类别快速目标检测系统SSD。我们模型的一个关键特性是使用多尺度卷积边界框输出,附加到网络顶部的多个特征映射上。这种表示使我们能够有效地为可能的盒子形状的空间建模。我们通过实验验证,在给定适当的训练策略下,大量精心选择的缺省边界框可以提高性能。与现有方法相比,我们构建的SSD模型具有至少一个数量级的盒预测采样位置、尺度和纵横比[5,7]。我们证明,给定相同的VGG-16基础架构,SSD在精度和速度方面都优于其最先进的对象检测器。我们的SSD512模型在PASCAL VOC和COCO上的精度明显优于目前最先进的R-CNN[2],同时速度快了3。我们的实时SSD300模型以59帧每秒的速度运行,这比当前的实时YOLO[5]替代方案更快,同时产生明显优越的检测精度。除了它的独立实用程序之外,我们相信我们的单片且相对简单的SSD模型为使用对象检测组件的大型系统提供了一个有用的构建块。一个很有前途的未来方向是探索它作为一个系统的一部分,使用递归神经网络同时检测和跟踪视频对象。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值