这里写目录标题
一、摘要
(1)过去:PASCAL VOC数据集上目标检测性能在过去几年中趋于稳定,没有很大的提升。并且这些性能最好的方法是复杂的集成系统,它通常将多个低级图像特征与高级上下文组合在一起,进行目标的检测。
(2)OverFeat:在RCNN之前OverFeat便在目标检测中应用了CNN,但是是一种基于CNN架构的滑动窗口检测器。效果同R-CNN相比相差很多。
(3)本文:提出一种简单、可扩展的检测算法,使得平均精度(mAP)比之前的最佳检测结果提高了30%以上,达到了53.3%的检测结果。
本文的方法有两个关键点:
1.为候选区域应用卷积神经网络(cnn),进行定位和细分目标。
2.标记的训练数据稀缺时,采用迁移预训练模型,并进行微调训练。这种方法有显著的性能提升。
二、介绍
特征提取方法:
(1)传统方法:
在过去的十年中,各种视觉识别任务很大程度上是基于SIFT和HOG进行特征提取,这两种方法都是基于图像中梯度的方向直方图。基于这种特征提取方法的目标检测,在典型的视觉识别任务(PASCAL VOC对象检测)的性能,进展一直比较缓慢,通过构建集成系统和采用成功方法的小变体来获得的进展也很小。
(2)深度学习方法:
2012年,AlexNet在ImageNet大尺度视觉识别挑战中表现出更高的图像分类精度,点燃了人们对CNN的兴趣。表明CNN进行特征的提取有很大的优势。
深度学习目标检测面临的挑战:
(1)定位问题:
目标检测与图像分类不同需要在图像中定位(可能有很多)目标。
目标定位的两种方法:
1.将定位定义为一个回归问题:在当时,这种基于位置回归的方法没有取得好的效果。
2.利用滑动窗口检测器:CNNs已经以这种方式使用了至少20年,通常受限于目标类别,如人脸和行人,同时滑动窗口方法会产生大量的计算,影响效率。
RCNN解决定位问题:借鉴滑动窗口思想,采用对候选区域进行识别的方法。候选区域方法在目标检测和语义分割两方面都取得了成功。在测试时,每一个输入图像生成了大约2000个类别无关的候选区域,使用CNN从每个候选区域中提取一个固定长度的特征向量,然后使用类别特定的SVM对每个候选区域进行分类。。
(2)训练数据少
目标检测的数据集一般很小,不足以训练一个大型的CNN。
本文在大的辅助数据集(ILSVRC)上进行监督预训练,在小的目标检测数据集上进行微调。通过迁移学习提升了检测性能。
三、R-CNN目标检测
目标检测系统由三个模块组成:
1.生成类别独立的候选区域。这些候选区域是RCNN检测器可用的候选检测集和。
2.大型的卷积神经网络:它从每个候选区域提取一个固定长度的特征向量。
3.一组特定于类的线性支持向量机(SVM):用于目标的分类。
4.使用回归器精细修正候选框位置
3.1 模型设计
模块一:候选区域提取
有许多生成分类独立的区域建议的方法。例如:object proposals、selective search选择性搜索、分类独立的对象建议、约束参数最小切割(CPMC)、多尺度组合分组…。
R-CNN使用选择性搜索(selective search)来产生候选区域。
模块二:特征提取
通过CNN为每个候选区域提取一个4096维的特征向量。RCNN选择AlexNet作为特征提取网络:包含5个卷积层和2个全连通层。
为了通过AlexNet提取候选区域的特征,必须首先将该候选区域的图像数据转换成与CNN兼容的形式即转化成固定的大小(其架构需要固定的227×227像素大小的输入)。RCNN不管候选区域的大小或长宽比如何,都会将候选区域弯曲成所需的大小。(有一个细节,在对 Region 进行变换的时候,首先对这些区域进行膨胀处理,在其 box 周围附加了 p 个像素,也就是人为添加了边框,在这里 p=16。)
模块三:SVM分类
特征提取模块将每个候选区域进行特征提取,得到每个候选区域的4096维特征向量,将候选区域对应的特征向量送入一系列 SVM 分类器,进行目标分类。
3.1 测试阶段的目标检测
测试时步骤:
1.对测试图像进行选择性搜索(selective search),提取出大约2000个候选区域。
2.为了计算特征,对每个候选区域进行变形,转变为AlexNet要求的输入尺寸。并通过CNN进行传播。
3.对于每个类,使用针对该类训练的SVM对每个提取的特征向量进行评分。(每个特征向量对应一个候选区域,特征向量的SVM得分也对应于候选区域的得分)
4.图像中所有候选区域获得得分,应用贪婪的非最大抑制(每个类独立地应用非极大值抑制),如果一个区域有一个相交-过并集(IoU)与一个高于学习阈值的得分较高的选定区域重叠,则该区域拒绝该区域。通过NMS非极大值抑制后的候选区域为最终的目标位置。
运行时分析:
1.参数在所有类别中共享:对所有目标类别,都使用同一个AlexNet卷积网络进行特征提取,卷积参数在所有类别中共享。
2.CNN计算出的特征向量与其他常用方法(如带有视觉文字编码的空间金字塔)相比,是低维的。
上述结果是,计算候选区域和对应的特征所花费的时间被分摊到所有类上。唯一的类特定计算是特征和SVM权值之间的点积和NMS非最大抑制。
3.3 训练
监督训练:
在一个大的辅助分类数据集(ILSVRC2012)上对RCNN特征提取的CNN进行了预训练。
特定领域的微调与训练:
为什么微调:
在 ImageNet 上预训练的是模型是训练出识别物体类型的能力。为了使预训练的CNN(AlexNet)能够拥有边界框预测的能力,需要对AlexNet的架构做出微调。
如何微调、训练:
原CNN(AlexNet)架构的最后一层即1000类别的softmax分类层替换为一个随机初始化的(N + 1)维的层(N是目标检测的目标类的数量,加上1作为背景)。其余部分CNN的架构没有改变。
R-CNN 将候选区域与 GroundTrue 中的 真实标签相比较,如果 IoU > 0.5,说明两个对象重叠的位置比较多,于是就可以认为这个候选区域是 Positive,否则就是 Negetive。
在每次SGD迭代训练中,统一采样32个Positive(在所有类上)和96个背景窗口,以构建一个大小为128的批量。倾向于正窗口的抽样,因为与背景相比,它们是非常罕见的。
对象的类别分类器:
如何标记一个候选区域与真实框的‘相识度’。用IoU重叠阈值来解决这个问题,低于这个阈值的区域被定义为负值。重叠阈值的选择很重要。将其设置为0.5,mAP将减少5个点。将其设置为0会使mAP减少4个点。积极的例子被简单地定义为每个类的ground-truth边界框。
一旦特征提取和训练标签的应用,为每类优化一个线性支持向量机。由于训练数据量太大,无法在内存中拟合,我们采用标准的硬负挖掘方法。
在附录B中,我们讨论了为什么在微调训练和支持向量机的训练中定义的正例和反例是不同的。还讨论了训练支持向量机所涉及的权衡问题,不是简单地使用经过微调的CNN的最后一个softmax层的输出。
3.4 实验结果
(1)对于PASCAL VOC 2010-12数据集的测试结果(包含和不包含边界盒回归):
表显示了VOC 2010的完整结果。将RCNN方法与四种baseline进行比较,我们在mAP上取得了很大的改进,提高到了53.7%,同时也快了很多。我们的方法在VOC 2011/12测试中取得了相似的性能(53.3% mAP)。
(2) ILSVRC2013 数据集结果
将R-CNN与2013年ILSVRC竞赛的参赛作品以及赛后的优胜成绩进行比较。R-CNN获得了31.4%的,远远超过了OverFeat获得的24.3%的第二好结果。大多数参赛作品(OverFeat、NEC-MU、UvAEuvision、Toronto A和UIUC-IFP)都使用了卷积神经网络,这表明CNNs在如何应用于目标检测方面存在显著的细微差别,从而导致了结果的巨大差异。
四、可视化、消除研究和误差分析
4.1 可视化学习到的特征
第一层过滤器可以直接可视化,它们捕捉有方向的边缘和颜色特征。理解后续的层更具挑战性。我们提出了一个简单的(和互补的)非参数方法,直接显示网络学习到什么。
可视化思想:在网络中挑出一个特定的单元,把它当作一个独立的对象检测器。也就是说,计算一个大的候选区域集合(大约1000万)在该单元上的**,并根据**值的大小对候选区域进行排序,执行NMS,然后显示**值大的区域。这种方法让选择的单元“自己说话”,准确地显示它触发哪个输入,即学习到哪种特征。
例:可视化来自layer pool5的单元,它是网络的第五个也是最后一个卷积层的max pooling输出。pool5 的特征图为6×6×256 = 9216维。忽略边界效应,在原始的227×227像素输入中,每个pool5单元的感受野为195×195像素。该pool特征图中央的一个单元几乎可以看到整个图像,而靠近边缘的一个单元则有一个更小的、修剪过的感受野。
图4中的每一行显示了微调的CNN的pool5每个单元的前16个**,间接展示了网络的单元学习到的特征。
4.2 消除研究
(1)逐层性能,无需微调:
为了解哪些层对检测性能至关重要,分析了CNN最后三层的结果。第3.1节简要描述了pool5。最后两层总结如下:
1.fc6层完全连接到pool5。为了计算特征,它将一个4096×9216的权重矩阵乘以pool5特征图(以9216维向量的形式重新构造),然后添加一个偏差向量,并使用relu**函数。
2.fc7层是网络的最后一层。通过将fc6计算得到的特征乘以4096×4096的权矩阵来实现的,类似地添加一个偏置向量并应用relu。
(表第1-3行)发现,fc7中的特性泛化比fc6中的差。这意味着29%,也就是大约1680万CNN参数可以在不影响mAP的情况下被移除。更令人惊讶的是,删除fc7和fc6也会产生非常好的结果,尽管pool5仅使用CNN参数的6%。CNN架构的大部分代表性力量来自于它的卷积层,而不是更大的全连接层。
(2)逐层性能,使用微调:
(表2行4-6):微调整个网络的mAP增加了8.0个百分点,达到54.2%。与pool5相比,fc6和fc7的微调带来的提升要大得多,这表明从ImageNet学习到的pool5特性是通用的,而大部分mAP的提升是通过改进在它们之上的非线性分类器获得的。
(3)当前特征学习方法的比较:
两种建立在可变形零件模型上的方法-----》
DPM ST:用“草图标记”概率的直方图来增强HOG特征。
DPM HSC:用稀疏编码(HSC)的直方图代替HOG。
所有的R-CNN变体都比三种DPM基线(表行8-10)表现得更好
4.3 网络架构
本文的大部分实验结果是使用了AlexNet网络结构。架构的选择对R-CNN的检测性能有很大的影响。
4.4 检测误差分析
应用了优秀检测分析工具来揭示RCNN方法的错误模式。
4.5 边界框回归
在误差分析的基础上,实现了一种减少定位误差的简单方法。边界框回归这种简单的方法修复了大量的定位错误检测,将mAP提高了3到4个点。
边界框回归细节:为什么使用边界框回归、边界框回归是、怎么进行边界框回归。
参考1:边界框回归
参考2:RCNN解读