(RefineDet)Single-Shot Refinement Neural Network for Object Detection论文阅读笔记

RefineDet是一种结合了one-stage和two-stage目标检测器优点的新型单阶段检测框架,能实现比two-stage方法更高的准确性,同时保持高效。其由anchor refinement模块和目标检测模块组成,通过两步级联回归策略提高定位精度,使用转移连接块(TBC)整合特征。实验证明,RefineDet在PASCAL VOC 2007/2012和MS COCO数据集上达到SOTA效果,同时具备良好的运行速度。
摘要由CSDN通过智能技术生成

(RefineDet)Single-Shot Refinement Neural Network for Object Detection论文阅读笔记2018

Abstract

对于目标检测来说,two-stage的方法一直取得最高的准确率,而one-stage的方法有着高效的优点。为了综合两者的优点,克服两者的缺点,本文中,我们提出了一个新的机遇single-shot的检测器,叫做RefineDet,**可以取得比two-stage方法更高的准确率,同时保持与one-stage相当的效率。**RefineDet由两个内联的模块组成,anchor refinement模块和目标检测模块。前者的作用有两个,一是过滤掉negative anchors来减小分类器的搜索空间,而是粗略调节anchor的位置和尺寸,为接下来的回归器提供更高的初始化。后者将微调好的anchors作为输入,进一步进行回归,产生多分类的label。同时,我们设计了一个转移连接块来将anchor refinement模块的特征转移到目标检测模块中,用来预测位置、尺寸和目标类别。多任务loss函数使得我们可以端到端的训练整个网络。我们在PASCAL VOC 2007/2012、MS COCO数据集上进行了实验,验证了RefineDet可以以一个高效率方式达到SOTA。

1. Introduction

近年来随着深度神经网络框架的出现,目标检测已经取得了极大的发展。目前的网络可以分为两大类:one-stage和two-stage。前者速度较快,效率高,后者可以取得最好的表现,但是速度较慢。

最近一些one-stage的方法,尝试去解决类不平衡问题来提升准确率。Kong等人在特征图上使用先验objectness限制来减小搜索空间,Lin等人改造标准的交叉熵loss来解决类不平衡问题,来在一系列hard样本上进行训练,对于well-classified样本降低权重。

我们的观点中,现存的SOTA two-stage方法比one-stage有着三个优点:一是使用两阶段结构来先采样,解决类不平衡;二是使用两步级联来回归目标的box参数;三是使用两个阶段的特征来描述目标。

本文中,我们设计一个新的目标检测框架,RefineDet,来继承两种方法的优点,克服缺点。它通过使用两个内部连接的模块(图1)来提升了one-stage方法,这两个模块是anchor refinement module(ARM)和目标检测模块(ODM)。

ARM用来识别并移除negative anchor来减小搜索空间,并且粗略地调整anchor的位置和尺寸,来为后续的回归器更好的初始化。ODM模块将优化的anchor作为输入,然后进行回归和多分类。如图1所示,这两个模块模仿了two-stage方法的结构,因此继承了上面提到的三个优点。另外,我们设计了一个迁移连接块(transfer connection block,TBC)来将ARM中的特征转移到ODM中用来预测目标的位置尺寸和类别。

我们在PASCAL VOC2007、2012和MSCOCO上做了实验,RefineDet超过了SOTA方法,使用VGG-16作为backbone,它在VOC2007和2012上取得了85.8%和86.8%的准确率。使用ResNet-101,在COCO上取得了41.8%的准确率,超过了之前所有的两类方法。另外,RefineDet也是非常有效率的,测试输入为320和512时,它在NVIDIA Titan X GPU上可以达到40.2FPS和24.1FPS。

本文的主要贡献如下:

  • 我们引入了一种新的one-stage的目标检测框架,由两个内联模块ARM和ODM组成。它一颗取得比two-stage方法更好的表现,同时保持one-stage的高效。
  • 为了保证效率,我们设计了TCB来将ARM中的特征迁移到更多的任务上,比如ODM中预测目标位置、尺寸、label。
  • RefineDet在多个目标检测数据集上取得了SOTA效果。

