卷积神经网络——SSD论文翻译

论文链接:https://arxiv.org/abs/1512.02325

SSD:Single Shot MultiBox Detector

0.摘要

我们提出了一种只用一个卷积神经网络就可以实现检测图片中目标的方法。我们称该方法为SSD,将边界框(bounding box: 这里具体的概念等读到下面再解释一下)的输出空间离散化为一组默认框,这些默认框覆盖了特征图中每一个位置的不同长宽比和尺度。在预测时,该网络会为每个默认框(default box)中出现的每一个对象分类进行打分,并对框进行调整来更好的匹配目标的大小。另外,该网络将来自多个不同分辨率的特征图的预测结合起来,这样就很自然的实现了对目标多中尺度大小的处理。与那些需要候选目标的方法相比,SSD非常简单,因为它完全去掉了生成候选框和后续对像素或者特征重采样的步骤,将所有的计算都整合到了一个网络中。这样就使得SSD的训练和进一步融合到需要检测模块的系统中都变得非常简单。在PASCAL VOC、COCO和ILSVRC等数据集上的实验表明,在训练和推理使用统一框架的同时,SSD拥有与使用了额外生成候选目标步骤的方法一较高下的精度,并且SSD的速度更快。在Nvidia Titan X上使用VOC2007测试集的测试结果为:当使用300x300大小的输入时,SSD的mAP可以达到74.3%,处理速度为59FPS;使用512x512大小的输入mAP可以达到76.9%,比同类型表现最好的 Faster R-CNN模型表现更好。与其他的一阶段方法相比,SSD即使使用更小的输入大小也能得到更好的精度。代码发布在:https://github.com/weiliu89/caffe/tree/ssd

1. 引言

当前最好的目标检测系统都是下面介绍的方法的各种变体:先假设一些边界框(可能通过Selective Search 或者RPN生成),然后为每个框重新提取像素或者特征,最后使用一个牛X的分类器得到框的类别。自从Selective Search方法(即使这些方法使用了更深层次的特征(比如[3])但这些检测方法仍然是基于Faster R-CNN的)在 PASCAL VOC, COCO, and ILSVRC等数据集上都得到了很好的检测结果,该流程称为了普遍的检测基准。这些方法虽然精度高,但是对于嵌入式系统这些方法的计算量太大了,对于实时系统来说处理速度太慢了。通常使用帧率(SPF)来衡量这些方法的检测速度,即使速度最快的高精度检测方法——Faster RCNN,也只能达到每秒处理7帧(FPS)。到目前为止已经尝试过很多方法——通过逐个修改整个检测流程的每个阶段来提升检测的速度,但是要取得明显的效果都是以精度的显著降低为代价的。

本文展示了第一个基于深度网络的目标检测器,不需要为假设的候选框进行像素或者特征的重采样,同时精度又能够与这些方法持平。这使得高精度检测在速度方面得到了一个很大的提升(在VOC2007 test数据集上,SSD的mAP为74.3%速度为59 FPS,而Faster RCNN的mAP为73.2%速度为7 FPS,YOLO的mAP为63.4%速度为45 FPS)。在速度上取得这么大的提升主要是干掉了生成候选框和后续为候选框在像素或特征上的重采样阶段。我们不是第一个这样做的(参见4,5),但是我们通过使用一系列的改进方法,是精度得到了大幅度的提升并超过了之前尝试的方法。我们的改进方法包括使用一个小的卷积过滤去来预测目标类别和边界框的位置偏移,为检测不同长宽比的目标使用独立的检测器(过滤器),并把这些过滤器应用到从网络的后面几个阶段得到的多个特征图来实现多尺度的检测。 应用了这些修改后——尤其是为了预测不同尺度而使用了多个层的输出 ——我们可以在使用相对较低分辨率输入的情况下达到较高的精度,进一步提升了检测的速度。虽然单独看这些改进非常不起眼,但是我们注意到使用了这些改进的系统却使提升了PASCAL VOC上实时检测的准确率,把mAP从YOLO的63.4%提升到了74.3%。这相对于近期最受关注的残差网络而言,这是对检测精度更大的一次提升。而且,高质量检测速度的大幅度提升可以为计算机视觉提供更多的设置选项。

