R-CNN目标检测的奠基性文章,学习目标检测必看的经典论文之一,后续有Fast R-CNN,Faster R-CNN一系列论文。

目前网上能找到的论文翻译版本要么不全,要么不是最新版本的(论文从2014年发表后,又经过了多次修改完善,已经有五个版本了,最新版为v5版本)

本文翻译的是R-CNN的最新版本也就是v5版本

原论文跟翻译文档版下载请戳 https://download.csdn.net/download/weixin_43912994/11783627
论文历年版本见源网站 https://arxiv.org/abs/1311.2524

注:论文为本人个人翻译,自身学习使用。可能存在错误,只供参考,欢迎指正

R-CNN:《Rich feature hierarchies for accurate object detection and semantic segmentation》2014
【用于精确物体定位和语义分割的丰富特征层次结构】

目标检测经典论文R-CNN最新版本(v5版)全面中文翻译

摘要

目标检测,在近几年的权威标准的Pascal VOC数据集上已经趋于稳定。最好的方法是通常是结合了多维低层图像特征跟高维语义特征的复杂融合系统。在这篇文章中我们提出了一种简单的可扩展的检测方法,并且已经实现了在VOC2012数据集上,相比于之前的最佳方法mAP上30%的提高,达到了53.3%。我们的方法结合了两个关键的要素。1. 在候选区域自底向上地应用的高容量卷积神经网络,用于定位和分割目标。2.当带标签的训练数据缺失时,先对辅助任务进行有监督的预训练,在对特殊领域进行微调,就能产生明显的性能提升。因为我们结合了候选区域跟CNNs,我们把我们的方法称为R-CNN(Regions with CNN features)。我们也比较了R-CNN跟OverFeat(一个最近提出的基于相似的CNN结构中应用滑动窗口检测的方法),我们发现R-CNN大幅度超过其,在200类的ILSVRC2013检测数据集上。源代码的实现见:http://www.cs.berkeley.edu˜rbg/rcnn

1.介绍

特征是重要的,在过去十几年的进程中,各种世界识别任务大量的应用了SIFT跟HOG的方法。但是如果我们仔细观察权威的视觉识别任务的表现,比如Pascal VOC目标检测,就会发现总体的进程在2010到2012这段时间放缓。基本上只有通过建立融合系统获得小收获,或者在已经成功的方法上应用进行小的改进。

SIFT跟HOG是模块化的方向直方图。类似于人类视觉路径的初级皮层中的V1复杂细胞。但是我们也知道,识别是发生在下游阶段的(先看到特征再意识到是什么东西)。这表明对于视觉识别而言更有价值的计算特征是层次化的,多阶段的。
Neocognitron(新认知机)是一种受生物启发的,用于模式识别的,层次化、移动不变模型,是这个方面(SIFT跟HOG)最早的尝试。但是neocognitron缺少监督训练算法,R.,L.等人的工作表明了,基于随机梯度下降的BP算法对于训练CNN是有效的,被认为是继承了neocognitron。

CNNs在1990s被广泛应用但是随着SVM的崛起,退出了主流。2012年K等通过在ImageNet比赛中展示的更高的图像分类准确度,重新点燃了对CNN研究的兴趣。他们成功的在120万张带标签的图片上构建了一个巨大的CNN网络,却结合了Lecun的CNN进行改进(比如整流非线性,丢弃正规化)。

在ILSVRC2012的work中ImageNet结果的重要性引发了大量的争论。争论的核心焦点在于:在多大程度上CNNs在ImageNet的分类结果能拓展到Pascal VOC的目标检测挑战上来。

我们通过练接图像分类与目标检测的缺口来回答这个问题。本文首次提出了CNN能显著提高Pascal VOC的性能(相比于简单的HOG类特征)。为实现这个结果我们关注两个问题:用深度网络定位物体,跟用小数量的标注数据集来训练大规模(网络)模型。

不同于图像分类,检测中要定位一张图片中的许多目标。一个方法是将框定位当作一个回归问题,然而与我们同时进行的Sz的工作证明了,这种策略在实际工作中并不work(他们在VOC2007上的mAP为30.5%,我们是58.5%),一个可代替的方法是构建一个滑动窗口探测。CNN使用这种方法已经有至少20年了。通常情况下用于特定的目标检测情况中,比如人脸识别或行人识别。为了维持空间分辨率,这些CNN通常由2层卷积与2层池化。但是我们的网络有更深的网络单元——5层卷积,更大的接受野,195195跟步长3232。这使得应用滑动窗口精确定位成为一个技术挑战。

我们通过操作“候选区域”范式来解决CNN定位问题。这种方法可以同时解决目标检测与语义分割。测试的时候,我们的方法对输入的图片产生2000多个独立的候选区域类。使用CNN来对每一个候选区域提取固定尺寸的特征向量。然后使用特定种类的线性SVM来进行分类。我们使用简单的技术(放射图像变形),来将每一个候选区域变成固定大小的CNN输入,不在乎区域的形状。Fig.1展示了方法的全过程。突出了一些结果。因为我们的系统结合了候选区域(region proposal)与CNN,所以命名为R-CNN。

检测中面临的第二个问题是缺乏带标签的数据。目前可用的数量不足以支撑训练大型的CNN。这个问题的常规解决方法是使用无监督的预训练,加上有监督的调优。本文的第二个核心贡献就是说明了在大的辅助数据集上进行有监督的预训练,再在小数据集上对特定问题进行微调,能够有效的解决如何在数据集少的情况下训练大规模CNN的问题。在我们的实验中对检测的调优提高了mAP8个百分点的性能。调优后我们的系统在VOC 2010上达到了54%的mAP(相比于33%的以HOG为基础了DPM模型),我们也同时指出了K的CNN能作为一个黑盒特征提取器,在一些识别任务中产生极好的性能,比如场景识别,细粒度子分类和迁移学习。

