关于Faster R-CNN的一切——笔记1:R-CNN

博主课题需要研究Faster RCNN,先后看了RCNN、Fast RCNN和Faster RCNN三篇paper,然而有点懵逼= =所以准备再捋一遍总结一下~



一、R-CNN【Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation.2014 CVPR】

RCNN是第一个证明CNN可以极大地提高PASCAL中物体检测性能的工作,之所以叫做Region CNN,是因为算法是将CNN应用在已经产生的region proposals上。

1.什么结构

整体流程:
一张image生成好多好多Region Poposals
每个Region Proposal用训练好的CNN网络提取特征
每个类别用该类训练好的SVM对每个Region Proposal评分
根据评分对该类的region proposal进行Greedy non-maximum suppression筛选最终的region。
  • 生成Region Proposals
         因为R-CNN是与region proposal方法无关的,所以本文选择使用Selective Search算法来产生每张图片的proposal,本文选择每张图片生成2000个proposal。
  • Region特征提取
         CNN选取Alexnet的网络结构,去掉最后一层FC,使用倒数第二层FC的4096维输出作为特征向量。Alexnet要求输入图像是227*227大小,因此对每个形状和大小任意的region proposal需要把它变形成该指定大小(变形方法在该paper的附录A中有介绍)。每个变形后的region proposal通过CNN网络,提取出4096维的特征向量。
  • SVM分类
         对每个region proposal的4096维特征向量,用每一类的SVM分类器对它进行评分(是该类的可能性有多大)。那么如果有N类物体,那么我们可以从一张图上得到一个2000*N的评分矩阵,矩阵的每一行是一个region proposal在N个类别的SVM分类器下的得分。
  • Greedy non-maximum suppression
         对每一类(即评分矩阵的每一列),根据score对这些region进行排序,把score最大的bounding box(也就是region proposal啦~)加入队列作为已被选择项,然后计算其他候选bounding box与队列中已经被选择了的bounding box的IoU(intersection-over-union),剔除IoU大于阈值的候选bounding box,重复直到候选bounding box为空。这样就剩下了每一类符合要求的那些含有物体的bounding box了【不用再叫proposal啦因为已经确定啦】。

2.怎么训练

从上面的结构上来看,有两个需要训练的网络:CNN和SVM。
  • CNN网络
         CNN网络的输入是大小已经归一化为227*227的region proposal。训练其实是两个阶段:预训练和Fine-tuning。
        
         预训练:其实就是使用Caffe中在ILSVRC2012数据集上已经训练好的Alexnet作为网络的初始状态。【该文章是自己实现了一遍Alexnet在ILSVRC2012上的训练过程,不过由于简化了训练过程与原Alexnet作者在ILSVRC上的性能差了2.2,我觉得直接用Caffe上训好的Alexnet就可以了~】
        
         Fine-tuning:把上面预训练好的Alexnet的最后的1000-way softmax层换成(N+1)-way【N是物体类别数目,+1是背景类】的全连接层,其他结构不变,然后在你的目标数据集上训练网络,这个时候训练网络的输入就是你的数据集上提取出的region proposals们了。训练的细节:(1)region proposal的标签怎么设置:与某个ground-thuth box的IoU大于等于0.5的为正,其他情况为负。(2)Mini-batch size:随机采样32个正样本和96个负样本,所以mini-batch大小是128(3)参数:学习速率设为0.001。
  • Object category classifiers--SVM
         每一类都要训练一个SVM哒~
         对每一类,正负样本的规定是:该类的Ground-truth box是正样本,与Ground-truth box的IoU小于0.3【0.3是在validation集上确定的】的region proposal是负样本,其余的region proposal舍弃,不用作训练。
   
3.怎么测试

测试就简单啦~对于一张测试图像,先运行selective search生成2000个region proposal,每个region proposal用CNN提取特征,然后用莓类SVM进行分类,最后使用greedy non-maximum suppression进行筛选,得到最终的deteced object bouding box。

4.存在问题

  • 训练是多阶段的,需要先fine-tune,再CNN提特征,再用SVM,再费极大值抑制。太麻烦,太不符合奥卡姆剃刀原则了吧~
  • 训练费时费内存,因为要存下来每个region的特征好么~
  • 太慢了,平均每张图要用47秒来完成检测。。。。。

--The End of R-CNN--





  • 15
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值