R-CNN论文翻译

参考博客:
【论文翻译】R-CNN

摘要

  过去几年,在权威数据集PASCAL上,物体检测的效果已经达到一个稳定水平。效果最好的方法是融合了多种图像低维特征和高维上下文环境的复杂结合系统。在这篇论文里,我们提出了一种简单并且可扩展的检测算法,可以将mAP在VOC2012最好结果的基础上提高30%以上,也就是达到了53.3%。我们的方法结合了两个关键的因素:

  • 为了实现目标检测和语义分割,将大型卷积神经网络用于图像的候选区域
  • 由于带标签数据稀少,我们先针对辅助任务使用了监督性的预训练,然后再对特征任务进行微调,实验证明产生了明显的性能提升

  因为我们采用了带CNN的候选区域筛选法,我们就把我们的方法叫做R-CNN:Regions with CNN features.我们也把RCNN效果跟Overfeat比较了下(OverFeat是最近提出的在与我们相似的CNN特征下采用滑动窗口进行目标检测的一种方法),结果发现RCNN在200类ILSVRC2013检测数据集上性能明显优于OVerFeat。本文完整系统源码

1. 介绍

  特征很重要。在过去几十年,不同视觉检测任务基本都建立在对SIFT和HOG特征的使用。但是如果我们回看在权威视觉检测任务比赛PASCAL VOC的性能变化,我们必须得承认在2010-2012年期间这个进展是很慢的,很多方法基本上都是通过建立复杂融合系统并且在已有成功方法上做一点小改变。
  SIFT和HOG是块方向的直方图特征,一种类似V1层(灵长类视觉通道的第一块皮质区域)的表示办法。但是我们也知道视觉辨认是发生在多个下游阶段,这就暗示了视觉辨认信息可能是层次性的,需要多阶段过程来计算更富有信息的特征。
  Fukushima的neocognitron,一种用于模式识别的受生物启发多层次性和平移不变模型,算是这方面最早的尝试。然而neocognitron缺少监督性训练算法。之后Lecun等人的工作证明了基于反向传播的随机梯度算法可以用于训练卷积神经网络(一种被认为是继承neocognitron的模型)。
  CNN在1990年代被广泛使用,但是之后由于支持向量机的崛起慢慢淡出研究者的视野。而后在2012年Krizhevshy在imagenet视觉识别挑战赛的优异表现重燃了人们对于CNN的兴趣。他们的成功是因为在120万带标签的数据集上训练了一个大型的CNN,并且对Lecun的CNN进行了一些改造,比如使用了RELU和Dropout。
  ImageNet比赛结果的重要性在ILSVRC2012的workshop上得到热烈的讨论。核心问题可以提炼成以下:CNN在ImageNet数据集的分类结果在何种程度上可以应用在PASCAL VOC目标检测的挑战赛上?
   本文回答了这个问题,消除了图像分类和目标检测的隔阂。这篇论文是第一篇表示:对比简单的HOG特征形成的检测系统,CNN可以在PASCL VOC数据集上带来大幅度效果提升。为了实现这个效果,我们主要集中在两个问题,第一是用深度网络进行物体定位,第二是用少量带标签检测数据训练一个大型模型。
   与图像分类不同的是,检测需要定位图像中很多物体。有一种方法是把定位问题当做回归问题(我的理解是直接回归最后定位框的坐标,而不借助于候选区域这个框来回归)。然而和我们同时进行的Szegedy研究结果表明这个策略可能在实践表现得不是很好(在VOC2007比赛中他们实现了30.5\%的mAP,然而我们的方法实现了58.5\%的mAP)。另一种方法是建立滑动窗口检测器。在过去几十年里,CNNs基本都在用这个方法,主要是在特定物体类别检测上,比如人脸或者行人。为了保持高维空间分辨率,这些CNNs通常只使用两个卷积层和池化层。我们也考虑用滑动窗口检测器。然而,我们网络层数很多。我们有五层卷积层,输入层有很大的感受野( 195×195 像素)和步长( 32×32 像素),这让使用滑动窗口方法进行精确定位成为了一项开放的技术挑战。
   所以我们采用了“recognition using regions”方法进行CNN定位问题的处理,这种方法已经被证明在物体检测和图像分割领域获得成功。在测试阶段,我们的方法在输入图像上产生了大概2000个类别独立的候选区域并且使用了CNN在每个候选区域提取了固定长度的特征向量,之后采用特定类别线性SVM对每个候选区域进行物体类别分类。我们使用了一项简单的技术(affine image wraping)来产生固定大小的CNN输入尺寸,无论候选区域的形状多大。图1展示了我们方法的大概模型和一些实验结果。由于我们的系统结合了带有候选区域的CNN,所以我们就把我们的方法叫做R-CNN:Regions with CNN features
  

  

  在这篇更新版本的论文中,我们在ILSVRC2013检测任务上,将我们的方法和最近提出的OverFeat方法进行对比。OverFeat使用了滑动窗口的CNN用于检测并且是目前ILSVRC22013检测任务的最好方法。我们表明:RCNN远远超过了Overfeat,mAP具体表现为:RCNN–31.4% OverFeat–24.3%。
  在检测问题的另一个挑战是带标签的数据太少并且现阶段可以用的数据量不足以训练一个大型的CNN。解决这个问题的传统方法是使用非监督性预训练,然后采用监督性地微调。这篇文章第二个主要贡献是表明在数据集稀少情况下,通过在大型辅助数据集ILSVRC上进行预训练而后通过在小数据集PASCAL上进行微调是一种有效学习高维CNN特征的方法。在我们的实验中,通过对检测任务进行微调能够把mAP提高8个百分点。在微调之后,我们的系统在VOC2010上实现了54%的mAP,作为对比,之前同样调优基于HOG特征的系统DPM的mAP是33%。我们同时建议读者去阅读DOnahue同期工作,在那篇论文里他展示了Krizhevshy的CNN可以在不用微调前提下用作一个特征提取的黑箱子,可以应用在几个识别任务比如场景分类,细粒度的子分类和领域适应等方面,并且表现很不错。
  我们的系统也很高效。唯一特定类型的计算是小型矩阵向量点乘和贪婪非极大值抑制。这个计算特性主要是因为特征是跨类别共享的,这使得计算复杂度比之前使用区域特征小了2个数量级的维度。
  了解我们方法的失败例子对于提高我们的方法有很重要的作用,所以我们借助Hoiem的检测分析工具进行结果分析。作为分析的直接结果,我们发现一个简单的框回归方法可以明显减少误定位率,而误定位率正是我们系统的主要误差来源。
  在进行技术分析之前,我们提醒大家由于RCNN是在区域上进行操作,所以它很自然可以移植到语义分割任务上。只需要微小的改动,我们也可以在PASCAL VOC分割任务上实现有竞争性的结果,平均在VOC2011测试集上达到47.9%的精确度。

