论文题目:丰富的特征层次结构,用于精确的对象检测和语义分割

Tensorflow版本RCNN:https://github.com/yangxue0827/RCNN

摘要

在标准的PASCAL VOC 数据集上测量的目标检测性能在过去几年已经稳定。最佳性能的方法通常是一个复杂的混合系统,它通常将多个低级图像特征通过上下文组合起来形成高级特征。在本文中,我们提出了一个简单和可扩展的检测算法,相对于以前在PASCAL VOC2012上的最佳结果(实现mAP 53.3%),在平均精度上(mAP)提高了30%以上。我们的方法结合了两个关键的要素:(1) 将高容量的卷积神经网络(CNN)应用到自下而上的选取候选区域过程中,来定位和分割对象;(2)当标记的训练数据稀缺时,对于一个辅助任务来说,使用一个有监督的预训练好的模型,加上在特定域上进行微调后,会产生一个显著的性能提高。因为我们将候选区域(region proposal)和卷积神经网络(CNN)结合在一起,我们称我们的方法叫R-CNN:带有CNN特征的区域(Region with CNN features),我们也将R-CNN与OverFeat进行了比较,OverFeat是一个最近提出的基于类似CNN架构的滑动窗口检测器。我们发现R-CNN在200类的ILSVRC2013检测数据集上的结果比OverFeat好很多。完整系统的源代码可以从下面获得:http://www.cs.berkeley.edu/˜rbg/rcnn.

1. Introduction(介绍)

特征是关键。在过去10年的时间里关于各种视觉识别任务的进展大量基于SIFT和HOG的使用。但是如果我们观察在经典的视觉识别任务(PASCAL VOC目标检测)上的性能表现,通常认为在2010-2012年期间进展缓慢,在这期间只是通过建造一些集成系统和在一些成功方法上做一些小改动,收效甚微。
SIFT和HOG是逐块定向直方图,它是一种表示方法,我们大致可以与V1中的复杂细胞,灵长类动物视觉途径中的第一皮质区域相关联。但我们也知道识别发生在几个阶段的下游,这表明可能有分层的,多阶段的过程用于计算特征,这些特征甚至具有更多的视觉识别信息。
Fukushima的“neocognitron”是一种生物学启发的用于模式识别分层和转移不变的模型,是早期的对于这样一个过程的尝试。然而”neocognitron“缺少一个监督训练算法。Rumelhart的研究表明通过反向传播的随机梯度下降方法对于训练CNNs是非常有效的,它也是一种”neocognitron“模型的扩展。
 CNNs在20世纪90年代被大量使用,但随着SVM的兴起,CNNs又不流行了。在2012年,Krizhevsky等人通过在ILSVRC上显示出了更高的图像分类精度,使得人们重新燃起了对CNN的兴趣。他们的成功源于在120万个标记图像上训练的大的CNN,并结合了一些在LeCun的CNN中使用的一些小技巧(例如,max(x,0)修正的非线性单元和”droupout”正则化)。在ILSVRC 2012研讨会期间,ImageNet结果的意义被激烈的讨论。中心问题可以归纳如下:在ImageNet上的CNN分类结果在多大程度上可以被推广到PASCAL VOC挑战的对象检测结果上?
