论文背景
论文全称:Rich feature hierarchies for accurate object detection and semantic segmentation(简称:R-CNN)
论文链接:https://arxiv.org/abs/1311.2524
论文日期:2014.10.22
论文是在2014年发表,在目标检测算法中,表现效果最好的方法是结合了多种低维图像特征和高维上下文环境的复杂融合系统。
R-CNN是基于PASCAL VOC数据集进行训练与检测的,相较于之前的算法,图片mean average precision(mAP)得到了超过30%的提升,尤其在VOC 2012数据集上表现最佳,mAP达到53.3%。
算法主要有两个突出贡献:
- 有一个大容量的卷积神经网络(CNNs)自顶向下地进行region proposals(候选区域提取),为了定位和分割物体。
- 当带有标签的训练数据稀缺时,有监督的预训练进行辅助,接着在特定区域进行微调,检测准确性会得到显著提升。
训练流程:
候选区域
region proposal是采用selective search的方法,进行独立类别的候选区域提取,基于物体的形状(shape),颜色(color),纹理(texture)等进行区域选择,考虑到了图片中物体的多样性(diversary)以及层(hierarchies)。
特征提取
对于每一个proposal都提取了一个4096-d的特征向量,通过一个包含五层卷积层和两层全连接层的CNN提取特征。输入为256*256的RGB图片,所以候选区域图片需先进行尺寸缩放,通过实验对比,最终选择了各向同性的缩放方法,使用padding=16的方式进行填充。
特征提取的训练分两个步骤:
-
基于大量数据的有监督的预训练:数据集为ILSVRC2012,这个数据集只有分类标签,没有定位标签,可直接采用VGG16等神经网络以及预训练的参数进行迁移学习。
预训练的学习率为0.01。 -
特殊范围内进行微调(fine tuning):基于提取的候选区域,在原始的CNN参数上进行训练,采用SGD(随机梯度下降),原始的神经网络的分类种类是1000,现在对于分类层初始化为n+1(n为物体类别数,1为背景)。
采用IOU>=0.5的为正样本,剩余的为负样本,学习率为0.001(0.01/10),为了让微调不造成预训练的参数特征快速消失。mini-batch为128,其中32个为正样本,96个为负样本。
检测测试
这是一个二分类问题,对于每一个类别都训练一个SVM分类器,对于每一个神经网络提取出来的特征向量输入到SVM中进行评分(score),使用greedy non-maximum suppression(非极大值抑制)得到一个更高分的候选区域。
SVM分类器的尺寸为4096*n。在测试集设置IOU的阈值为0.3,负样本为IOU<0.3。正样本为ground-truth bounding boxes,即bounding box将整个对象包含在内。
由于训练数据对于内存来说太大,每张图片有2000个候选区域,负样本数目太多,我们采用了hard negative mining方法,选择负样本为IOU<0.3,提高了检测准确性和训练速度。