R-CNN
标题:《Rich feature hierarchies for accurate object detection and semantic segmentation》
时间:2014
出版源:CVPR 2014
主要链接:
- arXiv:http://arxiv.org/abs/1311.2524
- github(caffe):https://github.com/rbgirshick/rcnn
R-CNN 创新点:
- 使用CNN(ConvNet)对 region proposals 计算 feature vectors。从经验驱动特征(SIFT、HOG)到数据驱动特征(CNN feature map),提高特征对样本的表示能力。
- 采用大样本下(ILSVRC)有监督预训练和小样本(PASCAL)微调(fine-tuning)的方法解决小样本难以训练甚至过拟合等问题。
注:ILSVRC其实就是众所周知的ImageNet的挑战赛,数据量极大;PASCAL数据集(包含目标检测和图像分割等),相对较小。
R-CNN 介绍:
R-CNN作为R-CNN系列的第一代算法,其实没有过多的使用“深度学习”思想,而是将“深度学习”和传统的“计算机视觉”的知识相结合。比如R-CNN pipeline中的第二步和第四步其实就属于传统的“计算机视觉”技术。使用selective search提取region proposals,使用SVM实现分类。
原论文中R-CNN pipeline只有4个步骤,光看上图无法深刻理解R-CNN处理机制,下面结合图示补充相应文字
-
预训练模型。选择一个预训练 (pre-trained)神经网络(如AlexNet、VGG)。
-
重新训练全连接层。使用需要检测的目标重新训练(re-train)最后全连接层(connected layer)。
-
提取 proposals并计算CNN 特征。利用选择性搜索(Selective Search)算法提取所有proposals(大约2000幅images),调整(resize/warp)它们成固定大小,以满足 CNN输入要求(因为全连接层的限制),然后将feature map 保存到本地磁盘。
-
训练SVM。利用feature map 训练SVM来对目标和背景进行分类(每个类一个二进制SVM)
-
边界框回归(Bounding boxes Regression)。训练将输出一些校正因子的线性回归分类器
R-CNN 实验结果:
R-CNN在VOC 2007测试集上mAP达到58.5%,打败当时所有的目标检测算法。
转:目标检测