RefineDet翻译及图解

Abstract

对目标检测来说,two-stage方法(如faster-rcnn)已经实现了最高的准确率,而one-stage方法(eg SSD)具有高效率的优势。为了在克服上述方法缺点的同时继承他们的优点,在本文中我们提出一个创新的基于single-shot的detector—RefineDet,其比two-stage方法的准确率更高,并保留了与one-stage相当的效率。RefineDet由两个相互连接的模块组成,即anchor refinemnet module和object detection module。具体来说,前者的目的是(1)过滤掉负Anchor,减少分类器的搜索空间;(2)粗调Anchor的位置和大小,为后续的回归器提供更好的初始化。
后者将前者refine后的anchor,进一步提高回归精度,预测多类标签。我们设计了一个传输连接块来传输anchor refinement模块中的特征来预测目标检测模块中对象的位置、大小和类标签。多任务损失函数使我们能够用end-to-end的方式训练网络。大量在PASCAL VOC 2007,PASCAL VOC 2012,MS COCO上的实验描述了RefineDet在高效率的同时实现了state-of-the-art的检测精度。
源码

Introduction

近年来,深度神经网络框架下的目标检测取得了很大的进展。目前顶尖的DNN检测器能分为两类:(1)two-stage 方法[3,15,36,41],(2)one-stage方法[29,35].在two-stage方法中,首先生成一组稀疏的候选对象框然后对他们进一步分类和回归。Two-stage方法在几个挑战性的基准上实现了top performances,包括PASCAL VOC和MS COCO[28].
One-stage方法通过对位置、尺度和长宽比的regular和密集采样来检测对象. 其主要优点是计算效率高。然而,其检测精度往往落后于two-stage方法,其主要原因之一是类不平衡问题[27 Focal loss]。
近年来的一些one-stage方法旨在解决类不平衡问题,提高检测精度。Kong等人的[23]使用卷积特征映射上的objectness prior constraint来显著减少对象的搜索空间。Lin等人通过重塑标准交叉熵损失,将训练集中在稀疏的hard样本集上,并对分类良好的样本损失进行降权,从而解决了class 不平衡问题。Zhang等人设计了一个最大输出标记机制,以减少由于类不平衡而导致的误报。
我们认为,当前顶尖的two-stage方法(如Faster-RCNN[36],R-FCN[5],FPN[26]),相对one-stage方法有以下几个优点

  1. 使用two-stage结构和抽样试探法处理类不平衡;
  2. 使用两步级联方法对object box参数进行回归;
  3. 使用two-stage特征来表述目标(如faster-RCNN使用RPN预测二分类和后面的Fast-RCNN预测多分类)。

在此工作中,我们设计了一个新的目标检测框架,称为RefineDet,来继承这两种方法的优点(one-stage and two-stage)并克服他们的缺点。通过使用两个相互连接的模块(见图1),即anchor refinement(细分)module(ARM)和object detection module (ODM),它改进了one-stage方法的体系结构。具体来说,ARM的作用是

  1. 识别并移除negative anchors来减少分类器的搜索空间;
  2. 粗调anchor的位置和大小,为后续的回归器提供更好的初始化。

ODM以refine后的Anchor为输入,进一步改进回归,并预测多类标签。如图1所示,这两个相互连接的模块模仿了two-stage结构,从而继承了上述三个优点,产生了准确高效的检测结果。此外,我们设计了一个传输连接块(transfer connection block)(TCB)来传输ARM中的特征(3ARM的功能主要是区分正Anchor和背景。我们设计TCB来转移ARM中的特征,以处理ODM中更具挑战性的任务,即,预测准确的目标位置,大小和多类标签),以预测ODM中对象的位置、大小和类标签。多任务损失函数使我们能够用end-to-end的方式训练整个网络。

在这里插入图片描述

图1、RefineDet的结构。只显示了用于检测的层。灰绿色平行四边形表示与不同特征层相关联的refined anchor. 这些星星代表了refined anchor boxes的中心,Anchor没有规整地铺在图像上

  \

