【论文阅读】Rich feature hierarchies for accurate object detection and semantic segmentation

论文简介:

本文是目标检测算法R-CNN的原论文,R-CNN作为第一个使用深度学习进行目标检测的算法,在PASCAL VOC2012数据集上将MAP从35.1%提升至53.7%,开启了深度学习在目标检测领域的先河,由此也开启了后续的Fast R-CNN,Faster R-CNN等一系列优秀的目标检测算法。

一、R-CNN 简介

R-CNN算法大致分为四个步骤,1、首先进行候选区域proposals的提取,2、然后对提取到的proposals传入CNN进行特征提取,3、对提取到的特征使用SVM判断是否属于某一类,4、对判断属于某一类的proposals的位置框使用相应的位置回归网络进行位置框的精细修正。下图为R-CNN的大致流程示意图。

【论文阅读】Rich feature hierarchies for accurate object detection and semantic segmentation

二、R-CNN inference

前提:所有使用到的CNN,SVM等都是已经按照相关方法训练完成的模型。在给定一幅含有待检测目标的图像时,在R-CNN实际进行推理、进行目标检测的步骤包含,首先使用selective search方法对输入图像进行候选区域提取,进行proposals提取,大概提取2000个候选区域,矩形区域,长宽比任意形状。然后对提取到的2000个proposals,每一个都分别进行resize到227x227尺寸,然后将resize后的正方形图像传入一个CNN(AlexNet),提取AlexNet的Fc7,第七层特征(是一个全连接层),4096维的一个特征向量,是所对应的proposals的特征。2000个候选区域,提取出2000个特征向量,然后进行逐类别检测,假设先进行cat的检测,则将2000个特征向量分别传入cat的SVM分类器中,得到每一个proposals为cat的信心分数。然后使用非极大值抑制方法检测出输入图像中的cat,有几个,分别在哪。首先取出信心分数大于某个阈值的proposals,假设取出200个(这两百个极有可能含有cat),对200个信心分数进行排序,然后取出最大的信心分数所对应的proposals,然后对剩下的199个proposals,计算其每一个与最大信心分数的proposals之间的IoU,剔除掉199个proposals中IoU大于某个阈值的proposals,假设剔除掉9个proposals,然后继续对剩下的190个proposals进行信心分数排序,再取最大信心分数的proposals,再继续剔除proposals等,经过若干轮剔除,往往200个proposals只会留下两三个proposals,此时也即为从图中检测到的cat的个数,及各个cat的初始位置(矩形框)。然后对检测到的cat的三个proposals,分别逐个处理,修正位置(矩形框坐标),对一个cat的proposals 图像,传入AlexNet提取第五层特征(一个卷积层特征6x6x512),将此3维特征传入一个回归网络,网络输出是当前proposals需要被修正的偏移量dx,dy,dw,dh,然后对proposals的坐标加上修正偏移量,得到算法最终输出的cat的定位框的坐标。假设需要进行20个类别目标的检测,则继续重复对dog按照上述流程进行处理,20个类别分别处理完,可能得到检测出3种不同的object,1只cat,2条dog,1辆汽车,其余17种object为0。完成输入图像的目标检测。注意,每个类别有其各自的SVM分类器和位置回归网络,所有类别共享一个特征提取网络AlexNet。也即有20个SVM和20个位置回归网络。

三、R-CNN training

R-CNN中使用到三个需要训练的模型,特征提取网络CNN,类别分类模型SVM和位置回归网络。

特征提取网络CNN采用fine-tuning的训练思路。对使用ImageNet 1000类大规模数据集进行充分训练的AlexNet,修改网络输出端神经元个数为21,(N+1,N为目标检测类别,加一个背景类)。构建训练样本,对目标检测的数据集(标注了目标类别及位置框),对所有图像进行selective search候选框提取,对某一张图像中的所有框,若其与cat的某个框的IoU>=0.5,则其为cat类的一个positives,剩下的所有框,再判断其与该图中标注的另一个object的IoU数值,IoU>=0.5的为positives,逐个处理完所有2000个proposals后,剩下的IoU<0.5的proposals为negatives,为背景类,为N+1的那个“1”类。然后使用较小的学习率(0.0001),对21个类别连接的网络权重进行随机初始化,其他CNN参数使用预训练参数初始化。进行fine-tuning训练。

对对应每一个类别的SVM进行分别训练,还是与特征提取网络训练的数据集准备流程相似,只不过此时,标注的cat的ground truth是cat的positives,与标注的cat的ground truth的IoU<0.3的都为negatives(包含背景,dog,car等其他非包含cat的区域)。正真训练时SVM的输入是每个proposals传入AlexNet后输出的Fc7层的4096维特征向量。

位置回归网络也是逐类别训练获得,位置回归网络的输入是proposals传入AlexNet后输出的第五层特征(一个卷积层特征6x6x512),模型的输出是位置偏移量dx,dy,dw,dh。针对cat类,一个训练样本对为与标注的cat的ground truth的IoU>0.6的proposals(只期望修正预测位置比较接近正确位置的proposals),以及该proposals与ground truth位置坐标之间的偏移值。收集大量的训练样本对,训练位置回归网络模型。