2. Related Work

Classical Object Detectors.

早期的目标检测方法基于滑窗的流程,将人工设计的特征应用在dense图像网格中寻找目标。然而,随着深度卷积网络的出现,目标检测被基于CNN的检测器所统治,主要可以分为one-stage和two-stage两类。

后面就是主要介绍两类方法的特点和例子,这里就省略了。

3. Network Architecture

如图1中的整体结构所示,与SSD相似,RefineDet基于一个前向卷积网络,生成固定数量的box以及分数,分数表示这些box中不同类别目标出现的可能性,之后使用一个NMS来生成最后的结果。

RefineDet由两个内联的模块组成,ARM和ODM。ARM目标是将negative anchors移除,来缩小分类器的搜索空间,同样粗略调整anchor的位置和尺寸,以为后续的回归器提供更好的初始化;ODM目标是回归到准确的目标位置,并基于优化的anchor来生成label。

ARM这样构建:将分类层移除,增加两个基础网络的一些额外的结构(比如在ImageNet上预训练的VGG-16和ResNet-101)来满足我们的需要。ODM由TCBs的输出组成,之后接预测层(比如3×3卷积核),生成针对目标类别的分数以及相对于refined anchor的坐标偏移。下面解释RefineDet中的三个核心成分:

  • TCB,将ARM中的特征转移到ODM中用于检测。
  • 两步级联回归,来准确地回归目标的位置和尺寸。
  • 过滤negative anchors,早期将well-classified负anchor拒绝,来解决类不平衡的问题。

Transfer Connection Block.

为了连接ARM和ODM,我们引入TCB,来使得ARM和ODM可以共享特征。需要注意的是,对于ARM,我们只在与anchor相关的特征图上使用TCB。**TCB的另一个功能应用是通过对转移的特征中加入高等级特征,来整合大尺度语义context,来提升准确率。**为了两者之间匹配维度,我们使用反卷积操作来将高等级特征图扩大,按成分求和。然后,我们在求和之后增加了一个卷积层来确保用于检测的特征的辨别能力。TCB的结构如图2所示。

Two-Step Cascaded Regression.

目前的one-stage方法使用单步回归,基于多个不同尺度的特征图,来预测目标的位置和尺寸,这在一些场景中效果不佳,尤其是小目标。因此,我们提出两步级联的回归策略来回归目标的位置和尺寸。即,我们使用ARM来初步调整anchor的位置和尺寸,为ODM提供一个更好的初始化。我们对于特征图的每个网格分配n的anchor,每个anchor的初始位置相对于这个cell是固定的。在每个cell中,我们预测refined box相对于原来box的四个offsets,以及两个置信度分数,表示前景目标的存在概率。因此,我们在每个cell可以得到n个优化好的anchor。

在得到优化好的anchor之后,我们将它们送到ODM中相对应的特征图中来进一步进行预测,如图1所示。ARM和ODM相关联的特征图有着相同的维度。**我们计算c个类别分数和4个准确的目标offsets,这样对每个anchor box输出c+4。**这个过程与SSD中的默认框类似,然而,与SSD直接使用默认框用于检测不同,我们使用两步级联策略,这样结果更加准确,尤其是对于小目标。

Negative Anchor Filtering.

为了早期拒绝well-classified的负anchor来解决不平衡问题,我们设计一个negative anchor过滤机制。**在训练阶段,对于优化过的anchor box,如果它的nagetive置信度比预设的阈值更大,我们就在ODM训练的时候抛弃它。**也就是说,**我们只将优化过的hard negative anchor和优化过的正anchor送入ODM训练。**同时在测试阶段,如果一个优化过的anchor的负样本置信度超过阈值,那么在ODM阶段就抛弃。

4. Training and Inference

Data Augmentation。