我们通过弥合图像分类和对象检测之间的差距来回答这个问题。本文首次表明,与基于更简单的HOG类似的特征系统相比,CNN可以在PASCAL VOC上得到更加显著的目标检测表现。
与图像分类不同,检测需要在图像中定位(可能有许多)目标。一种方法是将定位看作回归问题。然而,Szegedy等人的工作,与我们自己的工作同时表明这种策略在实践中可能不好(在VOC2007中,他们提交的mAP是30.5%,而我们的方法实现的是58.5%)。一种替代方案是构建一个滑动窗口检测器。CNN已经以这种方式使用了至少二十年,通常是在限定的对象类别上,例如人脸和行人。为了保持高的空间分辨率,这些CNN通常仅具有两个卷积和池化层。我们也考虑采用一个滑动窗口的方法。然而,在我们的网络中具有5个卷积层的单元在输入图像上具有非常大的接收域(195*195像素)和步幅(32*32像素)。这使得在滑动窗口范例内的精确定位成为一个公开的技术挑战。
相反,我们通过在”使用区域识别“范式中进行计算来解决CNN定位问题,其已经成功应用于目标检测和语义分割。在测试时,我们的方法为输入图像生成大约2000个类别无关的候选区域,使用CNN从每个候选区提取固定长度的特征向量,然后使用特定类别的线性SVM对每个进行区域进行分类。我们使用一种简单技术(仿射图像扭曲-affine image warping)来对每一个候选区域计算一个固定大小的CNN的输入,而不虑区域的形状。图1给出了我们方法的概述,并突出了我们的一些结果。由于我们的系统将候选区域和CNN结合在一起,我们将方法缩写成R-CNN:带有CNN特征的区域(Region with CNN features)。

图1:目标检测系统概述我们的系统(1)接收一个输入图像,(2)抽取大约2000个从下到上的候选区域,(3)对于每一个候选区域使用一个大的CNN计算特征,然后(4)使用特定类的线性SVM对每一个区域进行分类。R-CNN在PASCAL VOC 2010 上实现了一个平均精度(mAP)53.7%。为了比较,[34]使用相同的候选区域方法实现了35.1%的mAP,但是使用了空间金字塔和视觉词袋方法。
在本文的这个版本中,我们通过在200类的ILSVRC2013检测数据集上运行R-CNN,提供了一种对R-CNN和最近提出的OverFeat检测系统的一种直接比较。OverFeat使用滑动窗口CNN进行检测,直到现在也是ILSVRC2013检测中性能最佳的方法。我们显示R-CNN显著优于OverFeat,R-CNN的mAP为31.4%,而OverFeat的mAP是24.3%。
 检测中面临的第二个挑战是标记的数据很少,并且当前可用的量不足以训练大的CNN。该问题的常规解决方案是使用无监督进行预训练,随后是进行有监督的微调。本文的第二个主要贡献是显示在大型辅助数据集(ILSVRC)上进行有监督的预训练,然后是在小数据集(PASCAL)上进行特定领域的微调,这种方法在当数据不足时是学习大容量CNN的有效范例。在我们的实验中,用于检测任务的微调将mAP性能提高了8个百分点。微调之后,我们的系统在VOC2010上实现了mAP到54%,而高度调整后的,基于HOG的DPM的mAP为33%。我们也给读者指出了由 Donahue等人做的同时期的工作,他表明Krizhevsky的CNN可以当成一个黑盒使用(不用微调)来进行特征提取,在几个识别任务中产生优秀的表现,包括场景分类,细粒度子分类,和域适配。

2 Object detection with R-CNN

我们的目标检测系统包括三个模块。第一个生成类无关的候选区域。这些候选区域定义了可用于我们的检测器的候选检测地集合。第二个模块是一个大的卷积神经网络,它从每个区域中抽取固定长度的特征向量。第三个模块是一些特定类别的线性SVM。在本节中,我们介绍每个模块的设计决策,描述其测试时间使用情况,详细了解其参数的学习方法,并在PASCAL VOC 2010-12和ILSVRC-2013上显示了检测结果。

2.1 模块设计

候选区域。各种最近的论文提供了用于生成类无关候选区域的方法。例子包括:objectness[1],选择性搜索[39],类独立的候选对象[14],CPMC,多尺度组合分组,和Ciresan等人通过将CNN应用于规则间隔的方形剪裁来检测有丝分裂细胞,这是候选区域的一个特殊情况。R-CNN对于特定的候选区域方法是不可知的,我们使用选择性搜索来实现与先前的检测工作的控制比较。
特征提取。我们使用Krizhevsky等人描述的CNN的Caffe实现从每个候选区域中提取4096维特征向量。通过将减去平均值的227*227的RGB图像通过5个卷积层和两个全连接层的前身传播来计算特征。我们引导读者参考[24,25]来获得更多的网络架构的细节。
为了计算候选框的特征信息,我们必须首先将图片数据转化成固定的大小,与提取CNN相兼容(227*227大小)。对于不规则的区域,我们采取简单的方法,不管他的纵横比

