论文地址:http://www.rossgirshick.info/#girshick2014rcnn
前记: R-CNN系列的开山之作,发表于2014cvpr,将神经网络用于目标检测之中,在VOC2010测试数据集上取得了53.7%的准确率,而当时主流的基于HOG特征的DPM算法为33.4%,虽然后续有了更多的改进诞生了Fast R-CNN以及Faster R-CNN系列,但是此篇文章仍然值得研究
一、解决的主要问题
- 使用深度神经网络进行目标检测
- 在缺乏标注的小批量数据集上训练大型网络
二、 模型结构
Region proposal + CNN + SVM
三、训练
- 采用Alexnet网络在ILSVRC2012图像分类数据集上进行预训练,网络包含5个卷积层和两个全连接层
- 采用selective search方法对每张图片提取region proposal,每张图片提取两千个region proposal
- 每张图片的两千个region proposal与图片的ground truth进行IOU计算,取IOU大于0.5的为正例,反之为负例
- fine-tuning CNN网络,也就是进行迁移训练,将网络的最后一层替换成N+1个神经元,N 为VOC物体类别数,再加上background,即预训练的1000维softmax层改成21维,进行微调训练,只训练最后一层参数,网络的输入为每一个resize成227x227的固定大小region proposal(这一步和第一步解决了上述第二个问题,这一步也将准确率提高了8个百分点)
- 对每一个类别训练一个SVM二分类器,输入是f7的特征,f7的输出维度是2000x4096,输出的是是否属于该类别,训练结果是得到SVM的权重矩阵W,W的维度是4096x20,此处正样本为ground thuth,负样本定义为IOU<0.3的region proposal
- 训练一个线性回归模型用于对bounding box回归,采用的是pool5的输出特征,目的是对bounding box进行矫正
四、测试
- 对每一张图片先通过selective search提取出2000个region proposal
- 将这些region proposal resize成固定尺寸输入CNN网络,的到f7层的特征输出,即维度为2000x4096维特征矩阵
- 将输出的特征作为svm分类器的输入,得到每一个region proposal的分类结果,输出维度2000x20,要注意是20个类别的输出,不是21个
- 对每一个类别进行非极大值抑制(NMS), 剔除每一类别的region proposal,保留下来的就是该类别的bounding box
- 使用之前训练好的bounding box regresion模型对这些bounding box进行回归,得到修正后的bounding box,即最终的定位框
五、性能
在VOC2010 test数据集上的表现如下表所示
六、算法不足
整个模型流程过多,有region proposal的提取,CNN的训练,SVM的训练,bounding box regression的训练,训练耗时较长。而且每一张图片提取两千个region proposal进行卷积计算,其中有大量的重复内容,增加了计算量。