SSD: Single Shot MultiBox Detector

摘要

提出了一种利用单一深度神经网络检测图像中目标的方法。方法名为SSD,它将边界框的输出空间离散为一组默认框,并根据不同的纵横比和每个特征图位置的比例进行调整。在预测时,网络为每个默认框中每个对象类别的存在生成分数,并对框进行调整以更好地匹配对象形状。此外,该网络将来自多个具有不同分辨率的特征图的预测结合起来,以自然地处理各种大小的对象。SSD相对于需要对象建议的方法来说很简单,因为它完全消除了生成proposal和随后的特征重采样阶段,并将所有计算封装在一个网络中。这使得SSD易于训练,并且易于集成到需要检测组件的系统中。在PASCAL-VOC、COCO和ILSVRC数据集上的实验结果证实,SSD与利用额外的对象 proposal 步骤的方法的准确率相比更具有竞争力,并且速度更快,同时为训练和推理提供了统一的框架。对于300×300输入,固态硬盘在Nvidia Titan X上以59 FPS的速度在VOC1007测试中达到74.3%的mAP,而对于512×512输入,固态硬盘达到76.9%的mAP,优于同类最先进的Faster R-CNN模型。与其他单级方法相比,SSD在输入图像较小的情况下具有更好的精度。

代码

https://github.com/weiliu89/caffe/tree/ssd 作者提供的caffe

https://github.com/balancap/SSD-Tensorflow.git tensorflow 1.x 用的slim

https://github.com/amdegroot/ssd.pytorch.git

https://github.com/pierluigiferrari/ssd_keras.git

贡献

  • SSD,一种用于多个类别的单次检测器,它比以前的单次检测器(YOLO)的技术更快,并且显著地更精确,事实上与执行 region proposal、pooling的较慢技术一样精确 (包括Faster R-CNN)。
  • SSD的核心是使用应用于特征映射的小卷积滤波器预测一组固定默认边界框的类别分数和框偏移量。
  • 为了获得高的检测精度,我们从不同尺度的特征图中生成不同尺度的预测,并按纵横比明确分离预测。
  • 这些设计特点导致了简单的端到端训练和高精度,即使在低分辨率输入图像上,进一步提高了速度与精度的权衡。
  • 实验包括在PASCAL VOC、COCO和ILSVRC上评估输入大小不同的模型的时间和精度分析,并与一系列最新的先进方法进行比较。

2 The Single Shot Detector (SSD)

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

模型损失是定位损失(例如平滑L1)和置信损失(例如Softmax)之间的加权和。

2.1 Model

SSD方法基于一个前向卷积网络,该网络生成一个固定大小的bounding box集合,并对这些box中是否存在对象类实例进行评分,然后是一个非最大抑制步骤以生成最终检测。早期的网络层基于用于高质量图像分类的标准体系结构(在任何分类层之前截断),我们称之为基础网络(base network)。然后,我们将辅助结构添加到网络中,以生成具有以下关键功能的检测:

Multi-scale feature maps for detection : 在截断的基础网络的端部加入卷积特征层。这些层的大小逐渐减小,允许在多个尺度上进行探测预测。预测检测结果的卷积模型对于每个特征层都是不同的( 参见 (cf confer):Overfeat[4]和YOLO[5]在单尺度特征图上操作)。

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

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

Default boxes : 和Faster R-CNN[2]中使用的锚定框(anchor)差不多,是一组k个不同大小的边界框。结合 aspect ratios 来看,就是针对不同特征图的每一个单元( 如大小为8 * 8 、4 * 4 的特征图各有64和16个单元 ),有 k 个不同比例的( 针对单元 )默认框。这就是SSD的多尺度,对于大的特征图也只预测较小的比例的默认框,对于小的特征图(此时由于下采样,一个单元已包含相当于大的特征图中几倍的信息,不同的感受野)预测比例较大的默认框。

这个图1就表达的很明确

2.2 Training

训练SSD和训练使用区域建议(region proposals)的典型检测器的关键区别在于,ground truth信息需要分配给 固定检测器输出集中 的特定输出(不同尺度的特征图)。训练还包括选择一组默认的检测框和尺度,以及硬负挖掘和数据扩充策略。

Matching strategy

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

jaccard overlap : 交并比(IOU)

Training objective

SSD训练目标源于MultiBox目标[7,8],但扩展到处理多个对象类别。总体目标损失函数是定位损失(loc)和置信损失(conf)的加权和:

Choosing scales and aspect ratios for default boxes

为了处理不同的目标尺度,一些方法[4,9]建议对不同尺度的图像进行处理,然后将结果结合起来。然而,通过在单一网络中利用来自多个不同层的特征地图进行预测,我们可以模拟相同的效果,同时在所有对象尺度上共享参数。以前的工作[10,11]已经表明,使用来自较低层的特征映射可以提高语义分割质量,因为较低层捕获输入对象的更精细细节。类似地,[12]表明,从特征图中加入全局上下文池有助于平滑分割(segmentation)结果。

在这些方法的驱动下,我们使用底层的和高层的特征图进行检测。图1显示了框架中使用的两个示例特征图(8×8和4×4)。在实践中,我们可以使用更多的小计算开销的特征图。已知网络中不同层次的特征图具有不同的(经验)感受野大小[13]。幸运的是,在SSD框架中,默认框不需要对应于每个层的实际感受野。我们设计了默认框的平铺位置,以便特定的特征图学习能够对特定比例的对象做出响应。假设我们要使用m个特征图进行预测。每个特征图的默认框的比例计算为

其中s-min为0.2和s-max为0.9,这意味着最低层的比例为0.2,最高层的比例为0.9,并且中间的所有层都有规则的间隔。

我们对默认框施加不同的长宽比,并将其表示为ar∈{1,2,3,1/2,1/3}。我们可以计算每个默认框的宽度:

和高度:

对于宽高比为1的情况,我们还添加了一个默认框,其比例为:

结果是每个要素地图位置有6个默认框。 ar∈{1, 2, 3, 1/2, 1/3, 1′}

我们将每个默认框的中心设置为(i+0.5 / | fk |,j+0.5 /| fk |),其中| fk |是第k个特征图的大小,i,j∈[0,| fk |)。在实践中,还可以设计默认框的分布以最适合特定数据集。如何设计最佳的放置也是一个有待解决的问题。

关于默认框的长和宽,上面公式求出的是对应的比例,还需要和具体的特征图的大小(或者说图片大小)进行相乘。

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之间。如果地面真值框的中心位于采样点,则保留其重叠部分。在上述采样步骤之后,除了应用一些与[14]中描述的类似的光学度量失真之外,每个采样的面片被调整到固定大小,并且以0.5的概率水平翻转。
- 下一页