Bootstrap

论文笔记(SSD)-2016-SSD: Single Shot MultiBox Detector

论文笔记(SSD)-2016-SSD: Single Shot MultiBox Detector

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

源码:https://github.com/weiliu89/caffe/tree/ssd


目录

论文笔记(SSD)-2016-SSD: Single Shot MultiBox Detector

1. Introduction

2. Related Work

3. SSD

3.1. Training method

3.2. Fully convolutional priors

3.3. Combining predictions from multiple feature maps

3.4. Hard negative mining

3.5. Image processing

4. Experimental Results

4.1. ILSVRC 2014 DET results

4.2. VOC 2007 results

4.3. Training time

4.4. Design choices analysis

5. Conclusions

6. Acknowledgment

References


摘要:

我们提出了一种利用单一深度神经网络检测图像中目标的方法,称为 SSD。它将 bounding boxes 的输出空间离散化为一组默认框,这些默认框具有不同的长宽比和尺寸(feature map上的每个位置)。在预测时,网络会根据每个默认框中每个对象类别的存在情况生成 scores,并对该框进行调整以更好地匹配对象形状。此外,该网络结合了来自不同分辨率的多个特征图的预测,以自然地处理不同大小的对象。与需要 object proposals 的方法相比,SSD 比较简单,因为它完全消除了 proposas 生成和随后的像素或特征重采样阶段,并将所有计算封装在一个网络中。这使得 SSD 易于训练,并且易于集成到需要检测组件的系统中。在 PASCAL VOC、COCO、ILSVRC 数据集上的实验结果证实,SSD 与利用额外的 object proposals 步骤的方法相比有更具竞争力的准确性,并且速度更快,同时为训练(train)和推理(inference)提供了统一的框架。对于 300×300 的输入,SSD 在 Nvidia Titan 上以 59 帧/秒的速度测试 VOC2007 时,获得 74.3% 的 mAP,而对于 512×512 的输入,SSD 实现了 76.9% 的 mAP,优于同类的最先进的 Faster R-CNN 模型。

关键词:

Real-time Object Detection,Convolutional Neural Network
 


1. Introduction

深度卷积神经网络[12,20,19]最近在图像分类任务中表现出了令人印象深刻的性能水平。但是,目标检测是一个比较困难的问题,因为除了对目标进行分类外,还需要对图像中的所有目标实例进行定位。基于区域的卷积神经网络(RCNN)[6]或其更快的变体[8,5,16]将检测作为目标建议的分类问题,然后(可选)回归边界框坐标。另一种方法,YOLO[15]使用整个最顶部的特征图直接预测固定网格上所有类别的边界框和置信度;在知道底层目标的类别之后,OverFeat[18]为每个特征图上的位置回归一个边界框。然而,这些单阶段方法的表现不如R-CNN类型的方法。那么R-CNN框架是实现高质量目标检测的唯一方法吗?

在本文中,如图1所示,我们提出了单阶段多盒探测器(Single Shot MultiBox Detector,SSD)。给定一组固定的不同长宽比和尺度的先验边界框,训练一个网络来选择哪些先验框包含感兴趣的对象,并调整它们的坐标以更好地匹配对象的形状。我们定义的边界框先验集与更快的R-CNN[16]中使用的锚框具有相同的含义。与Faster R-CNN不同,我们的网络可以检测多个对象类别,而不需要与Fast R-CNN[5]共享卷积层。此外,SSD架构结合了来自网络中不同分辨率的多个特征图的预测,这自然处理了不同大小的对象,并提高了检测质量。

总的来说,SSD与许多当前作品共享见解[18,2,8,5,15,16]。但是,它是第一个在一个统一的框架中结合最有效的单阶段检测思想,并实现与基于目标建议的方法进行性能竞争,在ILSVRC DET[17]和PASCAL VOC[3]检测基准上,速度要快100-1000倍。我们的贡献总结如下:

  • 与[8,2,5,16]不同,SSD删除了目标建议步骤,这一步通常代价很大,并且依赖于低级区域分组信息。该方法基于单个神经网络,能够直接生成大量对象类别的目标边界框及其置信度。
  • SSD是第一个将卷积先验边界框思想和预测多个对象类别的能力相结合的工作。在我们的方法中,相对于在MultiBox[2]和YOLO[15]中使用整个特征图,每个先验框对应的多个类别的偏移调整和置信度,是通过一个特征图上每个位置的底层1×1特征来预测的。这就构成了一个更紧凑的网络,对于有效地检测大量的对象类别是至关重要的。此外,这样增加了模型输出层的平移不变性,减少了过度拟合,提高了检测性能。
  • SSD先验框具有不同的长宽比和尺度,密集地分布在特征图上的所有位置,不同于YOLO[15]或OverFeat[18]使用更严格的基于网格的平铺方式,SSD可以覆盖不同的对象形状。
  • SSD是第一个将先验边界框与网络中不同空间分辨率的特征图相关联的方法。这自然可以处理不同尺度的对象,并通过微不足道的计算开销提高检测精度,而不是像OverFeat[18]和SPPnet[8]那样需要将图像调整到不同的分辨率进行单独处理。
  • 整个SSD设计非常高效(比最佳区域建议检测器快100-1000倍),并为训练和推理提供了统一的框架,甚至可以用于数百个对象类别。

