前言

本文设计了一种新的目标检测框架,称为RefineDet,它通过两个互相连接的模块来对one-stage方法进行改进,从而在保持one-stage检测效率的同时,又能提升检测精度。这两个模块分别为:

  • anchor refinement module(ARM):识别并移除negative anchor,以减小分类器的搜索空间,同时粗略地调制anchor的位置和大小,从而为后续的回归操作提供一个好的初始化。
  • object detectionmodule(ODM):将ARM中经过调制的anchor作为输入,以进行更好的回归操作,并预测多类别标签。

这两个互相连接的模块模仿了two-stage检测器的结构,因此继承了two-stage检测器的三个优点:

  1. 使用two-stage结构以及启发式采样以解决类别不平衡问题;
  2. 使用two-step级联以回归bbox的参数;
  3. 使用two-stage特征来描述目标(RPN中首先对目标进行二分类,Fast R-CNN中进行多类别分类)。

除此之外,本文还设计了transfer connection block(TCB) 对ARM的特征进行迁移,以处理ODM中更具挑战性的任务,比如预测位置、尺度以及类别标签。


网络结构

Single-Shot Refinement Neural Network for Object Detection 论文笔记
上图是RefineDet的整体结构,它基于一个前向传播的卷积网络,由两个相互连接的模块,ARM和ODM组成。ARM是通过移除分类层,然后添加两个基础网络(VGG-16和ResNet-101)的一些辅助结构形成的;ODM包含TCB的输出,后跟预测层。

RefineDet中有三个核心组件:

  1. TCB,将ARM的特征转换为ODM的输入,以进行检测;
  2. two-step级联回归,精确回归目标的位置和大小;
  3. 负样本过滤,尽可能去除well-classified negative anchor,以缓和类别不平衡问题。

1. TCB

Single-Shot Refinement Neural Network for Object Detection 论文笔记
TCB用来连接ARM和ODM,它对ARM中来自不同层的特征进行转换,使其能够作为ODM的输入,这样的话ODM就能够共享ARM的特征。除此之外,TCB还实现了不同尺度的特征图的融合,通过对高级特征进行反卷积操作,以使维度匹配,然后通过element-wise sum方式将高级特征与低级特征结合起来,以提升检测的准确率。在相加操作之后还要添加一个卷积层,以确保特征的判别性。

2. two-step级联回归

通常one-stage检测器采用的是one-step回归,基于不同尺度的特征图来预测目标的位置和大小,但是这种方法并不总能达到很好的准确率,尤其当检测小目标的时候。基于此,本文提出two-step级联回归,先使用ARM调整anchor的位置和大小,然后ODM使用这些refined anchor进行更好的预测。

在ARM中,在特征图的每个cell处分配nn个anchor,也就是说每个anchor相对于其对应的cell的初始位置是固定的。然后在每个cell上预测四个偏移值两个置信度,偏移值是refined anchor相对于原始固定的anchor的offset,两个置信度分别是前景置信度(positive confidence)和背景置信度(negative confidence),这样在每个cell处就能得到nn个refined anchor。

在得到refined anchor之后,将它们传入ODM中相应的特征图中,以进一步生成目标类别标签以及准确的目标位置和大小。计算 cc个类别分数和4个精确的偏移值,这样每个refined anchor就有c+4c+4个输出。ARM和ODM实现的two-step级联回归能够得到更准确的检测结果,对小目标的检测效果比one-step回归更好。

3. 负样本过滤

为了尽可能去除背景置信度较高的负样本,减轻正负样本分类不平衡问题,本文提出负样本过滤机制。

  • 在training阶段,对于一个refined anchor来说,如果其背景置信度大于一个给定的阈值θ\theta(比如θ=0.99\theta=0.99),那么这个样本将不会参与到ODM的训练中。也就是说,只将前景置信度较高的正样本,以及难以区分的负样本(hard negative)传入ODM中。
  • 在inference阶段,如果一个refine anchor的背景置信度大于θ\theta,那么该样本不会参与到检测中。

training&inference

1. 数据扩增

为了增强模型的鲁棒性,采用随机填充、随机裁剪和随机翻转等数据扩增方式。

2. backbone

本文使用VGG-16和ResNet-101作为backbone,为了捕获高级特征并且进行不同尺度的目标检测,在VGG-16后面添加了两个卷积层,在ResNet-101后面添加了一个残差块。注意VGG-16和ResNet-101都没有使用全部,而是截取了一部分。

3. anchor的设计和匹配

为了处理目标的多尺度问题,RefineDet中采用了4种不同步长大小的特征层,分别是8,16,32,64,每个特征层对应不同大小的anchor(anchor的大小是步长的4倍),并且anchor有三种长宽比,分别为0.5,1.0和2.0。在训练时,首先将每个gt与IoU最高的anchor匹配在一起,这样每个gt就都能分配一个anchor;然后对于剩下未被匹配的anchor,与任一个IoU大于0.5的gt匹配在一起。

4. 正负样本的筛选

即使经过ARM对于负样本的过滤,负样本的比例依然远远大于正样本。因此采用hard negative mining策略,选择loss的值排在前面的负样本,以确保负样本和正样本的比例低于3:1。

5. 损失函数

RefineDet的损失函数由两部分组成:ARM的损失和ODM的损失,定义如下:
Single-Shot Refinement Neural Network for Object Detection 论文笔记

  • ii是mini-batch中anchor的索引;
  • lil^*_i是anchor ii的gt类别标签;
  • gig^*_i是anchor ii的gt位置和大小;
  • pip_i是ARM中的置信度,说明anchor ii是否是一个目标;
  • xix_i是anchor ii在ARM中的初步坐标预测值;
  • cic_i是ODM中预测的目标类别;
  • tit_i是ODM中预测的bbox的坐标值;
  • NarmN_{arm}NodmN_{odm}分别是ARM和ODM中正样本的数量;
  • 二分类损失LbL_b是在两个类上(object or not object)的交叉熵损失;
  • 多分类损失LmL_m是在多个类的置信度上的softmax损失;
  • 回归损失LrL_r是smooth L1 loss;
  • [li1]Lr[l^*_i \geq 1]L_r说明不考虑负样本的回归损失。

结论

本文提出的single-stage检测网络也算是SSD的衍生物,其中最核心的部分就是two-step级联回归,从而在single-stage检测器中模仿two-stage检测器的结构,以达到并且超越two-stage检测器的精度。

相关文章:

  • 2020-04-24
  • 2019-11-28
  • 2021-11-13
  • 2021-12-12
  • 2021-11-11
  • 2021-11-11
  • 2021-09-17
猜你喜欢
  • 2021-11-29
  • 2021-12-07
  • 2021-11-08
  • 2021-11-28
  • 2021-11-02
  • 2018-11-06
  • 2021-12-14
  • 2021-09-14
相关资源
相似解决方案