在PASCAL VOC 2007、PASCAL VOC 2012和MS COCO基准上进行的大量实验表明,RefineDet的性能优于SOTA的方法。具体来说,它在VOC2007和VOC2012上用VGG-16网络实现了85.8%和86.8%的mAPs.与此同时,它通过ResNet-101在MS COCO test-dev上获得了41.8%的AP4,超过了之前发布的one-stage和two-stage方法的最佳结果. 另外,RefineDet时间效率高,即,它在NVIDIA Titan X GPU上以40.2 FPS和24.1 FPS的速度运行,inference输入大小分别为320×320和512×512。
这项工作的主要贡献概括如下

  1. 提出了一种新的one-stage目标检测框架,该框架由两个相互连接的模块组成。即ARM和ODM。这使得性能比two-stage方法更好,同时保持了one-stage方法的高效率。
  2. 为了保证高效,我们设计了TCB转移ARM中的特征来处理更具挑战性的任务,即,在ODM中预测准确的对象位置、大小和类标签。
  3. RefineDet实现了通用目标检测的最新SOTA成果(PASCAL VOC 07+12,MS COCO)

Related Work

Classical Object Detectors

早期的目标检测方法是基于滑动窗口范式的,应用手工特征和分类器在密集的图像网格上寻找目标。Viola和Jones[47]是最成功的方法之一,他们利用Haar feature和AdaBoost训练了一系列的级联分类器进行人脸检测,达到了令人满意的准确率和高效率;DPM[12]是另一种使用多尺度可变形部件模型的mixtures来表示多变的object class的流行方法,多年来在PASCAL VOC上保持领先。然而,随着深度卷积网络的到来,目标检测任务很快被基于cnn的检测器所主导,大致可以分为两类,即two-stage和one-stage方法。
在这里插入图片描述

Two-Stage Approach

Two-stage方法包括两部分,第一部分(如Selective Search [46],EdgeBoxes [56], DeepMask [32, 33], RPN [36])生成一组稀疏的候选object proposals,第二部分使用卷积网络确定精确的对象区域和相应的类标签。值得注意的是,two-stage方法(如R-CNN [16], SPPnet [18],Fast R-CNN [15] to Faster R-CNN [36])在几个具有挑战性的数据集上获得领先的表现(PASCAL VOC 2012 [11] and MS COCO [28]),在此之后,提出了许多有效的技术来进一步提高性能,如结构图[5,25,55],训练策略[31,41,48,50],上下文推导[1,14,40,51]和多层利用[3,24,26,42].

One-Stage Approach

One-stage法由于其高效率,近年来受到越来越多的关注. Sermanet等人[38]提出OverFeat,基于深卷积神经网络的分类、定位和检测, 端到端的训练从原始像素到最终类别. Redmon等人[34]使用一个前馈卷积网络YOLO来直接预测对象类别和位置,它非常快;在此基础上,提出了YOLOv2[35]来改进YOLO的几个方面,即在所有卷积层上添加批量归一化,使用高分辨率分类器,使用带Anchor的卷积层来预测bounding box,而不是全连接层等等;Liu等人[29]提出了SSD方法,该方法将不同尺度的Anchor分散到一个卷积网络的多个层中,强制每个层专注于预测固定尺度的目标;DSSD[13]通过反卷积将额外的上下文引入到SSD中,以提高准确性;DSOD[39]根据SSD的网络结构,设计了一个高效的框架和一系列原则来从零学习对象检测器。为了提高精度,一些单阶段方法[23,27,54]旨在通过重新设计损失函数或分类策略来解决极端的类不平衡问题。One-stage检测器虽然取得了一定的进展,但其精度仍低于two-stage。

Network Architecture

