论文阅读笔记(四):Rich feature hierarchies for accurate object detection and semantic segmentation ( R-CNN )

本文是论文的相关摘要,因为作者的原话最容易理解,所以将精彩语句摘录,帮助快速回忆起文章主要信息。后续会将把论文英文原版语句补充进来,持续更新。


融合了多个低层次图像特征和高层次的上下文环境的复杂系统。

两个关键因素:

(1) 将大型卷积神经网络(CNNs)应用于自底向上区域推荐以定位和分割物体;

(2)当标签训练数据不足时,先针对辅助任务进行有监督预训练,再进行特定任务的调优,就可以产生明显的性能提升。

特征很重要。

对于视觉识别更有价值的信息是层次化的,通过多个阶段来计算特征。

模式识别的层次化、移动不变性模型

反向传播的随机梯度下降对训练卷积神经网络(CNNs)非常有效

Alexnet在于在120万的标签图像上使用了一个大型的CNN,并且对LeCUN的CNN进行了一些改造(比如ReLU和Dropout Regularisation)。

我们主要关注了两个问题:使用深度网络定位物体和在小规模的标注数据集上进行大型网络模型的训练。

“对区域进行识别”的模式

Regions with CNN features。

目标检测的一个方法是将框定位看做是回归问题。另一个办法就是创建滑窗检测器。

测试时,我们的方法产生了接近2000个与类别独立的区域推荐,对每个推荐使用CNN抽取了一个固定长度的特征向量,然后借助专门针对特定类别数据的线性SVM对每个区域进行分类。

由于矩形区域存在大量的重叠,因此最后用非极大值抑制(non-maximum suppression)的方法对这些区域进行筛选。

结合 CNN 的 pool5 层提取的特征以及 DPM 中的 box regression,计算出偏移,训练一个线性回归模型对矩形位置进一步微调拟合

在辅助数据集(ILSVRC)上进行有监督预训练,再在小数据集上针对特定问题进行调优是在训练数据稀少的情况下一个非常有效的训练大型卷积神经网络的方法。

可视化学到的特征

直接可视化第一层特征过滤器非常容易理解,它们主要捕获方向性边缘和对比色。难以理解的是后面的层。Zeiler and Fergus提出了一种可视化的很棒的反卷积办法。我们则使用了一种简单的非参数化方法,直接展示网络学到的东西。这个想法是单一输出网络中一个特定单元(特征),然后把它当做一个正确类别的物体检测器来使用。方法是这样的,先计算所有抽取出来的推荐区域(大约1000万),计算每个区域所导致的对应单元的**值,然后按**值对这些区域进行排序,然后进行最大值抑制,最后展示分值最高的若干个区域。这个方法让被选中的单元在遇到他想**的输入时“自己说话”。我们避免平均化是为了看到不同的视觉模式和深入观察单元计算出来的不变性。

我们可视化了第五层的池化层pool5,是卷积网络的最后一层,feature_map(卷积核和特征数的总称)的大小是6 x 6 x 256 = 9216维。忽略边界效应,每个pool5单元拥有195×195的感受野,输入是227×227。pool5中间的单元,几乎是一个全局视角,而边缘的单元有较小的带裁切的支持。图4的每一行显示了对于一个pool5单元的最高16个**区域情况,这个实例来自于VOC 2007上我们调优的CNN,这里只展示了256个单元中的6个(附录D包含更多)。我们看看这些单元都学到了什么。第二行,有一个单元看到狗和斑点的时候就会**,第三行对应红斑点,还有人脸,当然还有一些抽象的模式,比如文字和带窗户的三角结构。这个网络似乎学到了一些类别调优相关的特征,这些特征都是形状、纹理、颜色和材质特性的分布式表示。而后续的fc6层则对这些丰富的特征建立大量的组合来表达各种不同的事物。

论文阅读笔记(四):Rich feature hierarchies for accurate object detection and semantic segmentation ( R-CNN )
Figure 4: Top regions for six pool5 units. Receptive fields and activation values are drawn in white. Some units are aligned to concepts, such as people (row 1) or text (4). Other units capture texture and material properties, such as dot arrays (2) and specular reflections (6).

消融研究

没有调优的各层性能。为了理解哪一层对于检测的性能十分重要,我们分析了CNN最后三层的每一层在VOC2007上面的结果。Pool5在3.1中做过剪短的表述。最后两层下面来总结一下。fc6是一个与pool5连接的全连接层。为了计算特征,它和pool5的feature map(reshape成一个9216维度的向量)做了一个4096×9216的矩阵乘法,并添加了一个bias向量。中间的向量是逐个组件的半波整流(component-wise half-wave rectified)ReLU(x <– max(0, x))。

fc7是网络的最后一层。跟fc6之间通过一个4096×4096的矩阵相乘。也是添加了bias向量和应用了ReLU。

我们先来看看没有调优的CNN在PASCAL上的表现,没有调优是指所有的CNN参数就是在ILSVRC2012上训练后的状态。分析每一层的性能显示来自fc7的特征泛化能力不如fc6的特征。这意味29%的CNN参数,也就是1680万的参数可以移除掉,而且不影响mAP。更多的惊喜是即使同时移除fc6和fc7,仅仅使用pool5的特征,只使用CNN参数的6%也能有非常好的结果。可见CNN的主要表达力来自于卷积层,而不是全连接层。这个发现提醒我们也许可以在计算一个任意尺寸的图片的稠密特征图(dense feature map)时使仅仅使用CNN的卷积层。这种表示可以直接在pool5的特征上进行滑动窗口检测的实验。

调优后的隔层性能。我们来看看调优后在VOC2007上的结果表现。提升非常明显,mAP提升了8个百分点,达到了54.2%。fc6和fc7的提升明显优于pool5,这说明pool5从ImageNet学习的特征通用性很强,在它之上层的大部分提升主要是在学习领域相关的非线性分类器。

由于R-CNN是在推荐区域上进行操作,所以可以很自然地扩展到语义分割任务上。

我们的物体检测系统有三个模块构成:

第一个,产生类别无关的推荐区域。这些推荐定义了一个候选检测区域的集合;

第二个是一个大型卷积神经网络,用于从每个区域抽取特定大小的特征向量;

第三个是一个指定类别的线性SVM。

对每个推荐区域抽取一个4096维度的特征向量。通过前向传播一个277×277大小的RGB图像到五个卷积层和两个全连接层来计算特征。

能够达到这个性能,得益于一下两个方面:

一、为了能够定位和分割物体,对自下而上的区域推荐应用了大型卷积神经网络。

二、提出了一种在标签数据明显不足时训练大型CNNs的办法。

首先使用拥有大量丰富数据的辅助任务(图像分类)来进行网络预训练,然后在针对这种数据比较缺乏的任务(物体检测)进行网络调优。我们猜测这种“有监督预训练-领域调优”的训练方法对那些数据缺乏的视觉任务都会非常有效。

采用 Selective Search 在 VOC 上选出很多矩形框,将与标准矩形框的覆盖区域 >= 0.5 IoU 的标为正样本,其余的标为负样本(负样本应该就是背景了)。

总结下来,通过结合传统CV领域的工具和深度学习(自下而上的区域推荐和卷积神经网络)效果十分显著。

相关参考