把我们的贡献总结如下:
—— 我们提出了SSD,一个只需要看一眼(single-shot)的多类别检测系统,比之前表现最好的single-shot检测系统(YOLO)的速度更快并且精度更高,实际上也不低于使用候选区域和池化(包括Faster RCNN)等更慢一些的技术的精度。

—— SSD的核心思想是 在一组固定的默认边界框的特征图上使用小的卷积过滤器来预测类别得分和框的偏移。

—— 为了达到更高的检测精度,我们使用不同尺度的特征图来预测不同尺度的目标,并且根据纵横比把预测结果进行区分开。

—— 即使使用低分辨率的输入图片,这种设计也可以做到端到端的训练简单和高精度,更好的平衡了速度和精度。

—— 在PASCAL VOC, COCO 和 ILSVRC数据集上使用多种输入大小对模型的耗时和精度进行了实验分析,并且与一系列近期表现最好的方法进行了比较。

2.The Single Shot Detector (SSD)

本章节介绍我们提出的SSD检测框架(2.1章节)和对应的训练方法(2.2章节)。随后第三章节展示了特定数据集的模型细节和实验结果。
在这里插入图片描述简要翻译一下图片的说明:图1:SSD 框架.(a) SSD在训练的时候只需要一个输入图片和每个目标的真值框。我们用卷积的方式,为不同尺度的(比如图中b和c的8x8和4x4)特征图中的每个位置假设了一组数量比较少(比如4)的默认框,这些默认框具有不同的纵横比。我们会为每个默认框预测形状的偏移和对所有目标类型(c 1 , c 2 , · · · , c p )的置信度。在训练时,首先我们用默认框取匹配真值框。例如,我们有两个配置的默认框,一个匹配了猫,另一个匹配了狗,那么哪个作为正样本哪个作为负样本呢。该模型的loss值是位置的loss(例如Smooth L1)和置信度loss(例如softmax)的加权和.

2.1 Model

SSD方法基于一个前馈卷积网络,该网络首先生成一个固定大小的边界框集合,并对这些框中存在的对象类实例进行评分,然后执行非最大抑制步骤以生成最终检测。早期的网络层次是基于用于高质量图像分类的标准结构(从分类层之前截断,主要指的是分类层前面的部分,也就是backbone网络用于提取特征),我们称之为基础网络。然后在基础网络上添加一些辅助的结构,来构造一个具有一下特征的检测器:

用于检测的多尺度特征图 我们在截取的基础网络后面添加了卷积特征层。这些层的大小会逐渐的减小,这样就可以使检测器预测多种尺度了。用于预测检测的卷积模型对于每个特征层是不同的(Overfeat[4]和YOLO[5],它们在单比例尺特征图上运行)。

检测的卷积预测器 添加的每一个特征层(或者是从基础网络中选择一个已有的特征层)使用一组卷积过滤器可以生成一组固定的检测预测结果。这些在图2中SSD网络结构的上面进行了说明。对于大小为mxn通道数为p的卷积层,预测潜在检测参数的基础元素是一个3x3xp的小卷积核,该卷积核既生成类别的得分又生成相对于默认框坐标的大小偏移。在mxn的每一个位置都会使用该卷积核,来生成一个结果。输出的边界框的偏移值是相对于默认框的位置来计算的,默认框的位置是取的特征图中的相对位置(个人理解:这里应该指的是不同大小的特征图中默认框的位置)(参见YOLO[5]的架构,它使用了全连接层替代了该步骤的卷积过滤器)。

