SSD 论文阅读笔记

SSD 论文阅读笔记

资料

SSD: Single Shot MultiBox Detector

​ 原文下载:PDF

​ 中文翻译:SSD: Single Shot MultiBox Detector 翻译(包括正式版和预印版)(对原文作部分理解性修改)

​ 参考 PPT :一份俄语 PPT

笔记

​ SSD,Single Shot MultiBox Detector,单发多框检测,属于 one stage 范畴。比 YOLO (V1) 快又准,比 Faster R-CNN 准确度相当。

​ SSD 使用的是 anchor 机制(论文中称之为 default box),在主干网络(原始网络截断分类层)的特征图上,使用卷积滤波器预测 anchor box 的分类置信度和目标边界框的偏移量。

SSD 的模型

​ 论文中的 SSD 模型结构和 YOLO 模型结构的对比图:

SSD-YOLO区别

​ 俄语 PPT 中的 SSD-300 模型图,我认为更直观反映 SSD 的多尺度检测和 NMS 选择:

PPT SSD Model

模型中的几个关键点:

多尺度的特征图检测

​ 如上图 SSD 300 的模型图,在几个特征图上(即主干网络之后的卷积特征层),依次划分了 38x38、19x19、10x10、5x5、3x3 和 1x1 个 grid cell(cell 对应 default box/anchor),每个 anchor 用于预测分类和目标边界框。如 38x38、19x19,每个单元的感受野较小,更适合检测尺寸较小的目标,反之,如 5x5、3x3 等,每个单元的感受野较大,更适合检测尺寸较大的目标。

使用卷积滤波器进行检测:

​ 如上图 SSD 300 的模型图,在每一个特征图上(设大小 m*n,通道为 p),使用 3x3xp 的卷积核进行滤波,则在进行核运算的每点,都得到一个输出值,要么用于分类置信度,要么用于目标边界框的偏移量。下图举例说明,中间的 3x3 卷积核用于目标边界框的回归预测,右侧的 3x3 卷积核用于目标分类预测。

特征图上的操作

默认框(anchor)与宽高比

默认框以卷积的方式平铺特征映射,以便每个框相对于其对应单元的位置是固定的。在每个特征映射单元中,我们预测相对于单元格中的默认框形状的偏移,以及指出这些框中每个框存在的详细类别的每类评分。具体来说,对于在给定位置的 k 个框中每个框,我们计算 c 类分数和相对于原始默认框的 4 个偏移量。这使得在特征图中的每个位置需要总共 (c+4)・k 个滤波器,对于 m×n 特征图产生 (c+4)・k・m・n 个输出。

​ 同时,采用不同宽高比的 anchor,有效离散出可能的目标边界框形状空间,提升模型的性能。

​ 如上图左侧所示,5x5 的特征图,可以有 25 个正常 anchor(宽高比为 1);

​ 通过采用不同宽高比的 anchor,如宽高比为 2 或 0.5 的 anchor,则增加两类 anchor,共计 25・3=75 个 anchor。

SSD 的训练

训练中的几个关键点和细节:

匹配策略(匹配问题)

​ 匹配问题指的是,在训练过程中,将真值标签(Ground Truth,包含分类和边界框位置)合理地匹配给每个特征图的 anchor boxes 中,将真值标签分配好后,才可以进行训练的误差计算。

​ 论文提出了两步走的方式:计算真值标签与特征图中各个 anchor 的 Jaccard 值(也叫 IoU / 交并比)。第一步将真值标签分配给重叠最好的 anchor,确保每个真值标签都有一个匹配的默认值;第二步,在剩余 anchor 中继续筛选,挑选出与真值标签 Jaccard 值高于阈值的 anchor,将它与对应的真值标签相匹配;其余的 anchor 抛弃不管。

训练目标(损失函数)

​ 目标检测的损失函数分为两个:一个是分类损失,一般用二分类交叉熵损失函数 (BCE);一个是边界框的定位损失,这是个回归问题,一般使用 L1 Loss 或者平滑 L1 Loss (Smooth L1 Loss)。对每个 anchor 进行计算 loss,累加,并反向传播。

默认框(anchor)的尺度和宽高比选择

​ 如上节所说,采用不同宽高比的 anchor,能有效离散出可能的目标边界框形状空间,提升模型的性能。

​ 同时,不同特征图的 anchor 具有不同的感受野,通过组合许多特征图在各个位置的不同尺寸和不同宽高比的 anchor 的预测,增加了更多样化的预测集合,覆盖到更多的输入对象输入尺寸和形状,增强模型的泛化性能。

​ 论文推荐了如下的 anchor 比例计算的方式,原文:

scale

​ 翻译摘抄自《SSD: Single Shot MultiBox Detector 翻译》:

scale-CN

Hard negative mining(硬负挖掘??)

​ 在之前的匹配策略之后,许多 anchor 是负样本,没有匹配到目标(即背景),特别是当不同尺寸和宽高比增加 anchor 数目之后,负样本的比例会很大。正负样本之间的不平衡会影响训练效果。但是 SSD 的机制是,不采用所有的负样本,而是通过置信度来排序,删除置信度低的样本,这样能维持正负样本的比例在 1:3 之间。

数据增强

​ 论文在训练小节和实验分析小节都强调了数据增强的至关重要的作用。论文采用了如下的增强的步骤。为了使模型对于各种输入对象大小和形状更加鲁棒,每个训练图像通过以下选项之一随机采样:

  • 使用整个原始输入图像
  • 采样一个片段,使对象最小的 jaccard 重叠值为 0.1,0.3,0.5,0.7 或 0.9。
  • 随机采样一个片段

每个采样片段的大小为原始图像大小的 [0.1,1],横宽比在 1/2 和 2 之间。如果真实标签框中心在采样片段内,则保留重叠部分。在上述采样步骤之后,还采用一些光度失真操作,将每个采样片段调整为固定大小并以 0.5 的概率水平翻转。

SSD 与 小目标

论文中也提到了 SSD 适合检测大目标,在小目标的检测准确率上比不上 Faster R-CNN。

解决方式之一就是提高输入图像的分辨率,让 anchor 的感受野更小。

解决方式之二就是数据增强步骤中,采用 zoom out(缩小)操作。

参考:

SSD: Single Shot MultiBox Detector 翻译(包括正式版和预印版)(对原文作部分理解性修改)

论文阅读《SSD: Single Shot MultiBox Detector》

SSD 系列论文总结

单发多框检测(SSD)

文中图像来自论文原文和开头指出的俄语 PPT(不知道出处)。