论文:SSD: Single Shot MultiBox Detector
时间及出处:CVPR 2016
1. 概述
SSD的整体架构借鉴了YOLOv1,即,直接在特征图上输出物体的类别和位置。与YOLOv1不同的是,SSD引入了Faster R-CNN中的anchor机制,并且去掉了YOLOv1的全连接层,采用卷积层进行预测。
SSD最大的贡献就是引入多尺度特征预测
- YOLOv1只在最后一层特征图上预测物体的类别和位置,SSD则在多个不同大小的特征图上同时预测物体的类别和位置;
- Faster R-CNN中的RPN只在最后一层特征图上设置anchor,SSD则在多个不同大小的特征图上同时设置anchor
2. SSD
2.1 网络结构
-
以去除全连接层的VGG16作为backbone,并在后面添加一系列的卷积,得到6个不同大小的预测特征图(conv4、conv7~conv11),对于每一个预测特征图,采用 3 × 3 3\times3 3×3的卷积核做预测,在特征图的每一个位置输出 ( c + 4 ) k (c+4)k (c+4)k维向量, k = 4 k=4 k=4是每个位置的anchor数量,c是类别数(包含背景类)。
-
SSD中用于最后分类和回归的特征图是同一个特征图,这就会产生分类特征和回归特征的耦合,因为分类任务更加关注目标的重点区域,而回归任务更加关注目标的边界区域,这两者所提取的特征是不一致的。后续RetinaNet使用分类分支和回归分支的方法,可以减少分类特征和回归特征之间的耦合性。
2.2 anchor的设置
-
s
k
s_k
sk是第
k
k
k层特征图上的anchor映射到原图之后,占原图大小的比例。假设原图大小为
300
×
300
300\times300
300×300,特征图大小为
8
×
8
8\times8
8×8,该特征图上的anchor尺寸占原图尺寸的比例为
s
k
=
0.6
s_k=0.6
sk=0.6,则该特征图的anchor尺寸为
180
×
180
180\times180
180×180。从公式(4)看出,显然每层anchor的面积是线性递增的。浅层特征图的anchor面积小,适合用来检测小物体;深层特征图的anchor面积大,适合用来检测大物体。
2.3 label assignment
- anchor和ground truth的匹配策略如下:
正样本 | 负样本 | |
---|---|---|
描述 | 表示该anchor负责预测某个gt,即含有object | 表示该anchor不负责预测任何gt,即不含有object |
准则 | (1)对于每个gt,选择与其IoU最大的anchor:保证所有的gt至少有一个anchor负责预测它。(2)若某个anchor与任何一个gt的IoU大于0.5,则为positive | otherwise |
作用 | 用于多分类和边界框回归 | 用于多分类 |
2.4 损失函数与RPN基本相同
softmax多分类损失+smoothL1回归损失。
2.5 正负样本平衡策略:
在线难例挖掘(OHEM):对所有负样本的loss(只有分类损失)进行排序,选取损失最高的一定数量的负样本,保证正负样本的比例为1:3。
3. 实验
4. 优点
- 速度比Faster R-CNN和YOLOv1快
- 准确度比Faster R-CNN和YOLOv1高