上一章:深度篇——目标检测史(四) 细说 从 Fast R-CNN 到 Faster R-CNN 目标检测
下一章:深度篇——目标检测史(六) 细说 YOLO-V3目标检测
论文地址:《SSD: Single Shot MultiBox Detector》
本小节,细说 SSD 目标检测,下一小节细说 YOLO-V3目标检测
六. SSD (Single Shot MultiBox Detector, SSD) 单点多盒检测器 目标检测 (2016 年)
1. 2016 年 11 月底发布的 SSD 论文,在目标检测任务的性能和精度方面突破了新记录。mAP (mean Average Precision, mAP) 得分超过了 74%,对于代表数据集 如 pascal VOC 和 COCO 能达到每秒 59 帧 的速度。为了更好的理解 SSD,对这个架构的名称理解:
(1). Single Shot 单点
单点,这意味着目标定位和分类任务是在网络的单词转发中完成的。
(2). MultiBox 多盒
这是 Szegedy 等人开发的一种 bounding boxes 回归技术的名称。MultiBox 是一种快速的类无关的 bounding boxes 坐标建议方法,在 MultiBox 的工作中使用了 inception-style 的卷积网络。MultiBox 的结构类似如下的结构图形:
在 MultiBox 的损失函数中包括两个关键的部分:
①. confidence_loss:
这部分衡量网络对计算出的边框为目标的信心程度,即为前景或背景和 c 类的概率 ,使用分类交叉熵计算 loss。与 Faster R-CNN 的 RPN confidence loss 类似。
②. location_loss:
这个指标衡量网络预测的边界与训练数据中真实的边界的误差,使用 范数来计算位置损失。虽然它不像 那么精确,但它仍然非常有效,并为 SSD 提供了更多的操作空间,因为它并没有试图在它的 bounding boxes 预测中做到 “像素完美”。
整体损失函数如下:
表示 第 个默认框 与 第 个 ground truth box 匹配的 类 概率,,即前景和背景的概率,前景概率为 1,背景概率为 0。
则为 ground truth box,
为 预测的 box
为 默认的 bounding box,而 为 默认 bounding box 的中心点, 分别为 bounding box 的宽和高
表示 类别,即 多分类 中的 类别。
表示正样本, 表示负样本
2. SSD 结构图 (SSD 有两个 loss: loc_loss, conf_loss)
3. SSD 体系结构抛弃了全连接层,增加了一组辅助的卷积层来替代全连接层,从而能够在多尺度上提取特征,并逐步减小后续的每个输入的大小。
4. classification
classification 为 SSD 的目标分类器。对于 location 给出的 k 个 bounding boxes,需要对每个 bounding box 计算 c 类分数 和 相对于原始默认框形状的 4 个偏移量(即 坐标)。所以,它在 feature maps 中的一个 location 的总共是 (c + 4) * k 大小的 filters,同理,对于 m * n 大小的 feature maps,则是 (c + 4) * k * m * n 大小的filters。
5. SSD 的改进
(1). 默认 bounding boxes
建议配置一组不同大小和纵横比的默认 bounding boxes,以确保能够捕获大多数的目标。在 SSD 论文中,每个 feature maps 单元格大约有 6 个 bounding boxes。
(2). 固定先验 (如 anchors、bounding boxes)
在 SSD 中,每个 feature maps 单元格都与一组不同尺度和纵横比的默认 bounding boxes 相关联。这些先验是手动(但小心地) 选择的,在 MultiBox 中之所以选择它们,因为它们相对于 ground truth boxes 的 IOU 值超过 0.5。
(3). 先验和 IOU
在 MultiBox 中,研究人员创建的先验(如 anchors),是预先计算并固定大小的 bounding boxes,并与原始的 ground truth boxes 的分布密切匹配。事实上,这些先验选择的是 IOU 大小 0.5 的集合。然而在现实中,IOU 为 0.5 仍然不够好,但是它为 bounding boxes 回归提供了一个强大的起点。这比用随机坐标预测要好得多。因此,MultiBox 以先验作为预测的开始,并试图回归到更接近 ground truth boxes。
(4). Hard Negative Mining 硬性负采样
在训练时,有许多较低 IOU 的 bounding boxes 被视为负样本。在训练集中,可能会存在大量的负样本。因此,建议将负样本和正样本之间的比例保持在 3:1 左右来替代使用所有的负样本来做预测。需要保留负样本的原因,是因为网络需要学习并明确地被告知什么构成不正确的检测。
6. SSD 小结
(1). 更多的默认框可以得到更精确的检测,尽管这会影响速度(如 Faster R-CNN 就使用了 9 个默认 的 anchor boxes)
(2). 由于检测器运行在多个分辨率的特征闪,因此在多层上使用 MultiBox 也可以获得更好的检测效果。
(3). SSD 论文中,80% 的时间是花在基于 VGG16 的网络上,这意味着在衣蛾更快,同样准确的网络,SSD 的性能将会更好(如 ResNet)
(4). SSD 将目标与类似的类别混淆,这可能是因为多个类别位置共享(如 c1 类 与 c2 类 的框位置非常相似,基本重叠或包含,这时,预测 c1 和 c2 的时候,就容易混淆)
(5). SSD500 (输入图像最高使用 512 x 512 分辨率) 在 pascal VOC2007 以牺牲速度为代价,获得最好的准确率为 76.8% 的 mAP,此时的速度下降到 22 帧 每秒。而 SSD300 的准确率在 74.3% 的 mAP,59 帧 每秒,是一个更好的权衡。
(6). SSD 在处理较小的目标时,性能并不怎么好,因为小目标可能无法出现在所有的 feature maps 上(因为降采样)。增加输入图像的分辨率可以缓解这一问题,但并不能完全解决这个问题。
上一章:深度篇——目标检测史(四) 细说 从 Fast R-CNN 到 Faster R-CNN 目标检测
下一章:深度篇——目标检测史(六) 细说 YOLO-V3目标检测