2. 用R-CNN进行目标检测

  我们的目标检测系统由三个模块组成:

  • 第一个生成类别无关区域提案(region proposals),这些提案定义了检测时的候选检测集
  • 第二个模块是从每个区域提取固定长度特征向量的大型卷积神经网络
  • 第三个模块是一组特定类别的线性SVM

  在本节中,我们介绍每个模块的设计思路,描述其测试时使用情况,详细介绍其参数的学习方式,并给出在PASCAL VOC 2010-12和ILSVRC2013上的检测结果。

2.1. 模块设计

  区域提案 :
  各种最近的论文提供了生成类别无关区域提案的方法。例子包括:对象性(objectness),选择性搜索(selective search),类别无关对象提议(category-independent object proposals),约束参数最小化(constrained parametric min-cuts,CPMC),多尺度组合分组(multi-scale combinatorial grouping)和Cireşan等,通过将CNN应用于特定间隔的方块来检测有丝分裂细胞,这是区域提案的特殊情况。具体的区域提案方法对于R-CNN是透明的,但我们使用选择性搜索以便于与先前检测工作的对照比较。

  特征提取 :
  我们使用Krizhevsky等人提出的CNN的Caffe实现,从每个区域提案中提取4096维特征向量。将减去像素平均值的 227×227 分辨率的RGB图像通过五个卷积层和两个全连接层向前传播来计算特征
  为了计算区域提案的特征,我们必须首先将该区域中的图像数据转换为与CNN兼容的格式(其架构需要固定 227×227 像素大小的输入)。在许多可能的针对任意形状区域的变换中,我们选择最简单的。不管候选区域的大小或横纵比如何,我们将整个区域不保持横纵比缩放到所需的大小。在缩放之前,我们扩大了被缩放的区域,使得在缩放后,原始区域边界到现有区域边界宽度为p像素。如下图2所示:(缩放后的VOC 2007训练样本,图中使用p = 16)。其它缩放方案在附录A中讨论。

