Rich feature hierarchies for accurate object detection and semantic segmentation Tech report (v5)【自我理解,若有错误,麻烦帮忙指出,谢谢】
Abstract
一般使用PASCAL VOC数据集进行目标检测评估,现在最好方法是将多个低层次的特征图和高阶语义信息连接所形成的复杂集成系统。本文提出的方法在VOC 2012上的结果mAP到达53.3%,超出最优结果30%。本文方法主要包括两个关键点:(1)将卷积网络应用于自底向上的候选框的特征提取以便于定位和分割(2)当训练数据缺乏时,可使用一个辅助任务进行预训练,然后进行局部微调,通过此方法产生显著的效果。我们还比较了R-CNN和OverFeat,这是一种最近提出的基于类似CNN结构的滑动窗口检测器。在ILSVRC2013数据集上进行检测,R-CNN的性能优于OverFeat。
- 第一个使用CNN提取特征
- 使用大数据集进行预训练,在小数据集上进行微调,提高网络表现力,防止过拟合
Introduction
这篇文章是第一个显示CNN可以显著提高PASCAL VOC数据集上目标检测的表现,相比于基于简单的HOG样特征的系统(此处我也不知道啥系统)。本文主要着重于这两个问题:使用深度网络进行定位并且训练一个高容量模型只需使用少量数据进行训练。
不同于图片分类,检测需要在图片上定位目标对象。一种方法将定位视为一个回归问题。另一种方法为建立一个滑动窗口检测器。为了获得高空间分辨率,这些卷积网络[32,40,35]一般有两个卷积和池化层。我们也考虑使用滑动窗口方法。然而在我们高层,使用5个卷积层具有较大的感受野,在输入图像上以32*32进行窗口滑动,使得在滑动窗口内精确定位成为一个开放性技术挑战。
取而代之,我们通过在“区域中进行识别”来解决卷积定位问题,这种方法对于目标检测和语义分割都很有效。在测试阶段,将在输入图像产生大约2000个类别独立的候选区域,然后使用卷积网络在每个候选区域提取固定长度的特征对象,最后对于每一个区域使用特定类别线性SVM进行分类。我们通过对每一个候选区域进行仿射性变换以产生固定长度的特征向量,并忽略候选框的原始尺寸。如图1所示,系统网络结构,包含区域候选部分以及CNN提取特征部分。
目标检测第二大挑战是训练数据集稀缺。传统方法是使用无监督的预训练,然后使用监督微调。本文提出第二个方式是使用大型数据集(ILSVRC)进行监督式预训练,然后在小数据集(PASCAL)上进行微调,当数据集规模有限时这是提高卷积神经网络表现力比较有效的方式。在我们的实验中,通过微调提高网络在mAP的表现力提高了8个百分点。
我们的系统是十分高效的。唯一的类特定的计算是一个相当小的矩阵向量乘积以及非最大抑制。
模型结构如下:
- 在图片上进行区域候选
- 将区域候选转换为固定尺寸
- 使用CNN提取特征
- 使用SVM进行分类以及回归进行精确定位
Object detection with R-CNN
我们的目标检测系统由三个模块组成。第一个为产生与类别无关的区域候选框。这些区域候选框是可供检测器进行检测的区域。第二个部分是一个大的卷积神经网络,能过从候选区域中提取一个固定长度的特征向量。第三个部分是一组基于特定类的线性SVM。
Module design
Region proposals:最近的各种论文提出了生成与类别无关候选区域的方法。本文使用“selective search” 进行区域候选。
Feature extraction:我们从每个候选区域中提取4096维向量。227 X 227RGB图像通过5个卷积层和2个全连接层提取特征。
为了从候选框中提取特征,首先必须将候选框转换为卷积神经网络兼容的形式(卷积神经网络输入要求图片尺寸为227 X 227)。通过以下方式重新设置候选框尺寸:忽略候选框的尺寸或横纵比,直接将其转换为227 X 227尺寸,但在转换之前,先将候选框向外扩充p个像素(实验中p=16)
Test-time detection
在测试时,我们使用“selective search”在测试图像上提取2000个候选框,并将其转换为227*227,使用卷积神经网络提取特征向量,然后使用为该类训练的SVM对每个提取的特征向量进行评分。对于所有的评分的候选框,使用非极大抑制算法(对于每一个类都是独立的)。
非极大抑制算法:抑制不是极大值的元素,可以理解为局部最大搜索;在行人检测中,滑动窗口经提取特征,经分类器分类识别后,每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。这时就需要用到NMS来选取那些邻域里分数最高(是行人的概率最大),并且抑制那些分数低的窗口。详见非极大抑制算法 转载
Run-time analysis:略
Training
Supervised pre-training:将卷积神经网络在大数据集上进行预训练,标签直接使用大数据集的标签(此处没有候选框标签)然后在小的数据集上进行微调【dropout论文提过一个在任何大数据集上训练过的卷积神经网络,去掉全连接部分,加上一个分类器可对任意数据集进行分类能得到比较好的结果,此时训练好的卷积神经网络已经是一个好的特征提取器】
Domain-specific fine-tuning:为了使网络在预训练后适应新的任务,我们使用候选框对网络继续进行训练,其中背景类也需要算进去【例如类别为N类,则分类器输出为N+1类】
对于每一个候选框,当与真实标签的IOU>=0.5时,作为该候选框类别标签。使用SGD进行训练,批量为128,其中包括32个积极类(包括所有类别)和96个背景类。我们将抽样偏向于正样例,因为它们与背景相比非常罕见。【在附录部分讲解了为何微调部分和训练分类器部分所选择的阈值不同】
Object category classifiers:【此处作者举了个例子】考虑训练一个二进制分类器检测汽车,很明显一个候选框紧紧包围汽车部分,则这个候选框是一个积极类,反正不包括汽车的候选框为背景类。但是如何确定一个只覆盖部分汽车候选框的标签。我们通过设置一个阈值进行判断,选取交并比(IOU)作为评估标准。这个阈值的选取通过实验获得,作者在{0,0.1,…,0.5}中选取0.3。这个阈值的选取十分重要,设置为0.5时,mAP会下降5个百分点,同样设置为0也会使测试结果下降。我们对每一类都训练一个线性SVM分类器。
Results on PASCAL VOC 2010-12
Results on ILSVRC2013 detection
Visualization, ablation, and modes of error
Visualizing learned features
卷积神经网络第一层可视化十分容易,第一层一般捕捉了所感兴趣的边缘信息以及相应的色彩信息。但理解高层卷积层十分困难。
本文提出一个方法:在网络中选取一个特征图,并把它当作目标分类器使用。我们计算这个特征图的对候选框的分类结果【此处论文使用activation这个词,我感觉是分类结果的意思】对于每一个候选框将结果从高到底排列,使用非极大抑制 算法进行选择最佳分类结果。
本文中选取第5层pooling层,该层对于原图227 X 227的感受野为195 X 195,由此可见pooling已经覆盖了图片中极大部分区域。通过将特征图当作检测器使用,可直接观察该特征图学习了图片中哪部分信息。如下图,第二行显示了特征图着重学习了图片中狗头的信息。
Ablation studies
Performance layer-by-layer, without fine-tuning:为了了解哪些层对于检测结果影响较大,我们使用VOC 2007数据集对于卷积神经网络最后三层进行了测试实验,包括第五层的
p
o
o
l
5
pool_5
pool5层,和两个全连接层
f
c
6
fc_6
fc6、
f
c
7
fc_7
fc7。通过实验显示,
f
c
6
fc_6
fc6比
f
c
7
fc_7
fc7检测结果好,
p
o
o
l
5
pool_5
pool5比
f
c
6
fc_6
fc6的检测结果好,通过这个结果我们在设计网络时去掉后两层可极大减少网络参数,同时提高了网络表达力。通过实验表明CNN的代表性力量大部分来自它的卷积层,而不是更大的密集连接层。
Performance layer-by-layer, with fine-tuning: 将预训练后网络使用VOC 2007进行微调,结果mAP增长了8个百分点。微调对
f
c
6
fc_6
fc6和
f
c
7
fc_7
fc7的促进作用要比
p
o
o
l
5
pool_5
pool5大得多,这表明从Image Net数据集学习到的
p
o
o
l
5
pool_5
pool5特性是通用的,并且大部分改进都是从在它们之上学习特定领域的非线性分类器中获得的。
结果如下,其中前三行为未微调的结果,后三行为微调后的结果,最后三行与其他方法比较结果。
Network architectures
后面后期填充