参考图1中所示的整个网络结构,与SSD[29]类似,RefineDet基于一个前馈卷积网络,该网络产生固定数量的bounding boxes和表示这些boxes中存在不同对象classes的分数,然后通过非极大值抑制来产生最终结果。RefineDet由两个相互连接的模块组成,即ARM和ODM。ARM的目的是去除负Anchor,减少分类器的搜索空间,同时粗调Anchor的位置和大小,为后续的回归器提供更好的初始化;ODM的目的是回归精确的对象位置,并基于refined Anchor预测多类别标签。通过去除分类层并加入一些基础网络的辅助结构(即VGG-16 [43] and ResNet-101 [19] pretrained on ImageNet [37])来构造ARM以满足需要。ODM由TCBs的输出和预测层组成(kernel大小为3×3的卷积层),生成object classes的分数和相对于refined Anchor坐标的形状偏移量。下面解释RefineDet中的三个核心组件:(1) 传输连接块(TCB),将特征从ARM转为ODM进行检测;
(2) 两步级联回归,精确地回归对象的位置和大小;(3) 负Anchor过滤,及早reject分类良好的负Anchor,缓解不平衡问题。

Transfer Connection Block

为了连接ARM和ODM,我们引入TCBs来将ARM中不同层的特征转换为ODM所需的形式,以便ODM可以共享ARM中的特征。值得注意的是,在ARM中,我们只在与Anchor相关的feature maps上使用TCBs。TCBs的另一个功能是将大尺度上下文[13,26]进行整合,将高层次特征加入到被转换的特征中(adding the high level features to the transferred features),提高检测精度。为了匹配它们之间的维度,我们使用反卷积操作来放大high-level特征图,并以逐元素的方式对它们求和。在求和后加入卷积层,以保证检测特征的可分辨性。TCB的结构如图2所示。

Two-Step Cascaded Regression

目前的one-stage方法[13,23,29]依赖于 基于不同尺度的特征层 的one-step回归来预测对象的位置和大小,在一些具有挑战性的场景中这是相当不准确的,特别是对于小对象。为此,我们提出了一个two-step级联回归策略来回归对象的位置和大小。也就是说,我们首先使用ARM来调整Anchor的位置和大小,为ODM中的回归提供更好的初始化。具体来说,我们将n个Anchor boxes与feature map上的每个regularly划分的cell关联起来, 每个Anchor boxes相对于其对应cell的初始位置是固定的,在每个feature map cell中,我们预测了四个相对于原始tiled(平铺)Anchor的refined anchor boxes的偏移量,以及两个表示这些boxes中存在前景对象的置信度评分, 因此,我们可以在每个feature map单元中生成n个refined anchor boxes。
如图1所示,在得到refined anchor boxes后,我们将其传递给ODM中相应的feature maps,进一步生成对象类别,精确的对象位置和大小。ARM和ODM中对应的feature maps具有相同的维度。我们计算了c个class score和相对于refined anchor boxes的4个对象的精确偏移量,每个refined anchor boxes产生c + 4输出来完成检测任务。此过程类似于SSD中使用的默认框,然而,与SSD[29]直接使用常规tiled的默认框进行检测不同,RefineDet使用两步策略,即, ARM生成精炼后的anchor boxes,ODM将精炼后的anchor boxes作为输入进行进一步检测,使得检测结果更加准确,特别是对于小对象。

Negative Anchor Filtering

为了今早reject分类良好的负Anchor,缓解不平衡问题,我们设计了一个负Anchor过滤机制。具体来说,在训练阶段,对于精炼的Anchor boxes,如果其负置信度大于预设阈值θ(经验上设Θ=0.99),我们将在训练ODM时抛弃它。也就是说,我们只通过精炼的hard负Anchor boxes和精炼的正Anchor boxes来训练ODM。与此同时,在推理阶段,如果一个精炼的Anchor boxes被赋予了负的置信度>θ,它将在ODM检测被丢弃。

Training and Inference

Data Augmentation

我们使用[29]中提出的几种数据增强策略来构建一个鲁棒模型以适应对象的变化,([29] W. Liu, D. Anguelov, D. Erhan, C. Szegedy, S. E. Reed,C. Fu, and A. C. Berg. SSD: single shot multibox detector.In ECCV, pages 21–37, 2016),也就是说,我们随机扩展和裁剪原始训练图像,附加随机光度失真[20]和翻转来生成训练样本,参考[29]获得更多细节。

