目标检测SSD学习笔记

目标检测SSD学习笔记

SSD: Single Shot MultiBox Detector

Abstract.

我们提出了一种使用单一深度神经网络来检测图像中的对象的方法。我们的方法,命名为SSD,将边界框的输出空间离散化为一组默认框,每个特征地图位置具有不同的纵横比和比例。在预测时,网络为每个默认框中每个对象类别的存在生成分数,并对框进行调整以更好地匹配对象形状。此外,该网络结合了来自不同分辨率的多个特征地图的预测,以自然地处理各种尺寸的物体。相对于需要对象提议的方法,SSD是简单的,因为它完全消除了提议生成和随后的像素或特征重采样阶段,并且将所有计算封装在单个网络中。这使得SSD易于训练,并直接集成到需要检测组件的系统中。在PASCAL VOC、COCO和ILSVRC数据集上的实验结果证实,SSD具有与利用额外的对象提议步骤的方法竞争的准确性,并且速度快得多,同时为训练和推理提供了统一的框架。对于300 × 300输入,SSD在Nvidia Titan X上以59 FPS的速度在VOC2007测试中实现了74.3%的mAP1,对于512 × 512输入,SSD实现了76.9%的mAP,优于可比的最先进的更快R-CNN模型。与其他单阶段方法相比,SSD具有更好的准确性,即使输入图像尺寸较小。代码可在:https://github.com/weiliu89/caffe/tree/ssd

1 Introduction

当前最先进的对象检测系统是以下方法的变体:假设边界框,对每个框的像素或特征进行重新采样,并应用高质量的分类器。自选择性搜索工作[1]以来,该管道已在检测基准上占据优势,目前PASCAL VOC、COCO和ILSVRC检测的领先结果都基于Faster R-CNN[2],尽管具有更深层次的功能,如[3]。虽然准确,但这些方法对于嵌入式系统来说计算量太大,即使是高端硬件,对于实时应用来说也太慢。

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

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

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

–我们引入了SSD,这是一种用于多个类别的单次检测器,比之前的单次检测器(YOLO)更快,更准确,实际上与执行显式区域建议和合并的较慢技术(包括Faster R-CNN )一样准确。

–SSD的核心是使用应用于特征地图的小型卷积过滤器来预测一组固定默认边界框的类别分数和框偏移量

–为了实现高检测精度,我们从不同比例的特征地图中生成不同比例的预测,并通过纵横比明确地分离预测

–这些设计特性带来了简单的端到端训练和高精度,即使在低分辨率输入图像上也是如此,进一步改善了速度与精度之间的平衡。

–实验包括在PASCAL VOC、COCO和ILSVRC上对不同输入大小的模型进行时序和准确性分析,并与一系列最新的方法进行比较。

2 The Single Shot Detector (SSD)

本节描述了我们提出的SSD检测框架(Sec。2.1)和相关的培训方法(第。2.2).之后,sec。3展示了特定于数据集的模型细节和实验结果。

2.1 Model

SSD方法基于前馈卷积网络,该网络产生固定大小的边界框和这些框中对象类实例存在的分数的集合,随后是非最大抑制步骤以产生最终检测。早期的网络层基于用于高质量图像分类的标准架构(在任何分类层之前被截断),我们称之为基础网络2。然后,我们将辅助结构添加到网络中,以产生具有以下关键特征的检测:

Multi-scale feature maps for detection

我们将卷积特征层添加到截断的基础网络的末端。这些层的尺寸逐渐减小,并允许在多个尺度上进行探测预测。用于预测检测的卷积模型对于每个要素图层而言都是不同的(参见在单比例feature maps上操作的超差[4]和YOLO[5])。

Convolutional predictors for detection

每个添加的特征层(或者可选地来自基础网络的现有特征层)可以使用一组卷积滤波器产生一组固定的检测预测。这些被指示在图2中的SSD网络架构的顶部。对于具有p个通道的 m × n m × n m×n大小的特征层,用于预测潜在检测的参数的基本元素是 3 × 3 × p 3 × 3 × p 3×3×p的小核,其产生类别的分数或者相对于默认框坐标的形状偏移。在应用内核的每个m × n位置,它产生一个输出值。边界框偏移输出值是相对于默认值测量的相对于每个特征图位置的方框位置(参见YOLO[5]的架构,该架构在该步骤中使用中间全连接层而不是卷积滤波器)。

image-20221004144726305

Default boxes and aspect ratios