论文的其余部分结构如下。第2节回顾了相关的工作第3节描述了SSD模型的细节第4节报告了ILSVRC DET和PASCAL VOC数据集上的目标检测结果第5节总结

 


2. Related Work

现有的两类图像目标检测方法,一种是基于滑动窗口的方法,另一种是基于区域建议分类的方法。在卷积神经网络出现之前,这两类方法中性能最优的可变形部件模型(Deformable Part Model,DPM)[4]和选择性搜索(Selective Search)[23]的性能相当。然而,在R-CNN[6]将选择性搜索区域建议和基于分类后处理的卷积网络相结合带来了巨大的改进之后,区域建议目标检测方法开始流行起来。

原始的R-CNN方法已经在许多方面得到了改进。第一组方法提高了分类后处理的质量和速度,因为它需要对成千上万的图像组进行分类,既昂贵又耗时。SPPnet[8]显著加快了原始的R-CNN方法。它引入了一个空间金字塔池层,该层对区域大小和尺度更具鲁棒性,并允许分类层重用在多个图像分辨率下生成的特征图上计算的特征。Fast R-CNN[5]扩展了SPPnet,使得它可以通过最小化置信度和边界框回归的损失来对所有层进行端到端的微调,而边界框回归最初是在MultiBox[2]中为学习对象引入的。

第二种方法是利用深度神经网络提高生成建议(proposal)的质量。在最近的MultiBox[2,21]等研究中,基于低等级图像特征的选择性搜索区域建议被直接由单独的深度神经网络生成的建议所取代。这进一步提高了检测精度,但结果是一个有点复杂的设置,需要训练两个神经网络之间的依赖关系。Faster R-CNN[16]通过从区域建议网络(RPN)中学习的建议来代替选择性搜索建议,并介绍了一种将RPN与Faster R-CNN相结合的方法,该方法通过交替进行微调两个网络中共享的卷积层和预测层。我们的SSD与Faster R-CNN非常相似,因为我们还使用了卷积先验框(或锚框,anchor boxes)。但是,我们直接学习预测这些先验框的偏移量和多个类别的置信度,而不是将所有类别都视为类不可知的对象(与MultiBox相同)。因此,我们的方法避免了将RPN与Faster R-CNN合并的复杂性,并且更容易训练和直接集成到其他任务中。

另一组方法与我们的方法直接相关,它们完全跳过建议步骤,直接预测多个类别的边界框和置信度。OverFeat[18]是滑动窗口方法的深度版本,它在知道底层对象类别的置信度之后,直接从最顶层特征图的每个位置预测边界框。YOLO[15]使用整个最上面的特征图来预测多个类别的信任度和边界框(这些类别共享这些边界框)。我们的SSD方法属于这一类,因为我们没有建议步骤,而是使用指定的先验框。然而,我们的方法比现有的方法更灵活,因为我们可以从多个特征图中对每个特征位置施加不同的长宽比和尺度的先验框。如果我们在最上面的特征图中每个位置只使用一个先验框,我们的SSD具有与OverFeat[18]类似的架构;如果我们使用整个最上面的特征图进行预测,而不是使用卷积先验框,我们可以近似的重现YOLO[15]。

 


3. SSD

SSD的灵感来自于MultiBox[2,21],具有相似的训练目标,但也有许多不同之处和改进之处。虽然MultiBox非常成功地通过训练一个目标检测器来生成目标建议,但它仍然需要对生成的建议进行后处理分类以进行完整的目标检测。然而,我们的SSD可以使用一个单阶段评估检测一个输入图像的多个类别。现在我们将描述我们的方法的关键区别。

 

3.1. Training method

假设我们总共有 n 个先验框(prior),记作 b_{i},其中 i\epsilon [0,n)。每个先验框都与一个边界框形状和一组对象类别置信度相关联,置信度对应于某一类别出现在该先验框指定位置的概率。另外,用 c_{i}^{p} 表示第 i 个先验框对应类别 p 的置信度;用 l_{i}\epsilon \mathbb{R}^{4} 表示第 i 个预测框(predicted box)的坐标;用 g_{j}^{p}\epsilon \mathbb{R}^{4} 表示第 j 个实际框(ground truth box)的坐标,对应类别 p 。注意,预测框的坐标是通过将网络输出的偏移量添加到对应的先验框中计算出来的,并且先验框和实际框都是在相对于整个图像的标准坐标系中计算的。这种标准化确保了整个图像区域都是单元框,这样我们就可以安心地比较坐标,而不必担心不同的输入图像大小。

3.1.1 Matching strategy