2.2 测试时间检测

测试时采用SS方法从每一个测试图片中选取2000个候选框(SS快速模式),将图片尺寸归一化之后输入到CNN的指定层来提取特征,然后,对于每一种类,使用SVM方法对每一个提取的特征进行打分,鉴于所有的region proposal都存在于一张图片中,所以我们使用贪婪的非极大值抑制算法(对每一类独立使用)来抛弃那些与更高分被选择区域重叠率大于某个阈值的区域。
运行分析:两个特性使得检测高效,第一,CNN的参数被共享在所有的类间,第二,被CNN计算出的特征向量相对于其他普遍的特征计算方法是低维的,比如spatial pyramids with bag-of-visual-word方法。UVA检测系统提取的维度是我们提取维度高出两个数量级(360k vs 4k)
权值共享的结果是,将所有的计算region proposal 时间和计算特征的时间平摊在每一类的计算上面,唯一的与类相关的计算时间就是特征和SVM权重和非极大值抑制的计算时间。实际上所有的图片最终被转化成矩阵-矩阵的运算。特征矩阵规定为2000*4096,SVM的权重矩阵为4096*N,其中N是待检测数据集物体种类。
将R-CNN与Dean等人近来使用的DPM和哈希的可扩展的检测方法的工作进行对比也是非常有趣的。他们在VOC 2007上报告了大约16%的mAP,当引入了10k个牵引类时, 每个图像的运行时间为5分钟。用我们的方法,10k个牵引类在一个CPU上大约运行1分钟,因为没有进行近似,mAP将保持在59%(第3.2节)。

2.3 训练

有监督的预训练:我们有区别的在辅助数据库ILSVRC2012(图片分类层面,标签没有BBox信息)预训练CNN,预训练采用的是开源的caffe CNN库。简单的说我们训练出来的CNN模型基本接近于文献23所训练的。获得了top1错误率2.2%略高于ILSVRC2012公布的数据。这种差异是由于训练阶段阶段的简化。
特定领域参数调优:为了使我们训练的CNN模型适应检测的任务和新的领域(归一化的VOC窗口),我们继续通过随机梯度下降方法(SGD)只使用在VOC数据集中提取的warp过的候选框训练。通过一个随机初始化的21类(10中物体种类加背景)分类层来代替CNN模型中ImageNet数据集中特定的1000类的分类层,CNN的基本结构不变。我们将所有的IoU大于0.5的候选框标记为正样本,其余为负样本。SGD的学习速率设置为0.001(十分之一初始预训练的速度),这样就确保了在不用设置初始化的情况下使调参(FT)顺利进行。在每一次随机梯度下降的迭代中,我们统一使用32个正样本(包括所有类别)和96个背景样本构建一个最小分支128.我们将偏置设置为正样本窗口,因为正样本窗口相对于负样本窗口过少。
 对象类别分类器。考虑训练一个二分类器去检测小汽车。很清楚,紧紧包围一个汽车的图像应该是一个正例。同样,明显的,与汽车无关的背景区域应该是一个负例。不清楚的是,怎样标注一个部分覆盖一辆汽车的区域。我们使用IoU重叠阈来重新解决这个问题,在这之下的区域就定义为负例。通过在验证集上的{0,0.1,…,0.5}的网络搜索来选择一个重叠阈0.3。我们发现小心地选择这个阈值是非常重要的。将它设置为0.5,正如[39]中一样,能够将mAP减少5个百分点。相似地,将它设置成0的话,能够将mAP减少4个百分点。正例仅仅被定义为每个类的真实边界框。一旦特征被提取出来,训练标签被应用上,我们就对每一个类优化一个线性SVM。由于训练数据太大,不适合内存,我们采用标准的hard negative mining方法。Hard negative mining快速收敛,并且在实际中,所有的图像仅通过一次,mAP就停止增加了。
