Region-based Convolutional Networks for Accurate Object Detection and Segmentation----R-CNN论文笔记
一、为什么提出R-CNN
目标检测性能停滞不前,性能最好的集成方法又太复杂,所以作者提出了一个既能大幅提升性能,又更简单的R-CNN。
二、R-CNN的框架

上面的框架图清晰的给出了R-CNN的目标检测流程:
-
输入测试图像
-
利用selective search算法在图像中提取2000个左右的region proposal。
-
将每个region proposal变换(warp)成227x227的大小并输入到CNN,将CNN的fc7层的输出作为特征。
-
将每个region proposal提取到的CNN特征输入到SVM进行分类。
针对上面的框架给出几点解释:
-
上面的框架图是测试的流程图,要进行测试我们首先要训练好提取特征的CNN模型,以及用于分类的SVM:使用在ImageNet上预训练的模型(AlexNet/VGG16)进行微调得到用于特征提取的CNN模型,然后利用CNN模型对训练集提特征训练SVM。
-
对每个region proposal缩放到同一尺度是因为CNN全连接层输入需要保证维度固定。
-
上图少画了一个过程——对于SVM分好类的region proposal做边框回归(bounding-box regression),边框回归是对region proposal进行纠正的线性回归算法,为了让region proposal提取到的窗口跟目标真实窗口更吻合。因为region proposal提取到的窗口不可能跟人手工标记那么准,如果region proposal跟目标位置偏移较大,即便是分类正确了,但是由于IoU(region proposal与Ground Truth的窗口的交集比并集的比值)低于0.5,那么相当于目标还是没有检测到。
三、R-CNN的优点
1)相对之前的算法,目标检测性能大幅提升。
四、R-CNN的缺点
1)训练分为多个阶段,步骤繁琐: 微调网络+训练SVM+训练边框回归器
2)速度慢: 使用GPU, VGG16模型处理一张图像需要47s。
3)训练耗时,占用磁盘空间大:5000张图像产生几百G的特征文件
五、R-CNN的适用场合
- 图像分类(image classification)
- 目标检测(object detection)