就像MultiBox方法一样,在训练时我们需要建立实际框和先验框之间的对应关系。我们既可以直接使用先验框坐标,也可以使用应用网络预测的偏移量进行调整后的先验框坐标。为简单起见,我们将先验框导出(prior-derived)的坐标引用为源框。与实际框匹配的源框记为正样本,其余的记为负样本

我们考虑两种可能的匹配方法。第一种是双边匹配(bipartite matching),每个实际框贪婪地匹配到具有最佳jaccard重叠的源框。这是原始Multibox使用的匹配方法,它确保每个实际框正好有一个匹配的源框。第二种我们尝试了逐预测匹配(per-prediction matching),首先进行双边匹配,使得每个实际框都有一个对应的源框;然后,如果jaccard重叠超过阈值(例如0.5),则将剩余的源框与重叠最多的实际框相匹配。与双边匹配不同,逐预测匹配可以为每个实际框生成若干个匹配的正样本先验框。这使得网络能够预测多个重叠的先验框的高置信度,而不是要求它总是选择最有可能的先验框——这是一个稍微简化的任务。

请注意,SSD的目标是检测多个类别,而MultiBox只检测类不可知(class-agnostic)的“对象”框,然后在分类后处理步骤中使用这些“对象”框来确定对象类别。为了检测多个(数百个或更多)类别,对于每个先验框,SSD预测一个跨所有对象类别共享的边界框调整。换句话说,在匹配步骤中,源框被视为类不可知。然而,在匹配之后,我们保留匹配的实际框标签,因为它将用于计算置信度的损失。

3.1.2 Training objective

SSD训练目标源于MultiBox目标[2,21],但扩展到处理多个对象类别。令 x_{ij}^{p}=1,表示第 i 个源框与类别为 p 的第 j 个实际框匹配,否则的话令 x_{ij}^{p}=0。如上所述,对于双边匹配,我们有 \sum _{i}x_{ij}^{p}=1。如果我们使用逐预测匹配则 \sum _{i}x_{ij}^{p}\geq 1,意味着可以有多个源框匹配到第 j 个实际框。总体目标损失函数为定位损失(localization loss,loc)和置信损失(confidence loss,conf)的加权和

L\left ( x,c,l,g \right )=L_{conf}\left ( x,c \right )+\alpha L_{loc}\left ( x,l,g \right ),(1)

其中,定位损失是预测框(不是先验框)和实际框之间的L2损失

L_{loc}\left ( x,l,g \right )=\frac{1}{2}\sum _{ij}x_{ij}^{p}\left \| l_{i}-g_{j}^{p} \right \|_{2}^{2},(2) 

置信损失可以是multi-class logistic损失或者softmax损失,这里使用multi-class logistic损失

L_{conf}\left ( x,c \right )=-\sum _{i,j,p}x_{ij}^{p}log\left ( c_{i}^{p} \right )-\sum _{i,p}\left ( 1-\sum _{j,q=p}x_{ij}^{q} \right )log\left ( 1-c_{i}^{p} \right ),(3)

通过交叉验证将权重项 \alpha 设为0.06。

 

3.2. Fully convolutional priors

MultiBox方法的一个关键部分是它使用训练集边界框坐标的k-means中心点(centroids)作为先验框。在原始的设计中,使用整个最上面的特征图来预测所有先验框的偏移量。更好的策略可能是使用全卷积先验,即在一张特征图上为每个位置添加一小组先验框,如 图1 所示。这样不仅计算效率更高,而且还减少了参数的数量,从而降低了过度拟合的风险。

图1 SSD的框架。(a) SSD只需要一个输入图像(以及训练过程中每个对象的实际框)。在几个特征图(如(b)和(c)中的8×8和4×4)的每个位置上,设置一小组(如一小组4个)指定的(标准化的)不同长宽比和尺度的卷积先验框。对于每个先验框,使用底层的(1×1)特征来预测所有对象类别(\left ( c_{1}, c_{2}, ...,c_{p},\right ))的偏移量(\Delta\left ( x_{1},y_{1},x_{2},y_{2} \right ))和置信度。在训练期间,我们首先将这些先验框与实际框相匹配。例如,我们将两个先验框与猫匹配,一个先验框与狗匹配,这三个先验被视为正样本,其余的被视为负样本。然后我们用定位损失(如L2损失)和置信损失(如multi-class逻辑损失)之间的加权和来计算损失,并将误差反向传播。

这些全卷积先验框与RPN[16]中使用的锚框(anchor boxes)非常相似。我们进一步简化了模型,将3×3的卷积核替换为1×1的卷积核来预测偏移量和置信度,并且我们不需要中间层。更重要的是,RPN仍然被用来学习对象和生成建议,这些建议被用来与Fast R-CNN融合。相反,SSD可以被直接训练来检测多个类别,这些类别之间有共享的边界框。具体来说,假设我们有一个 m\times m 的特征图,特征图上的每个位置有 k 个先验框(用左上角和右下角的坐标编码),总共有 c 个类别。对于 k 个先验框将有 4k 个偏移量输出,对于 c 个类别将有 ck 个置信度输出,结果是特征图上的每个位置将有 \left ( 4+c \right )k 个输出。通过对特征图上所有位置的预测值进行累加,总共有 \left ( 4+c \right )km^{2} 个输出,但只需要学习 \left ( 4+c \right )k 个参数。如果我们不共享不同类别的位置,总输出将有 5ckm^{2} 个,有 5ck 个参数。显然,当我们有许多类别 \left ( c\gg 1 \right ) 需要检测时,这些数字增长很快。

 