在附录B中,我们讨论了为什么在微调和SVM训练中正例和负例的定义不同了。我们还讨论了训练检测SVM的权衡,而不是简单地使用来自微调CNN的最终SoftMax层的输出。

2.4 在PASCAL VOC 2010-12上的结果

遵循PASCAL VOC 最佳实践[15],我们验证了VOC 2007数据集(第3.2节)中所有的设计决策和超参数。对于在VOC 2010-12数据集上的最后的结果,我们微调了VOC 2012训练上的CNN并且在VOC 2012 训练验证集上优化了我们的检测SVM。我们对于两个主要算法变量(有和没有边界回归)中的每一个都只向评估服务器提交测试结果一次。
表1展示了在VOC 2010上的完整结果。我们将我们的方法与4个强基线进行了对比,包括SegDPM,其将DPM检测器与语义分割系统的输出结合在一起,并且使用了额外的检测器上下文和图像分类器重新评分。最杰出的比较是来自Uijlings等人的UVA系统,因为我们的系统也使用了相同的候选区域算法。为了对区域进行分类,他们的方法构建了一个4个级别的空间金字塔,并且用密集采样的SIFT,扩展OpponentSIFT,和RGBSIFT描述符来填充他们,每个矢量都用4000个字的编码本来进行量化。使用一个直方图相交核的SVM进行分类。与它们的多特征,非线性核SVM方法相比,我们在mAP上实现了一个大的改进,从35.1%到 53.7% mAP,同时也快得多(第2.2节)。我们的方法在VOC 2011/12测试中达到了相似的性能(53.3%的mAP)。

表1:在2010测试集上检测平均精度(%),R-CNN与UVA和Regionlet最直接对比,因为所有的方法都使用选择性搜索候选区域。边界框回归会在C节描述。在提交的时候,SegDPM是在PASCAL VOC排行榜上表现最出色的。DPM和SegDPM使用了一种其它方法没有使用的上下文重新评估的方法。

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

3.1. 可视化学习的特征

第一层的过滤器可以直接被可视化并且很容易理解。它们捕获有方向的边和相对的颜色。理解下面的层次是更具有挑战性的。Zeiler and Fergus在[42]中提出了一种视觉上有吸引力的反卷积方法。我们提出了一个简单(和互补的)非参数的方法,直接显示网络学习的内容。
想法是在网络中挑选出特定的单元(一种特征)并且将之作为一种物体探测器。具体的,我们在一个很大的候选框数据集上计算特定特征的激活值,将激活值从高到低进行排序,应用NMS,然后显示出最高分区域。我们的方法使得这个选中的单元自己说话通过精确地展示他对什么样的区域感兴趣,我们避免平均为了看到不同的视觉模式,增加对于通过单元计算出的不变形的洞察力。
我们从第五pool层可视化单元,这个层经过最大池化的网络第五层,同时也是最后一层卷积层。第五层的特征结构是9216维,忽略边界影响,每一个第五pool单元在原始的227*227输入图像上有一个196*196像素的区域,中心的pool5单元有一个近似于全局的视角,而那些接近边缘的单元只有更小被剪切的支持。
在图三中每一行展示了我们从使用VOC2007调参过的CNN网络挑选的经过pool5层单元激活的16个最高得分图片。这里可视化了256个单元中的6个(在补充材料中有更多)。这些单元被选中展示网络学习的代表性的模板。在第二行,我们可以看出这个单元对于狗脸和点阵更加敏感。对应第三行的单元对红色的团簇更敏感,还有的单元对人脸和一些抽象的结构敏感,例如文本和窗户的三角形结构,学习网络呈现出学习小规模类别特征的和分散的形状,纹理,颜色和材质。家下来的第六层全连接层则是具备将一系列丰富特征部分模型化的任务。