我们的系统也是十分的高效,仅有的特殊类计算是由适当的小型矩阵相乘和贪婪NMS(非极大值抑制),计算性能是由不同类别的共享特征得出的,并比之前的区域特征减少了两个数量级的维度。

理解方法的失败模型也是批判性的提高他,所以我们从H的检测分析工具中报告结果中作为即使的分析结果,我们证实了一个简单的边框回归方法能明显减少由明显的错误模型产生的错位。

在解释技术细节之前,我们注意到由于R-CNN操作在区域上,所以能自然拓展到语义分割任务上,只要做小的修正,我们就能达到PascalVOC分割任务的比赛结果,在VOC2011测试集上能达到47.9%的分割准确率。


2.目标检测与R-CNN

我们的目标检测系统由三个模块组成,第一块是生成独立类别的候选区域,这些候选定义了一组我们检测器(R-CNN)而言可用的候选检测(区域)。第二个模块是一个大型的CNN,用于从每个区域提取固定长度的特征向量。第三个模块是一组特定类的线性SVM。在这个单元中我们将展示每一个模块的设计决策,描述他们的测试阶段的用法,详细的介绍他们他们的参数学习,并且给出在PascaVOC2010-12跟ILSVRC2013上的检测结果。

2.1模块设计

候选区域:最近的许多论文中提供了生成独立类别的候选区域的方法;例如objectness(物体性),selective search(选择性搜索),category-independent object proposals(类别无关物体推荐),constrained parametric min-cuts(受限参最小剪切, CPMC),multi-scal combinatorial grouping(多尺度联合分组),以及Ciresan等人的方法。通过应用CNN在规律空间裁剪来检测有丝分裂的细胞,可以看作是候选区域的一个特例。当R-CNN的特定候选区域方法不可知时,我们使用Selective search算法以便于能与之前的检测工作进行控制(变量)比较。

特征提取:我们使用Caffe框架(使用由Krizhevsky等人描述的CNN算法)从每个候选区域中提取了4096个维度的特征。这些特征是从227*227的RGB图像通过5个卷积层,2个全连接层得到了。我们给读者提供了更详细的网络结构描述。

为了计算每一个候选区域的特征我们必须首先转换候选区域的图像尺寸,使其能够兼容CNN(要求输入固定227✖227像素大小)。在众多的任意候选区域形状转换方法中,我们选择了最简单的一种。无论候选区域的尺寸与长宽比,我们都把候选区域边界框扭曲使其满足要求。在扭曲之前,我们扩大了边框,使扭曲尺寸变为扭曲图像的初始框的周围存在一个p像素(padding)。图2展示了一部分扭曲训练区域的例子。具体的扭曲(方法)在附录A中会被讨论。

2.2测试阶段检测

在测试阶段,我们在测试图片上运行Selective search算法,提取大约2000个候选区域(我们在所有的实验中都使用的是Selective Search算法的快速模式)。我们扭曲了每一个候选(区域),通过CNN前向传播来计算特征。然后,对于每一类提取到的特征使用SVM训练得分。将一张图片上所有候选区域计算得分后,我们应用贪婪非极大值抑制算法,并且拒绝了一些与高分区域的重合IOU大于临界值的(候选区)。

运行阶段测试:2个属性是的检测有效。首先,所有的CNN参数都是跨类别共享的;第二,CNN计算出的特征向量与其他常用方法相比是低维度的(比如用视觉文字袋编码的空间金字塔)。在UVA检测系统中使用的特征就比我们的要大出2个数量级。(360K VS 4K)。

这种共享的结果是,花费在计算候选区域和特征上的时间(GPU上13秒一张图,CPU上53秒一张图)是平摊在所有类上的。仅有的特殊类的计算是特征跟SVM权重的点积,以及非极大值抑制。在实际中,一张图所有的点积被批量化为单独举矩阵相乘,特征矩阵通常是20004096,SVM的权重矩阵是4096N,其中,N是指类别数量。

这个分析表明在没有借助近似技术(比如hashing)的情况下,能扩展到成千上万个类。即使由100K个类,在现代多核CPU的基础上,矩阵乘法也只需花费10S便能得出结果。这种高效率不仅仅来源与候选区域跟共享特征。UVA系统由于其高维度的特点,存储100K个线性预测器会慢上2个数量级的速度,且需要134GB的内存需求。而我们的低维度特征仅需要1.5GB内存。
对比R-CNN与最近Dean等人的工作,也能发现一些有趣的事。在使用DPMs跟hashing技术的扩展检测中,他们在VOC2007的数据集上引入了10K个干扰类,每一张图运行5分钟,最终达到mAP大约在16%。而我们的方法,10K个干扰类能在CPU上一分钟运行完,并且由于没有估计值,使得mAP能维持在59%左右(3.2节)。

2.3训练

监督预训练:我们在大型的辅助数据集(ILSVRC2012分类数据集)上只使用图像注释(没有边界框标注),来预训练CNN。预训练执行使用的是开源的Caffe CNN库。总体而言,我们的CNN几乎能赶上Kriz等人的网络性能,在ILSVRC2012分类验证数据集(测试集)上,在TOP-1的错误率要高出2.2个百分点,这种差异主要是由于简化训练过程的原因造成的。