我们使用了几个数据增强的手段,对原来的训练图像随机扩大、裁剪,使用额外的光度distortion和水平翻转来生成训练样本。

Backbone Network.

我们使用VGG-16和ResNet-101作为backbone网络,它们在ILSVRC CLS-LOC训练集上预训练过。我们将VGG-16的fc6和fc7转换为卷积层conv_fc6和conv_fc7,通过采样参数。

因为con4_3和conv5_3有着不同的特征图尺度,我们使用L2归一化来将它们中的特征尺度归一化到10和8,然后通过反向传播来学习尺度。同时,为了捕获高等级信息并且可以在多尺度上进行目标检测,我们在VGG-16之后增加了两个额外的卷积层以及在ResNet-101之后增加一个额外的残差块。

Anchors Design and Matching.

为了处理不同尺度的目标,我们选择了四个特征图,它们相对于原图的总步长分别为8、16、32、64,对应着四种尺度的anchor。每个特征图与一个anchor尺度相对应,每个尺度又有着三个长宽比(比如0.5、1.0、2.0)。在训练阶段,我们基于IoU来计算anchor和GT的联系,端到端训练网络。我们首先将每个GT匹配到有着最高IoU分数的anchor上,然后将anchor匹配到任意与其IoU大于0.5的GT上。

Hard Negative Mining.

在match步骤之后,大部分的anchor都是负样本,即使是对ODM,虽然一些简单的negatives已经被ARM拒绝了。与SSD类似,我们使用Hard negative mining来解决前景背景类不平衡的问题,使得负样本:正样本=3:1。

Loss Function.

RefineDet的loss函数由两部分组成,ARM的loss和ODM的loss。

**对于ARM,我们使用二分类标签(是目标/不是)来判断每个anchor,然后对anchor进行回归来调整位置和尺寸得到优化后的anchor。然后将优化后的anchor中negative置信度低于阈值的送入ODM来进一步预测。**我们将loss函数定义如下:

这里面i是每个mini-batch中该anchor的下标,li* 是该anchor的GT分类标签,gi* 是anchor对应的GT的位置和尺寸。pi和xi是预测anchor是目标的概率以及ARM中优化后的anchor的坐标。ci和ti是ODM中预测的目标类别和bbox的坐标参数。Narm和Nodm是两个阶段中正anchor的数量。二分类loss Lb是两个类别的交叉熵loss(有目标或没有),多类别分类lossLm是多个类别置信度上的softmax loss,我们是使用smooth L1loss作为回归loss Lr,当条件满足时输出1,否则输出0,因此这个式子表示对于negative anchor,忽略回归loss。

Optimization.

我们使用Xavier方法来随机初始化两个额外增加的卷积层的参数。训练中,我们设置默认batch size为32,使用0.9动量的SGD,0.0005的权值衰减。初始的学习率设置为0.001。、

Inference.

在测试阶段,ARM首先过滤出negative置信分数低于阈值的anchors,然后将剩余的anchors进行优化。然后ODM将优化后的anchor进行检测,输出400个最好的检测结果。最后使用非极大值抑制(IoU阈值0.45)来获得最好的200个检测结果输出。

5. Experiments

5.1. PASCAL VOC 2007

我们选择VGG-16作为backbone来构建RefineDet,在PASCAL VOC上进行实验。

我们比较了RefineDet和其他的SOTA目标检测方法的效果,如表1所示。

使用更小的输入尺寸(320 * 320),我们取得了80.0%mAP,是第一个在这么小的输入图像情况下取得超过80.0%mAP的方法。使用更大的输入512 * 512,RefineDet取得了81.8%mAP,超过了所有的one-stage方法,也超过了大部分two-stage方法。

为了忽略输入尺寸的影响进行公平对比,我们使用多尺度测试来评估RefineDet,取得了83.1%和人83.8%mAP,超过了SOTA。

5.1.1 Run Time Performance