在这里插入图片描述图2 两个单次检测模型的比较:SSD和YOLO[5]。我们的SSD模型在基础网络的后面添加了几个特征层,这些新加的层用来预测不同尺度和长宽比的默认框的偏移以及默认框对应的置信度。在VOC2007 测试集上,使用300x300大小输入的SSD精度已经大大超过了使用448x448输入大小的yolo,同时执行速度也得到了提升。

默认框和长宽比 我们为网络顶层的几个特征图中的每一个特征图单元(个人理解:就是特征图里面每个值)都创建一组默认边界框。这些默认框是以卷积的方式铺在特征图上(个人理解: ** 这里应该是指每一个默认框都像卷积计算似的覆盖了特征图中的部分值,默认框覆盖的是通过框对应值得出的框范围**),因此每个框与它对应的单元的相对位置是固定的。对于特征图中的每个单元(也就是每个值),我们都会预测相对于该单元中默认框大小的偏移,也会预测每个类别实例出现在每个默认框中的得分。具体的说,对于给出了位置的k个框,我们会为每一个框都会计算c中类别的得分和相对于原始默认框大小的4个偏移值。这就需要在特征图的每一个位置上总共使用(c+4)k个过滤器,对于mxn的特征图得到一个(c+4)kmn个输出。默认框的说明请参见图1。我们的默认框类似与Faster RCNN中的锚点框,但是不同的是我们把默认框应用到不同分辨率的多个特征图上。在多个特征图上使用不同形状的默认框,可以让我们有效的对可能的输出形状空间进行离散化。(个人理解:这里这应该指我覆盖了不同大小和形状的默认框,这样就有更大可能的覆盖可能的输出形状)

2.2 Training

训练SSD和使用候选区域的典型检测器的关键不同是,** 真值框需要与检测器的一组固定输出中的某个特定输出关联起来。**(个人理解:一个特征图单元有一组默认框,这就对应了一组输出,而真值框需要找到对应的特征图中的单元,与该单元的某个输出关联起来,作为其label)。在训练YOLO[5]和Faster RCNN、MultiBox中生成候选区域阶段也需要类似的操作。一旦关联关系确定,loss函数和反向传播就可以端到端的执行了。训练还包括选择一组用于检测的默认框和尺度,同时还有困难负样本挖掘和数据增强的策略。

匹配策略 在训练过程中我们需要确定默认框对应到哪个真值框,并以此为基础进行对应的训练。对于每一个真值框,我们会根据位置、长宽比、尺度从默认框中选择。首先,对于每一个真值框我们选取与之交并比最高的默认框(与MultiBox[7]相同)。与MultiBox不同的是,我们后续会匹配与默认框交并比(IOU)大于一个阈值(0.5)的所有真值框。这样就简化了学习中的问题,允许网络多个重叠的默认框预测一个高分,而不是只取一个最大交并比的预测结果。

训练目标 SSD的训练目标(也就是loss函数)继承子MultiBox[7,8],但是进行了扩展来处理多种目标类型。我们使用xijp={1, 0}来表示第i个默认框匹配含有物体类别p的第j个真值框。根据上面介绍的匹配策略,我们可以得到 ∑ i \sum_{i} ixijp >=1。最终的目标loss函数是位置损失(loc)和置信度损失(conf)的加权和:
在这里插入图片描述其中N是匹配成功的默认框数量。如果N = 0,我们把loss设置为0。位置损失函数使用了Smooth L1[6],并将预测框(l)和真值框(g)作为参数。与Faster RCNN类似,我们会对默认框的中心点(cx, cy)的偏移和宽(w)、高(h)都进行回归。
在这里插入图片描述置信度损失是多个类别置信度©的softmax 损失函数,通过交叉验证我们把权重参数α设置为1。