对于网络顶部的多个feature maps,我们将一组默认边界框与每个feature maps单元相关联。默认框以卷积方式平铺feature maps,因此每个框相对于其对应像元的位置是固定的。在每个feature maps单元中,我们预测相对于单元中默认方框形状的偏移,以及指示每个方框中存在类实例的每个类的分数。具体来说,对于给定位置的k个box中的每一个,我们计算c类分数和相对于原始默认box形状的4个偏移。这导致总共(c + 4)k个滤波器被应用于特征图中的每个位置周围,产生m × n特征图的(c + 4)kmn输出。关于默认框的图示,请参考图1。我们的默认框类似于快速R-CNN [2]中使用的锚框,但是我们将它们应用于不同分辨率的几个特征地图。在几个feature maps中允许不同的默认box形状使我们能够有效地离散化可能的输出box形状的空间。

image-20221004151046860

image-20221004150723114

2.2 Training

训练SSD和训练使用区域建议的典型检测器之间的关键区别在于,ground truth信息需要被分配给检测器输出的固定集合中的特定输出。在YOLO[5]的培训以及Faster R-CNN [2]和MultiBox[7]的地区提案阶段也需要这种版本。一旦确定了这种分配,就可以端到端地应用损失函数和反向传播。训练还包括选择用于检测的一组默认框和尺度,以及硬阴性挖掘和数据扩充策略。

Matching strategy

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

Training objective

SSD训练目标源自MultiBox目标[7,8],但扩展到处理多种对象类别。设 x i j p = { 1 , 0 } x_{i j}^{p}=\{1,0\} xijp={ 1,0}为P类第I个缺省框与第j个地面真值框匹配的指标,在上面的匹配策略中,我们可以有 ∑ i x i j p ≥ 1 \sum_{i} x_{i j}^{p} \geq 1 ixijp1。总体目标损失函数是定位损失(loc)和置信度损失(conf)的加权和:

image-20221004150043259

其中N是匹配的默认框的数量。如果N = 0,则将loss设置为0。定位损失是预测框(l)和实际框(g)参数之间的平滑L1损失[6]。类似于Faster R-CNN [2],我们回归到默认边界框(d)的中心(cx,cy)及其宽度(w)和高度(h)的偏移。

image-20221004150206848

image-20221004151212708

image-20221004151138874

置信度损失是多个类别置信度©上的软最大损失。

image-20221004150244704

并且通过交叉验证将权重项α设置为1。

Choosing scales and aspect ratios for default boxes

image-20221004150656927

image-20221004150827361

image-20221004150934425

Hard negative mining

在匹配步骤之后,大多数默认框是否定的,尤其是当可能的默认框的数量很大时。这在正面和负面的训练例子之间引入了显著的不平衡。我们没有使用所有的负面例子,而是使用每个默认框的最高置信损失对它们进行排序,并挑选出顶部的例子,这样负面和正面之间的比率最多为3:1。我们发现这导致更快的优化和更稳定的训练。

Data augmentation

为了使模型对各种输入对象大小和形状更加鲁棒,通过以下选项之一对每个训练图像进行随机采样:

–使用整个原始输入图像。

–对补丁进行采样,使jaccard与对象的最小重叠为0.1、0.3、0.5、0.7或0.9。

–随机抽取补丁样本。

每个采样块的大小为原始图像大小的[0.1,1],纵横比在1/2和2之间。如果地面真值框的中心在采样的小块中,我们保留地面真值框的重叠部分。在上述采样步骤之后,除了应用类似于[14]中描述的一些光度量失真之外,每个采样的小块被调整大小为固定大小,并且以0.5的概率水平翻转。

3 Experimental Results

image-20221015191638392

image-20221015191744147

image-20221015191801915

4、Related Work

5 Conclusions

本文介绍了SSD,一种快速单次多类别目标检测器。我们的模型的一个关键特征是使用多尺度卷积包围盒输出附加到网络顶部的多个特征图。这种表示允许我们有效地模拟可能的盒子形状的空间。我们通过实验验证了给定适当的训练策略,大量精心选择的默认包围盒会导致性能的提高。与现有方法相比,我们构建的SSD模型的盒预测采样位置、比例和纵横比至少高出一个数量级[5,7]。我们证明,在相同的VGG-16基础架构下,SSD在准确性和速度方面都优于其最先进的对象检测器。我们的SSD512模型在PASCAL VOC和COCO上的准确性明显优于速度更快的R-CNN [2],同时速度快3倍。我们的实时SSD300模型以59 FPS的速度运行,这比当前的实时YOLO [5]替代方案更快,同时产生明显更高的检测精度。

除了其独立的实用程序,我们相信我们的单片和相对简单的SSD模型为采用对象检测组件的大型系统提供了有用的构建模块。一个有希望的未来方向是探索其作为使用递归神经网络的系统的一部分的用途,以同时检测和跟踪视频中的对象。

猜你喜欢

转载自blog.csdn.net/charles_zhang_/article/details/127339213