在表1的第5列,我们列出了RefineDet和其他SOTA方法的测试速度。我们发现RefineDet可以达到40.3FPS(320输入)和24.1FPS(512输入)。这代表RefineDet是第一个实时的,且能在PASCAL VOC 2007上达到超过80%准确率的目标检测方法。与SSD、RON、DSSD和DSOD相比,RefineDet在特征图上使用了更少的anchors,然而取得了更好的效果,这得益于两个内联模块的设计,使得网络可以适用于不同尺度和长宽比的目标。同时,只有YOLO和SSD300比我们的RefineDet320更快,但是他们的准确率比我们低。总的来说,RefineDet取得了准确率和速度上的最好平衡。

5.1.2 Ablation Study

为了验证各个不同成分的有效性,我们设计了四个变体结构,然后在VOC2007上进行评价,如表3所示。为了比较公平,我们使用相同的参数设置,都使用320的输入。

Negative Anchor Filtering.

为了验证负anchor过滤的效果,我们设置anchor为negative的置信度阈值θ为1,这种情况下,所有的经ARM优化的anchor都会送入ODM。这使得准确率跌了0.5%。

Two-Step Cascaded Regression.

为了验证两步级联回归的有效性,我们重新设计了网络结构,直接使用anchor,而不通过ARM优化。这样使得准确率从79.5%跌到77.3%,这说明两步anchor级联可以明显提升效果。

Transfer Connection Block.

我们重新设计了一个网络,不使用TCB,重新定义了loss,来直接一次检测目标,像SSD中一样。我们发现,这样准确率下降了1.1%。主要原因是,模型可以继承来自ARM的辨别性特征,并将大尺度语义信息整合到一起来提升准确率。

5.2 PASCAL VOC 2012

表1同样展示了我们模型在VOC2012上的结果。输入为320 * 320的时候,RefineDet320取得了78.1%的mAP,甚至比大多数使用了1000 * 600输入的two-stage方法效果还好。使用512 * 512输入,准确率提升到了80.1%,超过了所有的one-stage方法,只比CoupleNet效果差。为了消除输入尺寸的影响,我们同样使用了多尺度测试,取得了SOTA效果,RefineDet320+(82.7%),RefineDet512+(83.5%)。

5.3 MS COCO

我们同样在MS COCO上对模型进行评价,我们同样使用了基于ResNet-101的RefineDet。

表2和表7展示了结果。

可以看到使用VGG-16的RefineDet320取得了29.4%的AP,比其他所有基于VGG16的方法效果都好,使用更大的输入尺寸512可以提升到33.0%。同时使用ResNet-101可以进一步提升表现。我们同样使用多尺度测试来进行比较,如表7所示,最好的表现是41.7%,达到了SOTA,超过了所有现存的one-stage和two-stage方法。另外,在RetinaNet中的Focal loss,与我们的方法是互补的,可以进一步提升我们方法的效果。

5.4 From MS COCO to PASCAL VOC

我们研究如何使用MS COCO数据集来帮助提升PASCAL VOC上的检测准确率。因为VOC数据集的目标类别是COCO上类别的子集,我们直接微调在MS COCO上预训练的模型即可。如表4所示,在使用多尺度测试之后,检测准确率提升到了85.6%、85.8%、86.0%、86.8%。通过这种方法,我们的模型取得了很好的效果,甚至超过了一些使用更深backbone的网络。

6. Conclusions

本文中,我们提出了一个single-shot refinement目标检测器,由两个内联模块组成,ARM和ODM。ARM用来过滤掉negative anchor,减小搜索空间,并粗略调整anchor的位置和尺寸。ODM用来将优化的anchor进行回归,来获得准确位置和尺寸,以及类别标签。整个网络可以端到端训练,使用多任务loss。我们在PASCAL VOC2007、2012以及MS COCO数据集上进行了实验,RefineDet取得了SOTA准确率,同时效率很高。未来,我们计划将RefineDet部署到更多检测任务中,比如行人、机动车、人脸等,并引入注意力机制来进一步提升表现。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值