3.3. Combining predictions from multiple feature maps

大多数卷积网络在更深层次上减小了特征图的大小。这不仅减少了计算和内存开销,而且还带来了一定程度的平移和尺度不变性。为了处理不同尺度的对象,一些方法[18,8]建议将图像转换成不同的大小,然后分别处理每个大小,之后融合结果。然而,通过利用单一网络中几个不同层的特征图,我们可以模拟相同的效果。[14, 7]的研究表明,使用低层的特征图可以提高语义分割的质量,因为低层可以捕获输入对象的更多详细信息。类似地,[13]表明,从最顶部的特征图添加全局上下文池化(global context pool)可以帮助平滑分割结果。在这些方法的驱动下,我们进行检测预测时,既使用低层特征图又使用高层特征图。图1 显示了框架中使用的两个范例特征图(8×8和4×4),当然在实践中我们可以使用更多的范例特征图,而计算开销可以忽略不计。

已知网络中不同层次的特征图具有不同的(经验上)感受野大小[24]。幸运的是,在SSD框架中,卷积先验框并不必须要对应到每一层的实际感受野。我们可以设计展开方式,使特定的特征图上的位置学习响应图像的特定区域和对象的特定尺度。假设我们想用 m 个特征图(正方形)来做预测。为简单起见,我们用 f_{k} 表示递减顺序中第 k 个特征图的大小,k\epsilon [1,m]每个特征图的先验框尺度计算如下:

s_{k}=s_{min}+\frac{s_{max}-s_{min}}{m-1}\left ( k-1 \right ),(4)

其中,s_{min} 是0.1,s_{max} 是0.7,s_{m+1} 是1。这意味着最低层的尺度是0.1,最高层的尺度是0.7,所有层之间是有规律的间隔。我们对先验边界框施加不同的长宽比,并将它们表示为 a_{\tau }\epsilon \left \{ 1,2,3,\frac{1}{2},\frac{1}{3} \right \}。我们可以为每个先验框计算宽度(w_{k}^{a}=s_{k}\sqrt{a_{\tau }})和高度(h_{k}^{a}=s_{k}/\sqrt{a_{\tau }})。对于长宽比为1的情况,我们还添加了一个额外的先验框,其尺度为 {s_{k}}'=\sqrt{s_{k}s_{k+1}},从而导致每个特征图位置有6个先验框。我们设置每个先验框的中心为 \left ( \frac{i+0.5}{f_{k}},\frac{j+0.5}{f_{k}} \right ),其中 i,j\epsilon [0,f_{k}),我们截断先验框的坐标,使它们总是在[0,1]之间。在实践中,也可以针对不同的检测任务设计自己的先验框。

通过结合来自多个特征图中所有位置上具有不同尺度和长(高)宽比的所有先验框的预测,我们得到了一组不同的预测,包含不同输入对象的大小和形状。例如,在 图1 中,狗与4×4特征图中的一个先验框匹配,但是与8×8特征图中的所有先验框都不匹配。这是因为那些先验框在不同的尺度范围内,与狗的框(box)不匹配,因此在训练中被认为是负样本。

 

3.4. Hard negative mining

在匹配步骤之后,大多数源框都是负样本,特别是当先验框的数量很大时。这在正、负训练样本之间引入了一个显著的不平衡。我们不使用全部的负样本,而是使用每个源框(负样本)对所有类别的置信度中的最大值,对全部负样本进行排序,并选择最高的那些,这样负、正样本的比例最多为3:1。我们发现这将导致更快的优化和更稳定的训练过程。

 

3.5. Image processing

为了使模型对各种输入对象的大小和形状具有更强的鲁棒性,每一幅训练图像都通过以下任意一个选项进行随机采样

  • 使用整个原始输入图像。
  • 采样一小块(patch),使与对象的最小jaccard重叠为0.1、0.3、0.5或0.7。
  • 采样一小块(patch),使与对象的最大jaccard重叠为0.5。

在上述采样步骤之后,除了应用一些类似于[10]中描述的光度扭曲(photometric distortions)外,每个采样的patch水平翻转的概率为0.5

 


4. Experimental Results

我们报告了两个数据集上的结果:ILSVRC DET[17]和PASCAL VOC[3],并与其他相关方法进行了比较。我们的实验从一个Inception的特殊的早期变体开始,它在ILSVRC CLS-LOC val数据集上拥有76.4%的top_1精确度(accuracy),并使用批处理规范化(batch-normalization)[11]和Adagrad[1]对其进行微调变成SSD,初始学习率为0.4

 