图4:6个单元的靠前的区域。感受野和活性值以白色画出。某些单元与概念对齐,例如人(第1行)或文本(4)。其他单元捕获纹理和材料属性,例如点组(2)和特殊的反射(6)。

3.2 消融研究

逐层性能,不调参的情况下:为了理解哪些层对于检测性能是关键的,我们分析了基于VOC2007的每一个CNN的最后三层结果。pool5层在3.1已经做了描述,最后两层见后文。
与pool5相连的fc6是全连接层。为了计算特征,他将一个4096*9216的权值矩阵与pool5相乘(pool5被剪切为一个9216维的向量)然后增加一个偏置向量。这个中间向量是一种分量方式的半波映射。
fc7是网络的最后一个层,这个层也被设置一个4096*4096的权值矩阵与fc6计算出来的特征相乘。相似的这个层也加入了一个偏置向量并应用了半波映射。
我们通过观察CNN在PASCAL上的结果开始,例如,所有的CNN参数只在ILSVRC2012上面预训练。逐层(表2.第1-3行)的分析性能揭示了经过fc7的特征相对于fc6的特征表现不够好。这就意味着29%或者说大约1680万的CNN网络参数对于提升mAP毫无作用。更加令人吃惊的是移除fc7和fc6层能产生更好的结果,即使pool5层的参数只用使用了CNN网络参数的6%。CNN网络最有代表性的作用产生自他的卷积网络,而不是用更多更密集连接的全连接网络。这个发现意味着就HOG的意义而言在计算密集特征更为有意义。这就意味着能够使基于滑动窗口的探测器成为可能包括DPM,在pool5层特征的基础上。(这两句话大致意思应该是,卷积层在网络中的作用相对于其它层是很大的,而且作为一种特征提取的方法,pool5层输出的特征同样可以选作为滑动窗口方法的素材)
逐层分析,有调参。在VOC2007 trainval上调整了我们的CNN的参数之后,我们现在再来看一下结果。改善是显著的(表2中的4-6行):微调将mAP提高了8.0个百分点至54.2%。对于和,来自微调的提升远大于,这表明从ImageNet中学习的pool5的特征是一般性的,并且大部分的改进是从学习特定领域的非线性分类器获得的。

表2:**在VOC 2007测试集上的检测的平均精度(%)。**1-3行展示的是没有经过微调的R-CNN的性能。4-6行展示了在ILSVRC2012上预训练过,并且在VOC2007trainval上微调过的CNN的结果。7行包括一个简单的边界框回归(BB)阶段,其减少了定位错误(C节)。8-10行展示了DPM方法作为一个强基准线。第一个仅使用了HOG,然而接下来的2个使用了不同的特征学习方法来增强或替换HOG。
与近年特征学习方法的比较:最近有相对较少的特征学习方法在PASCAL VOC检测上进行尝试。我们看看基于可变形部件模型的两个最近的方法。作为参考,我们也包括了标准的基于HOG的DPM的结果。
  第一种DPM特征学习方法DPM ST[28]用“草图标记”概率的直方图来增强HOG特征。直观来说,一个草图标记就是穿过图像块中心的轮廓的紧密分布。草图标记概率在每个像素处由随机森林计算,该森林被训练成将35*35像素块分类成150个草图标志或背景中的一个。第二种方法,DPM HSC[31],用稀疏编码(HSC)的直方图代替HOG。为了计算HSC,使用100个7*7像素(灰度)原子的学习字典来解决每个像素处的稀疏码激活。所得激活以三种方式(全半波和两半波)来进行修正,空间池化,单元正则化,然后是功率变换()。
  所有的R-CNN变体都大大超过三个DPM基线(表2中的8-10行),包括使用特征学习的两个。与仅使用HOG特征的最新版的DPM相比,我们的mAP高出了20个百分点:54.2% 对 33.7%-相对改善了61%。HOG草图标记的结合超过了HOG自己2.5个mAP,而HSC改进超过HOG4个mAP(当内部与其私有DPM基线相比时-都使用非公开的实现的DPM,其比开源版本的性能要差一点)。这些方法各自实现mAP为29.1%和34.3%。(这部分不能完全理解,涉及到很多其他论文)

