文章的地址:http://fcv2011.ulsan.ac.kr/files/announcement/513/r-cnn-cvpr.pdf

这篇paper是由Ross大神完成的,之后还有faser-rcnn和faster-rcnn。R-CNN是将传统的CNN进行改进,先提出检测的备选区域Region Proposal,然后,利用cnn去检测这些Region。这种方法不仅可以识别物体,而且可以提供目标的位置信息。


思想

本文解决了目标检测中的两个关键问题。

问题一:速度

经典的目标检测算法使用滑动窗法依次判断所有可能的区域。本文则预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上提取特征,进行判断。

问题二:训练集

经典的目标检测算法在区域中提取人工设定的特征(Haar,HOG)。本文则需要训练深度网络进行特征提取。可供使用的有两个数据库: 
一个较大的识别库(ImageNet ILSVC 2012):标定每张图片中物体的类别。一千万图像,1000类。 
一个较小的检测库(PASCAL VOC 2007):标定每张图片中,物体的类别和位置。一万图像,20类。 
本文使用识别库进行预训练,而后用检测库调优参数。最后在检测库上评测。

流程

RCNN算法分为4个步骤 
- 一张图像生成1K~2K个候选区域 
- 对每个候选区域,使用深度网络提取特征 
- 特征送入每一类的SVM 分类器,判别是否属于该类 (将k个svm分类器中得分最高的类作为分类结果,将所有得分不高的region作为背景)
- 使用回归器精细修正候选框位置 


RCNN论文下载_目标检测



模型设计

候选区域

这一部分利用selective search方法来划分region,selective search方法是一个语义分割的方法,它通过在像素级的标注,把颜色、边界、纹理等信息作为合并条件,多尺度的综合采样方法,划分出一系列的区域,这些区域要远远少于传统的滑动窗口的穷举法产生的候选区域。

基本思路:

- 使用一种过分割手段,将图像分割成小区域 
- 查看现有小区域,合并可能性最高的两个区域。重复直到整张图像合并成一个区域位置 
- 输出所有曾经存在过的区域,所谓候选区域

合并规则:

优先合并以下四种区域: 
- 颜色(颜色直方图)相近的 
- 纹理(梯度直方图)相近的 
- 合并后总面积小的 
- 合并后,总面积在其BBOX中所占比例大的

上述四条规则只涉及区域的颜色直方图、纹理直方图、面积和位置。合并后的区域特征可以直接由子区域特征计算而来,速度较快。

RCNN论文下载_深度网络_02


特征提取

通过训练好的Alex-Net,先将每个region固定到227*227的尺寸,然后对于每个region都提取一个4096维的特征。在resize到227*227的过程中,在region外面扩大了一个16像素宽度的边框,region的范围就相应扩大了,考虑了更多的背景信息。


模型训练

CNN训练

首先拿到Alex-Net在imagenet上训练的CNN最为预训练,然后将网络的最后一个全连接层的1000类改为N+1(N为类别的数量,1是背景)来微调同于提取特征的CNN。为了保证训练只是对网络的微调而不是大幅度变化,调整学习率为0.001。计算每个region proposals与ground-truth的IoU,IoU阈值设为0.5,大于0.5的IoU作为正样本,小于0.5的为负样本。在训练的每一次迭代中都使用32个正样本(包括所有类别)和96个背景样本组成的128张图片的batch进行训练(这么做是因为正样本图片太少了)。


分类器训练

训练N(N为类别数)个线性svm分类器,分别对每一个类做一个二分类。在这里,作者将IoU大于0.5的作为正样本,小于0.3的作为负样本。(为什么不是0.5:因为当设为0.5的时候,MAP下降5%,设为0的时候,MAP下降4%,所以取中间值0.3)。后面说到softmax在VOC 2007上测试的MAP比SVM的MAP低,因为softmax的负样本(背景样本)是随机选择的即在整个网络中是共享的,而SVM的负样本是相互独立的,每个类别都分别有自己的负样本,SVM的负样本更“hard”,所以SVM的分类准确率更高。


边界框回归

作者通过训练一个回归器来对region的范围进行一个调整,因为region最开始只是用selective search的方法粗略得到的,通过调整以后可以得到更加精确的位置。