4.1. ILSVRC 2014 DET results

我们将SSD与性能最好的两阶段检测器[21]进行比较。为了进行公平的比较,两个检测器从完全相同的预训练的Inception网络开始,并使用ILSVRC2014 DET训练数据集微调(fine tune),并在val2数据集[6]上进行评估。

4.1.1 Baseline two-stage detector

基线检测器(baseline detector)的详细信息在[21]中描述。具体来说,MultiBox网络用于生成对象建议,然后使用一个单独的网络对200 DET类别进行后处理分类。MultiBox模型使用与SSD相同的底层网络结构和卷积先验框,只是它将所有对象视为类不可知的对象。MultiBox的输入图像大小为299×299,每个建议也被调整为299×299,方便进行后处理分类。相比赢得进入ILSVRC2014[20],在测试集上单一模型的mAP为38.0,6套组合模型的mAP为43.9,最新的两阶段检测器在val2集上单一模型的mAP为44.7。这个大改进是由于更好的建议网络(MultiBox),一个改进的分类后处理网络(Inception),和更大的网络输入大小(299 vs 224)。

4.1.2 SSD vs. Baseline detector

SSD与MultiBox目标相似,但是,它能够在一次评估中检测多个类别,而不是使用两阶段的方法。表1 显示了随着类别数量的增加,SSD的性能如何变化。为了与基线方法进行公平的比较,我们首先使用相同的输入图像大小(299×299)。SSD Person是一个整体(monolithic)的人员检测器,我们将人员视为正样本,而将其他199个类别视为负样本。与基线结果51.5相比,SSD Person达到了52.7,这稍微好一些,因为SSD学习回归先验框,同时预测置信度,而不是使用两个分离的步骤。考虑到SSD显著的效率提高,它是有吸引力的,事实上两阶段方法大约有2倍的参数数量,因为它使用了两个Inception网络。

表1 人、车和狗的平均精度(Average precision,AP)随着SSD类别数量的增加而增加。SSD Person是一个整体的人员检测器。SSD 3是针对这三个类别训练的探测器。SSD Full在所有200 DET类上训练,并且SSD Multi多使用两个额外的低层的特征图进行预测。基线是与SSD具有相同的预先训练网络的两阶段检测器[21]。mAP是所有200 DET类别的平均AP。

当我们包含人、车、狗这三个类别时,我们发现(SSD 3)检测人的性能要差于SSD Person。我们假设这种差异是因为两阶段方法为了分类后处理将每个建议调整为299×299,即使是数据集中的小目标也保留了非常精细的细节,而SSD采用相同分辨率的整幅图像,因此丢失了许多细节,并引入了更多的混淆。如果我们进一步在所有200 DET类别上训练SSD,我们会看到SSD Full在这三个类别上与SSD 3有相似的表现。最后,SSD Full在val2数据集上实现了31.0的mAP,这比两阶段方法(44.7)要差,但仍然很有希望得出SSD大约快100倍,而且SSD在其他需要检测的系统中更容易训练和集成。

4.1.3 More feature maps are better

我们注意到,对于某些对象,比如狗,它在输入图像中相对较大,与两阶段方法(88.7 vs. 90.4)相比,性能差别不大。但是,对于其他对象,例如车,SSD的性能要比两阶段方法差得多。我们假设这是因为SSD无法处理这些小对象,因为输入的图像太小,丢失了许多小对象的细节。例如,在训练时,我们将每个输入图像的大小调整为299×299,结果得到顶部的8×8特征图。继[21]之后,我们通过使用额外的卷积层,进一步将最顶层的特征图减小到6×6,4×4,3×3,2×2和1×1,对这些层施加1420个手工优化的先验框,而不是第3.3节中描述的那些,然后使用所有的这些特征图来做预测。这些特征图都有较大的感受野,因此可以处理非常大的对象。但由于对输入图像和特征图的下采样效应,它们无法检测到非常小的物体。受到语义分割中很多工作的启发[14,7,13],我们也使用较低层次的特征图来做预测,并将预测结合起来得到最终的检测结果。例如,我们不仅使用8×8(以及额外的上采样)特征图,我们还使用较低层次的特征图,如17×17和35×35,以便这些较低层次的特征图可以捕获输入对象的更多细节。结果,我们总共有9864个先验框(每个位置有6个先验框),远远多于1420个。但是,计算开销是可以忽略的,因为我们使用1×1的特征进行预测,并且共享所有类别的先验框。从 表1 中我们可以看出,SSD Multi模型结合了来自低层特征图的预测,明显优于SSD Full (34.7 vs. 31.0)。因此,包含较低级别的特征图可以帮助提高性能,而额外的计算时间可以忽略不计。

4.1.4 Larger input image size is better