Backbone Network

我们使用VGG-16[43]和ResNet-101[19]作为我们RefineDet中的骨干(backbone)网络,它是在ILSVRC CLS-LOC数据集[37]上预训练的。值得注意的是,RefineDet也可以在其他预训练好的网络上工作,比如Inception V2[22]、Inception ResNet[44]和ResNeXt-101[49]。与DeepLab-LargeFOV[4]类似,我们通过下采样参数将VGG-16的fc6和fc7转换为卷积层conv_fc6和conv_fc7。因为与其他层相比,conv4_3和conv5_3具有不同的特征尺度,我们使用L2正则化[30]来缩放conv4_3和conv5_3中的特征规范到10和8,然后在反向传播期间学习尺度(scales)。同时,捕获high-level信息并在多个尺度上进行对象检测。我们还分别增加了两个额外的卷积层(即 conv6_1和conv6_2)到截断的VGG-16和一个额外的残差块(即res6)到截断的ResNet- 101的末尾。

Anchors Design and Matching

为了处理不同尺度的对象,我们为VGG-16和ResNet- 1015选择了4个特征层,它们的总步幅分别为8、16、32和64像素,并与几个不同尺度的Anchor相关联进行预测。每个特征层都与一个特定的anchors尺度(该尺度是对应层总步幅的4倍)和三个纵横比(0.5,1.0,2.0)相关联。我们采用了在[54]中不同层的anchor scales设计,保证了不同的anchor scales在图像上具有相同的平铺密度[52,53]。同时,在训练阶段,基于jaccard overlap[7]确定anchor和ground truth boxes的对应关系,并对整个网络进行端到端的训练。具体来说,我们首先将每个ground truth与具有最佳重叠分数的anchor box匹配,然后将anchor box与重叠大于0.5的任何ground truth匹配。
5(对于VGG-16网络,使用conv4_3、conv5_3、conv_fc7和conv6_2特征层进行预测。而对于ResNet-101,则使用res3b3、res4b22、res5c、res6进行预测)

Hard Negative Mining

在匹配步骤之后,大多数anchor boxes是负的,即使对于ODM,一些easy负anchor被ARM丢弃。与SSD[29]相似,我们使用难负例挖掘来缓解极端的前-后类别不平衡,我们选择了一些具有最高损失值的负anchor boxes,使负例:正例低于3:1,而不是在训练中使用所有的负anchor或随机选择负anchor。

Loss Function

(tips: 损失函数包括ARM loss 和 ODM loss,对于ARM,包括cross-entropy(二分类)和smooth-L1。对于ODM,则是softmax-loss和smooth-L1)
RefineDet的损失函数由两部分组成,即ARM的损失和ODM的损失。对于ARM,我们为每个anchor分配一个二类标签(是否为对象),并同时回归其位置和大小以获得精炼的anchor。然后,我们将负置信度小于阈值的精炼的anchors传递给ODM,进一步预测对象类别和准确的对象位置和大小。根据这些定义,我们将损失函数定义为:

在这里插入图片描述
i是小批量中anchor的索引, 是i anchor的ground truth类标签。 和 是预测的anchor i是一个物体的置信度,以及ARM中anchor i的精炼(refine)后的坐标。 和 是ODM中预测的对象类别和边界框的坐标。 分别是ARM和ODM中正anchor的数量,二分类损失 是两个类(对象和非对象)之间的交叉熵/log损失,多分类损失 是多个类别置信度的softmax loss。与Fast R-CNN[15]类似,我们使用smooth
L1损失作为回归loss 。当条件为true时( anchor不是负例),方括号指示函数 输出1,否则是0. 因此 表明,对于负anchors回归损失被忽略。值得注意的是,
N a r m N_{arm} =0,我们设置:

