1 SSD原理

SSD方法使用单深度神经网络进行目标检测,该方法将输出框离散为一组默认的框,这些框在每个特征映射位置具有不同的比率和比例值。预测时,网络为默认框中的每个目标区域进行打分,并生成与目标尺寸较好匹配的标注框。网络使用多个特征图和不同分辨率进行联合预测,处理各种大小的目标。因为完全消除了方案生成和后续的像素或特征重采样阶段,并将所有计算封装在一个网络中,所以SSD是相对简单的方法,该方法需要使用目标推荐(Object Proposal),这也使得SSD更加易于训练,并且可以直接集成到需要的检测系统中。

2 内容

2.1 简介

SSD训练时,只需要输入一张图片和图片中目标的标注框(准确的)。用卷积的方式,在多个不同尺寸特征图中,评估不同尺寸的默认标注框。利用默认标注框,预测所有目标区域的形状偏移和置信度,训练过程中,首先匹配默认框和标注框。例如图1所示,匹配到两个默认框,一个是猫的默认框,一个是狗的默认框,将这两个默认框是有效信息,其他部分是无效信息。模型损失是定位损失(如平滑度L1)和置信度损失(如Softmax)权重之和。

SSD目标检测python代码_SSD


图2.1 SSD框架

2.2 模型

SSD方法基于反馈卷进神经网络,为在这些框中的目标,生成固定大小的边界框集合和评估分数,随后,由非最大压缩步骤生成最终检测结果。我们使用的基本网络是基于高清图片分类的标准神经网络结构前面部分(全连接层前的部分),如图1.2所示,然后在网络中添加辅助结构生成以下特征的检测:

SSD目标检测python代码_多目标检测_02


图2.2 SSD网络结构

多尺寸特征映射的检测:
在裁剪的基础神经网络后面添加卷积特征层,这些特征层减少了处理的尺寸并且可以在多尺寸下进行检测预测,卷积模型对每个特征层的检测预测都是不同的(Overfeat和YOLO都是在单一尺寸的特征映射进行处理)。

  • 卷积预测的检测:
    增加的每个特征层(或基于原网络的特征层)可使用一组卷积核生成一组固定大小的预测检测器。对于p个通道的mSSD目标检测python代码_卷积核_03n尺寸的特征层,预测参数检测器的基本元素是SSD目标检测python代码_多目标检测_04的卷积核,由卷积计算生成对目标的打分或相对默认框坐标的偏移坐标。在SSD目标检测python代码_SSD_05的特征映射上使用卷积核,生成输出值,边界框的偏移输出值根据默认框位置和特征映射区域的相对位置测量,(这一过程,YOLO的结构是使用内置的全连接层而不是卷积核,如图1.3所示)。

图2.3 YoLo网络结构

  • 默认框和纵横比:
    对于在神经网络上层的多特征映射将默认边界框和每个特征图进行结合,默认框以卷积方式对应到特征图,这样每个框相对于各自卷积区域的的位置即可固定下来。在每个特征图的栅格中,预测默认框相对偏移量和在这些框中每个类别的分数。具体是,在给定位置的k个框中,计算c(SSD目标检测python代码_SSD目标检测python代码_06)个分类的分数和相对原始默认框的4个偏移量(cx,cy,w,h)。该方法,在特征图的每个位置的卷积核为(c+4)k,对于mSSD目标检测python代码_卷积核_03n的特征图,共有(c+4)kmn个输出。

2.3 训练

训练SSD和传统使用区域推荐的检测器最大的不同是在正确数据的信息需要分配给固定检测器输出集的特定输出。在YOLO、Faster R-CNN和多标注框的训练中也会使用上述步骤的部分,一旦确定了这些任务,损失函数和反向传播即被应用到端到端。训练过程也包括选择默认框,检测器尺寸,反差挖掘和数据扩充策略。

  • 比对策略:
    训练过程中需要确定默认框对应的标注框,训练对应的神经网络。从不同位置,纵横比和尺寸的默认框中选择正确的标注框。首先将每个正确的标注框与具有最佳jaccard重叠的默认框进行匹配(类似于多目标框),与多目标框不同的是,之后将默认框和正确标注框jaccard重叠高于阈值(0.5)进行匹配。这样简化了学习问题,使得神经网络对多重叠的默认框进行高分预测,而不是只选取重叠的最大值。
  • 训练目标:
    SSD训练目标来自多盒目标,但是拆分为多目标分类,这样可用i(目标框),j(真实标注框),p种类进行预测,形如SSD目标检测python代码_SSD目标检测python代码_08={1,0}。以上的比对策略,有SSD目标检测python代码_卷积核_09全部目标的损失函数是位置损失值和置信损失值的权重之和:

SSD目标检测python代码_SSD目标检测python代码_10

