Fast R-CNN使用Selective Search来进行区域提名,速度依然不够快。Faster R-CNN则直接利用RPN(Region Proposal Networks)网络来计算候选框。RPN以一张任意大小的图片为输入,输出一批矩形区域提名,每个区域对应一个目标分数和位置信息。Faster R-CNN中的RPN结构如图11所示。
图11 Region Proposal Network(RPN)Faster R-CNN的主要步骤如下:
(1) 特征提取:同Fast R-CNN,以整张图片为输入,利用CNN得到图片的特征层;
(2) 区域提名:在最终的卷积特征层上利用 k 个不同的矩形框(Anchor Box)进行提名, k 一般取9;
(3) 分类与回归:对每个Anchor Box对应的区域进行object/non-object二分类,并用 k 个回归模型(各自对应不同的Anchor Box)微调候选框位置与大小,最后进行目标分类。
总之,Faster R-CNN抛弃了Selective Search,引入了RPN网络,使得区域提名、分类、回归一起共用卷积特征,从而得到了进一步的加速。但是,Faster R-CNN需要对两万个Anchor Box先判断是否是目标(目标判定),然后再进行目标识别,分成了两步。
blog.csdn.net/shenxiaolu1984/article/details/51152614(很好)
目标检测的四个基本步骤(候选区域生成,特征提取,分类,位置精修)终于被统一到一个深度网络框架之内。所有计算没有重复,完全在GPU中完成,大大提高了运行速度。
faster RCNN可以简单地看做“区域生成网络+fast RCNN“的系统,用区域生成网络代替fast RCNN中的Selective Search方法。
本篇论文着重解决了这个系统中的三个问题:
1. 如何设计区域生成网络
2. 如何训练区域生成网络
3. 如何让区域生成网络和fast RCNN网络共享特征提取网络
总结:就是说输入一张图片,生成相应的特征map,在就是在这个map上用 k 个不同的矩形框进行提名(每个点都对应k个),相当于是提名区域的特征提取了,进入RPN网络,接着后面接二分类器与位置调优的,选择前景框并进行调整位置,最后生成候选框——RPN,再送进Fast RCNN进行特征提取,分类
轮流训练
a. 从W0开始,训练RPN。用RPN提取训练集上的候选区域
b. 从W0开始,用候选区域训练Fast RCNN,参数记为W1
c. 从W1开始,训练RPN…
具体操作时,仅执行两次迭代,并在训练时冻结了部分层。论文中的实验使用此方法。
如Ross Girshick在ICCV 15年的讲座Training R-CNNs of various velocities中所述,采用此方法没有什么根本原因,主要是因为”实现问题,以及截稿日期“。
补充:
图1 Faster CNN基本结构缩进依作者看来,如图1,Faster RCNN其实可以分为4个主要内容:
(1) Conv layers。作为一种CNN网络目标检测方法,Faster RCNN首先使用一组基础的conv+relu+pooling层提取image的feature maps。该feature maps被共享用于后续RPN层和全连接层。
(2) Region Proposal Networks。RPN网络用于生成region proposals。该层通过softmax判断anchors属于foreground或者background,再利用bounding box regression修正anchors获得精确的proposals。
(3) Roi Pooling。该层收集输入的feature maps和proposals,综合这些信息后提取proposal feature maps,送入后续全连接层判定目标类别。
(4) Classification。利用proposal feature maps计算proposal的类别,同时再次bounding box regression获得检测框最终的精确位置。
blog.csdn.net/zy1034092330/article/details/62044941(非常好)
注意:anchors的大小以及比例都是在原图上取的,现在一般网络如何知道原图上某一区域对应feature map上的哪边,一般都是feature map相对于原图,都是成比例的下降尺寸(stride的比例),所以很容易知道到底对应哪个区域(而且说不定原来尺寸也与一共下降的比例成倍数关系)
注意:文章中比如对COCO数据集,由于相较于VOC来说,小样本稍微多了一些,就再加64^2的anchors,所以框架的很多技巧不是一层不变的,根据自己的数据需要来改!!
论文看完啦啦啦啦啦!!!
交替的训练方式是这样的:
第一步,用ImageNet预训练的模型初始化RPN,训练RPN
第二步,还是用ImageNet预训练的模型初始化Fast RCNN,用上面RPN生成的proposals去训练Fast RCNN
第三步,用第二步训练的结果初始化RPN,固定之前特征提取阶段,仅仅优化RPN特有的网络
第四步,固定之前特征提取阶段,仅仅优化Fast RCNN特有的网络
注意:proposals送到Fast RCNN网络中去,用的是ROI Pooling
网友评论