Rich feature hierarchies for accurate object detection and semantic segmentation
摘要
标准的PASCAL VOC数据集的对象检测性能在过去的几十年中已经达到了稳定的状态。其中表现最好的方法是复杂的综合系统,它们通常将低层次的图像特性与高层次的上下文结合起来。本文我们将提出一种简单的可扩展检测算法。此算法和2012年VOC的最佳结果相比,平均精度(mAP)提高了30%以上,可以达到53.3%的mAP。我们的方法结合了俩个关键的观点:(1)一个是我们能将高性能的神经卷积网络(CNNs)应用在自下而上的候选区域上以便我们定位和分割对象。(2)当标记的训练数据很少时,先进行一个作为辅助任务的预训练,接着进行特定领域的微调,可以显著提高性能。由于我们将区域建议与CNNs结合起来,所以我们称我们的方法为R-CNN:Regions with CNN features. 我们还提供了一些实验,可以深入了解网络的学习情况,揭示出丰富的图像特征。完整系统的源代码可以在http://www.cs.berkelek.edu/rbg/rcnn.
1.简介
功能问题。最近十多年来关于不同的视觉识别任务的进展一直取决于SIFT和HOG的使用。但是假如我们观察它们在标准视觉识别任务
PASCALVOC目标检测上的表现,我们通常会承认在2010-2012年之间进展缓慢。通过建立集成系统和采用成功方法的较小变体获得
了小的收益。
SIFT和HOG是一种阻滞方向直方图,我们可以与V1中的复合细胞,灵长类动物视觉途径中的第一皮质区域相关联的表示。但是我们也知道识别发生在下游的几个阶段,这表明可能会出现层次化,多阶段的计算特征的过程,这些特征似乎对于视觉识别更为有用。
福岛的“新知识”是一种生物学上不可分割的层次和不变式模式识别模型,它就是这个过程中的一个早起尝试。但是“新知识”缺乏监督训练算法。LeCun等人利用反向传播显示随机梯度下降能训练卷积神经网络提供了一种缺失算法,该算法是一类延伸”新知识“的模型。
CNNs在20世纪90年代的得到了广泛地使用,但是随着支持向量机的出现,慢慢的退出了时尚界,尤其是计算机视觉领域。2012年,Krizhevsky等人通过在ImageNet大规模视觉识别挑战(ILSVRC)上显示出更高的图像分类精度来让人们重新拾取对CNNs的兴趣。他们的成功是源自于他们通过训练120万张标签图像进行大型的CNN训练,并且在LeCun的CNN网络上加入了一些扭曲技术。比如加入了Relu非线性激活函数max(x,0)和正则化技术Dropout等。
ImageNet结果的重要性在ILSVRC 2012研讨会期间大有争议。中心问题被提取为下列这个问题:CNN的分类结果在多大的程度上泛化到了对PASCAL VOC挑战的对象检测结果。
我们通过联系图像分类与对象检测之间的差距来决定性的回答这个问题。本文首先表明,与基于更简单的HOG类特征的系统相比,CNN在PASCALVOC上能获得一个显著的更好的目标检测表现。 实现这个结果需要解决两个问题:使用深层网络进行定位;使用较少的带标签检测数据来训练大容量模型。
不像图像分类,检测需要在图像中定位(可能很多)对象。一种方法是将定位看作是回归问题。然而,Szegedy等人的工作与我们自己的实验同时表明,这一战略在实践中可能不会工作的很好。(他们报告了VOC 2007年的MAP为30.5%,而我们的方法达到了58.5%).另一种方法是构建一个滑动窗口检测器。CNN已经以这种方式使用了至少二十年,通常在受限的物体类别,如面孔[和行人j检测。为了保持高空间分辨率,这些CNN通常只有两个卷积和池化层。我们也考虑采用滑窗方式。然而,我们网络中具有五个卷积层,每个单元在输入图像中具有非常大的接收场(195×195像素)和步幅(32×32像素),这使得滑动窗口范例内的精确定位
成为了一个开放技术挑战。相反,我们通过在Gu等人认为的“使用区域识别”模型内运行解决CNN定位问题。在测试时间,我们的方法为输入图像生成大约2000个类别独立的区域提案,使用CNN从每个提案中提取固定长度的特征向量,然后将每个区域与类别特定的线性SVM进行分类。我们使用简单的技术(仿射图像扭曲)来计算每个区域提案的固定大小的CNN输入,而不管区域的形状如何。图1给出了我们的方法的概述,并给出了我们的一些结果。由于我们的系统将区域提案与CNN相结合,所以我们将方法R-CNN:具有CNN特征的区域。
检测中面临的第二个挑战就是标签数据很少,目前可用的数量不足以训练大型CNN。这个问题的常规解决方案是使用无监督的预训练,然后是监督微调。本文的第二个主要贡献是展现了在大型辅助数据集(ILSVRC)上的监督预训练,其次是针对小数据集(PASCAL)的域特定微调,是在数据稀少时学习高容量CNN的有效范例。在我们的实验中,微调检测将mAP性能提高了8个百分点。经过微调,我们的系统在VOC 2010上实现了54%的mAP,而高度调整的HOGB型可变形部件型号(DPM)为33%。
我们的系统也很有效率。唯一的类特定计算是相当小的矩阵向量乘积和贪心非最大抑制。
这种计算性质来自于所有类别共享的特征,并且与以前使用的区域特征相比也是二维特征向量。
类似HOG的特征描述器的一个优点是它们的简单性:它们更容易理解区域提案所携带的信息(尽管表明我们的直觉可以让我们失望)。我们能否深入了解CNN所获得的表现?也许密切相连的层次,超过5400万个参数是关键?答案并不是。我们淘汰了CNN而且发现我们可以减少一个惊人的大比例(94%)的参数而检测精度只有适度的下降。并且,通过在网络中的探测单位,我们可以看到卷积层学习了一组丰富的特征(图3)。
了解我们的方法的失败模式对于改进它也是至关重要的,因此我们报告了Hoiem等人的检测分析工具的结果。作为该分析的直接结果,我们证明了一种简单的边界框回归方法显着地减少了错误定位,这是主要的误差模式。
在开发技术细节之前,我们注意到,由于R-CNN在区域上运行,将其扩展到语义分割的任务是很自然的。稍加修改,我们还在PASCAL
VOC分段任务中获得最先进的结果,VOC 2011测试集的平均分割精度为47.9%。
2.用R-CNN进行对象检测
我们的对象检测系统由三个模块组成。首先生成类别无关的区域提案。这些建议定义了我们的检测器可用的候选检测集。 第二个模块是从各个区域提取固定长度特征向量的大卷积神经网络。第三个模块是一组类别的线性SVM。 在本节中,我们将介绍每个模块的设计决策,描述其测试时间使用情况,详细了解其参数的学习方式,并在PASCAL VOC 2010-12上显示结果。
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 [21]实现,从每个区域提案中提取4096维特征向量,通过五个卷积层和两个完全连接的层向前传播一个均匀的227×227 RGB图像来计算特征。我们将读者引用到[21,22]以获得更多的网络架构细节。
为了计算区域提案的特征,我们必须首先将该区域中的图像数据转换为与CNN兼容的形式(其架构要求固定227×227像素大小的输入)在我们任意形状区域的许多可能的变革中,我们选择最简单的。不管候选区域的大小或宽高比如何,我们将围绕其的紧边界框中的所有像素扭曲到所需的大小。在翘曲之前,我们扩大了紧边框,使得在翘曲的大小上,原始盒子周围有完整的像素图像(我们使用p = 16)。 图2显示了扭曲训练区域的随机抽样。补充材料讨论了翘曲的替代方案。
2.2测试时间检测
在测试时间,我们对测试图像使用Selective search来提取大约2000个候选区域(我们在所有实验中使用Selective search的“快速模式”)。我们仿射扭曲每一个候选区域然后通过CNN进行前向传播,以便从所需层读取特征。然后,对于每个类,我们使用针对该类训练的SVM来对每个提取的特征向量进行评分。给定图像中的所有得分区域,我们应用贪心非最大抑制(对于每个类独立),如果其具有与一个大于学习阈值的较高评分交叉联合(IoU)得分区域重叠的区域,就会拒绝一个区域。
运行时间分析。拥有两个可以提高检测效率的属性。
首先,所有类别共享所有CNN参数。 二,由CNN计算的特征向量与其他常见方法相比是低维度的,例如具有视觉 - 词汇编码的空间金字塔。例如,在UVA检测系统中使用的特征比它们(360k对4k维)大两个数量级。
这种共享的结果是计算区域建议和特征(GPU上的13s
/每张图像或CPU上的53s /每张图像)的时间在所有类别上进行分摊。唯一的类特定计算是特征与SVM权重和非最大抑制之间的点积。实际上,图像的所有点积输出都分批成为单个矩阵-矩阵的结果。
特征矩阵通常为2000×4096,SVM权重矩阵为4096×N,其中N为类数。
该分析表明,R-CNN可以扩展到数千个对象类,而不需要使用诸如散列法类似的近似技术。即使有100k类,在现代多核CPU上产生的矩阵乘法只需10秒。 这种效率不仅仅是使用区域建议和共享特征的结果。UVA系统由于其高维特征,将会需要两个数量级的速度,而需要134GB的内存才能存储100k线性预测器,相比之下,我们的低维特性只有1.5GB。
将R-CNN与Dean等人最近在使用DPM和散列法的可扩展检测工作进行对比也是有趣的。当引入10k的干扰素类时,他们在VOC 2007上报告了大约16%的mAP,每个图像的运行时间为5分钟。通过我们的方法,10k个检测器可以在CPU上运行大约一分钟,并且由于没有近似值,mAP将保持在59%(3.2节)。
2.3训练
监督预训练。我们通过图像级注释(即无边框标签)对大型辅助数据集(ILSVRC 2012)进行了对CNN的预训练。使用开源Caffe CNN库进行预训练。简而言之,我们的CNN几乎符合Krizhevsky等人的表现,在ILSVRC 2012验证集上top1的错误率高出他们2.2个百分点,这种差异是由于训练过程中的简化。
域特定微调。为了使我们的CNN适应新的任务(检测)和新的区域(扭曲VOC窗口),我们继续采用随机梯度下降算法(SGD)对从VOC的扭曲区域建议获得CNN参数进行培训。除了用随机初始化的21路分类层(20个VOC类和1个背景)来替换CNN的ImageNet特有的1000路分类层,CNN架构不变。我们将所有区域提案与真正实体框重叠≥0.5IoU,作为该框中类的正面值,其余的作为否定。我们以0.001(初始预训练率的1/10)的学习率开始SGD,这样可以使微调取得进展,而不会使初始化发生变化。在每个SGD迭代中,我们统一抽样32个正窗口(所有类别)和96个后台窗口,以构建大小为128的小批量。我们将抽样偏向正窗口,因为它们与背景相比非常罕见。
对象类别分类器。考虑训练二进制分类器来检测汽车。很明显,紧紧围绕汽车的图像区域应该是一个积极的例子。一个与汽车无关的背景区域应该是一个负面的例子。较不清楚的是如何标注部分重叠汽车的区域。我们用IoU重叠阈值来解决这个问题,低于阈值区域被定义为负类。我们利用验证集在{0, 0.1, . . . , 0.5}中通过网格搜索来选择重叠阈值0.3。我们发现仔细选择这个阈值很重要。将其设置为0.5,如[32]所示,将mAP降低5点。 同样,将其设置为0会将mAP降低4点。 正面的例子被简单地定义为每个类的地面真相边界框。正面的例子被定义为每个类的基本真实边界框。
一旦提取了特征并应用了培训标签,我们可以优化每个类的一个线性SVM。由于训练数据装入内存太大,我们采用标准的负极开采方法(hard negative mining method)。标准负集采矿迅速收敛,实际上只有单次通过所有图像,mAP才会停止增长。
在补充材料中,我们讨论为什么正面和负面的例子在微调与SVM培训中的定义不同。我们还讨论了为什么需要训练检测分类器,而不是简单地使用微调CNN的最终层(fc 8)的输出。
2.4.PASCAL VOC 2010-12的结果
根据PASCAL VOC最佳实践[12],我们验证了VOC 2007数据集上的所有设计决策和超参数(第3.2节)。对于VOC 2010-12数据集的最终结果,我们对VOC 2012训练的CNN进行了微调,并优化了VOC 2012训练模型的检测SVM。我们将测试结果提交给评估服务器,对于两种主要算法变体(带和不带有边界框回归)的每一种,都只提供一次。
表1显示了VOC
2010的完整结果。我们将我们的方法与4个强基线相比较,包括SegDPM [15],它将DPM检测器与语义分割系统的输出相结合[4],并使用附加的内部检测器上下文和图像分类器检索。与Uijlings等人的UVA系统的对比是最相似的,因为我们的系统使用相同的区域提案算法。为了对区域进行分类,他们的方法构建了一个四级空间金字塔,并用密集采样的SIFT,扩展的对数SIFT和RGB-SIFT描述符填充,每个矢量都用4000字的码本进行量化。使用直方图交点内核SVM进行分类。与其多特征非线性内核SVM方法相比,我们在mAP方面取得了很大的进步,从35.1%提高到53.7%,同时也快得多(2.2节)。我们的方法在VOC
2011/12测试中实现了类似的性能(53.3%mAP)。