cs231n笔记(9)--目标识别RCNN

来源:互联网 发布:铝合金和塑钢知乎 编辑:程序博客网 时间:2024/05/17 23:02

一.简介

cnn网络主要用于识别图片并将图片分类,但如果想把识别出来的样本标识出来就需要用到RCNN网络


rcnn主要作用就是用于目标识别(分类+标注)


二.具体流程


RCNN算法分为4个步骤 
- (1)一张图像生成2000个候选区域 
- (2)对每个候选区域,使用深度网络提取特征 
- (3)特征送入每一类的SVM 分类器,判别是否属于该类 
- (4)使用回归器精细修正候选框位置 


(1)生成2000个候选区域框

输入一张多目标图像,采用selective search算法提取约2000个建议框。

SS算法:http://blog.csdn.net/qq_21089969/article/details/54379522

(2)对每个候选区域,使用深度网络提取特征 

先在每个建议框周围加上16个像素值为建议框像素平均值的边框,再直接变形为227×227的大小;
然后将所有建议框像素减去该建议框像素平均值后【预处理操作】,再依次将每个227×227的建议框输入AlexNet CNN网络获取4096维的特征【比以前的人工经验特征低两个数量级】,2000个建议框的CNN特征组合成2000×4096维矩阵;

(3)特征送入每一类的SVM 分类器,判别是否属于该类 


将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘【20种分类,SVM是二分类器,则有20个SVM】,获得2000×20维矩阵表示每个建议框是某个物体类别的得分;
分别对上述2000×20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框。

20类中每个类有2000个框,在每类2000个框中进行非极大值抑制,留一个为该类框。

非极大值抑制:http://blog.csdn.net/chenlufei_i/article/details/78882569

(4)使用回归器精细修正候选框位置


首先要明确目标检测不仅是要对目标进行识别,还要完成定位任务,所以最终获得的bounding-box也决定了目标检测的精度。 
这里先解释一下什么叫定位精度:定位精度可以用物体检测框与实际标注的物体边界框的IoU值来近似表示。

如下图所示,绿色框为实际标准的车辆框,即Ground Truth;黄色框为ss算法得出的建议框,即Region Proposal。即使黄色框中物体被分类器识别为车辆,但是由于绿色框和黄色框IoU值并不大,所以最后的目标检测精度并不高。采用回归器是为了对建议框进行校正,使得校正后的Region Proposal与selective search更接近, 以提高最终的检测精度。论文中采用bounding-box回归使mAP(精度曲线)提高了3~4%。 



如上图,黄色框口P表示建议框Region Proposal,绿色窗口G表示实际框Ground Truth,红色窗口G^表示Region Proposal进行回归后(回归器精细修正回归框)的预测窗口。

具体算法有找到,有大神教教我。。。


三.训练流程


简单地说:就是r-cnn需要两次进行跑cnn model,第一次得到classification的结果,第二次才能得到(nms+b-box regression)bounding-box。

  1. 有监督预训练

    样本来源正样本ILSVRC2012负样本ILSVRC2012


    ILSVRC样本集上仅有图像类别标签,没有图像物体位置标注; 
    采用AlexNet CNN网络进行有监督预训练,学习率=0.01; 
    该网络输入为227×227的ILSVRC训练集图像,输出最后一层为4096维特征->1000类的映射,训练的是网络参数。

  2. 特定样本下的微调

    样本来源正样本Ground Truth+与Ground Truth相交IoU>0.5的建议框【由于Ground Truth太少了】负样本与Ground Truth相交IoU≤0.5的建议框


    PASCAL VOC 2007样本集上既有图像中物体类别标签,也有图像中物体位置标签; 
    采用训练好的AlexNet CNN网络进行PASCAL VOC 2007样本集下的微调,学习率=0.001【0.01/10为了在学习新东西时不至于忘记之前的记忆】; 
    mini-batch为32个正样本和96个负样本【由于正样本太少】; 
    该网络输入为建议框【由selective search而来变形后的227×227的图像,修改了原来的1000为类别输出,改为21维【20类+背景】输出,训练的是网络参数。

  3. SVM训练

    样本来源正样本Ground Truth负样本与Ground Truth相交IoU<0.3的建议框


    由于SVM是二分类器,需要为每个类别训练单独的SVM; 
    SVM训练时输入正负样本在AlexNet CNN网络计算下的4096维特征,输出为该类的得分,训练的是SVM权重向量; 
    由于负样本太多,采用hard negative mining的方法在负样本中选取有代表性的负样本,该方法具体见。

  4. Bounding-box regression训练

    样本来源正样本与Ground Truth相交IoU最大的Region Proposal,并且IoU>0.6的Region Proposal


    输入数据为某类型样本对N个:{(Pi,Gi)}i=1N以及Pii=1N所对应的AlexNet CNN网络Pool5层特征ϕ5(Pi)i=1N,输出回归后的建议框Bounding-box,训练的是dx(P)dy(P)dw(P)dh(P)四种变换操作的权重向量。具体见前面分析。

总之数据总共有三个训练:CNN fine-tune、SVM training、bounding-box regression training

参考文章:http://www.bubuko.com/infodetail-2354116.html

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