r cnn

R-CNN是一种基于区域提议的目标检测方法,它利用CNN提取图像特征并结合SVM进行分类,通过Bounding Box回归实现精确的目标定位。该方法在PASCAL VOC数据集上取得了53.3%的mAP,是当时最先进的技术。

R-CNN(regionswith CNN features)论文

       

主要做了什么

      提出了一个简单并且可扩展的算法。这种算法主要有两个关键思想(1)通过用CNN来提取regionproposals(用于目标定位和分割)(2)当标签训练数据不足的时候,用supervised pre-training来预训练网络(迁移学习的思想),然后再进行fine-tuning(微调)。

 

创新点:

      (1)采用CNN网络提取图像特征,从经验驱动的人造特征范式HOG、SIFT到数据驱动的表示学习范式,提高特征对样本的表示能力。

      (2)采用大样本下有监督预训练+小样本微调的方式解决小样本难以训练甚至过拟合等问题。

 

参考:https://blog.youkuaiyun.com/wopawn/article/details/52133338

 

取得的成就:

      object detection performance主要是由PASCAL VOC的数据来衡量。主要的衡量指标是meanaverage    precision(mAP),而本文的RCNN的mAP达到了53.3%(VOC12)。反正就是在那时候的最高水平。

 

 

框架:

(1)输入图片

(2)用selectivesearch的方法提取region proposals(2000左右)

(3)将提取出来的regionproposals调整尺寸(统一是227x227)后输入到CNN(Alexnet),提取feature。

(4)对regionproposals提取到的特征向量进行分类(SVM)。

(5)boundingbox回归,用bounding box回归值来校正原来的region proposals,生成预测proposals的坐标。

 

 

详细过程:

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

·     先在每个建议框周围加上16个像素值为建议框像素平均值的边框,再直接变形为227×227的大小;

·     先将所有建议框像素减去该建议框像素平均值后【预处理操作】,再依次将每个227×227的建议框输入AlexNetCNN网络获取4096维的特征【比以前的人工经验特征低两个数量级】,2000个建议框的CNN特征组合成2000×4096维矩阵;

·     将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘【20种分类,SVM是二分类器,则有20个SVM】,获得2000×20维矩阵表示每个建议框是某个物体类别的得分;

·     分别对上述2000×20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框;

·     分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的boundingbox。

分析:

(1)预训练(pre-training)和微调(fine-tuning)

      用ILSVRC2012 classification的数据集来预训练CNN网络,而微调是将CNN最后一层1000维的分类变成(N+1)维的分类(N代表类别,1代表背景)。

 

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

 

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

 

      针对微调是否有用的问题,文中得出的结论是:不针对特定任务进行微调,而将CNN当成特征提取器,pool5层得到的特征是基础特征,类似于HOG、SIFT,类似于只学习到了人脸共性特征;从fc6和fc7等全连接层中所学习到的特征是针对特征任务特定样本的特征,类似于学习到了分类性别分类年龄的个性特征。

     

(2)CNN特征可视化
      文中采用了巧妙的方式将AlexNet CNN网络中Pool5层特征进行了可视化。该层的size是6×6×256,即有256种表示不同的特征,这相当于原始227×227图片中有256种195×195的感受视野【相当于对227×227的输入图像,卷积核大小为195×195,padding=4,step=8,输出大小(227-195+2×4)/8+1=6×6】; 文中将这些特征视为”物体检测器”,输入10million的RegionProposal集合,计算每种6×6特征即“物体检测器”的激活量,之后进行非极大值抑制,最后展示出每种6×6特征即“物体检测器”前几个得分最高的RegionProposal,从而给出了这种6×6的特征图表示了什么纹理、结构。

 

(3)boundingbox 回归方法

      bounding box回归的方法是用于校正目标定位的表现。

具体方法:

训练算法的输入是{(Pi , G i )} i=1,...,N ,P i = (P x i , P y i , P w i , P h i ),前两项代表RegionProposal的中心坐标,后两项是代表长宽。用G = (G x , G y , G w , G h )来表示ground truth值。

Ĝhat=(Ĝ xĜ  yĜ wĜ h)来表示预测值。

这里定义了四种变换函数,dx(P),dy(P),dw(P),dh(P)。dx(P)和dy(P)通过平移对x和y进行变化,dw(P)和dh(P)

通过缩放对w和h进行变化,即下面四个式子所示(见图):

(4)non-maximum suppression(非极值抑制)
先解释什么叫IoU。如下图所示IoU即表示(A∩B)/(A∪B)

 

在测试过程完成到第4步之后,获得2000×20维矩阵表示每个建议框是某个物体类别的得分情况,此时会遇到下图所示情况,同一个车辆目标会被多个建议框包围,这时需要非极大值抑制操作去除得分较低的候选框以减少重叠框。

 

具体怎么做呢?
① 对2000×20维矩阵中每列按从大到小进行排序;
② 从每列最大的得分建议框开始,分别与该列后面的得分建议框进行IoU计算,若IoU>阈值,则剔除得分较小的建议框,否则认为图像中存在多个同一类物体;
③ 从每列次大的得分建议框开始,重复步骤②;
④ 重复步骤③直到遍历完该列所有建议框;
⑤ 遍历完2000×20维矩阵所有列,即所有物体种类都做一遍非极大值抑制;

 

(5)微调时和训练SVM时所采用的正负样本阈值【0.50.3】不一致

微调阶段是由于CNN对小样本容易过拟合,需要大量训练数据,故对IoU限制宽松:Ground Truth+与GroundTruth相交IoU>0.5的建议框为正样本,否则为负样本;
SVM这种机制是由于其适用于小样本训练,故对样本IoU限制严格:Ground Truth为正样本,与Ground Truth相交IoU<0.3的建议框为负样本

(6)为什么不直接采用微调后的AlexNetCNN网络最后一层SoftMax进行21分类【20+背景】?

因为微调时和训练SVM时所采用的正负样本阈值不同,微调阶段正样本定义并不强调精准的位置,而SVM正样本只有GroundTruth;并且微调阶段的负样本是随机抽样的,而SVM的负样本是经过hard negative mining方法筛选的;导致在采用SoftMax会使PSACALVOC 2007测试集上mAP从54.2%降低到50.9%。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值