选择默认框的尺度和长宽比 为了应对不同大小的目标,一些方法[4,9]是通过先将图片处理成不同大小然后将预测结果整合到一起。但是,通过将单个网络中来自多个不同层的特征图进行预测,我们可以模拟相同的效果,同时还能够在所有目标尺寸上共享参数。之前的工作[10,11]已经证明,使用较低层次的特征图能够提升语义分割的质量,因为较低层次能够从输入的目标中捕捉更过的细节信息。类似的,[12]中已经证明增加一个全局的上下文池(通过对一个特征图池化得到)可以是分割结果更平滑。受这些方法启发,我们既使用较低层的特征也使用较高层的特征进行检测。图1中展示了框架中使用的两个特征图的例子(8x8和4x4)。在实际操作中,我们可以使用类似的更多的特征,而且只增加很少的计算量。

我们知道一个网络中不同层次的特征图具有不同(实验证明的)大小的感受野[13]。幸运的是,在SSD的框架中,默认框不需要与每层的实际感受野关联起来。我们设计了一种将默认框平铺到特征图的方法 ,这样就可以是特定的特征图对应到特定尺度的目标。假如我们检测时使用m个特征图。每个特征图的默认框的scale计算方法如下:
在这里插入图片描述公式里面smin=0.2, smax=0.9,意思是处于最下面的层的scale是0.2,最高层次的scale是0.9,中间层次都是按照规律递增的。在创建默认框时我们使用了不同的长宽比,并使用ar表示,ar∈{1, 2, 3, 1/2 , 1/3 }。这样我们就可以计算每一个默认框的宽(wka=sk a r \sqrt{a_r} ar )和高(hka=sk/ a r \sqrt{a_r} ar )。当长宽比等于1时,我们也为它添加了一个默认框,scale为sk= s k s k + 1 \sqrt{s_k s_{k+1}} sksk+1 ,这样的话一个特征图的每一个位置就会有6个默认框。我们把默认框的的中心位置记为( i + 0.5 ∣ f k ∣ {i+0.5}\over {|f_k|} fki+0.5 j + 0.5 ∣ f k ∣ {j+0.5}\over {|f_k|} fkj+0.5),|fk|是第k个方形特征图的大小,i,j∈ [0, |f k |)。在实践中,也可以设计一种默认框的分布,来更好的适配特定数据集。如何设计最好平铺默认框的方法仍是一个悬而未决的问题。

通过将多个特征图的所有位置生成的不同尺度和长宽比默认框的预测结果结合到一起,我们得到了一组多种多样的预测结果,覆盖了多种输入形状的大小和形状。例如,在图1中,狗匹配到了大小为4x4的特征图中的一个默认框,但是不会匹配到大小为8x8的特征图中的任何默认框。这是因为这些框具有不同的尺度,与狗的框并不匹配,因此在训练中看做负样本

困难负样本挖掘 经过与真值框的匹配后,大多数的默认框都是负样本,尤其是可能匹配成功的默认框数量很大时。这就导致训练的正负样本之间非常到的不平衡。我们并没用全部的负样本,我们使用默认框的置信度loss对默认框进行排序,然后选取最高的一些使负样本和正样本的比例保持在差不多3:1。我们发现这样做可以是优化更加快速和训练更加稳定。

数据增强 为了使模型对多种多样的输入目标大小和形状具有更好的鲁棒性,每一个训练的图片都随机使用一下的一种方法进行采样。
——使用整张原始的图片。
——对图片进行采样,使样本与目标的最小IoU为0.1,0.3,0.5,0.7,0.9。
——随机采样

通过采样得到图片的大小与原始图片大小的比值范围为[0.1, 1],长宽比取1/2到2之间的值。如果真值框的中心点在采样的样本中,我们将会保留真值框中重叠的部分。在上述采样步骤之后,除了应用一些类似于[14]中描述的变换图片亮度的方法之外,每一个样本都会调整为固定大小并以0.5的概率进行水平翻转。

先写到这里吧,下面就是相关的实验了,有时间的话再补充。。。。

3 Experimental Results

猜你喜欢

转载自blog.csdn.net/itlilyer/article/details/112391476