天天看点

SSD论文笔记SSD: Single Shot MultiBox Detector

SSD: Single Shot MultiBox Detector

One-Stage Detection 看一下和 two-stage 的方法主要区别,如何用一个单一网络实现检测。

主要就是利用设定默认框和回归的方式,替代了 region proposal 的方法。

Abstract

SSD 的一些简单介绍

  • 仅使用一个单一网络实现目标检测
  • 将边界框的输出空间离散化为一组不同比例、尺寸的默认框,分布在每个特征图的位置上
    • 暂时的理解:与two-stage对候选框进行回归的方法相比,SSD预设了一组默认框,该组默认框能够覆盖所有的输出
  • At prediction time :
    • 在每个默认框中,以分数表示是否存在某个类别的目标(所有类别都有一个分数)
    • 生成对默认框的调整,以更好地匹配对象形状(调整包括什么?框的尺寸、比例以及位置变化?)
  • 网络结构特点
    • 网络结合了来自具有不同分辨率的多个特征图的预测,以对应各种大小对象的检测
    • 完全消除了(two-stage中)的提案生成(proposal generation)和后续的像素或特征重采样阶段(pixel or feature resample stages),并将所有计算封装在一个网络中 —— 这也是检测速度巨大增加的原因
    • 为训练和预测提供了统一的框架

1 Introduction

  • 以前的主要方法 :
    • 假设边界框 - 为每个框重采样像素或特征 - 应用到高质量的分类器
    • 计算量太大,在实际应用中太慢
  • SSD的一些改进
    • 使用小型卷积来预测边界框中的对象类别和边界框偏移量
    • 使用 separate predictors (filters) 进行不同的宽高比预测
    • 将过滤器应用于网络后期的多个特征图,以便实现在多个尺度上的检测

利用上述改进,能够使用更小分辨率的输入,进一步也能提升检测速度

  • Contributions
    • SSD 速度 + 精度 并存
    • 将小型卷积核应用到特征图上,预测一组固定的默认边界框的类别分数和偏移量
    • 从不同比例的特征图产生不同比例的预测

2 The Single Shot Detector (SSD)

2.1 Model

  • PipeLine
    • a feed-forward convolutional network : 生成固定大小的边界框集合,并对这些框中存在的对象实例进行类型评分
    • a non-maximum suppression step : 生成最终的检测结果
  • 网络结构 : the base network + auxiliary structure
    • Multi-scale feature maps

      在基础网络的末尾添加卷积特征层

    • Convolutional predictors

      生成一组固定的 predictions

    • Default boxes and aspect ratios

      存在多个具有不同分辨率的特征图,在每个特征图单元(cell)上,关联了一组固定的、具有不同纵横比的默认框

      对于每个默认框,最终会输出类别分数以及偏移量,c + 4

      每个单元输出: (c + 4)k

      每个特征图输出: (c + 4)kmn

2.2 Training

  • 与使用 region proposals 的传统检测器的主要区别 :

    Ground truth information needs to be assigned to specific outputs in the fixed set of detector outputs

    SSD 训练图像中的 ground truth 需要赋予到那些固定输出的 boxes 上(SSD 输出的是一系列固定大小、比例的boxes)

  • 需要提前设置的内容
    • 默认框
    • the hard negative mining : 对应正负样本不平衡的问题
    • data augmentation strategies

Matching strategy

  • 配对的目标:将 Ground truth box 与 default box 匹配
  • 与 MultiBox 中使用的方法有所不同,在SSD中,每个 GT box 可以对应多个 default boxes,只要其 jaccard overlap 大于某一阈值

Training objective

  • SSD 的训练目标来源于 MultiBox ,但是将其进行了扩展以对多个类别目标进行检测
  • The localization loss
    • Smooth L1 loss (from Faster R-CNN)
    • 框中心点位置、框的尺寸
    • 结合公式和代码

      multibox_loss.py

    # loc_p : predicted localization 
    # loc_t : true localization
    loss_l = F.smooth_l1_loss(loc_p, loc_t, size_average=False)
               
  • The confidence loss
    • softmax loss
    • 输入每个类别的置信度
  • 两类loss加权求和

Choosing scales and aspect ratios for default boxes

  • 首先要说明的是,默认框如何设计是可以根据实际应用需求来决定的
  • 根据卷积网络固有的层次特点,SSD使用了单个网络中多个不同层的特征图进行预测
  • 不同层次的特征图具有不同大小的感受野,因此每层特征图对应的 default box 尺寸存在差异(详细介绍看论文和代码

    prior_box.py

    • 假设使用m个特征图进行预测,每个特征图中 default box 的尺寸:
      SSD论文笔记SSD: Single Shot MultiBox Detector
    • 另还设置有一组 aspect ratios,由此即可计算每个框的 width,height
  • 由此可获得涵盖了各种输入对象大小和尺寸的预测

Hard negative mining

  • 在匹配阶段结束后,得到的大多数 default box 都是 negative 的,造成了正负样本之间的严重不平衡。
  • 解决方法:使用每个默认框的最高置信度损失对它们进行排序,并选择置信度最高的框,以使正负样本比例约为1:3.(移除部分 negative 预测框)
  • 具体实现看看代码,该步骤应该是目标检测的常用手段。
    # multibox_loss.py
    pos = conf_t > 0 # positive samples
    # 中间进行了一系列看不太懂的操作
    neg = torch.clamp(self.negpos_ratio*num_pos, max=pos.size(1)-1)
               
    看起来大概是先选取了 positive 样本,然后根据预先设定好的比例来确定 negative 样本数量。
  • 题外话:facal loss 就是针对正负样本的不平衡提出的。

Data augmentation

  • 每张训练图像通过以下某一种方式随机采样:
    • 使用原始图像
    • 采样一个 patch,与目标的 jaccard overlap 最小为 0.1, 0.3, 0.5, 0.7, 0.9
    • 随机采样一个 patch
  • 采样的 patch 与原图相比缩放尺度、纵横比都有范围限制
  • 执行上述采样之后,每个 patch 被 resize 到固定大小,并以0.5的概率进行水平翻转

3 Experimental Results

使用 VGG16 作为 base network,但是进行了一些改动(详细看论文和代码)

训练设置也看论文和代码就行。

  • 将 fc6 和 fc7 转换成了卷积层
  • 将 2x2 的池化层 pool5 转换成了 3x3
  • 使用了空洞卷积
  • 移除了所有的 dropout 以及 fc8
  • SGD lr = 0.001 momentum=0.9 weight decay = 0.0005

3.1 PASCAL VOC2007

首先介绍了实验中使用的网络模型结构,具体看代码。

  • SSD300 model
    • predict layers : conv4_3, conv7, conv8_2, conv9_2, conv10_2, conv11_2
    • 在 conv4_3, conv10_2, conv11_2 中,每个位置使用了4个默认框,aspect ratios=1/3 or 3
    • 其余预测层每个位置上使用了6个默认框
    • L2 normalization
    • 0.001 learning rate for 40k iterations, 10-4 and 10-5 for 10k iterations
  • 实验结果
    • SSD在相似的对象类别上容易出现混淆,部分原因是共享了多个类别的位置
    • SSD在检测较小对象时表现较差
    • SSD能很好地识别尺寸较大的对象,并且对不同比例的对象能够实现检测

3.2 Model analysis

Data augmentation is crucial

More default box shapes is better

Atrous is faster

use the atrous version of a subsampled VGG16 - base network 的结构,具体细节需要看代码,论文里没怎么说。

Multiple output layers at different resolutions is better

Using default boxes of different scales on different output layers.

说起来,这样的方法和 FPN (feature pyramid network)是不是挺像的噢

在实验过程中,减少了网络预测层数,并通过在每一层添加更多的 default box 来保持 box 总数基本不变,发现准确率有下降。

The SSD architecture combines predictions from feature maps of various resolutions to achieve comparable accuracy to Faster R-CNN, while using lower resolution input images.

3.3 PASCAL VOC2012

SSD is significantly more accurate, likely due to the use of convolutional default boxes from multiple feature maps and our matching strategy during training.

3.4 COCO

因为 COCO 数据集中的对象要小一些,因此使用了更小的 default boxes 设计

就还是拿 SSD 和 Fast R-CNN, Faster R-CNN, YOLO 作比较。

3.5 Preliminary ILSVRC results

换了个数据集作比较:)

3.6 Data Augmentation for Small Object Accuracy

针对检测小型对象的问题,提出了新的 data augmentation strategy

a “zoom out" operation : 将图像随机放置在原始图像尺寸的16倍的画布上,使用平均值填充,然后再执行随机裁剪操作

3.7 Inference time

Non-maximum suppression(NMS) 基本操作,查一下自己

首先是 confidence threshold = 0.01 过滤一批框,然后再使用 jaccard overlap=0.45 的NMS,每张图片留下200个框

依然和那几个模型进行了对比。

4 Related Work

  • 以前的方法: based on sliding windows or region proposals
  • 有了卷积网络之后(R-CNN):Region proposals with CNN
    • SPPnet : 引入了空间金字塔池化
    • Fast R-CNN : 在 SPPnet 的基础上,对分类置信度和边界回归损失进行了整合
  • 改进了 region proposal 的过程
    • Faster R-CNN :RPN(region proposal network) 取代了之前的 selective search proposals
  • 不进行 region proposal 的过程
    • YOLO : 使用整个最上层的特征图来预测多个类别的置信度和边界框
    • OverFeat

5 Conclusions

A key feature of our model is the use of multi-scale convolutional bounding box outputs attached to multiple feature maps at the top of the network.

This representation allows us to efficiently model the space of possible box shapes.

继续阅读