特定领域的微调:为了使我们的CNN能够适应新的检测任务和新领域(变形后的候选区域图像)上的应用。我们仅使用扭曲后的候选区域图像,采用随机梯度下降的方法来训练CNN参数。除了用随机初始化N+1个类(N代表分类目标数,加1代表背景)取代ImageNet的1000个特定类以外,对于CNN的网络结构没有做任何改变。对于VOC,N=20,ILSRVC2013,N=200.我们对所有的候选区域,如果与真实选取的IOU重叠率大于0.5则判断为正例,否则为负例。我们使用0.01的学习率(初始预训练的十分之一)开始SGD,这使得微调能有效的进行且不破坏初始化的成果。在每一轮的SGD迭代中,我们都统一使用32个跨类别的正例窗口,96个背景窗口,一起构成一个128的mini-batch。我们会更多的偏向与正样本,因为相比于负样本,他们更加稀少。

对象类别分类器:思考一下训练一个二分类汽车检测器,很明显一张图片紧紧包围着汽车的部分就是正例,同样的,没有汽车的背景就是负例。不清楚的是与汽车重叠的区域。解决这个问题的方法是这顶IOU的重叠阈值。一个区域如果低于阈值就判断为负样本。阈值设定为0.3,这是通过在验证数据集上进行网格搜索得来的,我们发现认真选择阈值是重要的。选择0.5mAP会减少5个点,如果设置为0也会减少4个点正例可以被简单定义为每一类框的真实标注。

一旦特征被提取,训练标签被使用,我们便开始优化每一类的线性SVM。因为训练数据太大难以装进内存,我们采用了标准的难负样本挖掘方法(hard negative mining method)难负样本挖掘方法收敛速度快,在实际的操作中,mAP在所有图片都跑完一层训练之后就会停止增长。

在附录B中,我们讨论了为什么正负样本在微调与SVM训练中的定义是不同的。我们也讨论了,权衡加入SVM检测训练,而不是简单的直接用微调后的CNN的最终曾softmax的输出的原因。

(hard negative mining method:出错问题反复训练直至不在提升)

2.4在Pascal VOC 2010-12上的结果

按照在Pascal VOC上最佳实践(步骤),我们在VOC2007数据集上验证了所有的设计决策与超参数。我们在VOC2012上微调了CNN跟SVMs,得到了在VOC02010-12数据集上的最终结果。我们在评估服务器上将两种主要的算法变体(有/无边界框回归)各提交了一次测试结果。

表1展示了在VOC2010上的完整结果。比较我们的方法与4种先进的基准方法。包括:SegDPM,这种方法结合了DPM检测器与语义分割系统,并且使用附加的内部检测器环境与图像分类器进行重新筛选。更加适合的比较是与UVA系统对比,因为我们使用的是相同的候选区域(生成)算法。对候选区域分类,他们的方法是构建一个由高密度抽样的SIFT构成的空间金字塔。SIFT是扩展的对位SIFT跟RGBSIFT描述。每一个特征量化为4000个word码本。分类任务由一个直方交叉核的SVM承担。相比与他们的多特征,我们的非线性SVM方法,能达到在mAP上的巨大提升从35.1%到53.7%。而且有更快的速度(2.2节)。我们的方法也能在VOC2011/12数据集上达到相似的性能表现(53.3% mAP)。

2.5在ILSVRC2013检测上的结果

我们使用在Pascal VOC上超参数相同的R-CNN模型来运行200类的ILSVRC2013检测数据集。我们遵循相同的提交协议,将测试结果提交到了ILSVRC评估服务器两次(一次有边界框回归一次没有)。

图三对比了R-CNN的条目与OverFeat在ILSVRC2013比赛与赛后的结果。R-CNN达到了31.4%的mAP,明显高于第二的OverFeat的最好成绩24.3。为了给出所有类的平均准确度(AP),箱图也在本文末尾的图8中给出。多数比赛提交(模型)都使用了CNN,表明对于如何在目标检测中应用CNN还存在明显差异,导致了较大的结果差异。

在第四节中,我们给出了ILSVRC2013数据集的一个大概,并且提供了我们在其上面运行R-CNN的详细选择。


3可视化,消融与误差模式

3.1可视化学习特征、

第一层的滤波器能够被直接看到且容易理解。他们主要捕获方向性的边缘与对比色。理解后来的层是更有挑战性的。Z跟F在[42]中提出了一种可视化的吸引人的反卷积方法。我们提出了一种简单的互补的无参数化方法,能直接展示网络学到了什么。
这个方法是在网络中单一输出特定的特征单元,然后将其作为一个own right的目标检测器。然后在抽选的庞大的候选区域(100万个)中计算单元的激活数值。将这些候选按照激活从高到低排序,做非极大值抑制,最后显示排名最高的候选区域。我们的方法让选择单元自己讲话,通过展示确切的输入让其自己激活。我们避免平均为的是看到不同的视觉模型且得到单元计算出的不变性。

我们将pool5层的单元可视化(最大池化,网络的第五层也是最后的卷积层输出)p5的特征map是6✖6✖256=9216维度。忽略边界效应,每一个p5单元有一个195✖195的接受领域和227✖227的初始输入。中心的p5单元几乎有全局视角,而边缘的有更小的,剪切块的支持。

F.4的每一行展示了来源于VOC2007微调后的CNN的p5单元前16的激活。选取了256个功能不同的单元中的6个可视化(附录D展示更多)。这些单元选出的作为展示网络学到的东西的代表。在第二行,我们看到一个单元聚焦于狗的脸跟大模块的斑点。相应的第三行是红色点块的的检测器,也有人脸的和更多抽象图案的检测器,比如文本和带有窗的三角结构,网络似乎学习到了一些类别的调节特征,这些特征是结合了形状,纹理,颜色材料等属性的分布式代表。之后的第六层的全连接层能建立起一个这些丰富特征的巨大组合。

3.2消融学习

(Ablation studies:消融学习,为确定某层是否有效,用去掉该层与添加该层的网络结构对比实验)

没有微调的各层性能:为了理解对于目标检测的性能而言,那一层是至关重要的。我们分析了CNN最后三层的每一层再VOC2007上的结果。在3.1节中我们简述了pool5层,最后两层的总结如下:

fc6是pool5层的全连接,为了计算特征,他用一个4096✖9216的权重矩阵跟pool5的特征图(重塑为9216维特征)相乘,然后增加了一个偏置。这个中间特征是分式的半波整流。

fc7是网络的最后一层,他是由将fc6计算后的特征与4096✖4096的权重矩阵相乘计算得来的。并且同样的增加了特征偏执,应用了半波校正。

我们开始关注没有微调的CNN在Pascal上的结果。所有的CNN参数都只使用ILSVRC2012预训练,分析表2,1-3行各层的性能,发现fc7层的特征总体而言比fc6层差。这意味着29%或者1680万的CNN参数能被移除而不降低mAP。更惊喜的是同时移除fc7跟fc6也能产生相当好的结果。虽然pool5的特征只使用到了CNN6%的参数计算。可见CNN的代表力量来自于他的卷积层,而不是更密集的连接层。这个发现表明了在计算任意尺寸图片的密集特征图时,只使用卷积层的潜在效力。这个表现能在pool5的特征上通过使用滑动窗口来实现。

微调的各层性能:现在让我们来关注在VOC2007数据集上微调过参数的CNN,提高是明显的:微调增加了mAP8个百分点,达到了54.2%,相比于pool5层,微调对fc6与fc7层的性能提高要大得多。这表明了pool5层层ImageNet中学到的信息是通用了。而更多的提高是从他们上层的特定领域的非线性分类器上学到的。

与最近的特征学习方法对比:最近一些特征学习方法被尝试应用在Pascal VOC检测上。我们关注了2个最近的建立在部分可变性模型上的方法。为了参考我们包括了基于标准的HOG的DPM方法的结果。第一个DPM的特征学习方法DPM ST用略图表示的概率直方图,补充HOG特征。直观点讲,sketch token(ST)就是图片中心快的等高线的紧分布(详细参考论文(CVPR,2013) Sketch Tokens: A Learned Mid-level Representation for Contour and Object Detection)。ST概率通过随机森林来计算每一个像素点,这个随即森林是一个被训练来用于将35✖35的像素路径(pixel patches)分类为150个ST或者背景中的一个的。

第二个方法DPM.HSC,用稀疏编码直方图代替HOG。为了计算HSC,稀疏编码被每个像素只使用一个1007✖7的像素(灰度图)原子学习字典激活。结果激活是整流的,有三种方式(全波跟半波):空间池化,l2单位正规化和power transformed。
所有R-CNN的变体都明显优于这三种DPM基准(表2,8-10行)。包括2个使用特征学习的,对比DPM最后的版本(只使用HOG特征),我们的mAP要高出20个百分点:54.2% VS 33.7%,相比提高了61%。结合HOG和sketch token提高了2.5个mAP(相比于只使用HOG),HSC则提高了4个mAP。(当对比DPM内部私有基准时,都是用的时低于开源版本的未公开实施版本)这些方法分别达到了29.1%跟34.3%的mAP。

3.3网络结构

这篇论文结果使用的是kriz等人的网络结构(T-Net),然而我们发现网络结构的选取对于R-CNN的检测性能有着重大影响。在T.3中我们展示了使用最近的Simon跟Zisser提出的16层网络(O-Net)到VOC2007test上的结果。这个网络是最近ILSVRC2014分类挑战中表现最好的网络之一。这个网络有着相同结构的13层3*3卷积核,跟5层池化分布,顶层有着三层全连接层。我们把Oxford Net成为O-Net,把Toronto Net称为T-Net。

在R-CNN中使用O-Net是我们在Caffe Model zoo中为VGG_ILSVRC_16模型下载了可用的预训练网络权重。然后我们再用相同的操作微调了T-Net。唯一不同的是为了适应GPU内存,使用了更小的minbatch(24个样例)。结果展示再T.3中。基本上用O-Net的R-CNN优于T-Net,mAP从58.5%到66%。但是在计算时间方面存在一个很大的缺点。O-Net在前向传播的中花费的时间几乎是T-Net的七倍。

3.4检测错误分析

我们应用了Hoiem等人的优秀的检测分析工具,为了揭示我们的方法的错误模型,理解微调是如何改变他们的,并且查看我们与DPM的错误种类对比。完整的分析工具总结超出了这篇论文的范围,我们鼓励读者去咨询和理解一些更加具体的细节(比如正规化AP)。因为这个分析最好的是专注于相关的表的语境中分析。我们在图F.5跟F.6中进行了讨论。

3.5边界框回归

基于误差分析,我们应用了一个简单的方法来减少局部错误,受DPM中应用的边界框回归的启发,我们尝试了一个线性回归模型来预测一个新的检测窗口(Pool5层为选择候选区域给出特征)附录C中给出了详细的说明,结果在表T.1,T.2以及图F.5中展示。这个简单的方法修正了许多错误,提高了3到4个mAP。

3.6定性结果

ILSVC2013的定性结果在文末的F.8,F.9中展示。每一个图片都是从Val2数据集中随机抽样的。所有检测器中的检测都有高于0.5的精度。我们并没有特意选取,然后给出与实际印象相一致的结果。更多的定性结果在F.10和F.11中展示。但是这些是策划过的,我们选取了让人感兴趣的,惊奇的或者有意思的结果。也是将所有大于0.5精度的图片放了出来。


4ILSVRC2013数据集

在第二节中我们展示了在ILSVRC2013数据集上的结果,这个数据集相比于Pascal VOC数据集有更少的同类性,以及选择使用的要求。因为这些决定是非常重要的,我们将会在这一节介绍他们。

4.1数据集概述

ILSVRC2013检测数据集分为三个集合:训练集(395,918),验证集(20,12),测试集(40,152)。每组图像的数目在括号中。验证和测试从相同的图像分布中提取。这些图片与PascalVOC图片有着相同的场景复杂度(目标数量,杂波数量,姿势变化等)。验证与测试分割时完全注释的,这意味着,在200类中的所有样例图片都有边界框的注释。训练集,很明显是从ILSVRC2013分类数据集中的图片分布中抽取的。这些图片有更多的单中心物体倾斜图片复杂度。不像Val与Test一样,Train由于数量太多,并没有完全注释。任何被给的训练图像,从200个类中选出的实例可能有也可能没有进行注释。除开这些图片集,每一类还有一个额外的负样本集。负样本是手动选出的,不包含任何相关实例。负样本图片没有应用到这个工作中。更多的ILSVRC如何被选中以及标注的信息能在【11,36】中找到。

这些分割的性质,产生了许多训练R-CNN的选择。训练图片不能被难负样本采集使用,因为注释是不完全的。那么负样本应该从那些地方选区呢。同样的训练图片有跟val和test不同的统计特征。训练图片应该被完全使用吗?或者多大程度使用?当我们没有彻底的评估大量选择时,我们似乎呈现了之前实验的最明显的路径。我们通常的策略时主要依靠val然后使用一些训练图片作为辅助的正例来源。同时用val用于训练和验证。我们将其分为完全相同的val1和val2.因为在val中有些类的样本很少(有一半类的数量少于110,最少的只有31),因此产生一个近似的类平衡隔离就是重要的。为此,产生了大量的候选分割,选择最小的最大相关类不平衡。每一个候选分割通过使用他们的类别数作为特征,聚类产生,然后接一个随机的本地搜索,能提高分割的平衡性。这里使用的特定分割,有一个大约11%的最大相关不平衡和4%的中等相关不平衡。分割和产生val1,2的代码将会被公开来允许别的研究者对比他们的方法跟本文的val分割。

4.2候选区域

我们使用在Pascal检测中使用的相同的候选区域选择方法。Selective search在Val1,val2以及test的每张图片上运行快速模式(train上不是)一个小的修正是要求解决ss尺寸不变的问题,所以候选区域的数量依赖于图像分辨率。ILSVRC图片尺寸范围从很小到几百万像素,所以我们在运行selective search算法之前,先把每个图片的大小调整到相同宽度500pix。在val中,ss产生平均2403个候选区域。每个图片与真实边界框相比有91.6%的召回率(在IOU门槛0.5的情况下)。这个召回率是明显低于Pascal大约98%的召回率的。指示明显的提高空间在候选区域阶段。

4.3对训练数据而言,我们组成了一个图像和真实标注框的集合。框是来源于val1以及训练集中每类中的N个真实框(如果一类中的真是标注框少于N个,则全部选择)我们把这个图像和边框数据集成为Val1+trainN。在消融学习中我们展示了Val2对于N属于(0,500,1000)的mAP。

R-CNN的三个程序要求训练数据:(1)CNN微调。(2)SVM检测器训练。(3)边界框回归训练。CNN微调运行在val1+trainN上使用与Pascal完全相同的设置运行5万次SGD(随机梯度下降)迭代。微调使用Caffe在单NVIDIA Tesla K20上花费13个小时。对于SVM训练,所有的val1+trainN的真实标注边界框都被作为他们各自类的正例使用。难负样本挖掘应用在val1中随机选出了有5000张图片的子集。最初的实验表明从所有val中的难负样本相比于5000张图片的子集(大约是一半),结果只有0.5个百分点的mAP下降,而且与此同时SVM的训练时间减少一半。没有负样本从训练集中被提取出来,因为注释是不完全的。已证实的额外的负样本图片没有被使用。边界框回归在Val1上被训练。

4.4验证与评估

在提交结果到评估服务器之前,我们验证了数据选择和微调结果,以及在val2数据集上使用上述的训练数据进行边界框回归。所有的系统超参数(比如SVM C;区域扭曲的pading;NMS阈值;边界框回归超参数)都被设定为与Pascal相同的固定值。无疑的这些超参数的选择是次优于ILSVRC的,然而这个工作的目标是初步产生没有经过广泛数据集调整的情况下R-CNN在ILSVRC上的结果。在选择了val2上最好的结果后,我们提交了两个准确的结果文件到ILSVRC评估服务器上。第一个提交的是没有边界框回归的,第二个是有边界框回归的。为了这些提交,我们将SVM和边界框回归训练集分辨扩展使用了val+train1k和val。我们使用在val1+train1k上微调过的CNN来避免重新微调以及特征计算。

4.5消融学习

表4展示了在不同数量的数据集,微调和边界框回归下的消融学习效果。首先观察到的是val2上的mAP跟test上的非常接近。这给了我们信心:val2上的mAP是衡量test性能的一个指示器。第一个结果,20.9%是R-CNN使用了在ILSVRC2012分类数据集预训练(没有微调)的CNN并且连接了少量val1的训练数据后达到的(回想下,val1中一般的类中的实例在15到55之间)。扩展训练数据集到val1+trainN提高了性能到24.1%,基本上N在500到1000之间都没有差别。只是用val1的实例进行微调得到了些许的性能提高达到26.5%。然而,这可能是由于由于小数量正例引起的过拟合造成的。把微调的数据集扩展到val1+train1k,也就是训练集的每个类增加1000个正例,能够明显帮助提高mAP达到了29.7%。边界框回归提高结果到31.0%,相比于Pascal上的结果,这只是个小进步。

4.6跟OverFeat的关系

在R-CNN与OverFeat之间存在一个有趣的关系:OverFeat可以视作一个R-CNN的特例,如果用一个多尺度的规则方向区域金字塔来代替selective searc的候选区域,把每一类的边界框回归改为单边界框回归,这两个系统就会变得非常相似(一些潜在的系数可能是明显不同的,比如如何微调CNN检测器,使用SVM等)。值得注意的是OverFeat有明显超过R-CNN的速度优势,大概要快上9倍,基于2秒一张图片,从【34】引用来看。这个速度是源于OverFeat的滑动窗口不需要在图像级别进行扭曲,因此计算能很容易的在重叠窗口之间共享。共享是通过运行任意尺寸输入卷积方式的网络实现的。加速R-CNN应该能通过多种方式实现,这也是遗留给未来的工作。


5.语义分割

区域分类是语义分割的一项标准技术,这使得我们能很容易的将R-CNN应用到PascalVoc分割挑战。为了促进与当前的先进的语义分割系统比较(将second-order pooling称为O2P)。我们工作在他们的开源架构上。O2P使用CPMC(Constrained Parametric min-cut约束参数的最小切割)为每张图片产生150个候选区域,然后使用支持向量回归(SVR)预测每一类每个区域的质量。他们方法的高性能是因为CPMC区域的品质以及有力的多特征类型二阶池化(SIFT跟LBP的增强变体)我们也注意到了Farabet等人的工作,他们通过将CNN作为一个多尺度的逐像素分类器论证了在几个密集场景标记数据中的好结果。
我们学习【2,4】,将Hariharan等人制作的额外标注扩展到Pascal分割训练集中。设计决策和超参数都在VOC 2011验证集上进行了交叉验证。最终的测试结果只评估一次。

用于分割的CNN特征:我们评估了三个CPMC区域上计算特征的策略,这三个策略都从扭曲周围的矩形窗口区域到227✖227开始。第一个策略(full)忽视了区域的形状,直接用扭曲窗口计算CNN特征,就跟我们做检测时一样。但是这些特征忽视了非矩形形状的区域,两个区域有非常相似的边界框,但是没有重合。因此第二个策略(fg)只在前景模板上计算CNN特征。我们用平均输入代替背景,因此背景在平均扣除之后是零。第三个策略(full+fg)简单的连接了full跟fg特征,我们的实验验证了他们的互补性。

在VOC2011上的结果:表5展示了我们在VOC2011验证集上的结果以及跟O2P的对比(附录E展示了每一类对比的结果)。在每一中特征计算的策略中,fc6层的表现总是优于fc7层,接下来我们讨论fc6层的特征。Fg策略略微优于full,表明被遮挡的区域形状提供了更强的与我们直觉相匹配的信息。然而full+fg实现了平均精47.9%,我们最好的结果是差4.2%(也略微高于O2P的性能),表明full特征提供语境信息是比fg特征提供的更多。特别是用单核加full+fg特征训练20SVRs花费一个小时,而作为对比训练O2P特征花费10个小时。

在表6中,我们展示了在VOC2011测试机上的结果,对比我们最好结果的方法:fc6(full+fg),和两个最好的基本方法。我们的方法在21个类别中的11个达到最高的分割精度,最高的总体分割精度为47.9%,平均跨类别通过微调可能会取得更好的成绩。(但联合O2P的结果可能在合理的误差范围内)。


6总结

近年来,目标检测的性能已经停滞不前了。最好的实施系统是一个复杂的整体,它结合来自目标检测器与场景分类器中的多维低层图像特征与高层语义特征。本文给出了一个简单的,可缩放的目标检测算法,相较于之前的在Pascal VOC2012上的最好的结果提高了30%。

我们通过两个方面达到了这个性能。第一个是应用高容量的卷积神经网络在自底向上的候选区域上来实现定位和分割物体。第二个是在缺少标注训练数据的情况下训练大型CNN的方法(范式)。我们展示了在有大量的辅助训练数据(图片分类)的情况下,先进行有监督的预训练,然后对缺少数据的目标任务进行微调——这一方法是很有效的。我们推测:监督与训练和特定领域微调的方法(范式)能被高效的应用到各种数据缺少的视觉问题中。

我们注意到,这些结果的实现是通过结合计算机视觉的分类工具和深度学习达到的(自底向上的候选区域和卷积神经网络),而不是对立的科学研究路线。这两者是自然而且命中注定的搭档。


附录A候选目标转化

这项工作使用的卷积神经网络要求227*227像素的固定输入尺寸。对于目标检测而言,我们考虑候选目标是任意的矩形图片。我们评估了转化候选目标到CNN输入的两种方法。

第一个方法是用紧密的框围绕候选目标,然后对框进行尺寸变化使其适应CNN的输入尺寸。图7b列展示了这种变化。另一种变体的方法是排除了包围在原候选目标周围的图片语境。图7c列展示了这种变化。第二种方法是非均匀的尺寸变化候选区域使其适应CNN,图7d列展示了扭曲变形。

对于这些变化而言,我们也考虑到了额外的源候选目标周围的语境。语境padding的数量是被定义为变形后的原始候选目标的输入坐标的边界框。图7顶行展示了p=0像素的每个样例,最后一行展示了p=16像素的每个样例。在所有的方法中,如果原始的矩形拓展超过了图像,丢失的数据将会用图片平均代替(然后减去之前输入到CNN中的图片)。一组测试表明扭曲语境padding优于大边缘选择3-5个百分点。明显的更多的选择是可能的,包括使用复制代替平均池化。详细的评估留给未来的工作。

附录B:正负例样本跟softmax

有两种设计选择值得被讨论,第一种是:为什么正反例子的定义在cnn微调与目标检测训练SVMs中是不同的。简要回顾定义,对于微调,我们绘制每个候选区域的真实样例,如果最大IOU重叠超过0.5则标记为正例,其他的标注为背景。对于训练SVM,很明显我们只把真实区域作为正例,低于0.3IOU重合的类作为负例。灰色候选区忽略(不是真实选取但高于0.3).总结而言我们采用这种定义是因为我们通过ImageNet预训练的CNN计算的特征来训练SVM,因此微调就没有考虑。在系统内,在我们评估的选项中,我们的特定类训练的SVM是最优的。当我们开始启用微调时,我们一开始使用在SVM中相同的正例与负例样本。然后我们发现结果比我们使用现在的正负例样本的结果要差的多。

我们的假设时优于正负例样本定义而产生不同不是根本的原因。导致这个结果的原因是微调数据的受限。我们现在的方案介绍了很多抖动样例(这些候选重合率从0.5到1但是不是真实边框),他拓展了大约30倍的正例的样本数。我们猜想这个巨大的数据集要通过微调整个网络来避免过拟合。然而我们也主要到使用这些抖动数据可能不是最好的,因为这个网络并没有被局部的精确微调。

这就导致了第二个主题:为什么在微调之后要全部训练SVM。他可能很简单的被应用到微调网络的最后一层——一个21路的softmax回归分类器,作为目标检测器。我们尝试了这个方法然后发现在VOC2007上的性能mAP从54.2%下降到了50.9%。这个性能下降可能是一系列的因素导致的,包括在微调中使用的正样例没有强调精确的定位,以及softmax分类器是使用随机样本负例训练的而不是SVM使用的难负样本子集。这个结果表明微调之后没有训练SVM也能获得相同的性能。我们推测调整微调就能缩短这些差距。如果可行的话,就能简化且提高R-CNN训练而不丢失检测性能。

附录C:边界框回归

我们使用简单的边界框回归来提高定位性能。在使用一个特定类的SVM检测来评分每一个ss候选后,我们产生一个新的边界框来用于检测(使用特定类的边界框回归)。这与部分可变形模型使用的边界框回归是相似的。两种方法最初的差异是从CNN计算的特征中进行回归的差异,而不是DPM推断的几何特征差异。

我们训练算法的输入是一组N,指定了候选中心像素的坐标和宽与高。每个真实标注是明确规定了的。我们的目的是实现从候选区域到真实区域的映射。

附录D:附加特征可视化

附录E:每一个的分割结果

附录F:跨数据集的冗余分析

当一个训练涉及到了辅助训练集,在他跟训练集之间可能会存在冗余。管目标检测和整个图像分类的任务大不相同,但这样的交叉集冗余也就不那么令人担忧了,我们仍然进行了一次彻底的调查,量化了在ILSVRC 2012培训和验证集中PASCAL测试图像的包含程度。我们的发现可能对那些有兴趣使用ilsvrc 2012作为pascal图像分类任务的训练数据的研究人员有用。

我们对重复(或接近重复)图像进行了两次检查。第一次是测试基于flickr图像id的精确匹配,这些id包含在voc 2007测试注释中(这些id有意为后续的pascal测试集保密)。所有帕斯卡图像,以及大约一半的ILSVRC,都是从flickr.com上收集的。检查发现4952项中有31个匹配项(0.63%)。

第二个检查使用gist[30]描述符匹配,如[13]所示,它在大型(>100万)图像中的近重复图像检测中表现极佳。在[13]之后,我们计算了所有ILSVRC 2012 Trainval和Pascal 2007测试图像中的扭曲的32*32像素版本的GIST描述符。

gist描述子的欧几里德距离最近邻匹配揭示了38个近重复图像(包括flickr id匹配发现的所有31个)匹配结果在jpeg压缩级别和分辨率上往往略有不同,在较小程度上是裁剪。这些发现表明重叠很小,不到1%。对于voc 2012,由于flickr id不可用,我们仅使用gist匹配方法。根据gist匹配,2012年voc测试图像中有1.5%在ilsvrc 2012 trainval中。VOC 2012的比率可能略高,因为这两个数据集的收集时间比VOC 2007和ILSVRC 2012更接近。

附录G.文件更改日志

本文档跟踪r-cnn的进展。帮助读者理解它是如何随着时间的推移而改变的,这里有一个描述修订的简要变更日志。
v1:初始版本。
v2: CVPR 2014定稿版本。包括实质性通过(1)从较高的学习率(0.001)而不是0.0001开始微调,提高检测性能,(2)准备CNN输入时使用上下文填充,(3)边界框回归修复定位错误。
**v3.*:*ILSVRC2013检测数据集上的结果以及与Overfeat的比较被整合到几个部分(主要是第2部分和第4部分)。
V4:附录B中的SoftMax与SVM结果已修复的错误。我们感谢塞尔吉奥·瓜达拉马帮助查明这一问题。
V5:使用新的16层网络架构将结果从Simonyan和Zisserman[43]添加到第3.3节和表3。


论文为本人个人翻译,自身学习使用。可能存在错误,只供参考,欢迎指正。

【R-CNN论文翻译】目标检测经典论文R-CNN最新版本(v5版)全面中文翻译相关推荐

  1. 目标检测经典论文——Faster R-CNN论文翻译(纯中文版):Faster R-CNN:通过Region Proposal网络实现实时目标检测

    目标检测经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为纯中文版,中英文对照版请稳步:[Faster R-CNN中英文对照版] Faster R-CNN:通过Region Pr ...

  2. 目标检测经典论文——R-CNN论文翻译(纯中文版):用于精确物体定位和语义分割的丰富特征层次结构(技术报告(第5版))

    目标检测经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为纯中文版,中英文对照版请稳步:[R-CNN中英文对照版] 用于精确物体定位和语义分割的丰富特征层次结构 技术报告(第5版 ...

  3. 目标检测经典论文——Fast R-CNN论文翻译(中英文对照版):Fast R-CNN(Ross Girshick, Microsoft Research(微软研究院))

    目标检测经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为纯中文版,中英文对照版请稳步:[Fast R-CNN纯中文版] Fast R-CNN Ross Girshick Mic ...

  4. 目标检测经典论文——YOLOv2论文翻译(纯中文版):YOLO9000:更好、更快、更强

    目标检测经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为纯中文版,中英文对照版请稳步:[YOLOv2中英文对照版] YOLO9000:更好.更快.更强 Joseph Redmo ...

  5. 目标检测经典论文——Fast R-CNN论文翻译(纯中文版):Fast R-CNN(微软研究院)

    目标检测经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为纯中文版,中英文对照版请稳步:[Fast R-CNN中英文对照版] Fast R-CNN Ross Girshick 微 ...

  6. 目标检测经典论文——R-FCN论文翻译(中英文对照版):Object Detection via Region-based Fully Convolutional Networks

    目标检测经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为纯中文版,中英文对照版请稳步:[R-FCN纯中文版] R-FCN: Object Detection via Regio ...

  7. 深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4《Optimal Speed and Accuracy of Object Detection》

    深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4<Optimal Speed and Accuracy of Object Detection> Abstract 摘要 1. In ...

  8. 深度学习论文阅读目标检测篇(五)中英对照版:YOLOv2《 YOLO9000: Better, Faster, Stronger》

    深度学习论文阅读目标检测篇(五)中文版:YOLOv2< YOLO9000: Better, Faster, Stronger> Abstract 摘要 1. Introduction 1. ...

  9. 目标检测经典论文——R-CNN论文翻译:Rich feature hierarchies for accurate object detection and semantic segmentation

    Rich feature hierarchies for accurate object detection and semantic segmentation--Tech report (v5) 用 ...

最新文章

  1. c语言 文件名变量,C语言中,如何用根据不同的变量来更改文件名?
  2. 基于Linux的集群系统(八)--转
  3. 可变参数__VA_ARGS__使用和va_list使用小结
  4. 1995 年乔布斯访谈:什么对产品最重要
  5. Spring系列之bean的使用
  6. Angular Lazy Load 的一个局限性以及解决办法
  7. 最新70佳单页网站设计案例欣赏(上篇)
  8. 分享java50道基础面试题(有答案)
  9. x58添加uefi_x58 主板 使用 pcie nvme ssd 引导启动
  10. c语言中怎样写入百分号,C语言中如何用printf函式输出百分号?
  11. Average (区间最大均值,二分)
  12. 图解“华为云潮汕火锅”的“牛里乾坤”
  13. linux怎么打开ppt文件格式,PPT 文件扩展名: 它是什么以及如何打开它?
  14. MySQL-存储IP地址一文解决(随便问~)
  15. 铁甲小宝像车轮的是什么机器人_铁甲小宝里所有机器人的名字和绝招
  16. idea安装及学生邮箱获取一年使用权
  17. 【转】2018年EI收录中文期刊目录
  18. ORA-16032: parameter LOG_ARCHIVE_DEST_3 destination string cannot be translated
  19. 大早起的起来就上网瞎逛,发现了就记录下来,也算心理安慰
  20. 操作系统实验——模拟动态分区首次适应分配和回收算法

热门文章

  1. Python学习 | pymysql操作数据库?真原生...
  2. 【程序人生】跟小伙伴们聊聊我有趣的大学生活和我那两个好基友!
  3. java包图标变白纸怎么解决_桌面图标变成一张白纸怎么办?
  4. Elment ui中el-table 实现表格拖拽
  5. 沉溺于成为资深Java程序员的危机
  6. operator++()实现:前置++和后置++
  7. python打包exe报错编码问题_python打包成exe,但执行exe报错,求解。
  8. android隐藏app应用程序,Android开发:怎样隐藏自己的app应用
  9. windows 提示缺少VCRUNTIME140.dll错误
  10. BackTrack5(BT5)硬盘安装