一阶段目标检测系列文章
目标检测6——一阶段目标检测概述
目标检测7——SSD
目录
一、Introduction
- SSD: Single Shot MultiBox Detector
- SSD300-VOC2007测试集上达到 74.3% mAP 以及 59 FPS
- SSD512- VOC2007测试集上达到了 76.9% mAP 以及 22 FPS
- 超越当时的 Faster RCNN (73.2% mAP 以及 7FPS) 和 YOLOv1 (63.4 mAP 以及 45 FPS)
二、SSD Network Architecture
1. Network Architecture
SSD采用的主要网络是VGG16,对其进行了以下修改:
- 为了不改变 Based Network 最后 Conv5_3 层 Feature Map 的大小:
- 去掉所有的 Dropout 层和 FC8 层
- 将 FC6 和 FC7 改成卷积层
- 将 pool5 从 2×2-s2 改成 3×3-s1
- Multi-scale feature maps for detection
- 通过6个不同特征尺度的特征提取层,分别提取不同尺度的 Feature Map
- SSD在VGG16之后又增加了6个辅助卷积层。将添加其中五个用于目标检测
- 新增 Conv6、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2
- Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2 就可以提取 6 个不同尺度的特征
- Convolutional predictors for detection
- 经过卷积进行特征提取后,我们会得到 6 个大小为 m×n (位置数)、p 个通道的 Feature,然后在该 m×n×p 的 Feature Map 上应用 3×3 的卷积
- 对于每个位置,我们都有 k 个默认框 (4或6),并且这个 k 个边界框具有不同的尺寸和长宽比
- 为了计算 c class scores 和相对于 GT Box 的 4 个 offsets,对于每个 Feature Map,我们需要对其做两次 3×3 的卷积
- 一个 k×4 的卷积,对于给定位置的 k 个默认框,产生 k×4 个相对于 GT Box 的 4 个 offsets
- 一个 k×c 的卷积,对于给定位置的 k 个默认框,产生 k×c 个类别的分数
- 因此,我们会得到 m×n×k×(c+4) 个输出(其中 c 包含 20 个物体类别和 1 个背景类别)
2. Multi-scale feature maps for detection
随着CNN逐渐降低空间维度,特征图的分辨率也随之降低,SSD使用比较小的特征图来检测较大尺度的物体,比较大的特征图来检测较小尺度的物体,例如 (a) 与 (c),4×4 特征图用于检测较大尺度的物体
多尺度特征图 (Multi-scale feature maps) 显着提高了准确性,如下所示:
3. Default boxes
默认框 (Default box) 相当于 Faster R-CNN 中的瞄点 (anchors) ,SSD 会在不同尺度大小大的 Feature Map 上提取默认框
- SSD 为每个 feature map layer 定义了 scale 的值,从左边开始,以 Conv4_3 为 s m i n = 0.2 s_{min}=0.2 smin=0.2<