用于目标检测和语义分割的丰富特征层次结构的提取
1、摘要
过去几年,在权威数据集PASCAL上,物体检测的效果已经达到一个稳定水平。效果最好的方法是融合了多种图像低维特征和高维上下文环境的复杂结合系统。在这篇论文里,我们提出了一种简单并且可扩展的检测算法,可以将mAP在VOC2012最好结果的基础上提高30%以上,也就是达到了53.3%。我们的方法结合了两个关键的因素:
- 为了实现目标检测和语义分割,将大型卷积神经网络用于图像的候选区域。
-
由于带标签数据稀少,我们先针对辅助任务使用了监督性的预训练,然后再对特征任务进行微调,实验证明产生了明显的性能提升。
因为我们采用了带CNN的候选区域筛选法,我们就把我们的方法叫做R-CNN:Regions with CNN features.我们也把RCNN效果跟Overfit比较了下(OverFeat是最近提出的在与我们相似的CNN特征下采用滑动窗口进行目标检测的一种方法),结果发现RCNN在200类ILSVRC2013检测数据集上性能明显优于OVerFeat。本文完整系统源码在:http://www.cs.berkeley.edu/˜rbg/rcnn。
2、介绍
特征很重要。在过去几十年,不同视觉检测任务基本都建立在对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 imes195$像素)和步长($32 imes32$像素),这让使用滑动窗口方法进行精确定位成为了一项开放的技术挑战。
所以我们采用了“recognition using regions”方法进行CNN定位问题的处理,这种方法已经被证明在物体检测和图像分割领域获得成功。在测试阶段,我们的方法在输入图像上产生了大概2000个类别独立的候选区域并且使用了CNN在每个候选区域提取了固定长度的特征向量,之后采用特定类别线性SVM对每个候选区域进行物体类别分类。我们使用了一项简单的技术(image wrap)来产生固定大小的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%的精确度。