2.2. 测试

  在测试时,我们对测试图像进行选择性搜索,以提取大约2000个区域提案(我们在所有实验中使用选择性搜索的“快速模式”)。然后缩放每个区域,并通过CNN向前传播,以计算特征。最后,对于每个类,我们使用针对该类训练的SVM来对每个提取的特征向量进行评分。给定图像中的所有区域的得分,我们应用贪婪非极大值抑制(每个类别独立进行),在训练时学习一个阈值,如果其与得分较高的区域的重叠部分(IoU)高于这个阈值,则丢弃这个区域。

  性能分析 :
  两种性质使检测效率高。首先,所有CNN参数都在所有类别中共享其次,与其他常见方法比较,由CNN计算出的特征向量是低维度的,例如具有空间金字塔和视像单词的方法。UVA检测系统中使用的特征比我们(维度,360k对比4k)大两个数量级。
  这种共享的结果是计算区域建议和特征(GPU上的13秒/图像或CPU上的53秒/图像)的时间在所有类别上进行摊销。唯一的类特定计算是特征与SVM权重和非极大值抑制之间的点积。在实践中,图像的所有点积运算都被整合为单个矩阵与矩阵的相乘。特征矩阵通常为 2000×4096 ,SVM权重矩阵为 4096×N ,其中N为类别数。
  分析表明,R-CNN可以扩展到数千个类,而不需要使用如散列这样的技术。即使有10万个类,在现代多核CPU上产生的矩阵乘法只需10秒。这种效率不仅仅是使用区域提案和共享特征的结果。由于其高维度特征,UVA系统的速度将会降低两个数量级,并且需要134GB的内存来存储10万个线性预测器。而对于低维度特征而言,仅需要1.5GB内存。
  将R-CNN与Dean等人最近的工作对比也是有趣的。使用DPM和散列的可扩展检测。在引入1万个干扰类的情况下,每个图像的运行时间为5分钟,其在VOC 2007上的的mAP约为16%。通过我们的方法,1万个检测器可以在CPU上运行大约一分钟,而且由于没有逼近,可以使mAP保持在59%(详见3.2.)。

2.3. 训练

  监督预训练:
  我们仅通过使用图像级标记来区分性地对大型辅助数据集(ILSVRC2012分类)进行CNN预训练(此数据没有检测框标记)。使用开源的Caffe CNN库进行预训练。简而言之,我们的CNN几乎符合Krizhevsky等人的论文中的表现,ILSVRC2012分类验证集获得的top-1错误率高出2.2个百分点。这种差异是由于训练过程中的简化造成的。
  为了使CNN适应新任务(检测任务)和新域(缩放的VOC数据集窗口),我们仅使用VOC中缩放后的区域提案继续进行CNN参数的随机梯度下降(SGD)训练。除了用随机初始化的(N + 1)路分类层(其中N是类别数,加1为背景)替换CNN的ImageNet特有的1000路分类层,CNN架构不变。对于VOC,N = 20,对于ILSVRC2013,N = 200。我们将所有区域提案与检测框真值IoU ≥0.5的区域作为正样本,其余的作为负样本。我们以0.001(初始学习率的1/10)的学习率开始SGD,这样可以在不破坏初始化的情况下进行微调。在每个SGD迭代中,我们统一采样32个正样本(在所有类别中)和96个负样本,以构建大小为128的小批量。我们更倾向于采样正样本是因为它们与背景相比非常稀少。
  目标类别分类器:
  考虑训练二分类器来检测汽车。很明显,紧紧围绕汽车的图像区域应该是一个正样本,一个与汽车无关的背景区域应该是一个负样本。较不清楚的是如何标注部分重叠汽车的区域。我们用IoU重叠阈值来解决这个问题,在这个阈值以下的区域被定义为负样本重叠阈值0.3是通过在验证集上尝试了0,0.1,…,0.5的不同阈值选择出来的。我们发现选择这个阈值是很重要的。将其设置为0.5,mAP会降低5个点。同样,将其设置为0会将mAP降低4个点。正样本被简单地定义为每个类的检测框真值。
  一旦提取了特征并应用了训练标签,我们就可以对每类线性SVM进行优化。由于训练数据太大内存不够,我们采用标准的难分样本挖掘方法(hard negative mining method)。难分样本挖掘可以快速收敛,实际上所有图像遍历一边,mAP就停止增长了。
  在附录B中,我们将讨论为什么在微调与SVM训练中,正样本和负样本的数量不同。我们还讨论了涉及训练检测SVM的权衡,而不是简单地使用微调CNN的最终softmax层的输出。