在这里插入图片描述
N o d m N_{odm} =0,我们设置:
在这里插入图片描述

Optimization

如前所述,我们RefineDet方法中的主干网络(如VGG-16和ResNet-101)是在ILSVRC CLS-LOC数据集上进行预训练的[37]。我们使用“xavier”方法[17]来随机初始化基于VGG-16的RefineDet额外添加的两个卷积层中的参数(conv6_1 and conv6_2), 并从基于ResNet-101的RefineDet标准差为0.01的零均值高斯分布中绘制额外残差块(res6)的参数。训练中默认batch size设置为32。然后,整个网络使用0.9momentum和0.0005的权重下降的SGD进行微调。我们设置初始学习率为10-3,对于不同的数据集,使用稍微不同的学习率衰减策略.

Inference

推理阶段,ARM先过滤掉规则的平铺的负置信度分数大于阈值θ的anchor,然后refine剩余anchors的位置和大小。之后,ODM接收这些refined anchor,并输出每幅图像的前400高置信度检测结果。最后,我们应用了交并比为0.45的NMS,并保留了每幅图像的前200个高置信度的检测结果,来产生最终results。

Experiments

在三个数据集上进行了实验:PASCAL VOC 2007, PASCAL VOC 2012 and MS COCO。PASCAL VOC和MS COCO数据集分别包含20和80个类。PASCAL VOC中的类是COCO中类的子集。

PASCAL VOC 2007

所有模型均在VOC 2007和VOC 2012训练集上训练,在VOC 2007测试集上测试。们将前80k迭代的学习率设置为10−3,其衰减为10−4和10−5,分别训练另一个20k和20k的迭代。训练中默认使用32的batch size,对于PASCAL VOC数据集上的所有实验只使用VGG-16作为backbone,包括VOC 2007 and VOC 2012。
我们在表1中将RefineDet6与最先进的检测器进行比较,在低维度输入下(320×320),RefineDet产生80.0%mAp,这是第一个用如此小的输入图像实现80%以上mAP的方法,比几个当前的检测器更好。通过使用512×512的大输入,RefineDet实现了81.8%mAp,超过了所有的one-stage方法,如RON384 [23], SSD513 [13], DSSD513 [13]等等。与two-stage方法相比,RefineDet512比除了CoupleNet之外的大多数表现更好,CoupleNet[55]基于ResNet-101,使用的输入大小(1000×600)>我们的RefineDet512. 正如在[21]中指出的,输入大小对检测精度有显著影响。原因是高分辨率的输入使得探测器能清楚地“看到”小物体,从而增加检测成功率。为了减少输入大小对公平比较的影响,我们使用多尺度测试策略来评估RefineDet算法,实现了83.1% (RefineDet320+)和83.8% (RefineDet512+) mAPs,比SOTA方法更好。
在这里插入图片描述

Run Time Performance

我们在表1的第五列给出了RefineDet和最先进的方法的推理速度。使用NVIDIA Titan X、CUDA 8.0和cuDNN v6对批量大小为1的机器进行速度评估。如表1所示,我们发现RefineDet处理图像的时间分别为24.8ms (40.3 FPS)和41.5ms (24.1 FPS),输入大小分别为320320和512512。据我们所知,RefineDet是第一个在PASCAL VOC 2007上实现检测准确率超过80%的实时方法。与SSD、RON、DSSD和DSOD相比,RefineDet在特征图上关联的anchor boxes更少(SSD512中的24564和RefineDet512中的16320),然而,RefineDet仍然能够达到最高的精度和高效率,这主要归功于两个相互连接的模块的设计(例如,两步回归),这使得RefineDet能够适应对象的不同尺度和长宽比。同时,只有YOLO和SSD300比我们的RefineDet320稍快一些,但它们的准确率比我们低16.6%和2.5%,总之,RefineDet在准确性和速度之间取得了最佳的平衡。

Ablation Study