即使我们使用低层次的特征图来帮助改善SSD对小目标的检测,这仍然是不够的,因为输入图像的大小与ILSVRC DET的平均图像分辨率(299×299 vs. 482×415)相比是很小的。因此,我们尝试了更大的输入图像大小(443×443),除了因为更大的特征图增加了先验框的数量(2704 vs. 1420),其他所有设置与之前相同。从 表1 可以看出,与使用原输入大小结合低层次特征图(SSD Multi 299×299)相比,使用较大的输入大小(SSD full 443×443)能获得更大的改进。例如,它导致人的AP增加5.7,车的AP增加6.1,使两者的性能与基线相当。我们假设更大的模型能更好地检测小的物体,因为它能看到更多的细节,从而减少类别之间的混淆。狗的AP也增加了3.3,比两阶段方法的性能更好(92.0 vs. 90.4)。总的来说,mAP从31.0增加到39.6,计算复杂度只增加了一倍。据我们所知,SSD是ILSVRC 2014 DET val2数据集上第一个也是最好的“单阶段”方法。

虽然SSD和两阶段方法之间仍然存在差距,但是我们可以期望通过使用443×443模型的低层次的特征图或者使用更大的输入图像尺寸(如[5,16]所使用的600×600)来进一步缩小差距。这些是留给未来工作的。

 

4.2. VOC 2007 results

在这个数据集上,我们主要与其他顶级的“单阶段”方法进行比较。特别是,我们使用VOC2007 trainval和VOC2012 trainval进行训练,并在VOC2007 test上进行测试。注意,无论是Fast R-CNN[5]还是Faster R-CNN[16]都是从VGG[19]进行微调得来的,并使用最小尺寸为600的输入图像。我们的SSD是从一个特定版本的Inception进行微调得来的,并使用299×299或443×443的输入图像大小。

表2 显示,Fast R-CNN和Faster R-CNN的性能略好于SSD,这可能是因为它们的输入图像尺寸更大。然而,Fast R-CNN要慢得多,因为它仍然需要proposal步骤。 Faster R-CNN很难训练,因为它必须为RPN和Fast R-CNN交替地微调共享卷积层和额外的预测层。我们的SSD可以简单的直接训练,并且完全抛弃了单独的对象建议步骤。表3 展示了VOC2012 test set上的结果比较。我们使用的模型与 表2 相同。Fast R-CNN和Faster R-CNN有更好的性能,因为它们使用来自VOC2007 test的额外4952张图像进行训练。然而,如果Fast R-CNN只用 VOC2012 trainval训练,那么这个差距就会变小。与YOLO相比,SSD 299×299已经有了相当的性能(54.4 vs. 57.9)。当使用相同的输入大小时,我们的SSD比YOLO好得多(63.3比57.9)。这是因为在训练中使用了来自多个特征图的卷积先验框和匹配策略,使得SSD比YOLO更加灵活和优秀。

表2 PASCAL VOC2007 test检测结果。训练数据键:“07+12”- VOC07 trainval和VOC12 trainval。Fast R-CNN和Faster R-CNN都使用最小尺寸为600的输入图像。两个SSD模型的设置完全相同,只是输入大小不同(299×299 vs. 443×443)。很明显,较大的输入大小会带来更好的结果。

表3 PASCAL VOC2012 test检测结果。训练数据键:“12”- VOC12 trainval,“07+12”- VOC07 trainval和VOC12 trainval,“07++12”- VOC07 trainval和 test 和VOC12 trainval。Fast R-CNN和Faster R-CNN使用最小尺寸为600的输入图像,而YOLO的输入尺寸为448×448。SSD模型与 表2 中的模型相同。

此外,我们使用[9]的检测分析工具来了解哪些特征对SSD影响最大。图3 显示,SSD可以高质量地检测各种对象类别(白色区域较大)。它与大多数顶尖的检测器相比都非常有信心。召回率约为85-90%,如果以“弱”(0.1 jaccard重叠)标准衡量,召回率非常高。与R-CNN[6]相比,SSD的定位误差更小,这说明SSD可以更好地定位对象,因为它直接学习将先验框回归到对象,而不是使用两个不挂钩的步骤。然而,SSD对相似的对象类别有更多的混淆,部分原因是我们为多个类别共享位置,而输入大小太小,无法区分不同。

图3 SSD 443对来自VOC2007 test中的动物、家具和车辆的可视化性能。顶行显示了由于定位不良(Loc)、与相似类别混淆(Sim)、与其他类别混淆(Oth)或与背景混淆(BG)而导致的正确(correct,Cor)或假阳性(false positive)检测的累积分数。实线(红色)反映了随着检测数量的增加,“强”标准(0.5 jaccard重叠)召回率的变化。虚线(红色)是使用“弱”标准(0.1 jaccard重叠)。下面一行显示的是排名最高的假阳性类型的分布。

图2 显示SSD对边界框大小非常敏感。换句话说,它在小对象上的性能比在大对象上差得多。例如,如果输入大小是299×299,那么对于极小(extra-small,XS)对象,它的AP几乎为0。这并不奇怪,因为这些XS对象甚至可能在最顶层(8×8)没有任何信息。增加输入大小(例如从299×299增加到443×443)有助于改进对XS对象的检测,但仍有很大的改进空间。从积极的一面来看,我们可以清楚地看到SSD在大型对象上表现得非常好。而且它对于不同的长宽比和物体的视点都有很好的鲁棒性,因为我们在每个特征图位置都施加了不同形状的先验框。

