目标检测7——SSD: Single Shot MultiBox Detector

一阶段目标检测系列文章
目标检测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,对其进行了以下修改:

  1. 为了不改变 Based Network 最后 Conv5_3 层 Feature Map 的大小
    • 去掉所有的 Dropout 层和 FC8 层
    • 将 FC6 和 FC7 改成卷积层
    • 将 pool5 从 2×2-s2 改成 3×3-s1
  2. 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 个不同尺度的特征
  3. 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,然后线性增加到最右边的层 s m a x = 0.9 s_{max}=0.9 smax=0.9, 因此对于第k个特征图(m个特征图)以及 aspect ratio={1, 2, 3, 1/2, 1/3},scale 为:
    在这里插入图片描述
  • 对于 aspect ratio=1 时,还设置了一个特殊的 scale: s k ′ = s k ⋅ s k + 1 s_k'=\sqrt{s_k\cdot s_{k+1}} sk=sksk+1
  • 那么 default box 的 w 和 h 的计算如下: w = s c a l e ⋅ a s p e c t   r a t i o 、 h = s c a l e a s p e c t   r a t i o w=scale \cdot \sqrt{aspect \ ratio}、h=\frac{scale}{\sqrt{aspect \ ratio}} w=scaleaspect ratio h=aspect ratio scale

因此,每个特征层上的每个特征点对应的默认框数量分别为4、6、6、6、4、4,且总共有 8732 个默认框(均匀密集抽样)

在这里插入图片描述

在这里插入图片描述

三、Training

1. Matching strategy

正负样本的选取:为了确定哪些 default boxes 应用于 ground truth detection 并训练相应的网络,我们需要做锚点匹配

  • 正样本
    • 对于每个 gt box,去匹配跟它具有最高 IoU 的 default boxes
    • 与 gt box 的 IoU > 0.5 的 default boxes 也进行匹配
  • 负样本
    • 与 gt box 的 IoU < 0.5 的 default boxes 也进行匹配
    • Hard Negtive Mining
  • NOTE: Positive Boxes:Negative Boxes = 1:3

2. Loss Function

在SSD中,损失函数被定义为类别损失 (confidence loss, conf) 与定位损失 (locatization loss, loc) 的加权和
在这里插入图片描述

localization loss

在这里插入图片描述

confidence loss

在这里插入图片描述

3. Hard Negative Mining

8732 个默认框中的大多数框都是负的。直接使用所有负框会导致训练期间严重的类别不平衡,因此,一旦匹配完成,仅保留那些具有最高置信度损失的负框,使得正负框之间的比率至少为1:3.

4. Data Augmentation

通过翻转、裁剪和颜色失真来增强数据,为了处理各种对象大小和形状的变体,每个训练图像通过以下选项之一进行随机采样:

  • 原始输入图像
  • 对 IoU 为 0.1、0.3、0.5、0.7 或 0.9 的 patch 进行采样
  • 随机采样 patch

5. Atrous Convolution

  • 空洞卷积/扩张卷积
  • VGG16 中的 FC6 和 FC7 改为卷积层 Conv6、Conv7,且这两层使用的时空洞卷积
    • 可以获得更大的感受野
    • 同时与传统卷积相比,参数数量相对较少

四、Interfence

在推理过程中,把图片输入到模型中我们就会得到 8732 个框(包括类别置信度,位置偏移量)。

  • 首先,根据类别置信度确定其类别,并过滤调属于背景的预测框
  • 然后,根据置信度阈值过滤掉阈值较低的预测框
  • 对留下的预测框进行解码
    • 根据 default box + offset 做线性转换得到真实的位置参数
    • 还需要做clip,防止预测框超出图片位置
  • 根据置信度进行降序排列,然后仅保留 top-k (如400) 个预测框
  • 最后,运用NMS算法,过滤掉那些重叠度较大的预测框就得到预测结果了
    在这里插入图片描述

五、Reference

VGG16
在这里插入图片描述

  • 16
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值