Single-Shot Refinement Neural Network for Object Detection

question1:什么是two-stage approach?参考链接


目前主流的目标检测算法主要是基于深度学习模型,其可以分成两大类:

  • two-stage检测算法
  • one-stage检测算法

目标检测模型的主要性能指标是检测准确度和速度,目标检测要考虑物体的定位准确性,而不单单是分类准确度。(一般情况下,two-stage算法在准确度上有优势,而one-stage算法在速度上有优势。)

two-stage检测算法将检测问题划分为两个阶段:

  • 产生候选区域(region proposals)
  • 对候选区域分类(一般还需要对位置精修)
    Single-Shot Refinement Neural Network for Object Detection[reading notes]
    这类算法的典型代表是基于region proposal的R-CNN系算法,如:
  • R-CNN
  • SPPNet
  • Fast R-CNN
  • Faster R-CNN
  • FPN
R-CNN方法

算法分为4个步骤:

  1. 一张图像生成1K~2K个候选区域 ,采用Selective search方法
    Selective search基本思路:

    1. 使用一种过分割手段,将图像分割成小区域
    2. 查看现有小区域,合并可能性最高的两个区域(基于颜色、纹理等)
    3. 重复直到整张图像合并成一个区域位置
    4. 输出所有曾经存在过的区域,所谓候选区域
  2. 对每个候选区域,归一化为同一尺寸,使用深度网络提取特征

  3. 特征送入每一类的SVM 分类器(二分类),判别是否属于该类

  4. 使用回归器精细修正候选框位置

R-CNN存在三个明显的问题:

  1. 多个候选区域对应的图像需要预先提取,占用较大的磁盘空间
  2. 针对传统CNN需要固定尺寸的输入图像,crop/warp(归一化)产生物体截断或拉伸,会导致输入CNN的信息丢失;
  3. 每一个ProposalRegion都需要进入CNN网络计算,上千个Region存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。
  4. 方法中的三个模型是分别训练的——CNN提取图像特征、分类器预测类别、回归模型tighten bounding box的边界,这也导致流程不易训练。

Abstract

思考:
Two-stage方法已经达到它能达到的最高的精度,one-stage方法具有较高的效率,如何继承两种方法的优缺点。

解决方案:
基于single-shot的检测器,RefineDet。

关键技术:

  1. 定位细化模块物体检测模块两个相互连接的模块。前者旨在:
    一是过滤掉negative anchors(消极集合),以减少分类器的搜索空间
    二是粗略地调整anchor点的定位和大小, 为后续的回归提供更好的初始化。
    后一个模块以精确的anchors作为前者的输入, 进一步改善回归, 预测多类标签。
  2. 转移连接块,transfer connection block,用来传输定位细化模块中的特征, 以预测物体检测模块中物体的定位、大小和类标签.
  3. 多任务损耗函数,实现了以端到端的方式对整个网络进行训练。

实验结果:
在保持one-stage方法可比效率的同时,提高了two-stage方法的精度。

Introduction

最新DNN(深度神经网络)检测器可分为两类:

  1. two-stage方法
    首先生成一组稀疏的候选目标框,然后对它们进行进一步分类和回归;
  2. one-stage方法
    通过对定位,比例和长宽比进行正则和密集采样来检测物体(主要优点是计算效率高),但其检测精度通常落后于two-stage方法(主要原因是由于类别不平衡问题)。

one-stage方法中的一些最近的方法旨在解决类别不平衡问题,以提高检测精度。

当前state-of-the-art的two-stage方法与one-stage方法相比有三个优点具体如下:

  • (1)采用抽样式启发的two-stage结构处理类别失衡;
  • (2)使用two-step级联来回归目标框参数;
  • (3)使用two-stage特征来描述物体。

在本文中:

我们设计了一个名为RefineDet的新物体检测框架,以继承这两种方法(即one-stage和two-stage方法)的优点并克服它们的缺点。
Single-Shot Refinement Neural Network for Object Detection[reading notes]
图1:RefineDet的体系结构。 为了更好地可视化,我们仅显示用于检测的层。 青瓷平行四边形表示与不同特征层相关联的精细锚。 星星代表精致锚箱的中心,这些锚箱在图像上不经常铺设。