3.3 检测误差分析

我们应用了Hoiem等人的优秀的检测分析工具,为了揭示我们方法的错误模式,了解微调如何改变他们,以及看看我们的错误模式与DPM的比较。分析工具的完整总结超出了本文的范围,我们鼓励读者咨询[23]了解一些更精细的细节(例如“归一化AP”)。由于分析最好在相关图的上下文中才会更受吸引,所以我们在图5和图6的标题内给出了讨论。

图5:排名最高的FP类型的分布。每幅图展示了FP类型的演变分布,因为更多的FP按照分数递减的顺序被考虑。每个FP分类成4种类型中的1种:Loc-poor定位(和正确类别的IoU重叠在0.1和0.5,或重复);Sim-与相似的类别混淆;Oth-与不同对象类别的混淆;BG-在背景上触发的FP。与DPM相比(参见[23]),我们的错误更多的是来自于差的定位,而不是与背景或其他对象类的混淆,表明CNN特征比HOG更有区别性。差的定位可能是由于我们使用自下而上的候选区域和从预训练CNN进行整体图像分类学习的位置不变性。第三列显示了我们的简单的边界框回归方法如何修复很多定位错误。

图6:对对象特征的敏感性。每个图展示出了六个不同对象特征(遮挡,截断,边界框区域,宽高比,视角,部分可见性)内的最高和最低的表现子集的平均(所有类)归一化AP。我们在图上展示了我们的方法(R-CNN),带有和不带有fine-tuning(FT)和边界框回归(BB),以及DPM 的voc-release5。总的来说,微调并不会降低敏感性(最大值和最小值之间的差值),但是对于几乎所有的特性,基本上改善了最高和最低性能子集。这表明微调不仅仅改善了长宽比和边界框区域的最代性能子集,因为人们可能基于我们如何扭曲网络输入来进行推测。相反,微调改变了所有类别的鲁棒性,包括遮挡,截断,视角,部分可见。

3.5. 边界框回归

基于错误分析,我们实现了一个简单的用于减少定位错误的方法。受在DPM中使用的边界框回归的启发,在给定了一个选择性搜索候选区域的特征的情况下,我们训练了一个线性回归模型用来预测一个新的检测窗口。完整细节在附录C中给出。表1,表2和表5的结果表明这种简单的方法改善了大量错误定位的检测,将mAP提高了3至4个点。

语义分割

由于自己只是接触到目标检测,语义分割就略了。

结论

最近几年,物体检测陷入停滞,表现最好的检测系统是复杂的将多低层级的图像特征与高层级的物体检测器环境与场景识别相结合。本文提出了一种简单并且可扩展的物体检测方法,达到了VOC2012数据集相对之前最好性能的30%的提升。
我们取得这个性能主要通过两个理解:第一是应用了自底向上的候选框训练的高容量的卷积神经网络进行定位和分割物体。另外一个是使用在标签数据匮乏的情况下训练大规模神经网络的一个方法。我们展示了在有监督的情况下使用丰富的数据集(图片分类)预训练一个网络作为辅助性的工作是很有效的,然后采用稀少数据(检测)去调优定位任务的网络。我们猜测“有监督的预训练+特定领域的调优”这一范式对于数据稀少的视觉问题是很有效的。
最后,我们注意到通过使用经典的组合从计算机视觉和深度学习的工具实现这些结果(自底向上的区域候选框和卷积神经网络)是重要的。而不是违背科学探索的主线,这两个部分是自然而且必然的结合。

参考文献:
https://blog.csdn.net/u010970698/article/details/52801089
https://blog.csdn.net/wangsidadehao/article/details/54237567
RCNN(cafee)demo地址:https://github.com/rbgirshick/rcnn