为了证明不同因素在RefineDet中的有效性,我们构建了四个变量,并在VOC 2007上对它们进行了评估,如表2所示。具体来说,为了公平的比较,我们在计算中使用了相同的参数设置和输入大小(320×320),所有模型在VOC 2007 and VOC 2012训练集上训练,VOC 2007测试集上测试。
在这里插入图片描述

Negative Anchor Filtering

为了证明负anchor过滤的有效性,我们在训练和测试中设置了anchor是负的置信度阈值θ为1.0,在这种情况下,所有refined anchor将被发送到ODM进行检测, RefineDet的其他部分保持不变。去掉负anchor过滤会导致mAp下降0.5%( 80.0% vs. 79.5%)。原因是这些分类良好的负anchor在训练中大多会被过滤掉,这在一定程度上解决了class不平衡的问题.

Two-Step Cascaded Regression

为了验证两步级联回归的有效性,我们重新设计了网络结构,直接使用regularly paved anchors,而不是从ARM中refined anchor(见表2第四列), 如表2所示,我们发现mAP从79.5%减少到了77.3%,这种急剧下降(2.2%)表明两步anchor级联回归有助于提高性能。

Transfer Connection Block

我们通过在RefineDet中切割TCB并重新定义ARM中的损失函数构建一个网络来直接检测多类对象,就像SSD一样,来演示TCB的效果。模型的检测精度见表2第五列,我们比较了表2第四列和第五列的结果(77.3% vs. 76.2%),发现TCB将mAP提高了1.1%。主要原因是该模型可以继承ARM的判别特征,利用TCB集成大尺度上下文信息,提高检测精度。
在这里插入图片描述
其他PASCAL VOC 2012与COCO上的分析大同小异,都很强。

Conclusions

本文提出了一种基于single-shot refinement神经网络的检测器,该检测器由两个相互连接的模块组成(ARM和ODM)。ARM的目的是过滤掉负anchor,减少分类器的搜索空间,并粗调anchors的位置和大小,为后续的回归器提供更好的初始化. ODM以前部ARM refined anchor作为输入,回归准确的目标位置和尺寸,预测相应的多类标签。整个网络以多任务损失进行端到端训练。我们分别在PASCAL VOC 2007、PASCAL VOC 2012和MS COCO数据集上进行了多次实验,证明RefineDet能够高效、准确地实现SOTA的检测结果。在未来,我们计划使用RefineDet来检测其他一些特定类型的对象,例如行人、车辆和人脸,并引入RefineDet中的注意力机制来进一步提高性能。

思考

  1. ARM和RPN的功能相差无几,用于剔除过多的负样本和粗略调整anchor位置和尺寸(都是二分类),ARM由多层不同尺度的特征输出,而普通的RPN只有一个,但对于Mask-RCNN来说,其中的RPN输出了不同feature maps的ROI proposals,用于检测不知效果如何。
  2. ODM将refine过的anchor进行进一步的微调,接收来自ARM的refined anchor,类似于RPN的proposal,类似于FPN的处理,浅层的feature map 融合了高层feature map的信息,后预测bbox是基于每层feature map(每个蓝色矩形块)进行,最后将各层结果再整合到一起。此处提高了对小物体的检测
  3. TCB是将不同层次的ARM特征转化为ODM,将高层次的特征通过反卷积操作,使特征图之间的尺寸匹配,然后与低层次的特征相加。(这里的操作类似于Mask-RCNN的backbone,其中resnet101+FPN的连接部分就和TCB的功能类似)
  4. 类似two-stage的处理方法,但是去掉了ROI pooling,减少了耗时,该框架为全卷积实现。
  5. 速度和SSD相近,精度明显更高,精度更高没什么好说的,速度在多了下面一部分卷积层和反卷积层的情况下没有明显下降,作者分析有两点原因,anchors较少以及基础网络后的附加网路层数少、特征选取层更少

图解

在这里插入图片描述

发布了30 篇原创文章 · 获赞 1 · 访问量 2428

猜你喜欢

转载自blog.csdn.net/McEason/article/details/102766774