精华内容
下载资源
问答
  • SSD 论文原文完整翻译

    2019-06-21 10:04:18
    我们的方法名字为SSD,将每个特征图的边界框的输出空间离散化为不同长宽比与不同大小的一组默认框。在预测时,网络会在每个默认框中为每个目标类别的出现生成置信度得分,并对框进行调整以更好地匹配目标形状。此外...

    翻译一下ssd

    文章翻译来自:arxiv.org/pdf/1512.0232

    SSD:单次检测器

    摘要:我们提出了一种使用单个深度神经网络来检测图像中的目标的方法。我们的方法名字为SSD,将每个特征图的边界框的输出空间离散化为不同长宽比与不同大小的一组默认框。在预测时,网络会在每个默认框中为每个目标类别的出现生成置信度得分,并对框进行调整以更好地匹配目标形状。此外,网络还结合了不同分辨率的多个特征映射的预测,自然地处理各种尺寸的目标。相对于需要生成先验框的方法,SSD非常简单,因为它完全消除了提出生成和随后的像素或特征重新采样阶段,并将所有计算封装到单个网络中。这使得SSD易于训练和直接集成到目标检测系统中。PASCAL VOC,COCO和ILSVRC数据集上的实验结果证实,SSD对于利用额外的目标建议(object proposal)的方法具有竞争性的准确性,并且速度更快,同时为训练和预测提供了统一的框架。对于300×300的输入,SSD在VOC2007测试中以59FPS的速度在Nvidia Titan X上达到74.3%74.3%的mAP,对于512×512的输入,SSD达到了76.9%76.9%的mAP,优于目前为止最先进的Faster R-CNN模型。与其他一步法目标检测算法相比,即使输入图像尺寸较小,SSD也具有更高的精度,代码实现:github.com/weiliu89/caf


    1. 引言

    现有的物体检测系统是下面方法的变种:边界框的假设,对每个框进行像素和特征的重采样,使用高质量的分类器。这种流程在目标检测数据集与挑战赛(benchmark)上很盛行,因为采用选择性搜索[1](Selective Search )方法搜索PASCAL VOC,MSCOCO和ILSVRC的检测结果,取得领先结果的是具有如[3]所述的更深的特征的Faster R-CNN[2]。尽管准确,这些方法对于嵌入式系统来说计算量过大,即便对高端硬件来说,对实时的应用来说太慢了。 这些方法的检测速度通常以帧每秒为单位进行测量,即使是最快的高精度检测器——Faster R-CNN,也只能达到最快仅7帧每秒(FPS)的速度运行。大量的工作已经试图通过调整处理(attack)检测流程的各个阶段(参见第4节的相关工作)创造更快的检测器,,但到目前为止,明显的速度增长只能以显著的检测精度的下降为代价。

    本文提出了第一个无需对边界框的像素或特征重取样也能保持与这种方法准确度相当的基于深度网络的物体检测器。它带来了高精度的检测同时速度获得明显的提升(在VOC2007测试集上, 速度为58 FPS, mAP是72.1%,而Faster R-CNN 速度为7 FPS ,mAP 为73.2%,YOLO 的速度为45 FPS ,mAP为 63.4%)。速度的根本性提升来源于消除候选边界框(box proposal)和之后的像素或特征重采样的步骤。我们不是第一个这么做的人(参考 [4,5]),但是通过添加一系列的改进措施,与先前人们的工作相比,我们成功的把精度大幅度提升。我们的改进点包括使用小的卷积滤波器预测边界框中的物体类别和偏移量(offset),为不同长宽比的检测配置不同的检测器(filter),并且将这些滤波器应用于网络后期的多个特征图,以便进行多尺度检测。通过这些修正,特别是使用多个层进行不同尺度大小的预测,我们以相对低分辨率的输入实现了高精度的检测,同时更大的提高检测速度。 虽然这些贡献单独看起来可能微小,我们解释系统的结果在PASCAL VOC上做实时检测,准确率从yolo的63.4%提上到我们ssd的74.3%。与近期的使用残差网络的卓越工作成果相比,我们的工作在检测精度上有相对大的进步 [3]。 而且,高精度检测器的速度的提高可以拓宽应用计算机视觉技术的设备的范围。

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

    1. 我们介绍的SSD是一个能一次性检测多类物体检测器,比现在最先进的单步检测器(YOLO)更快更精确,事实上,它的精度相当于一些使用了候选区域和池化的慢速的算法(包括Faster R-CNN)。
    2. SSD方法的核心是在特征图上使用小卷积滤波器,预测固定的一组默认边界框的类别得分和位置偏移量。
    3. 为了获得高精度的检测,我们在不同尺寸的特征图上产生出不同尺度的预测,并且通过长宽比来明确地区分预测。
    4. 这些设计特性实现了简单的端到端训练,而且即便使用低分辨率的输入图像时也能得到高的精度,进一步提高了速度与精度的权衡,。
    5. 在PASCAL VOC,MS COCO和ILSVRC上实验并评估分析不同输入大小下模型的耗时和精度,并与一系列最先进的算法进行比较

    2.单步检测器(ssd)

    这一节介绍我们提出的目标检测SSD框架(2.1节),相关的训练策略(2.2节),提出特定数据集模型的细节和实验结果(2.3节)。

    2.1 模型

    SSD方法基于前馈卷积网络,生成固定大小的边界框集和这些框中存在物体类别的置信度,接着使用非最大化抑制产生最终的检测结果。位于网络前面的一些层是基于做高质量图像分类的标准架构(截取该框架分类层之前的层),我们将其称为基础网络。然后,我们向网络添加辅助结构来利用下边的主要特征来生成感知器:

    多尺度特征图检测:我们将卷积特征层添加到截断了的基础网络的尾端。这些层的尺寸逐渐减小并且允许多尺度的预测。用于检测的卷积模型对于每个特征层是不同的(而Overfeat [4]和YOLO[5]是在单个尺度特征图上操作的。

    用于检测的卷积预测器:每个添加的特征层(或者基础网络的特征层)使用一系列卷积滤波器(filter)可以产生一系列固定的预测。这些在图2中SSD网络架构已指出。对于p通道大小为m*n的特征层,对于一个可能的检测,它的预测参数的基本元素是一个3*3*p的核,这个核产生决定每个类别的置信度或生成相对于默认框坐标的偏移量。在m*n的特征图的每个位置均应用这个卷积核,各自产生一个输出值。边界框偏移输出值与默认框相关,而默认框位置又是与每个特征图的位置相关(参见YOLO [5]的架构,它在这个步骤使用全连接层而不是卷积滤波器)

    默认框与宽高比:我们为网络顶部的多个特征图的每个特征单元都关联固定的一组默认框。默认框以卷积形式作用于特征图,使得每个框相对于其对应的单元格的位置是固定的。我们为每个特征图单元预测相对于该单元格的默认框的偏移量,以及为每个类别预测反映框中该物体类别存在的置信度得分。具体来说,对于一个给定的位置的k个框中的每个框,我们都计算c个类的分数和相对于原始默认框的4个偏移值。这样致使总共有(c+4)k个滤波器作用于特征图中的每个位置,若特征图的大小为m*n,则会产生(c+4)*k*m*n个输出。有关默认框的说明,请参考图1。我们的默认框类似于Faster R-CNN [2]中使用的锚检查框(anchor boxes),但不同的是,我们将其应用于几个不同分辨率的特征图。在多个特征图上使用不同形状的默认框,致使有效地离散可能的输出框的形状的空间。

    2.2 训练

    训练SSD和训练使用区域候选框(region proposal)的典型分类器的主要不同点在于,真实标签需要被分配到固定的一组检测器输出中的某个特定的输出。YOLO [5]的训练阶段,Faster R-CNN [2]和MultiBox [7]的region proposal阶段也需要类似这样的操作。一旦把真实标签分配好,损失函数和反向传播就能端对端地应用。训练还包括选择一系列的默认框和用于检测的特征图尺度,以及难分样本挖掘(hard negative mining)和数据增强策略

    匹配策略:在训练时,我们需要确定哪些默认框和哪个真实标签框关联,然后据此进行训练。对于每个真实标签框,我们选择一些位置、长宽比和吃尺寸大小都不同的默认框。开始时,我们把每个真实标签框与默认框中与之具有最佳的雅可比重叠值(best jaccard overlap )(跟MultiBox [7]的方法一样)的框匹配。与MultiBox不同的是,我们之后又将默认框与所有的真实标签框( ground truth box) 配对,只要两者之间的雅可比重叠值(jaccard overlap) 大于某个阈值(本文的阈值为 0.5)。 这样做简化了学习问题,它使得网络能够为多个重叠的默认框预测高的置信度,而不是要求它只选择具有最大重叠值的那个框。

    训练目标:SSD训练的目标函数从MultiBox[7,8]中导出,但它进一步扩展到处理多个物体类别。

    v2-3610bbe3f41fdea56619abbdaa3632cf_b.jpg

    成为一个指示第i个默认框与类别p的第j个真实标签框的匹配指示器。根据上述的匹配策略,我们可以得到

    v2-0b09e32f060eec7a273ba5e396dd0d7f_b.jpg

    ,整体的目标损失函数是一个位置损失与置信度损失的加权和:


    v2-824da2b580485a29de0e901d7eb0aeb7_b.jpg


    其中,N是匹配的默认框的数目,如果N=0,我们把loss设为0,位置损失是smooth l1 loss,这是一个介于预测框与真实框之间的参数,类似于faster r-cnn我们将对默认框的中心与框的长宽进行回归。


    v2-44ef01de96872977159504afc1d5b5ce_b.jpg


    置信度损失是softmax 多类别分类损失函数


    v2-dce6e0d0ceca402476e70823375422f7_b.jpg


    选择默认框的比例和宽高比:为了处理多个尺寸的物体,有些算法[4,9]提议处理具有不同尺寸的多张图片,然后把结果综合起来。但是用一个网络的不同层的特征图,也可以得到类似的效果,同时让所有不同尺寸的物体间能共享参数。之前的工作[10,11]已经表明使用较低层的特征图可以提高语义分割的质量,因为较低层能捕获到输入目标的更精细的细节。类似地,[12]指出,增加特征图的全局上下文池化有助于平滑分割结果。受这些方法启发,我们既用低层也用高层的特征图进行检测预测。图1展现了框架中使用的两个特征图(8×8和4×4)实例。在实践中,我们可以使用更多计算开销小的特征图。

    通常网络中不同层次的特征图具有不同大小的感受野[13]。幸运的是,对于SSD框架,默认框不需要与每层的实际感受野对应。我们可以设计默认框的平铺(tiling),使得特定的特征图学习响应特定的物体尺度。假设我们要使用m个特征图做预测。每个特征图的默认框的尺寸可用下式计算:


    v2-b6e199ca6dd69604ce71468723dda66a_b.jpg


    其中Smin是0.2,Smax是0.9,意味着最底层是0.2,最高层是0.9,期间所有的层按规律递增,我们为默认的bbox应用了不同的长宽比,标记为

    v2-b6d8f4d6a8b45da45e8e738ec657c5a0_b.jpg

    {1,2,3,0.5,0.3333},我们可以计算每个默认的bbox的长度与宽度

    v2-c85a751eadecd588ef009938da85a8aa_b.jpg

    v2-091c06bafa68774bf654cfefac506cfd_b.jpg

    ,对于长宽比为1的,我们也加了一个默认的bbox,尺度为

    v2-b1c6b8c9282340fc2a4cc7b1688e6837_b.jpg

    ,特征图的每个位置有6个默认的box,我们设置每个bbox的中心为

    v2-1244157b9e02031da7e8c90c1493a8c1_b.jpg

    其中|Fk|是第k个特征图的尺寸,在实际中,为了适应特定的数据集,大家也可以设置不同尺寸与长宽比的默认框,如何最优的设计这些也是一个开放的问题。

    通过组合多个特征图在所有位置的不同尺寸和长宽比的所有默认框的预测,我们得到涵盖各种输入物体尺寸和形状的多样性的预测集。例如,图 1中的狗被匹配到4×4特征图中的某个默认框,但没有匹配到8×8特征图中的任何默认框。这是因为那些框具有不同的尺度,但都与狗的框不匹配,因此在训练期间这些框被认为是负的。

    难分样本挖掘 :在匹配步骤后,大多数默认框都是负的,特别是当可能的默认框数量很大时。这导致了正负训练样本的严重不平衡。我们没有使用所有的负样本,而是先把负样本根据置信度损失进行从大到小排序,然后为每个默认框只选择分值最高的那些样本,这样做的目的是使得正负样本的比例不超过1:3. 我们发现这样还可以使得优化更快,训练更平稳

    数据增强:为了使模型对不同大小、形状的输入目标更具鲁棒性,对每个图像通过随机采取以下策略之一进行采样:

    1. 使用整张原始输入图像
    2. 采样一个片段,使得与目标物体的最小的雅可比重叠为0.1,0.3,0.5,0.7,0.9之一。
    3. 随机采样一个部分


    每个采样部分的大小为原图的[0.1,1],长宽比在1/2和2之间。如果真实标签框的中心位于采样部分内,则保留重叠部分。在上述采样步骤之后,将每个采样片大小调整为固定大小,并以0.5的概率进行水平翻转,还有对图片做一些跟[14]所描述的光度扭曲的操作。

    3 实验结果

    基础网络 我们的实验基于在imagenet预训练的VGG16,与DeepLab-LargeFOV类似,我们也将fc6与fc7转换为卷积层,来自fc6与fc7的下采样参数,改变pool5为步长为2的卷积层,并且使用空洞卷积算法去填充空洞,一处所有的dropout操作,利用sgd进行fine-tune,初始的学习率为0.001,0.9momentum,0.0005的权重衰减,batch_size为32,学习率的下降策略每个数据集稍有不同,下文介绍:

    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和pool11来预测位置和置信度(对SSD500模型,额外增加了conv11_2用于预测),用“xavier”方法初始化所有新添加的卷积层的参数[18]。对于conv4_3、 conv10_2、 conv11_2的大我们只在其上放置4个默认框 :长宽比为0.3333与3。对于所有其他层,我们设置6个默认框,如第 2.2节。如[12]中所指出的,由于conv4_3与其他层相比具有不同的特征尺度,我们使用[12]中引入的L2正则化技术,将特征图中每个位置处的特征范数缩放为20,并在反向传播期间学习比例。我们使用0.001学习速率进行40k次迭代,然后继续分别以0.0001和0.00001的学习率训练10k次。表1显示,我们的SSD300模型已经比Fast R-CNN更准确。当以更大的500×500输入图像训练SSD,结果更准确,甚至惊人的超过了Faster R-CNN 1.9% mAP。如果我们使用更多的数据来训练ssd,我们可以看到ssd300比faster rcnn好1.1%,ssd512好3.6%,模型在coco数据集上训练,然后在voc数据集及逆行fine-tune,准确率可以达到81.6%。

    为了更详细地了解我们的两个SSD模型的性能,我们使用来自[21]的检测分析工具。图3显示SSD可以高质量检测(大、白色区域)各种目标类别。它的大部分置信度高的检测是正确的。召回率在85-90%左右,并且比“弱”(0.1 jaccard重叠)标准高得多。与R-CNN [20]相比,SSD具有较少的定位误差,表明SSD可以更好地定位目标,因为它直接回归目标形状和分类目标类别,而不是使用两个去耦步骤。然而,SSD对相似目标类别(尤其是动物)有更多的混淆,部分是因为多个类别分享了位置。图4显示SSD对边界框尺寸非常敏感。换句话说,它对较小的目标比较大的目标具有更差的性能。这毫不意外,因为小目标在最顶层可能没有任何信息保留下来。增加输入尺寸(例如从300×300到500×500)可以帮助改善检测小目标,但是仍然有很大改进空间。积极的一面是,我们可以清楚地看到SSD在大目标上表现很好。并且对于不同的目标宽高比非常鲁棒,因为我们对每个特征图位置使用各种宽高比的默认框。

    3.2 模型分析

    为了更好的理解SSD,我们进行了几个控制的实验来检测每一个部分如何影响整个模型的表现。更多的实验,我们使用了相同的设置,输入图片均为300*300,除了某些特殊的改变或者内容。

    数据增广是关键。 Fast和Faster R-CNN在训练时使用原始图像和水平翻转图像。我们使用更广泛的采样策略,类似于YOLO [5],表2显示,我们可以用这个抽样策略提高8.8%的mAP。我们不知道我们的采样策略将对Fast和Faster R-CNN提升多少,但可能效果不大,因为他们在分类期间使用了特征池化,比人为设置更鲁棒

    更多默认框形状性能更好 如第2.2节所述,默认情况下,每个位置使用6个默认框。如果我们删除具有1/3和3宽高比的框,性能下降0.9%。通过进一步移除1/2和2宽高比的框,性能再下降2.1%。使用多种默认框形状似乎使网络预测任务更容易。

    Atrous算法更好更快 如第3节所述,我们使用了VGG16的atrous版本,遵循DeepLabLargeFOV[16]。如果我们使用完整的VGG16,保持pool5与2×2-s2,并且不从fc6和fc7的采集参数,添加conv5_3,结果稍差(0.7%),而速度减慢大约20%。

    多个不同分辨率的输出层更好 ssd的主要的贡献就是利用不同尺度的特征图,为了评估这个预测的优点,我们移除了这些层并且对比结果,为了更加公平的对比,我们每次移除一层,调整默认狂的数目保证总体不变(8732),如果需要的话,通过堆叠更多不同大小的框来实现。表3显示更少的层准确率会下降,从72.3%下降到62.4%,当我们堆叠不同大小的框在某一层上时,可能边界需要谨慎的处理,我们尝试使用faster rcnn中的策略,忽略边界上的框,我们看到了一些有趣的趋势,如果我们用特别粗糙的特征图,表现力会下降,可能由于我们没有足够大的框来覆盖较大的物体,当我们用更加精细的特征图时,网络的表现开始上升,,如果我们仅仅用conv7预测,表现时最差的,更加确定了这个信息,传播不同尺度的box通过不同的特征图是非常关键的。由于我们的预测不依赖于roi pooling 因而我们没有遇到collapsing bin的问题。Ssd架构利用不同尺度的特征图混合来实现具有竞争性的结果对比faster rcnn,它是使用低分辨率的图像。

    3.3 PASCAL VOC2012

    我们采用和VOC2007上一样的设置,这次,用VOC2012的训练验证集和VOC2007的训练验证集、测试集(21503张图像)训练,在VOC2012测试集(10991张图像)测试。由于有了更多的训练数据,模型训练时以学习率 0.001进行60K次迭代,再减小到 0.0001继续迭代20K次。表4显示了SSD300和SSD512模型的结果。我们看到与我们在VOC2007测试中观察到的相同的性能趋势。我们的SSD300已经优于Fast R-CNN与faster rcnn。通过将训练和测试图像大小增加到512×512,我们比Faster R-CNN高4.5%。与YOLO相比,SSD显著更好,可能是由于使用来自多个特征图的卷积默认框和训练期间的匹配策略,当利用coco训练好的模型进行微调时,ssd512实现80.0%的map,比faster rcnn高出4.2%。

    3.4 COCO

    为了进一步验证SSD架构,我们在COCO数据集上训练了我们的SSD300和SSD512模型。由于COCO中的目标往往较小,因此我们对所有图层使用较小的默认框。我们遵循第2.2节中提到的策略,但是现在我们最小的默认框具有0.15而不是0.2的缩放比例,并且conv4_3上默认框的缩放比例是0.07(例如,对应于300×300图像的21个像素)。

    我们使用trainval35k [21]来训练我们的模型。由于COCO有更多的目标类别,开始时的梯度不稳定。我们首先用0.001学习率进行140K次迭代,再以 0.0001学习率迭代40K次,跟着是 0.00001学习率迭代40k次。表4显示了test-dev2015上的结果。与我们在PASCAL VOC数据集上观察到的类似,SSD300在mAP@0.5和mAP@[0.5:0.95]中优于Fast R-CNN,在 mAP @ [0.5:0.95]与Faster R-CNN接近。然而,mAP@0.5更糟,我们推测,这是因为图像尺寸太小,这阻止了模型精确定位许多小目标。通过将图像大小增加到512×512,我们的SSD512在两个标准中都优于Faster R-CNN。 有趣的是,注意到ssd512 比faster rcnn在mAP@0.75 高5.3%,在mAP@0.5 仅仅高出1.2%,对于较大的物体有更高的AP与AR,但是对于小物体有相对较小的提升。 对比IOU,在较大物体与较小物体上AR提升更加相似。我们猜想faster rcnn在小物体上更加有竞争力,因为它存在两步box的提炼操作。图五显示了我们ssd512模型的感知示例。

    3.5 ILSVRC的最初结果

    我们将我们用于MS COCO的相同的网络架构应用于ILSVRC DET数据集[16]。我们使用ILSVRC2014 DET train和val1来训练SSD300模型[22],我们首先以0.001的学习率迭代320K次训练模型,然后用0.0001进行80k次迭代和0.00001继续训练40k次迭代。我们可以在val2集上实现43.4mAP[20]。再一次的,它验证SSD是高质量实时检测的一般框架。

    3.6 小没有目标准确率的数据增广

    在 faster rcnn中没有连续采样的步骤,对于小目标的分类任务对ssd来说相对难度较大,在2.2节中的数据增广策略对于提升网络的表现力有很大的帮助,特别是对于小数据集,随机裁剪生成策略可以被考虑为“近景拍摄”可以生成更大的训练样本,远景拍摄可以生成更多小的训练样本,我们先放一张图是原始图像的16倍大小在我们做随机裁剪之前充满了均值图像,通过数据增广,我们有了更多的训练图像,我们必须使我们训练迭代次数为原始的二倍,我们会注意到一个持续的增长map2%到3%。特别的图6显示了新的增广策略主要提升在小目标上的准确率。这个结果为进行数据增广后模型的最终结果准确率。

    一个可以选择的提升ssd模型的策略就是设计更好的默认框的并列显示,为了框的位置和大小可以更好的与每个位置的感受野相一致,这是未来的工作。

    3.7 推理阶段

    考虑到从我们的方法生成的大量框,在推理阶段需要高效地执行非最大抑制(nms)。通过使用0.01的置信度阈值,我们可以过滤掉大多数框。然后,对jaccard重叠为0.45的每个类应用nms,并保存每个图像的前200个检测。对于20个VOC类别的SSD300,每个图像该步花费大约2.2毫秒,这接近在所有新添加的层上花费的总时间。

    表7显示了SSD、Faster R-CNN[2]和YOLO [5]之间的比较。Ssd300与ssd512在准确率与速度上均超出了faster rcnn,尽管YOLO可以达到155FPS,但是他有但是他的准确率比我们的方法低了22%左右,ssd是第一个超过70%的实时检查测方法,几乎80%的时间是消耗在基础网络上,因此用更快的基础网络可以实现提升速度,这也可能会令ssd512达到实时的检测速度。

    4 相关工作

    目前有两种已建立的用于图像中目标检测的方法,一种基于滑动窗口,另一种基于region proposal分类。在卷积神经网络出现之前,用于检测的两种方法DeformablePart Model(DPM)[22]和选择性搜索[1]性能接近。然而,在R-CNN[20]带来的显着改进之后,其结合了选择性搜索region proposal和基于卷积网络的后分类,region proposal目标检测方法变得普遍。

    原始的R-CNN方法已经以各种方式进行了改进。第一组方法提高了后分类的质量和速度,因为它需要对成千上万的图像作物进行分类,这是昂贵和耗时的。SPPnet[9]对原始的R-CNN方法大大提速。它引入了空间金字塔池化层,其对区域大小和尺度更加鲁棒,并且允许分类层重用在若干图像分辨率生成的特征图特征。Fast R-CNN[6]扩展了SPPnet,使得它可以通过最小化置信度和边界框回归的损失来对所有层进行端对端微调,这在MultiBox[7]中首次引入用于学习目标。

    第二组方法使用深层神经网络提高proposal生成的质量。在最近的研究文献中,例如MultiBox[7,8],基于低层图像特征的选择性搜索region proposal被直接从单独的深层神经网络生成的proposal所替代。这进一步提高了检测精度,但是导致了一些复杂的设置,需要训练两个神经网络及其之间的依赖。Faster R-CNN[2]通过从region proposal网络(RPN)中学习的方案替换了选择性搜索proposal,并且引入了通过微调共享卷积层和两个网络的预测层之间交替来集成RPN与Fast R-CNN的方法。用这种方式region proposal池化中层特征图,最终分类步骤更快速。我们的SSD与Faster R-CNN中的region proposal网络(RPN)非常相似,因为我们还使用固定的(默认)框来进行预测,类似于RPN中的achor框。但是,不是使用这些来池化特征和评估另一个分类器,我们同时在每个框中为每个目标类别产生一个分数。因此,我们的方法避免了将RPN与Fast R-CNN合并的复杂性,并且更容易训练,更易于集成到其他任务中。

    另一组方法与我们的方法直接相关,完全跳过proposal步骤,直接预测多个类别的边界框和置信度。 OverFeat[4]是滑动窗口方法的深度版本,在知道基础目标类别的置信度之后直接从最顶层特征图的每个位置预测边界框。YOLO [5]使用整个最高层特征图来预测多个类别和边界框(这些类别共享)的置信度。我们的SSD方法属于此类别,因为我们没有生成候选框的步骤,但使用默认框。然而,我们的方法比现有方法更灵活,因为我们可以在不同尺度的多个特征图中的每个特征位置上使用不同长宽比的默认框。如果顶层特征图每个位置只使用一个默认框,我们的SSD将具有与OverFeat[4]类似的架构;如果我们使用整个顶层特征图并且添加一个全连接层用于预测而不是我们的卷积预测器,并且没有明确考虑多个宽高比,我们可以近似地再现YOLO[5]。

    5 总结

    本文介绍了SSD,一种用于多个类别的快速单次目标检测器。我们的模型的一个关键特点是使用多尺度卷积边界框输出附加到网络顶部的多个特征图。这种表示允许我们有效地模拟可能的框形状空间。我们实验验证,给定适当的训练策略,更大量的仔细选择的默认边界框得到了性能的提高。我们建立SSD模型,与现有方法[5,7]相比,至少相差一个数量级的框预测位置,尺度和长宽比。我们证明,给定相同的VGG-16基础架构,SSD在精度和速度方面胜过最先进的目标检测器。我们的SSD512模型在PASCAL VOC和MS COCO的精度方面明显优于最先进的Faster R-CNN [2],速度快了3倍。 我们的实时SSD300模型运行在58 FPS,这比当前的实时YOLO[5]更快,同时有显著高质量的检测。

    除了用于独立实用程序,我们相信,我们的完整和相对简单的SSD模型为使用目标检测组件的大型系统提供了一个伟大的组成块。一个有希望的未来方向,是探索其作为使用循环神经网络的系统一部分,用以检测和跟踪视频中目标。

    6感谢

    展开全文
  • 之前搜集的基于SSD目标检测结构的改进论文英文原文,看过的大佬不必在意,如果需要进行相关文档而不愿意费力去找的可以直接下载。
  • SSD论文笔记

    2019-07-08 09:04:34
    论文原文

    论文原文

    参考:目标检测算法之SSD

    摘要

    提出了一种使用单个深度神经网络来检测图像中的目标的方法。我们的方法命名为SSD,将边界框的输出空间离散化为不同长宽比的一组默认框和并缩放每个特征映射的位置。在预测时,网络会在每个默认框中为每个目标类别的出现生成分数,并对框进行调整以更好地匹配目标形状。
    网络还结合了不同分辨率的多个特征映射的预测,自然地处理各种尺寸的目标。

    1. 引言

    提出了第一个基于深度网络的目标检测器,它不对边界框假设的像素或特征进行重采样,并且与其它方法有一样精确度。
    速度的根本改进来自消除边界框提出和随后的像素或特征重采样阶段。
    改进包括使用小型卷积滤波器来预测边界框位置中的目标类别和偏移量,使用不同长宽比检测的单独预测器(滤波器),并将这些滤波器应用于网络后期的多个特征映射中,以执行多尺度检测。
    贡献如下:

    • 引入了SSD,这是一种针对多个类别的单次检测器,比先前的先进的单次检测器(YOLO)更快,并且准确得多,事实上,与执行显式区域提出和池化的更慢的技术具有相同的精度(包括Faster R-CNN)。
    • SSD的核心是预测固定的一系列默认边界框的类别分数和边界框偏移,使用更小的卷积滤波器应用到特征映射上。
    • 为了实现高检测精度,我们根据不同尺度的特征映射生成不同尺度的预测,并通过纵横比明确分开预测。
    • 这些设计功能使得即使在低分辨率输入图像上也能实现简单的端到端训练和高精度,从而进一步提高速度与精度之间的权衡。
    • 实验包括在PASCAL VOC,COCO和ILSVRC上评估具有不同输入大小的模型的时间和精度分析,并与最近的一系列最新方法进行比较

    The Single Shot Detector (SSD)

    SSD framework:
    -对于每个对象训练,SSD只需要一个输入图像和ground truth boxes。卷积的方式,我们评价一系列小的(例如:4)。不同aspect ratios的default boxes在几个特征图的每个位置,不同尺度(例如8×8和4×4 (b)和©)。对于每个each default box,我们预测shape offsets和confidence为所有对象类别((c1,c2cp)(c_1, c_2···c _p))。在训练期间,我们首先把default boxes与ground truth boxes相匹配。

    2.1 Model

    SSD方法基于前馈卷积网络,该网络产生固定大小的边界框集合,并对这些边界框中存在的目标类别实例进行评分,然后进行非极大值抑制步骤来产生最终的检测结果。早期的网络层基于用于高质量图像分类的标准架构(在任何分类层之前被截断),我们将其称为基础网络。

    在这里插入图片描述
    采用VGG16做基础模型,首先VGG16是在ILSVRC CLS-LOC数据集预训练。分别将VGG16的全连接层fc6和fc7转换成3×3卷积层conv6和1×1卷积层conv7,同时将池化层pool5由原来的2×2-s2变成3x3-s1,为了配合这种变化,采用了一种Atrous Algorithm,其实就是conv6采用扩展卷积或带孔卷积(Dilation Conv),其在不增加参数与模型复杂度的条件下指数级扩大卷积的视野,其使用扩张率(dilation rate)参数,来表示扩张的大小,如下图7所示,(a)是普通的3×3卷积,其视野就是3×3,(b)是扩张率为2,此时视野变成7×7,©扩张率为4时,视野扩大为15×1515×15,但是视野的特征更稀疏了。Conv6采用3×33×3大小但dilation rate=6的扩展卷积。
    在这里插入图片描述
    然后移除dropout层和fc8层,并新增一系列卷积层,在检测数据集上做finetuing。

    Multi-scale feature maps for detection
    在base network后,添加一些卷积层,这些层的大小逐渐减小,可以进行多尺度预测

    Convolutional predictors for detection
    每一个新添加的层,可以使用一系列的卷积核进行预测。对于一个大小为m*n、p通道的特征层,使用3x3的卷积核进行预测,在某个位置上预测出一个值,该值可以是某一类别的得分,也可以是相对于default bounding boxes的偏移量,并且在图像的每个位置都将产生一个值。

    Default boxes and aspect ratios
    对于网络顶部的多个特征映射,我们将系列默认边界框与每个特征映射单元相关联。在每个特征映射单元中,我们预测单元中相对于默认边界框形状的偏移量,以及指出每个边界框中存在的每个类别实例的类别分数。在特征图的每个位置预测K个box。对于每个box,预测C个类别得分,以及相对于default bounding box的4个偏移值,这样需要(C+4)k个预测器,在mn的特征图上将产生(C+4)km*n个预测值。这里,default bounding box类似于FasterRCNN中anchors。
    SSD在不同的特征层中考虑不同的尺度,RPN在一个特征层考虑不同的尺度。

    2.2 训练

    训练SSD和训练使用region proposals的典型检测器之间的关键区别:需要将ground truth信息分配给一系列固定的检测器输出中的特定输出。
    Matching Strategy
    在Yolo中,ground truth的中心落在哪个单元格,该单元格中与其IOU最大的边界框负责预测它。SD中却完全不一样,SSD的先验框与ground truth的匹配原则主要有两点:

    • 对于图片中每个ground truth,找到与其IOU最大的先验框,该先验框与其匹配,这样,可以保证每个ground truth一定与某个先验框匹配。通常称与ground truth匹配的先验框为正样本,反之,若一个先验框没有与任何ground truth进行匹配,那么该先验框只能与背景匹配,就是负样本。一个图片中ground truth是非常少的, 而先验框却很多,如果仅按第一个原则匹配,很多先验框会是负样本,正负样本极其不平衡,所以需要第二个原则。
    • 对于剩余的未匹配default box,若与某个ground truth的IOU大于某个阈值(一般是0.5),那么该default box也与这个ground truth进行匹配。这意味着某个ground truth可能与多个default box匹配。

    一个匹配示意图,其中绿色的GT是ground truth,红色为先验框,FP表示负样本,TP表示正样本。
    在这里插入图片描述

    Training Objective
    xijp={1,0}x_{ij}^p = \lbrace 1,0 \rbrace是第ii个default box匹配到类别pp的第jj个实际ground truth,ixijp1\sum_i x_{ij}^p \geq 1,总体目标损失函数是定位损失(loc)和置信度损失(conf)的加权和:
    L(x,c,l,g)=1N(Lconf(x,c)+αLloc(x,l,g))L(x, c, l, g) = \frac{1}{N}(L_{conf}(x, c) + \alpha L_{loc}(x, l, g))
    NN是匹配的默认边界框的数量。定位损失是 predicted box(ll)与ground truth box(gg)参数之间的Smooth L1损失。类似于Faster R-CNN,我们回归默认边界框(dd)的中心偏移量(cx,cyc_x, c_y)和其宽度(ww)、高度(hh)的偏移量。
    Lloc(x,l,g)=iPosNm{cx,cy,w,h}xijksmoothL1(limg^jm)g^jcx=(gjcxdicx)/diwg^jcy=(gjcydicy)/dihg^jw=log(gjwdiw)g^jh=log(gjhdih)L_{loc}(x,l,g) = \sum_{i \in Pos}^N \sum_{m \in \lbrace cx, cy, w, h \rbrace} x_{ij}^k \mathtt{smooth}_{L1}(l_{i}^m - \hat{g}_j^m) \\ \hat{g}_j^{cx} = (g_j^{cx} - d_i^{cx}) / d_i^w \quad \quad \hat{g}_j^{cy} = (g_j^{cy} - d_i^{cy}) / d_i^h \\ \hat{g}_j^{w} = \log\Big(\frac{g_j^{w}}{d_i^w}\Big) \quad \quad \hat{g}_j^{h} = \log\Big(\frac{g_j^{h}}{d_i^h}\Big)

    置信度损失是在多类别置信度(cc)上的softmax损失,通过交叉验证权重项α\alpha设为1。
    Lconf(x,c)=iPosNxijplog(c^ip)iNeglog(c^i0)wherec^ip=exp(cip)pexp(cip)L_{conf}(x, c) = - \sum_{i\in Pos}^N x_{ij}^p log(\hat{c}_i^p) - \sum_{i\in Neg} log(\hat{c}_i^0)\quad \mathtt{where}\quad\hat{c}_i^p = \frac{\exp(c_i^p)}{\sum_p \exp(c_i^p)}

    Choosing Scales and Aspect Ratios for Default Boxes
    为了处理不同尺度的物体,一些文章,如:Overfeat,处理不同大小的图像,然后将结果综合。实际上,采用同一个网络,不同层上的feature map,也能达到同样的效果。图像分割算法FCN表明,采用低层的特征图可以提高分割效果,因为低层保留的图像细节信息比较多。

    其中VGG16中的Conv4_3层将作为用于检测的第一个特征图,conv4_3层特征图大小是38×38,但是该层比较靠前,其norm较大,所以在其后面增加了一个L2 Normalization层(和Batch Normalization层不太一样,其仅仅是对每个像素点在channle维度做归一化,而Batch Normalization层是在[batch_size, width, height]三个维度上做归一化)。从后面新增的卷积层中提取Conv7,Conv8_2,Conv9_2,Conv10_2,Conv11_2作为检测所用的特征图,加上Conv4_3层,共提取了6个特征图,其大小分别是(38,38),(19,19),(10,10),(5,5),(3,3),(1,1)(38, 38), (19, 19), (10, 10), (5, 5), (3, 3), (1, 1),但是不同特征图设置的Default Boxes数目不同(同一个特征图上每个单元设置的Default Boxes是相同的)

    对于先验框的尺度,其遵守一个线性递增规则:随着特征图大小降低,default boxes尺度线性增加。假设我们要使用m个特征图进行预测,每个特征图的default Boxes尺度计算如下:
    sk=smin+smaxsminm1(k1),k[1,m]s_k = s_\text{min} + \frac{s_\text{max} - s_\text{min}}{m - 1} (k - 1),\quad k\in [1, m]其中smins_\text{min}为0.2,smaxs_\text{max}为0.9
    为default boxes添加不同的长宽比,并将它们表示为ar1,2,3,12,13a_r \in {1, 2, 3, \frac{1}{2}, \frac{1}{3}}。可以计算每个default boxes的宽度(wka=skarw_k^a = s_k\sqrt{a_r})和高度(hka=sk/arh_k^a = s_k / \sqrt{a_r})。对于 aspect ratio = 1,额外增加一个default box,该box的尺度为sk=sksk+1s’_k = \sqrt{s_k s_{k+1}},在每个特征图位置得到6个default boxes。我们将每个default boxes的中心设置为(i+0.5fk,j+0.5fk)(\frac{i+0.5}{|f_k|}, \frac{j+0.5}{|f_k|}),其中fk|f_k|是第kk个特征图的大小,i,j[0,fk)i, j\in [0, |f_k|)

    Hard Negative Mining
    ground truth匹配的先验框为正样本,反之,若一个先验框没有与任何ground truth进行匹配,那么该先验框只能与背景匹配,就是负样本。尽管一个ground truth可以与多个先验框匹配,但是ground truth相对先验框还是太少了,经过matching后,很多default box是负样本,这将导致正样本、负样本不均衡,训练难以收敛。因此,该论文将负样本根据置信度进行排序,选取误差的较大的top-k作为训练的负样本,保证负样本、正样本的比例为3:1。

    Data Augmentation
    为了使模型对各种输入目标大小和形状更鲁棒,每张训练图像都是通过以下选项之一进行随机采样的:

    • 使用整个原始输入图像。
    • 采样一个图像块,使得与目标之间的最小Jaccard重叠为0.1,0.3,0.5,0.7或0.9。
    • 随机采样一个图像块。

    每个采样图像块的大小是原始图像大小的[0.1,1],长宽比在12\frac {1} {2}和2之间。如果实际边界框的中心在采用的图像块中,我们保留实际边界框与采样图像块的重叠部分。在上述采样之后,将每个采样图像块调整到固定尺寸并以0.5的概率进行水平翻转。

    展开全文
  • SSD算法-论文阅读详解

    千次阅读 2019-03-27 16:57:23
    链接:SSD论文原文 一,贡献/创新点 1,SSD是一个single-shot多类检测器,比之前的单点检测器(这里只要是对比YOLOV1)更快,更精确 (a)快的原因是检测层采用的是3*3的卷积核,而不是像YOLOv1采用全连接层进行...

    目录

    SSD: Single Shot MultiBox Detector(单点多盒检测器)


    链接:SSD论文原文

    一,贡献/创新点

    1,SSD是一个single-shot多类检测器,比之前的单点检测器(这里只要是对比YOLOV1)更快,更精确

        (a)快的原因是检测层采用的是3*3的卷积核,而不是像YOLOv1采用全连接层进行检测

         (b)更精确的原因采用了多尺度进行检测(小,中,大物体),分别使用了6个检测层。

    2,SSD的核心是:在特征图上利用小卷积核对一系列固定集合的default bboxes预测类别得分和box偏移

    3,为了取得高检测准确率,在不同尺度的特征图上进行不同尺度的预测,并分别预测不同aspect ratio的boxes.

    4,设计的特征图可以进行端到端训练并带来高准确率,即使用低分辨率的输入图片,能够改善速度和准确率代价。

     

    二,多尺度特征图预测

    在截断的base network(论文中采用VGG16)后面增加了一些卷积层,这些卷积层尺寸逐渐减小并可以在多尺度特征图上进行预测。

     

    三,卷积预测器检测

    每个增加的卷积层利用一些小卷积核可以产生固定集合的检测预测结果。例如,对于具有p个通道m*n大小的特征图,需要3*3*p个小卷积核预测类别得分或者default box偏移,在每一个m*n位置都要使用卷积核产生一个输出值。这个bbox偏移输出值衡量一个对应的default box。

                                                                                             网络结构

    采用了6个特征图进行预测其大小分别是(38*38),(19*19),(10*10),(5*5),(3*3),(1*1),其中每个特征图中每个位置所采用的default box的数量为(4,6,6,6,4,4)

    网络产生的总default box数量为8732,计算如下:

    38*38*4=5576

    19*19*6=2166

    10*10*6=600

    5*5*6=150

    3*3*4=36

    1*1*4=4

    base network采用的是VGG16,然后把全连接去掉并额外增加了一些小卷积核产生了一些尺度更小的特征图。

     

    四,default box和 aspect ratio

    在网络顶部的多个特征图上,为每个特征图cell关联一系列 default box。默认bbox以卷积方式平铺特征图,因此每个box和其对应的cell是固定的。在每个特征图cell中,预测cell中对应默认box的形状偏移和每个类别的得分。具体来说,对每个指定位置(cell)预测k个box,计算c类得分和4个坐标偏移。所以对特征图中每个位置需要(c+4)k个卷积核,对m*n的特征图共需要(c+4)kmn个卷积核。

     

    五,训练

    SDD网络和其他网络的关键区别是:ground truth 信息需要分配到固定检测器输出,也就是每一层特征图的检测器。

     

    六,匹配策略

    训练期间需要判断哪个default box对应一个ground truth检测来训练网络。对每一个GT box从不同位置、aspect ratio和尺度的default box中选择进行匹配。对每一个GT box和default box的匹配,挑选具有最好杰卡德交叠(IOU)的box。匹配default box到任何一个GT box的策略是杰卡德交叠大于0.5的门限值。

     

    七,训练目标

          

    损失目标函数由置信度和定位损失组成,其中表示第i个default box和第j个GT box匹配且类别为p,取值为0或1表示是否匹配。因此有表示,第i和default box至少要和一个GT box中的某一类匹配(表示正样本)。这里,N表示匹配default box的数量,如果N为0(没有default box匹配上),loss设置为0。定位损失是smooth L1损失(类似faster rcnn),回归的是default box的中心(cx,cy)和它的宽,高。

                              

    置信度损失采用softmax loss,进行多分类

           

    权重项alpha设置为1(通过交叉验证得到)。

     

    八,为default box选择aspect ratios 和 scales

    为了处理不同尺度的目标,同时采用低层和顶层的特征图进行检测。设计平铺的default box使指定特征图学习目标的特定尺度。假设有m个特征图用来预测,每个特征图的default box的尺度按下面的公式计算:

         

    其中Smin为0.2,Smax为0.9,表示最底层的有一个0.2的尺度,最顶层有一个0.9的尺度。另外对default box引入不同的aspect ratio,定义为ar属于{1,2,3,1/2,1/3},对第k层特征图的每个default box,宽度的计算为:,高度的计算为:。另外对aspect ratio为 1 的default box,额外增加一个尺度:,所以对每个特征图的位置有 个default boxes。每个default box的中心为:,其中表示第k个矩形特征图的size,

     

    九,硬负样本挖掘

    匹配过后,大部分的default box是负样本(不包含目标),在这里default box的数量特别大。这样正负样本极度不平衡。不是使用全部的负样本,而是使用每个default box的最高置信度损失对它们进行排序,然后选择顶部的那些default box,使得负样本和正样本之间的比率最多为3:1。这样优化更快训练更加稳定。

    展开全文
  • 英文版论文原文:https://arxiv.org/pdf/1512.02325.pdf SSD: Single Shot MultiBox Detector Wei Liu,Dragomir Anguelov ,Dumitru Erhan ,Christian Szegedy ,Scott Reed ,Cheng-Yang Fu & Alexander C. Berg ...

    英文版论文原文:https://arxiv.org/pdf/1512.02325.pdf


    SSD: Single Shot MultiBox Detector

    Wei Liu,Dragomir Anguelov ,Dumitru Erhan ,Christian Szegedy ,Scott Reed ,Cheng-Yang Fu & Alexander C. Berg

    • UNC Chapel Hill
    • Zoox Inc
    • Google Inc
    • University of Michigan, Ann-Arbor

    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,优于同类的最新Faster R-CNN模型。与其他单阶段方法相比,即使输入图像尺寸较小,SSD的精度也要好得多。代码可在以下网址获得:https://github.com/weiliu89/caffe/tree/ssd。

    We present a method for detecting objects in images using a single deep neural network. Our approach, named SSD, discretizes the output space of bounding boxes into a set of default boxes over different aspect ratios and scales per feature map location. At prediction time, the network generates scores for the presence of each object category in each default box and produces adjustments to the box to better match the object shape. Additionally, the network combines predictions from multiple feature maps with different resolutions to naturally handle objects of various sizes. SSD is simple relative to methods that require object proposals because it completely eliminates proposal generation and subsequent pixel or feature resampling stages and encapsulates all computation in a single network. This makes SSD easy to train and straightforward to integrate into systems that require a detection component. Experimental results on the PASCAL VOC, COCO, and ILSVRC datasets confirm that SSD has competitive accuracy to methods that utilize an additional object proposal step and is much faster, while providing a unified framework for both training and inference. For 300 × 300 input, SSD achieves 74.3% mAP1 on VOC2007 test at 59 FPS on a Nvidia Titan X and for 512 × 512 input, SSD achieves 76.9% mAP, outperforming a comparable state-of-the-art Faster R-CNN model. Compared to other single stage methods, SSD has much better accuracy even with a smaller input image size. Code is available at: 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)的速度运行。已经有很多尝试通过攻击检测管线的每个阶段来构建更快的检测器(请参见第4节中的相关工作),但是到目前为止,速度的显着提高仅是以大大降低检测精度为代价的。

    Current state-of-the-art object detection systems are variants of the following approach: hypothesize bounding boxes, resample pixels or features for each box, and apply a high-quality classifier. This pipeline has prevailed on detection benchmarks since the Selective Search work [1] through the current leading results on PASCAL VOC, COCO, and ILSVRC detection all based on Faster R-CNN[2] albeit with deeper features such as [3]. While accurate, these approaches have been too computationally intensive for embedded systems and, even with high-end hardware, too slow for real-time applications.Often detection speed for these approaches is measured in seconds per frame (SPF), and even the fastest high-accuracy detector, Faster R-CNN, operates at only 7 frames per second (FPS). There have been many attempts to build faster detectors by attacking each stage of the detection pipeline (see related work in Sec. 4), but so far, significantly increased speed comes only at the cost of significantly decreased detection accuracy.

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

    This paper presents the first deep network based object detector that does not resample pixels or features for bounding box hypotheses and and is as accurate as approaches that do. This results in a significant improvement in speed for high-accuracy detection (59 FPS with mAP 74.3% on VOC2007 test, vs. Faster R-CNN 7 FPS with mAP 73.2% or YOLO 45 FPS with mAP 63.4%). The fundamental improvement in speed comes from eliminating bounding box proposals and the subsequent pixel or feature resampling stage. We are not the first to do this (cf [4,5]), but by adding a series of improvements, we manage to increase the accuracy significantly over previous attempts. Our improvements include using a small convolutional filter to predict object categories and offsets in bounding box locations, using separate predictors (filters) for different aspect ratio detections, and applying these filters to multiple feature maps from the later stages of a network in order to perform detection at multiple scales. With these modifications—especially using multiple layers for prediction at different scales—we can achieve high-accuracy using relatively low resolution input, further increasing detection speed. While these contributions may seem small independently, we note that the resulting system improves accuracy on real-time detection for PASCAL VOC from 63.4% mAP for YOLO to 74.3% mAP for our SSD. This is a larger relative improvement in detection accuracy than that from the recent, very high-profile work on residual networks [3]. Furthermore, significantly improving the speed of high-quality detection can broaden the range of settings where computer vision is useful.

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

    We summarize our contributions as follows:

    • 我们推出了SSD,这是一种适用于多种类别的单发检测器,它比以前的最新单发检测器(YOLO)速度更快,并且精度更高,实际上与执行显式区域建议和池化(包括faster R-CNN)的较慢技术一样准确。

    We introduce SSD, a single-shot detector for multiple categories that is faster than the previous state-of-the-art for single shot detectors (YOLO), and significantly more accurate, in fact as accurate as slower techniques that perform explicit region proposals and pooling (including Faster R-CNN).

    • SSD的核心是使用应用于特征图的小型卷积滤波器,为一组固定的默认边界框预测类别得分和框偏移。

    The core of SSD is predicting category scores and box offsets for a fixed set of default bounding boxes using small convolutional filters applied to feature maps.

    • 为了获得较高的检测精度,我们从不同比例的特征图生成不同比例的预测,并按宽高比将显示明确分开。

    To achieve high detection accuracy we produce predictions of different scales from feature maps of different scales, and explicitly separate predictions by aspect ratio.

    • 这些设计功能即使在低分辨率输入图像上也可以实现简单的端到端训练和高精度,从而进一步提高了速度与精度之间的权衡。

    These design features lead to simple end-to-end training and high accuracy, even on low resolution input images, further improving the speed vs accuracy trade-off.

    • 实验包括对通过PASCAL VOC,COCO和ILSVRC评估的具有可变输入大小的模型进行时序和精度分析,并将其与一系列最新技术进行了比较。

    Experiments include timing and accuracy analysis on models with varying input size evaluated on PASCAL VOC, COCO, and ILSVRC and are compared to a range of recent state-of-the-art approaches.

    2. 单发检测器(SSD)

    2 The Single Shot Detector (SSD)

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

    This section describes our proposed SSD framework for detection (Sec. 2.1) and the associated training methodology (Sec. 2.2). Afterwards, Sec. 3 presents dataset-specific model details and experimental results.

    在这里插入图片描述

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

    Fig. 1: SSD framework. (a) SSD only needs an input image and ground truth boxes for each object during training. In a convolutional fashion, we evaluate a small set (e.g. 4) of default boxes of different aspect ratios at each location in several feature maps with different scales (e.g. 8 × 8 and 4 × 4 in (b) and ©). For each default box, we predict both the shape offsets and the confidences for all object categories ((c1,c2,...,cp)(c_1, c_2, ...,c_p)). At training time, we first match these default boxes to the ground truth boxes. For example, we have matched two default boxes with the cat and one with the dog, which are treated as positives and the rest as negatives. The model loss is a weighted sum between localization loss (e.g. Smooth L1 [6]) and confidence loss (e.g. Softmax).

    2.1 Model

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

    The SSD approach is based on a feed-forward convolutional network that produces a fixed-size collection of bounding boxes and scores for the presence of object class instances in those boxes, followed by a non-maximum suppression step to produce the final detections. The early network layers are based on a standard architecture used for high quality image classification (truncated before any classification layers), which we will call the base network2. We then add auxiliary structure to the network to produce detections with the following key features:

    用于检测的 多尺度特征图 我们将卷积特征层添加到截断的基础网络的末尾。 这些层的大小逐渐减小,并可以预测多个尺度的检测。 对于每个特征层,用于预测检测的卷积模型是不同的(参见在单个比例尺特征图上运行的Overfeat [4]和YOLO [5])。

    Multi-scale feature maps for detection We add convolutional feature layers to the end of the truncated base network. These layers decrease in size progressively and allow predictions of detections at multiple scales. The convolutional model for predicting detections is different for each feature layer (cf Overfeat[4] and YOLO[5] that operate on a single scale feature map).

    在这里插入图片描述

    图2:SSD和YOLO两种单发检测模型之间的比较[5]。 我们的SSD模型在基础网络的末尾添加了几个功能层,这些功能层可预测与不同比例和纵横比的默认框的偏移量及其关联的置信度。 在VOC2007测试中,具有300×300输入尺寸的SSD在精度上明显优于其448×448 YOLO同类产品,同时还提高了速度。

    Fig. 2: A comparison between two single shot detection models: SSD and YOLO [5]. Our SSD model adds several feature layers to the end of a base network, which predict the offsets to default boxes of different scales and aspect ratios and their associated confidences. SSD with a 300 × 300 input size significantly outperforms its 448 × 448 YOLO counterpart in accuracy on VOC2007 test while also improving the speed.

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

    Convolutional predictors for detection Each added feature layer (or optionally an existing feature layer from the base network) can produce a fixed set of detection predictions using a set of convolutional filters. These are indicated on top of the SSD network architecture in Fig. 2. For a feature layer of size m×nm × n with p channels, the basic element for predicting parameters of a potential detection is a 3×3×p3 × 3 × p small kernel that produces either a score for a category, or a shape offset relative to the default box coordinates. At each of the m×nm × n locations where the kernel is applied, it produces an output value. The bounding box offset output values are measured relative to a default box position relative to each feature map location (cf the architecture of YOLO[5] that uses an intermediate fully connected layer instead of a convolutional filter for this step).

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

    Default boxes and aspect ratios We associate a set of default bounding boxes with each feature map cell, for multiple feature maps at the top of the network. The default boxes tile the feature map in a convolutional manner, so that the position of each box relative to its corresponding cell is fixed. At each feature map cell, we predict the offsets relative to the default box shapes in the cell, as well as the per-class scores that indicate the presence of a class instance in each of those boxes. Specifically, for each box out of k at a given location, we compute c class scores and the 4 offsets relative to the original default box shape. This results in a total of (c+4)k(c + 4)k filters that are applied around each location in the feature map, yielding (c+4)kmn(c + 4)kmn outputs for a m×nm × n feature map. For an illustration of default boxes, please refer to Fig. 1. Our default boxes are similar to the anchor boxes used in Faster R-CNN [2], however we apply them to several feature maps of different resolutions. Allowing different default box shapes in several feature maps let us efficiently discretize the space of possible output box shapes.

    2.2 Training

    训练SSD和训练使用区域建议的典型探测器之间的主要区别在于,需要将地面真实信息分配给探测器输出的固定集合中的特定输出。 在YOLO [5]中的训练以及Faster R-CNN [2]和MultiBox [7]的区域提议阶段,也都需要此版本。 确定此分配后,将损耗函数和反向传播端到端应用。 训练还涉及选择一组默认的检测框和标尺进行检测,以及严格的否定挖掘和数据增强策略。

    The key difference between training SSD and training a typical detector that uses region proposals, is that ground truth information needs to be assigned to specific outputs in the fixed set of detector outputs. Some version of this is also required for training in YOLO[5] and for the region proposal stage of Faster R-CNN[2] and MultiBox[7]. Once this assignment is determined, the loss function and back propagation are applied end-to-end. Training also involves choosing the set of default boxes and scales for detection as well as the hard negative mining and data augmentation strategies.

    匹配策略 在训练期间,我们需要确定哪些默认框对应于地面真相检测,并相应地训练网络。 对于每个地面真相框,我们从默认框中进行选择,这些默认框随位置,宽高比和比例而变化。 我们首先将每个地面真值框与具有最佳提花卡重叠的默认框进行匹配(如MultiBox [7])。 与MultiBox不同,我们随后将默认框与jaccard重叠高于阈值(0.5)的所有地面实况进行匹配。 这简化了学习问题,使网络能够为多个重叠的默认框预测高分,而不是要求它仅选择重叠最大的框。

    Matching strategy During training we need to determine which default boxes correspond to a ground truth detection and train the network accordingly. For each ground truth box we are selecting from default boxes that vary over location, aspect ratio, and scale. We begin by matching each ground truth box to the default box with the best jaccard overlap (as in MultiBox [7]). Unlike MultiBox, we then match default boxes to any ground truth with jaccard overlap higher than a threshold (0.5). This simplifies the learning problem, allowing the network to predict high scores for multiple overlapping default boxes rather than requiring it to pick only the one with maximum overlap.

    训练目标SSD训练目标是从MultiBox目标[7,8]派生而来的,但可以扩展为处理多个对象类别。 令 xijp=1,0x^p_{ij} = {1,0} 是一个指标,用于将第j个默认框与类别p的第j个地面真实框进行匹配。 在上面的匹配策略中,我们可以有 ixijp1\sum_ix^p_{ij} \ge 1 。 总体目标损失函数是定位损失(loc)和置信度损失(conf)的加权和:

    Training objective The SSD training objective is derived from the MultiBox objective [7,8] but is extended to handle multiple object categories. Let xijp=1,0x^p_{ij} = {1,0} be an indicator for matching the j-th default box to the j-th ground truth box of category p. In the matching strategy above, we can have ixijp1\sum_ix^p_{ij} \ge 1. The overall objective loss function is a weighted sum of the localization loss (loc) and the confidence loss (conf):

    L(x,c,l,g)=1N(Lconf(x,c)+αLloc(x,l,g))(1)\tag{1} L(x,c,l,g)=\frac{1}{N}(L_{conf}(x,c)+\alpha L_{loc}(x,l,g))

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

    where N is the number of matched default boxes. If N=0N = 0, wet set the loss to 0. The localization loss is a Smooth L1 loss [6] between the predicted box (l)(l) and the ground truth box (g)(g) parameters. Similar to Faster R-CNN [2], we regress to offsets for the center (cx,cy)(cx,cy) of the default bounding box (d)(d) and for its width (w)(w) and height (h)(h).

    Lloc(x,l,g)=iPosNmcx,cy,w,hxijksmoothL1(limg^jm)L_{loc}(x,l,g)=\displaystyle\sum_{i\in Pos}^N \displaystyle\sum_{m\in {cx,cy,w,h}}x^k_{ij}smooth_{L1}(l_i^m-\hat{g}^m_j)

    g^jcx=(gjcxdicx)/diw       g^jcy=(gjcydicy)/dih(2)\tag{2} \hat{g}^{cx}_j =(g^{cx}_j-d^{cx}_i)/d^w_i \space \space\space\space\space\space\space \hat{g}^{cy}_j=(g^{cy}_j-d^{cy}_i)/d_i^h

    g^jw=log(gjwdiw)       g^jh=log(gjhdih)\hat{g}^w_j=log(\frac{g^w_j}{d^w_i}) \space \space\space\space\space\space\space \hat{g}^h_j=log(\frac{g^h_j}{d_i^h})

    置信度损失是多个类别置信度(c)上的softmax损失。

    The confidence loss is the softmax loss over multiple classes confidences ©.

    Lconf(x,c)=iPosNxijplog(c^ip)iNeglog()ci0^  where  c^ip=exp(cip)pexp(cip)(3)\tag{3} L_{conf}(x,c)=-\displaystyle\sum_{i\in Pos}^N x^p_{ij}log(\hat{c}^p_i)-\displaystyle\sum_{i\in Neg}log()\hat{c^0_i} \space\space where \space\space \hat{c}^p_i=\frac{exp(c^p_i)}{\sum_p exp(c^p_i)}

    权项 αα 通过交叉验证设置为1。

    and the weight term αα is set to 1 by cross validation.

    展开全文
  • 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/jy001227801/article/details/80388192 ...论文题目:SSD: Single ...
  • 这篇论文总结点开了对ssd的理解,写的很详细、很透彻。原文地址:http://blog.csdn.net/u010167269/article/details/52563573#t18Preface这是今年 ECCV 2016 的一篇文章,是 UNC Chapel Hill(北卡罗来纳大学教堂...
  • 最详细的SSD论文笔记

    2020-02-21 16:23:16
    个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-90.html
  • 原文链接:... 深度学习笔记(七)SSD 论文阅读笔记简化 </h1> <div class="clear"></div> <div class="postBody"> 目录一. 算法概述二. Default box三. 正负样本四. 网络
  • 讲的挺好的,转发一下,原文链接:https://www.cnblogs.com/xuanyuyt/p/7447111.html目录...本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法。与faster rcnn相比,该算法没有生成 proposal ...
  • SSD模型详解

    万次阅读 2019-08-23 11:02:04
    ssd论文原文: https://arxiv.org/pdf/1512.02325.pdf 参考代码 https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/ssd https://github.com/amdegroot/ssd.pytorch SSD网络总体描述 网络组成...
  • 内部包含R-CNN、FastRCNN、FasterRCNN、SPP、SSD、SegNet、YOLOv1~v3、FCN共十篇目标检测的论文原文
  • SSD论文原文,内容真实,排版正规,视觉效果良好。算法初步介绍,希望可以帮助你学习,推广机器视觉。
  • 论文原文SSD   title:《SSD: Single Shot MultiBox Detector》   author:Wei Liu1, Dragomir Anguelov2, Dumitru Erhan3, Christian Szegedy3Scott Reed4, Cheng-Yang Fu1, Alexander...
  • 转 SSD论文解读

    2019-10-05 16:43:40
    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...
  • 这篇文章是目标检测one stage方法的另一代表,论文原文SSD: Single Shot MultiBox Detector》。 YOLO是one stage方法的开山之作,但是其对目标的尺度比较敏感,对尺度变化比较大的物体泛化能力比较弱。而two ...
  • SSD: Single Shot MultiBoxDetector 论文翻译

    万次阅读 多人点赞 2017-08-20 16:24:48
    原文地址:http://lib.csdn.net/article/deeplearning/53059 ...SSD: Single Shot MultiBoxDetector   Wei Liu1 , Dragomir Anguelov2 ,Dumitru Erhan3 , Christian Szegedy3, Scott Reed4 , Cheng-Yang Fu1
  • SSD学习笔记

    2020-02-06 09:39:22
    请去我的知乎原文地址:SSD学习笔记 开篇之前,贴一个很好的非常全面的SSD笔记: 深度学习笔记(七)SSD 论文阅读笔记www.cnblogs.com 还有一个SSD300的pytorch实现: ...
  • 文章目录1. Motivation2. Rainbow concatenation2.1 三种组合方式2.2 Method3. Experiments**Conclusion** Attention: ...推荐直接上这里看原文,因为后面有些语法在CSDN的markdown上不支持,导致显示bug...
  • 原文请参考知网:知网本论文下载地址 4.2 改进的SSD 上一章我们了解到,物体识别检测算法是在传统CNN算法基础上加上目标区域建议策略和边框回归算法得到的。前辈们的工作主要体现在目标区域建议的改进策略上,从...
  • SSD理解

    2019-06-28 13:24:18
    原文: ...这是今年 ECCV 2016 的一篇文章,是 UNC Chapel Hill(北卡罗来纳大学教堂山分校) 的 Wei Liu 大神的新作,论文代码:https://github.com/weiliu89/caffe/tree/ssd 有几点更新...
  • SSD源码阅读一

    2020-02-21 16:26:09
    原文链接:http://www.chenjianqu.com/show-91.html ...SSD论文笔记>,原作者是在Caffe上实现,但是我对这个框架不太熟悉,因此找大佬们在Pytorch上的实现:https://github.com/amdegroot/ssd.pytorch,gith...
  • 原文请参考知网:知网本论文下载地址 本章节部分公式无法显示,详见原版论文 第四章 基于SSD改进的物体识别方法 物体检测与识别在实际应用中的多个领域都占据一席之地。物体检测是将图像或者视频中感兴趣的物体与...
  • SSD网络解析之MultiBoxLoss层

    千次阅读 2018-08-30 22:20:35
    SSD网络中的MultiBoxLoss层是根据论文...首先,我们还是先来看一下论文原文对此部分的描述: ①英文部分 Training objective The SSD training objective is derived from the MultiBox objective [7,8] but is e...
  • 目标检测算法之SSD

    2019-06-16 22:44:44
    论文原文 https://arxiv.org/abs/1512.02325 摘要 本文呈现了一种仅需要单个深度神经网络的目标检测方法之一SSDSSD将物体边框的输出空间离散化为一组在每个特征图位置不同大小和形状的默认框。预测时,网络对...
  • 基于SSD+ReID的行人重识别

    千次阅读 2018-09-25 15:17:02
    一、 实现方法  主要利用SSD和ReID两层网络实现行人重识别功能,... 这里简单介绍一下SSD和ReID网络的结构,详细原理了解请查看论文原文,本文末尾附有论文链接。 2.1 SSD结构简介  SSD算法是一种直接预测目...
  • 由于本人没有基于SSD算法的应用,所以只能针对网上的一些博客和论文原文大概讲解一下其原理。论文原文在这里。 SSD算法的全称是Single Shot MultiBox Detector,从名称上可以看出SSD算法是一种one-stage并应用了多...
  • 目标检测系列:SSD

    2020-03-12 18:59:45
    论文链接:SSD: Single Shot MultiBox Detector 首先我们看一下这个题目可以知道,这是一个一阶段方法,肯定会有的好处,速度快,缺点就是精度没那么高,对小物体可能不敏感。然后MultiBox,这个是说要产生不同尺度...
  • 原文:https://hey-yahei.cn/2018/08/06/SSD/#%E7%BD%91%E7%BB%9C%E7%BB%93%E6%9E%84 网络结构 与分析MobileNets v1模型不同,分析框架我们先从整体入手。 用预训练好的分类网络作为特征提取器(论文里使用的是...
  • SSD 算法详解 及其 keras 实现(上)

    千次阅读 2018-12-27 16:00:35
    看了几天的SSD论文和keras实现的代码,对SSD也有了一定的理解,把这几天的学习成果记录下来。可能是因为之前学习了Mask R-CNN 和 YOLOV1、V2,所以SSD一路看下来还是蛮顺利的。 SSD:Single Shot Multib...

空空如也

空空如也

1 2 3
收藏数 60
精华内容 24
关键字:

ssd论文原文