【转】R-CNN的介绍

原文地址:https://blog.csdn.net/u011718701/article/details/53747694

 

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

 

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

 

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

 

一、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--

R-CNN(Region-based Convolutional Neural Networks)是一种目标检测算法,它通过两个阶段来检测图像中的目标物体。首先,R-CNN使用选择性搜索(Selective Search)算法生成一系列候选区域,然后对每个候选区域进行卷积神经网络(CNN)特征提取和分类。R-CNN的主要缺点是速度较慢,因为每个候选区域都需要独立地进行CNN特征提取和分类。 Fast R-CNN是对R-CNN的改进,它通过引入RoI池化层(Region of Interest pooling)来解决R-CNN中重复计算的问题。RoI池化层可以将不同大小的候选区域映射为固定大小的特征图,从而使得所有候选区域可以共享相同的特征提取过程。这样一来,Fast R-CNN相比于R-CNN具有更快的速度。 Faster R-CNN是对Fast R-CNN的进一步改进,它引入了一个称为Region Proposal Network(RPN)的子网络来生成候选区域。RPN通过滑动窗口在特征图上提取候选区域,并为每个候选区域分配一个得分,然后根据得分进行筛选和排序。这种端到端的训练方式使得Faster R-CNN在目标检测任务上具有更高的准确性和更快的速度。 Mask R-CNN是在Faster R-CNN的基础上进一步发展的,它不仅可以进行目标检测,还可以进行实例分割。Mask R-CNN在Faster R-CNN的基础上增加了一个分支网络,用于预测每个候选区域中目标物体的像素级掩码。这使得Mask R-CNN能够同时获得目标的位置信息和像素级别的语义信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值