图2 在VOC2007 test set上,不同对象特征的敏感性和影响。每个图显示标准误差线(红色)下的归一化的AP[9]。黑色虚线表示总体的归一化的AP。最左边的图总结了所有类别中每个特征的敏感性。剩下的两个图显示了每个类别的详细的影响。键:BBox Area(边界框区域):XS=extra-small;S=small;M=medium;L=large;XL =extra-large。 Aspect Ratio(纵横比):XT=extra-tall/narrow;T=tall;M=medium;W=wide;XW =extra-wide。

在未来,我们想尝试更大的输入尺寸(例如600×600)和/或使用更低层次的特征图,就像在ILSVRC上的SSD Multi中所做的那样。我们期望这将进一步有助于纠正与相似类别混淆的问题,并提高小对象的检测性能。

 

4.3. Training time

SSD需要一段时间来学习将先验框回归到实际框,并同时预测所有类别的置信度。例如,从一个预先训练好的网络开始,使用的批(batch)量大小为32张图像,如果在ILSVRC DET训练数据集上训练,则网络需要花费3M步来收敛,如果在PASCAL VOC2012 + VOC2007 trainval上训练,则需要花费500K步。一个原因是有很多来自于多个类别的多个特征图的所有位置的检测。我们可以通过只更新3.4节中描述的所有正样本和一小部分负样本(hard negatives)来减少训练时间。通过这样做,性能在开始时增长得更快,但仍然需要类似数量的步骤来收敛。此外,与[6,16]将选择性搜索或RPN建议框回归到实际框相比,SSD需要更多的训练步骤,因为SSD先验框对于底层对象的空间信息要少得多,因此更难以学习。

 

4.4. Design choices analysis

为了更好地理解SSD,我们还进行了几个控制实验,以检查每个组件如何影响最终性能。对于下面的所有实验,我们使用相同的底层网络和输入大小,并将批处理大小设置为32。这些实验是在ILSVRC 2014 DET数据集的子集上进行的,ILSVRC 2014 DET与PASCAL具有相同或等价的20个类。

4.4.1 Matching source: Priors or Predictions?

在训练期间,一个关键的步骤是通过匹配源框和实际框来识别正、负样本。源框可以是先验框,也可以是实际的预测框。如果我们使用先验框,作为“锚(anchor)”,来进行匹配,我们就会迫使网络将这些先验框回归到实际框,并避免让预测框自由浮动(free-float)。然而,如果我们使用预测的结果进行匹配,网络将偏向于它自己的输出。从 表4 中我们可以清楚地看到,使用先验框进行匹配要比使用预测好得多。特别是对于预测匹配(perprediction matching,我们将在后面详细介绍),使用先验进行匹配可以使平均精度提高一倍。

表4 对ILSVRC2014 DET的20个PASCAL类进行设计选择比较。使用先验框进行逐预测匹配并回归到0/1目标的效果最好。

4.4.2 Matching method: Bipartite or Per-prediction?

正如我们在3.1.1中介绍的,有两种匹配策略:双边匹配和逐预测匹配。使用不同的匹配策略会影响训练时正、负样本的数量。在 表4 中,我们显示了模型在训练期间开始饱和时的(平均)匹配数。因为双边匹配是贪婪的一对一地与实际框进行匹配,所以当批量大小为32时,它平均有28个匹配,这意味着在一个批次中平均有约28个实际框。从 表4 可以看出,使用逐预测匹配策略会产生更多的正样本。例如,如果我们使用先验框进行逐预测匹配,它比双边匹配有更多的正样本(160 vs. 28),并且也有更好的性能。但是,是否正样本数越多性能越好呢?不是的。例如,如果我们使用预测框进行逐预测匹配,它有大约25000个匹配,这意味着几乎所有的预测框都与实际框匹配——明显过度拟合以及偏向自身输出。实际上,性能比使用双边匹配还要差得多。

4.4.3 Target type: 0/1 or Jac

由于我们在反向传播步骤中使用了多类逻辑损失(multi-class logistic loss),所以我们可以在目标函数中使用0/1或Jac (jaccard重叠)对每个类别进行回归。从 表4 中可以看出,使用0/1进行回归总是首选的方法,特别是在使用先验框进行匹配时。

 

5. Conclusions

这篇文章介绍了一种适用于多类目标的,统一快速的,单阶段目标检测器,SSD。我们已经证明SSD在ILSVRC DET和PASCAL VOC上与许多最先进的方法有可比性,并进行了许多实验来详细了解SSD。我们想强调的是,与稀疏对象建议(sparse object proposals)的方法相比[6,2,5,16],SSD已经证明了滑动窗口方法也可以达到类似的性能水平,如果仔细设计的话。使用大量卷积先验框和将先验框平铺到我们引入的多个尺度的特征图上,这两种方法都能提高检测性能。似乎使用更多的“窗口”并不总是导致更糟糕的结果,正如[5]中所争论的那样,实际上在我们的实验中可以提高性能。在未来,我们将探索使用更高分辨率的输入图像进行训练,并使用更低层次的特征图进行预测,以进一步提高检测性能