2.4. PASCAL VOC 2012-12上的结果

  根据PASCAL VOC最佳实践,我们在VOC 2007数据集上验证了所有设计和超参数(详见3.2.)。对于VOC 2010-12数据集的最终结果,我们在VOC 2012 train上对CNN进行了微调,并在VOC 2012 trainval上优化检测SVM。我们将测试结果提交给评估服务器,对于两种主要算法变体(带有和不带有检测框回归)的每一种,都只提交一次。
  如表1所示,我们与其它四种很优秀的方法进行了比较,包括SegDPM,它将DPM检测器与语义分割系统的输出相结合,并使用了上下文重排。最具可比性的是Uijlings等人的UVA系统,因为我们的系统使用相同的区域提案算法。为了对区域进行分类,他们的方法构建了一个四级空间金字塔,并用密集采样的SIFT(扩展对准SIFT和RGB-SIFT描述符,每个矢量用4000字的码本量化),使用直方图交叉核心SVM进行分类。与其多特征非线性内核SVM方法相比,我们将mAP从35.1%提高到了53.7%,同时也快得多(详见2.2.)。我们的方法在VOC 2011/12测试中实现了接近的性能(53.3%的mAP)。
  

3. 可视化,消融和错误模式

3.1. 可视化学习到的特征

  第一层卷积核可以直观可视化,易于理解。它们捕获定向边缘和相对颜色。了解后续层次更具挑战性。 Zeiler和Fergus提出了一种有视觉吸引力的反卷积方法。我们提出一个简单(和补充)非参数方法,直接显示网络学到的内容。
  这个想法是在网络中列出一个特定的单元(特征),并将其用作它自己的目标检测器。也就是说,我们在大量的区域提案(约1000万)中计算这个单元的激活,将提案按激活从大到小排序,然后执行非极大值抑制,然后显示激活最大的提案。通过准确显示它激活了哪些输入,我们的方法让所选单元“自己说话”。我们避免平均,以看到不同的视觉模式,并深入了解这个单元计算的不变性。
  我们可以看到来自pool5的单元,这是网络最终卷积层的最大池化输出。pool5的特征图维度是 6×6×256=9216 。忽略边界效应,每个pool5单元在原始 227×227 像素输入中具有 195×195 像素的感受野。位于中央的pool5单元具有几乎全局的视野,而靠近边缘的则有一个较小的裁剪的视野。
  图3中的每一行都显示了在VOC 2007 trainval上进行微调的CNN中的pool5单元的前16个最大激活的区域,包括256个功能独特的单元中有6个(更多参见附录D)。选择这些单位以显示网络学习的有代表性的样本。在第二行,我们看到一个在狗脸和点阵列上触发的单元。与第三行对应的单元是红色斑点检测器。还有用于人脸和更抽象图案的检测器,例如文本和具有窗口的三角形结构。网络似乎学习了一种将少量类别调谐特征与形状,纹理,颜色和材质属性的分布式表示相结合的表示。随后的完全连接的层fc6具有对这些丰富特征的大量组合进行建模的能力。

