RCNN(Regions with Convolutional Neural Network Feature)

来源:互联网 发布:网络教育心理学专业 编辑:程序博客网 时间:2024/06/14 13:17

背景知识

在目标检测评价中,有一个参数定位准确率,即IOU,IOU计算公式如下:


简单来说,IOU就是模型预测的bounding box与标记bounding box的重合率.

通常我们预测的bounding box是无法与标记bounding box完全重合的,例如下面几种情况:

因此可以通过求两个bounding box的重合率即IOU,并设定一个阈值t0,并认为IOU值大于t0的候选框为物体,否则为背景.

模型结构

物体检测系统如下:

物体检测分三步:

(1)对输入图像,提取2000个物体候选框(bounding box),如图中标号2.

(2)使用CNN网络提取每个bounding box的特征向量,特征向量为4096维,如图中标号3.

(3)对于每个bounding box的特征,进行分类,分类算法采用线性SVM,如图中标号4.

R-CNN算法在PASCAL VOC2010上获得了63.7%的mAP,ILSVRC2013,200个类别上,31.4%mAP.

步骤1:提取候选框

文献提取了2000个可能的物体候选框,使用的算法为论文Selective Search for Object Recognition.

简单来说就是,通过将图像分割(文献Efficient GraphBased Image Segmentation)为多个region,并且用合并(grouping)的方法将region聚合成大的region,重复该过程,知道整张图像为一个最大的region,这样就能得到多尺度的region.具体算法如下:

  • 使用Efficient GraphBased Image Segmentation算法分割图像得到多个region.

  • 计算每两个region的相似度.

  • 合并相似度最大的两个region.

  • 计算新合并region与其他region的相似度,合并相似度最大的两个region.

  • 重复上述过程直到整张图片都聚合成一个大的region

  • 使用一种随机的计分方式给每个region打分,按照分数进行ranking,取出top k的子集,就是selective search的结果.

详细原理可以参考:http://blog.csdn.net/csyhhb/article/details/50425114

selective search提取的候选框是大小不同的,而CNN输入图像大小是固定的(本文输入为227 × 227 pixels),因此需要将候选框缩放到227 × 227 pixels.作者提出了两种形变方法:

(1)各向异性缩放

各向异性缩放就是,不管图像是否扭曲,直接将图像缩放到固定大小,如图D所示.

(2)各向同性缩放

文献提出了两种方法.一种是将图像在原图中沿着bounding box进行扩展,如果已经延伸到了原始图片的外边界,那么就用bounding box中的颜色均值填充,如图B所示.另一种方法是将图像用固定的背景填充,如图C所示.

步骤2:CNN训练

关于CNN网络结构的选取,文献通过对比发现,R-CNN O-Net(VGG16)相比于R-CNN T-Net(Alexnet),mAP从58.5%增加到66%,但是计算时间也多了7倍,因此文献选用的为Alexnet.

预训练CNN

对于CNN,训练数据通常不够,这时候可以用其他任务已经训练好的模型参数,或者其他数据集训练模型,以初始化模型.首先,使用ILSVRC2012分类数据(无bounding box 标记)训练CNN,在ILSVRC2012 分类validation数据上,测试发现,相比文献25,获得了top-1,错误率比高2.2%的效果.

fine tuning CNN

将CNN的最后一层用(N+1)类层替代,N为物体检测的类别,+1的意思是加上一个背景类别,并随机初始化该层,CNN的其他结构不变.例如,对于VOC,N=20,ILSVRC2013,N=200.之后用selective search提取的候选块,处理成CNN的输入大小,对CNN进行fine-tuning,训练采用SGD,学习率0.001.

文献对比了去掉CNN的f6,f7的效果对比,以及有误fine tuning对比,如上表,有第1-3行最后一列知,如果没有fine tuningpool5,f6,f7层的mAP(平均精度)差不多,fine tuning后f6,f7的精度明显提升很多.由此可见,在训练的时候f6,f7层提取到了特定任务的特征.

步骤3:SVM分类

疑问:CNN网络本身就可以对bounding box的物体进行识别分类训练,在训练的时候最后一层softmax就是分类层,为什么还要先用CNN做特征提取(提取fc7层数据),然后再把提取的特征用于训练svm分类器?这个是因为svm训练和cnn训练过程的正负样本定义方式各有不同,导致最后采用CNN softmax输出比采用svm精度还低。CNN训练的时候,容易出现过拟合,因此需要大量的训练数据,而为了得到大量训练数据,在数据标注的时候通常限制条件比较宽松,比如当bounding box只包含部分物体时,我们就将其标注为正样本.;

而SVM是一个正负样本分类器,适用于少样本训练,所以对于训练样本数据的IOU要求比较严格,我们只有当bounding box把整个物体都包含进去了,我们才把它标注为物体类别即正样本,否则为负样本.那么怎样判断正负样本呢,作者测试了IOU阈值各种方案数值0,0.1,0.2,0.3,0.4,0.5,训练发现,IOU阈值为0.3效果最好,因此当IOU值大于0.3时为正样本,小于0.3为负样本,得到正负样本数据后,便可以用于训练SVM。

我们对每个物体类别分别训练一个SVM分类器,因此对于N个物体类别,需要训练N个SVM.而对于每张图像,selective search 得到2000个候选框,输入CNN,为每个侯选框得到一个4096维的向量,因此CNN输出为一个的特征矩阵.对于N个类别的物体,SVM的权重矩阵为(每个SVM权重矩阵为输出为的矩阵).

参考文献:

1.论文:Rich feature hierarchies for accurate object detection and semantic segmentationTech report (v5)

2.http://blog.csdn.net/hjimce/article/details/50187029

3.http://blog.csdn.net/csyhhb/article/details/50425114

4.https://zhuanlan.zhihu.com/p/23006190?refer=xiaoleimlnote

阅读全文
0 0
原创粉丝点击