N为默认框比对的序号,若N=0,则损失为0。位置损失为Smooth L1损失,介于预测框(SSD目标检测python代码_卷积核_11)和真实标注框(SSD目标检测python代码_SSD目标检测python代码_12)之间。和Faster R-CNN相似的是对默认边界框(d)和框的宽度(w)及高度(h)的中心进行偏置回归。
SSD目标检测python代码_SSD目标检测python代码_13
SSD目标检测python代码_卷积_14SSD目标检测python代码_卷积核_15
SSD目标检测python代码_SSD_16SSD目标检测python代码_卷积_17
置信度损失是多分类置信度的softmax损失:
SSD目标检测python代码_SSD目标检测python代码_18
其中,SSD目标检测python代码_多目标检测_19,通过交叉验证将权重SSD目标检测python代码_卷积核_20设为1。

  • 默认框尺寸和纵横比的选择
    对不同尺寸的目标处理,文献建议的方法是对不同的目标进行处理然后融合处理后的结果。然而,单神经网络利用来自不同网络的特征图进行与预测可以获得同样的效果,并且可以对所有目标进行权值共享。之前的工作表明使用底层网络的特征图可以提高语义分割的质量,由于底层网络可获取输入目标的更多细节。同时,从特征图中增加全局内容的池化有助于平滑分割结果。基于这些方法,我们采用底层和顶层的特征图进行检测。
    神经网络不同层次的特征图需要有已知的不同的接受尺寸,幸运的是,SSD框架的默认框不需要对应每层实际可接受的尺寸。通过设计平移默认框可以使特定的特征图学习对应尺寸的目标。假设使用m个特征图进行预测,每个特征图的默认框尺寸计算如下:
    SSD目标检测python代码_SSD_21
    SSD目标检测python代码_多目标检测_22意味着最底层的比例为0.2,最顶层的比例为0.9,所有层的值在0.2和0.9之间。为默认框设定不同的长宽比,用SSD目标检测python代码_卷积_23表示,计算每个默认框的宽(SSD目标检测python代码_卷积核_24)和高(SSD目标检测python代码_SSD目标检测python代码_25),长宽比为1的正方形方框,添加的默认框长宽比为SSD目标检测python代码_SSD目标检测python代码_26,每个特征图区域有6个默认框。设定每个默认框的的中心为(SSD目标检测python代码_卷积核_27),其中SSD目标检测python代码_卷积核_28是第SSD目标检测python代码_卷积_29个区域特征图的的尺寸,SSD目标检测python代码_多目标检测_30,实际上,也可以设计默认框的分布,更好地适用特定的数据集。
    将多个特征图的所有区域中不同的尺寸和长宽比的的默认框的预测结合起来,我们有一套不同的预测方法,即覆盖各种输入目标的尺寸和形状。如图1,dog匹配的默认框在SSD目标检测python代码_卷积_31的特征图中,不是在SSD目标检测python代码_SSD目标检测python代码_32特征图中。因为这些默认框有不同的比例,与dog不匹配,所以训练时认为是消极的。
  • 强反差提取
    匹配步骤之后,大部分的默认框是底片色,尤其可能的默认框很大时,这也就导致了正片和负片示例间的显著不平衡,我们对每个默认框使用最高置信度损失进行分类并提取最高的,而不是全部都使用负片,因此负片和正片的大部分是3:1,实验发现这种方法可提高优化速度并使训练更加稳定。
  • 数据扩充
    为使模型在不同的输入尺寸和形状对象上表现的更加健壮,每批训练图像依据下面进随机抽样:全部原生图像中,使用随机采样补丁,使最小的jaccard和对象的重叠区域为0.1,0.3,0.5或0.9。
    原图的采样补丁尺寸为[0.1, 1],不同的长宽比在SSD目标检测python代码_SSD目标检测python代码_33SSD目标检测python代码_卷积核_34之间,如果标注的真实值在中心采样区中,保留重叠部分。采样之后,每个采样补丁会调整到固定尺寸,并以0.5的概率水平翻转,此外,还会应用类似文章14描述照片度量畸变。

2.4 实验结果

基本网络:我们的实验基于VGG16预训练的ILSVRC CLS-LOC数据集,类似于DeepLab-LargeFOV,将fc6和fc7转换为卷积层,从fc6和fc7机型上采样参数,将pool5的SSD目标检测python代码_卷积_35调成SSD目标检测python代码_SSD目标检测python代码_36,同时使用SSD目标检测python代码_卷积_37算法填充“hole”。将所有dropout层和fc8层移除,使用SGD优化,初始化学习率SSD目标检测python代码_多目标检测_38,动量0.9,0.0005的权重衰减,和32张图片的batch进行fine-tuning模型结果,每个数据集的学习率衰减策略略微不同,在后面会有更多细节。

  • PASCAL VOC2007数据集

图2.4 SSD与其他方法在VOC2007数据集预测结果比对

  • PASCAL VOC2012数据集

图2.5 SSD与其他方法在VOC2012数据集预测结果比对

  • COCO数据集

图2.6 SSD与其他方法在COCO数据集预测结果比对

3 总结

SSD方法是对多类别的目标检测的快速识别方法。模型的关键特征是使用多尺寸卷积标注框输出连接到网络顶部的多个特征图,如图2.2所示,这样就可以更有效地对可能的框尺寸进行建模。SSD模型在多目标级别中采样位置,尺寸和纵横比优于现有方法,如Faster R-CNN, YOLO。有望未来在目标检测中该模型作为其中定位和分类的一部分,结合循环神经网络同时检测和跟踪视频中的目标。