3.2. 消融研究

  逐层分析性能,没有微调
  为了了解哪些层对于检测性能至关重要,我们分析了CNN最后三层在VOC 2007数据集上的结果。上一节简要描述了pool5。最后两层总结如下。
  层fc6完全连接到pool5。为了计算特征,它将pool5的特征图乘以一个 4096×9216 的权重矩阵(重构为9216维向量),然后加上一个偏置向量。最后应用ReLU线性整流。
  层fc7是网络的最后一层。这是通过将由fc6计算的特征乘以 4096×4096 权重矩阵来实现的,并且类似地加上了偏置向量并应用ReLU线性整流。
  我们首先来看看没有在PASCAL上进行微调的CNN的结果,即所有的CNN参数仅在ILSVRC 2012上进行了预训练。逐层分析性能(如表2第1-3行)显示,fc7的特征总体上差于fc6的特征。这意味着可以删除CNN参数的29%或约1680万,而不会降低mAP。更令人惊讶的是,即使使用仅6%的CNN参数来计算pool5特征,除去fc7和fc6也产生相当好的结果。 CNN的大部分表达能力来自其卷积层,而不是来自于更密集的全连接层。这一发现表明通过仅使用CNN的卷积层来计算任意大小图像的类似HOG意义上的密集特征图的潜在实用性。这种表示方式可以在pool5特征之上实现包括DPM在内的滑动窗口检测器。

  逐层分析性能,微调
  现在我们来看看在PASCAL上进行微调的CNN的结果。改善情况引人注目(表2第4-6行):微调使mAP提高8.0个百分点至54.2%。对于fc6和fc7,微调的提升比对pool5大得多,这表明从ImageNet中学习的pool 5特性是一般性的,并且大多数改进是从学习域特定的非线性分类器获得的。
  与近期特征学习方法的比较
  第一个DPM特征学习方法,DPM ST,使用“草图表征”概率直方图增强了HOG特征。直观地,草图表征是通过图像片中心的轮廓的紧密分布。草图表征概率在每个像素处被随机森林计算,该森林经过训练,将 35x35 像素的图像片分类为150个草图表征或背景之一。
  第二种方法,DPM HSC,使用稀疏码直方图(HSC)替代HOG。为了计算HSC,使用100个 7x7 像素(灰度)元素的学习词典,在每个像素处求解稀疏代码激活。所得到的激活以三种方式整流(全部和两个半波),空间合并,单位L2归一化,和功率变换( xsign(x)|x|α)(xsign(x)|x|α )。
  所有R-CNN变体的都优于三个DPM基线(表2第8-10行),包括使用特征学习的两个。与仅使用HOG特征的最新版本的DPM相比,我们的mAP提高了20个百分点以上:54.2%对比33.7%—相对改进61%。HOG和草图表征的组合与单独的HOG相比mAP提高2.5个点,而HSC在HOG上mAP提高了4个点(使用内部私有的DPM基线进行比较,两者都使用非公开实现的DPM,低于开源版本)。这些方法的mAP分别达到29.1%和34.3%。

3.3. 监测错误分析

  为了揭示我们的方法的错误模式,我们应用了Hoiem等人的优秀检测分析工具,以了解微调如何改变它们,并将我们的错误类型与DPM比较。分析工具的完整介绍超出了本文的范围,可以参考了解更多的细节(如“标准化AP”)。千言万语不如一张图,我们在下图(图4和图5)中讨论。
  

  最多的假阳性(FP)类型分布。每个图表显示FP类型的演变分布,按照FP数量降序排列。FP分为4种类型:Loc(定位精度差,检测框与真值的IoU在0.1到0.5之间或重复的检测)。Sim(与相似类别混淆)。Oth(与不相似的类别混淆)。BG(检测框标在了背景上)。与DPM相比,我们的Loc显著增加,而不是Oth和BG,表明CNN特征比HOG更具区分度。Loc增加的原因可能是我们使用自下而上的区域提案可能产生松散的定位位置,以及CNN进行全图像分类的预训练模型所获得的位置不变性。第三列显示了我们的简单边界回归方法如何修复许多Loc。
  

  
  对目标特点的敏感度。每个图显示六个不同目标特点(遮挡,截断,边界区域,纵横比,视角,局部可视性)内最高和最低性能的子集的平均值(跨类别)归一化AP。我们展示了我们的方法(R-CNN)有或没有微调(FT)和边界回归(BB)以及DPM voc-release5的图。总体而言,微调并不会降低敏感度(最大和最小值之间的差异),而且对于几乎所有的特点,都能极大地提高最高和最低性能的子集的性能。这表明微调不仅仅是简单地提高纵横比和边界区域的最低性能子集的性能(在分析之前,基于我们如何缩放网络输入而推测)。相反,微调可以改善所有特点的鲁棒性,包括遮挡,截断,视角和局部可视性。

3.4. 检测框回归

  基于错误分析,我们实现了一种简单的方法来减少定位错误。受DPM中使用的检测框回归的启发,我们训练一个线性回归模型使用在区域提案上提取的pool5特征来预测一个新的检测框。完整的细节在附录C中给出。表1,表2和图5中的结果表明,这种简单的方法解决了大量的定位错误,将mAP提高了3到4个点。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值