Single-Shot Refinement Neural Network for Object Detection
文章目录
question1:什么是two-stage approach?参考链接
目前主流的目标检测算法主要是基于深度学习模型,其可以分成两大类:
- two-stage检测算法
- one-stage检测算法
目标检测模型的主要性能指标是检测准确度和速度,目标检测要考虑物体的定位准确性,而不单单是分类准确度。(一般情况下,two-stage算法在准确度上有优势,而one-stage算法在速度上有优势。)
two-stage检测算法将检测问题划分为两个阶段:
- 产生候选区域(region proposals)
- 对候选区域分类(一般还需要对位置精修)
这类算法的典型代表是基于region proposal的R-CNN系算法,如: - R-CNN
- SPPNet
- Fast R-CNN
- Faster R-CNN
- FPN
- …
R-CNN方法
算法分为4个步骤:
-
一张图像生成1K~2K个候选区域 ,采用Selective search方法
Selective search基本思路:- 使用一种过分割手段,将图像分割成小区域
- 查看现有小区域,合并可能性最高的两个区域(基于颜色、纹理等)
- 重复直到整张图像合并成一个区域位置
- 输出所有曾经存在过的区域,所谓候选区域
-
对每个候选区域,归一化为同一尺寸,使用深度网络提取特征
-
特征送入每一类的SVM 分类器(二分类),判别是否属于该类
-
使用回归器精细修正候选框位置
R-CNN存在三个明显的问题:
- 多个候选区域对应的图像需要预先提取,占用较大的磁盘空间
- 针对传统CNN需要固定尺寸的输入图像,crop/warp(归一化)产生物体截断或拉伸,会导致输入CNN的信息丢失;
- 每一个ProposalRegion都需要进入CNN网络计算,上千个Region存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。
- 方法中的三个模型是分别训练的——CNN提取图像特征、分类器预测类别、回归模型tighten bounding box的边界,这也导致流程不易训练。
Abstract
思考:
Two-stage方法已经达到它能达到的最高的精度,one-stage方法具有较高的效率,如何继承两种方法的优缺点。
解决方案:
基于single-shot的检测器,RefineDet。
关键技术:
- 定位细化模块和物体检测模块两个相互连接的模块。前者旨在:
一是过滤掉negative anchors(消极集合),以减少分类器的搜索空间
二是粗略地调整anchor点的定位和大小, 为后续的回归提供更好的初始化。
后一个模块以精确的anchors作为前者的输入, 进一步改善回归, 预测多类标签。 - 转移连接块,transfer connection block,用来传输定位细化模块中的特征, 以预测物体检测模块中物体的定位、大小和类标签.
- 多任务损耗函数,实现了以端到端的方式对整个网络进行训练。
实验结果:
在保持one-stage方法可比效率的同时,提高了two-stage方法的精度。
Introduction
最新DNN(深度神经网络)检测器可分为两类:
- two-stage方法
首先生成一组稀疏的候选目标框,然后对它们进行进一步分类和回归; - 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方法)的优点并克服它们的缺点。
图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。
- ARM去除一些分类层,添加一些辅助结构。
- 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所示:
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中被丢弃。