通过使用两个互连模块(参见图1),即anchor refinement module(ARM)和 object detection module(ODM),它改进了one-stage方法的架构。

ODM将精确的anchor定作为前者的输入,以进一步改进回归和预测多类别标签。

如图1所示,这两个相互连接的模块模仿two-stage结构,从而继承了上述三个优点,以高效率产生精确的检测结果。

我们设计了一个transfer connection block(TCB)来传输ARM中的features,以预测ODM中物体的定位,大小和类别标签。

多任务损失函数使我们能够以端到端的方式训练整个网络。

主要贡献总结如下:

(1)我们引入了一个新的物体检测one-stage框架,由两个互连模块组成,即ARM和ODM。
这使得性能比two-stage方法更好,同时保持one-stage方法的高效率。

(2)为确保效果,我们设计了TCB,以便在ARM中传输特征,以处理更具挑战性的任务,即预测ODM中准确的物体定位,尺寸和类别标签。

(3)RefineDet实现了通用物体检测最新的最新技术成果。

Network Architecture

总体网络架构(如图1):

与SSD类似,RefineDet基于前馈卷积网络,该网络生成固定数量的边界框,并且分数表示这些框中存在不同类别的物体,通过非最大抑制来产生最终结果。

RefineDet由两个相互连接的模块组成,即ARM和ODM。

  1. ARM去除一些分类层,添加一些辅助结构。
  2. ODM由TCB的输出组成,其后是预测层(即具有3×3核大小的卷积层),其产生相对于精确anchor box坐标的物体类别和形状偏移的分数。

RefineDet中的三个核心组件:

  • (1)transfer connection block,将特征从ARM转换到ODM以供检测;
  • (2)two-step cascaded regression,准确回归物体的定位和大小;
  • (3)negative anchor filtering,尽早拒绝分类好的negative anchors,缓解不平衡问题。

transfer connection block(TCB)

在ARM和ODM之间建立连接,提高检测准确性,确保检测特征的唯一性。
TCB的体系结构如图2所示:
Single-Shot Refinement Neural Network for Object Detection[reading notes]

Two-Step Cascaded Regression:

one-stage方法对于小物体检测非常不准确。所以作者提出了一个two-step Cascaded Regression(两步级联回归)策略来回归物体的位置和大小。即,使用ARM来首先调整anchor的位置和大小,以便为ODM中的回归提供更好的初始化。

具体而言,我们将n个anchor定位框与特征映射上的每个规则划分的单元相关联。

每个anchor box相对于其相应单元的初始定位是固定的,在每个特征映射单元格中,我们预测refined anchor boxes(精确锚点盒子)相对于原始tiled anchor点的四个偏移量以及表示这些框中存在前景物体的两个置信度分数。

因此,在每个特征映射单元中都生成n个精确锚点盒。

获得refined anchor boxes后,我们将它们传递给ODM中的相应特征映射,以进一步生成物体类别和准确的物体定位和大小,如图1所示。

ARM中的对应特征映射和ODM具有相同的维度。我们计算c种类别得分以及相对于refined anchor boxes的4个精确的偏移量,为每个refined anchor boxes产生c + 4个输出以完成检测任务。

该过程与SSD中使用的默认框类似,区别是SSD直接使用regularly tiled default boxes进行检测相比,RefineDet使用two-step策略,即ARM生成refined anchor boxes,ODM将refined anchor boxes作为输入用于进一步检测,获取更精确的检测结果,特别是对于小物体。

Negative Anchor Filtering(负锚过滤)

为了尽早拒绝分类良好的negative anchors(负锚)并缓解不平衡问题,我们设计了一个Negative Anchor Filtering(负锚过滤)机制。

具体而言,在训练阶段,对于refined anchor boxes,如果其负置信度大于预设的阈值θ(即,根据经验设置θ= 0.99),我们将在训练ODM时丢弃它。也就是说,我们只通过refined negative anchors box和refined positive anchor boxes来训练ODM。同时,在推理阶段,如果一个refined anchor boxes被分配了大于θ的负置信度,它将在ODM中被丢弃。

相关文章: