目标检测经典论文翻译汇总:[翻译汇总]
翻译pdf文件下载:[下载地址]
此版为纯中文版,中英文对照版请稳步:[R-CNN中英文对照版]
用于精确物体定位和语义分割的丰富特征层次结构技术报告(第5版)Ross Girshick Jeff Donahue Trevor Darrell Jitendra Malik加州大学伯克利分校{frbg,jdonahue,trevor,malikg}@eecs.berkeley.edu |
摘要
过去几年,在经典数据集PASCAL上,物体检测的效果已经达到一个稳定水平。效果最好的方法是融合了多种低维图像特征和高维上下文环境的复杂集成系统。在这篇论文里,我们提出了一种简单并且可扩展的检测算法,可以在VOC2012最好结果的基础上将mAP值提高30%以上——达到了53.3%。我们的方法结合了两个关键的思想:(1)在候选区域上自下而上使用大型卷积神经网络(CNNs),用以定位和分割物体。(2)当带标签的训练数据不足时,先针对辅助任务进行有监督预训练,再进行特定任务的调优,就可以产生明显的性能提升。
因为我们把region proposal和CNNs结合起来,所以该方法被称为R-CNN:Regions with CNN features。我们也把R-CNN效果跟OverFeat比较了下,OverFeat是最近提出的基于类似的CNN特征并采用滑动窗口进行目标检测的一种方法,结果发现R-CNN在200个类别的ILSVRC2013检测数据集上的性能明显优于OVerFeat。系统完整的源代码见:http://www.cs.berkeley.edu/˜rbg/rcnn。(译者注:网址已失效,github新地址:https://github.com/rbgirshick/rcnn)
1. 前言
特征的重要性。在过去十年,各类视觉识别任务基本都建立在对SIFT[29]和HOG[7]特征的使用。但如果我们关注一下PASCAL VOC对象检测[15]这个经典的视觉识别任务,就会发现2010-2012年进展缓慢,取得的微小进步都是通过构建一些集成系统和采用一些成功方法的变种才达到的。
SIFT和HOG是块方向直方图(blockwise orientation histograms),一种类似大脑初级皮层V1层复杂细胞的表示方法。但我们知道识别发生在多个下游阶段,(我们是先看到了一些特征,然后才意识到这是什么东西)也就是说对于视觉识别来说,更有价值的信息,是层次化的,多个阶段的特征。
Fukushima的“neocognitron,一种受生物学启发用于模式识别的层次化、移动不变性模型,算是这方面最早的尝试。然而,neocognitron缺乏监督训练算法。基于Rumelhart等人的研究,Lecun等人提出反向传播的随机梯度下降(SGD)对训练卷积神经网络(CNNs)非常有效,CNNs被认为是neocognitron的一种扩展。
CNNs在1990年代被广泛使用,但之后随着SVM的崛起便淡出研究主流。2012年,Krizhevsky等人在ImageNet大规模视觉识别挑战赛(ILSVRC)上的出色表现重新燃起了对CNNs的兴趣。他们的成功在于在120万标注的图像上使用了一个大型的CNN,并且对LeCUN的CNN进行了一些改造(比如ReLU和Dropout正则化)。
这个ImangeNet的结果的重要性在ILSVRC2012 workshop上得到了热烈的讨论。提炼出来的核心问题是:ImageNet上的CNN分类结果在何种程度上能够应用到PASCAL VOC挑战的物体检测任务上?
我们通过弥合图像分类和目标检测差别,回答了这个问题。本论文是第一个说明在PASCAL VOC的物体检测任务上CNN比基于简单的类似HOG特征的系统有大幅的性能提升。我们主要关注了两个问题:使用深度网络定位目标和在小规模的标注数据集上进行大型网络模型的训练。
与图像分类不同,目标检测需要定位图像中的目标(可能有多个)。一个方法是将框定位看做是回归问题。但Szegedy等人的研究以及我们自己的研究表明这种策略在实际应用中并不可行(在VOC2007上他们的mAP是30.5%,而我们的达到了58.5%)。另一种方法是使用滑动窗口检测器。通过这种方法使用CNNs至少已经有20年的时间了,通常用于一些特定目标种类的检测,例如人脸检测、行人检测等。为了获得较高的空间分辨率,这些CNNs普遍采用了两个卷积层和两个池化层。我们本来也考虑过使用滑动窗口的方法。但是由于我们网络有5个卷积层,具有更深的层和更多的神经元,使得输入图片有非常大的感受野(195×195)和步长(32×32),这使得采用滑动窗口的精确定位方法充满挑战。
为了解决CNN的定位,我们是通过操作”recognition using regions”范式,这种方法已经成功用于目标检测和语义分隔。测试时,每张图片产生了接近2000个与类别无关的region proposal,然后分别通过CNN提取了一个固定长度的特征向量,最后使用特定类别的线性SVM对每个region进行分类。不论region的形状,我们使用一种简单的方法(仿射图像变形)将每个region proposal转换成固定尺寸的大小作为CNN的输入。图1展示了我们方法的全貌并突出展示了一些实验结果。由于我们的模型结合了Region proposals和CNNs,所以把这种方法称为R-CNN,即Regions with CNN features。
图1:物体检测系统概述。我们的系统(1)输入一张图像、(2)提取大约2000个自下而上的region proposals、(3)使用大型卷积神经网络(CNN)计算每个region proposals的特征向量、(4)使用特定类别的线性SVM对每个region进行分类。R-CNN在PASCAL VOC 2010上的mAP为53.7%。对比[39]文献中使用相同region proposals方法,并用使用采用空间金字塔和bag-of-visual-words方法的模型,其mAP只有35.1%。流行的可变部件的模型的性能也只有33.4%。在200个类别的ILSVRC2013检测数据集上,R-CNN的mAP为31.4%,比最佳结果24.3%OverFeat有了很大改进。
本篇论文的更新版本中,我们提供了R-CNN和最近提出的OverFeat检测系统在ILSVRC2013的200分类检测数据集上对比结果。OverFeat使用了滑动窗口CNN做检测,目前为止是ILSVRC2013检测集上表现最好的方法。我们的结果显示,R-CNN的mAP达到31.4%,显著超越了OverFeat的24.3%的结果。
检测任务第二个挑战是标签数据太少,手头可用于训练一个大型卷积网络的数据往往很不充足。传统解决方法通常采用无监督预训练,再进行有监督调优的方法(如[35])。本文的第二个核心贡献是在辅助数据集(ILSVRC)上进行有监督预训练,再在小数据集(PASCAL)上针对特定问题进行调优,这种方法在训练数据稀少的情况下训练大型卷积神经网络是非常有效的。我们的实验中,针对检测的调优将mAP提高了8个百分点。调优后,我们的系统在VOC2010上达到了54%的mAP,远远超过高度优化的基于HOG的可变性部件模型(deformable part model,DPM)[17, 20]。另外提醒读者朋友们关注Donahue等人同时期的工作,他们的研究表明Krizhevsky的CNN(译者注:Krizhevsky的CNN指AlexNet网络)可以用来作为一个黑盒特征提取器,(没有调优的情况下)在多个识别任务上包括场景分类、细粒度的子分类和领域自适应(domain adaptation)方面均表现很出色。
同时,我们的模型系统也很高效。都是相当小型的矩阵向量相乘和贪婪的非极大值抑制这些特定类别的计算。这个计算特性源自于所有类别都共享的特征,同时这些特征比之前使用的区域特征([39])少了两个数量级的维度。
分析我们方法的失败案例对进一步改进和提升很有帮助,所以我们借助Hoiem等人的定位分析工具[23]做实验结果的报告和分析。作为本次分析的直接结果,我们发现一个简单的边界框回归的方法会明显地降低错误定位问题,而错误定位是我们的模型系统的主要误差。
开发技术细节之前,我们注意到由于R-CNN是在推荐区域上进行操作,所以可以很自然地扩展到语义分割任务上。经过微小的改动,我们就在PASCAL VOC语义分割任务上达到了很有竞争力的结果,在VOC 2011测试集上平均语义分割精度达到了47.9%。
2. 使用R-CNN做物体检测
我们的物体检测系统有三个模块构成。第一个模块产生类别无关的region proposals。这些proposals组成了一个模型可用的候选检测区域的集合。第二个模块是一个大型卷积神经网络,从每个region提取固定长度的特征向量。第三个模块是特定类别线性SVM的集合。这一节将展示每个模块的设计,并介绍它们的测试阶段的用法,以及一些参数学习的细节,并得出在PASCAL VOC 2010-12和ILSVRC2013上的检测结果。
2.1 模块设计
区域推荐(Region Proposals)。近来有很多研究都提出了生成类别无关的区域推荐的方法。比如objectness [1]、selective search [39]、category-independent object proposals [14]、constrained parametric min-cuts (CPMC) [5]、multi-scale combinatorial grouping [3],以及Ciresan等人提出的将CNN用在规律空间块裁剪上以检测有丝分裂细胞的方法,也算是一种特殊的区域推荐类型。由于R-CNN对特定区域算法是不关心的,所以我们采用了选择性搜索以方便和之前的工作[39, 41]进行可控的比较。
特征提取。我们使用Krizhevsky等人[25]所描述的CNN(译者注:AlexNet)的一个Caffe[24]实现版本对每个推荐区域提取一个4096维度的特征向量。减去像素均值的277×277大小的RGB输入图像通过五个卷积层和两个全连接层,最终计算得到特征向量。读者可以参考[24, 25]获得更多的网络架构细节。
为了计算推荐区域的特征,首先需要将输入的图像数据进行转变,使得推荐的区域变成CNN可以接受的方式(我们架构中的CNN只能接受像素宽高比为227*227固定大小的图像)。有很多种方法可以对我们任意形状的区域进行变换,我们选择了最简单的一种。无论候选区域是什么尺寸或者任意长宽比,我们将区域放入无缝的边框内变形到希望的尺寸。变形之前,先放大紧边框以便在新的变形后的尺寸上保证变形图像上下文的p的像素都围绕在原始框上(我们使用p=16)。图2展示了一些变形训练图像的例子。其它的变形方法可以参考附录A。
图2:VOC 2007训练集部分图像变形成训练样本。
2.2 测试阶段的物体检测
在测试阶段,在测试图像上使用selective search提取2000个推荐区域(所有实验中我们使用了selective search的加速版本)。对每一个推荐区域变形后通过CNN前向传播计算出特征。然后我们使用训练过特定类别的SVM给特征向量中的每个类别单独打分。然后给出一张图像中所有的打分区域,然后使用贪婪非最大值抑制算法(每个类别是独立进行的)舍弃那些与大于学习阈值更高得分的推荐区域有重叠(intersection-overunion (IoU))的区域。
运行时分析。两个特性让检测变得很高效。首先,所有的CNN参数都是跨类别共享的。其次,通过CNN计算的特征向量维度相比其他常见方法(比如spatial pyramids with bag-of-visual-word encodings)计算特征的维度是很低的。例如,UVA检测系统[39]中使用的特征比我们的要多两个数量级(360k维相比于4k维)。
这种共享的结果就是计算推荐区域和特征的耗时可以分摊到所有类别上(GPU:每张图13s,CPU:每张图53s)。唯一和类别有关的计算都是特征和SVM权重以及最大化抑制之间的点积。实际应用中,所有的点积都可以批量化成一个单独矩阵间运算。特征矩阵的通常是2000×4096(译者注:通常产生2000个左右的推荐区域,每个推荐区域经过CNN产生4096维的向量),SVM权重的矩阵是4096*N,其中N是类别数目。