CVPR2014
物体检测算法,R-CNN,即Regions with CNN features。该论文采用的方法在PASCAL VOC 2010上mAP达到53.7%,比之前传统的方法要高很多。
论文总体思路可以分成3个步骤:
1. 产生大约2000个region proposals
2. 对这些region proposals进行CNN训练,提取特征向量
3. 对上一步产生的特征向量用一个线性的SVM进行分类
如下图所示:
具体步骤如下:
第一步,提取region proposal。采用“selectivesearch”方法,提取大约2000个region proposal。提取的region proposal有大有小,是矩形的。
第二步,将region proposal的大小重新调整到227*227(CNN训练需要固定大小的图片作为输入)。然后将重新调整后的图片送入CNN,提取出4096维的特征向量。其中CNN网络采用AlexNet(将最后一层softmax去掉),利用Caffe进行训练。如下图:
第三步,将第二步提取出来的特征向量送入一个线性的SVM进行分类。
训练
训练分为2步。supervised pre-training和Domain-specific fine-tuning。
由于物体标签训练数据太少,要是直接用CNN训练话容易造成过拟合。所以需要一个有监督的预训练。
supervised pre-training:在ILSVRC 2012数据集上进行预训练,数据集只有图像级别的标注信息(即只知道图片的类别,不知道图片中具体物体的位置),直接采用AlexNet进行训练。
Domain-specific fine-tuning:采用“selectivesearch”搜索出来的候选框(数据集),然后处理成指定大小的图片,继续对上面预训练的cnn模型进行fine-tuning训练。由于ILSVRC 2012数据集上有1000类的物体,而PASCAL VOC 2010比赛只有20类的物体需要检测,故需要将AlexNet网络的最后一层1000类的softmax改成21类(20类物体加上1个背景background),其余网络层参数不变。最后在每次训练的时候,batch size大小选择128,其中32个正样本、96个负样本(由于正样本相对于背景(负样本)太少了)。
参考文献:RCNN学习笔记(2):Rich feature hierarchies for accurate objectdetection and semantic segmentation