此外,我们还想探索减少训练时间的新技术。目前,SSD使用单一网络来学习预测多个类别的偏移量和置信度,这可能很难学习。在未来,我们希望使用两个独立的塔(tower)来进行定位和分类,这样每个tower对于特定的子任务来说是轻量级的,从而减少问题的复杂性,提高训练速度

 

6. Acknowledgment

We would like to thank Alex Toshev for helpful discussions. We are indebted to the Image Understanding and DistBelief teams at Google for their support. We also thank Philip Ammirato and Patrick Poirson for their helpful comments.

 

References

[1] J. Duchi, E. Hazan, and Y. Singer. Adaptive subgradient methods for online learning and stochastic optimization. JMLR, 2011. 5

[2] D. Erhan, C. Szegedy, A. Toshev, and D. Anguelov. Scalable object detection using deep neural networks. In CVPR, 2014. 1, 2, 3, 8

[3] M. Everingham, L. Van Gool, C. K. Williams, J. Winn, and A. Zisserman. The pascal visual object classes (voc) challenge. IJCV, 2010. 2, 5

[4] P. Felzenszwalb, D. McAllester, and D. Ramanan. A discriminatively trained, multiscale, deformable part model. In CVPR, 2008. 2

[5] R. Girshick. Fast r-cnn. arXiv preprint arXiv:1504.08083, 2015. 1, 2, 6, 8

[6] R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014. 1, 2, 5, 7, 8

[7] B. Hariharan, P. Arbelaez, R. Girshick, and J. Malik. Hyper- ´ columns for object segmentation and fine-grained localization. arXiv preprint arXiv:1411.5752, 2014. 4, 6

[8] K. He, X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV. 2014. 1, 2, 4

[9] D. Hoiem, Y. Chodpathumwan, and Q. Dai. Diagnosing error in object detectors. In ECCV 2012. 2012. 7

[10] A. G. Howard. Some improvements on deep convolutional neural network based image classification. arXiv preprint arXiv:1312.5402, 2013. 5

[11] S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. arXiv preprint arXiv:1502.03167, 2015. 5

[12] A. Krizhevsky, I. Sutskever, and G. E. Hinton. Imagenet classification with deep convolutional neural networks. In NIPS, 2012. 1

[13] W. Liu, A. Rabinovich, and A. C. Berg. Parsenet: Looking wider to see better. arXiv preprint arXiv:1506.04579, 2015. 4, 6

[14] J. Long, E. Shelhamer, and T. Darrell. Fully convolutional networks for semantic segmentation. arXiv preprint arXiv:1411.4038, 2014. 4, 6

[15] J. Redmon, S. Divvala, R. Girshick, and A. Farhadi. You only look once: Unified, real-time object detection. arXiv preprint arXiv:1506.02640 v4, 2015. 1, 2, 3, 6

[16] S. Ren, K. He, R. Girshick, and J. Sun. Faster r-cnn: Towards real-time object detection with region proposal networks. arXiv preprint arXiv:1506.01497, 2015. 1, 2, 4, 6, 8

[17] O. Russakovsky, J. Deng, H. Su, J. Krause, S. Satheesh, S. Ma, Z. Huang, A. Karpathy, A. Khosla, M. Bernstein, A. C. Berg, and F.-F. Li. Imagenet large scale visual recognition challenge. IJCV, 2015. 2, 5

[18] P. Sermanet, D. Eigen, X. Zhang, M. Mathieu, R. Fergus, and Y. LeCun. Overfeat: Integrated recognition, localization and detection using convolutional networks. arXiv preprint arXiv:1312.6229, 2013. 1, 2, 3, 4

[19] K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556, 2014. 1, 6

[20] C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabinovich. Going deeper with convolutions. arXiv preprint arXiv:1409.4842, 2014. 1, 5

[21] C. Szegedy, S. Reed, D. Erhan, and D. Anguelov. Scalable, high-quality object detection. arXiv preprint arXiv:1412.1441 v3, 2015. 2, 3, 5

[22] C. Szegedy, V. Vanhoucke, S. Ioffe, J. Shlens, and Z. Wojna. Rethinking the inception architecture for computer vision. arXiv preprint arXiv:1512.00567, 2015. 5

[23] J. R. Uijlings, K. E. van de Sande, T. Gevers, and A. W. Smeulders. Selective search for object recognition. IJCV, 2013. 2

[24] B. Zhou, A. Khosla, A. Lapedriza, A. Oliva, and A. Torralba. Object detectors emerge in deep scene cnns. arXiv preprint arXiv:1412.6856, 2014. 4

 

;