简述R-CNN、Fast R-CNN、Faster R-CNN

最近在准备本科毕设,方向是目标检测,导师给的文章是关于Faster R-CNN的(论文题目是:Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks),出于好奇,自己还是私底下找了一下R-CNN(论文题目是:Rich feature hierarchies for accurate object detection and semantic segmentation)、Fast R-CNN(论文题目是:Fast R-CNN)的论文简单的看了看然后在网络上看了相关的资料,觉得还是自己应该亲自总结一下的好,觉知此事要躬行嘛。

三篇论文的下载地址:
R-CNN:https://ieeexplore.ieee.org/document/6909475、
Fast R-CNN:https://ieeexplore.ieee.org/document/7410526、
Faster R-CNN:https://ieeexplore.ieee.org/document/7485869

一、R-CNN
R-CNN基本处理流程如下图:
简述R-CNN、Fast R-CNN、Faster R-CNN_第1张图片
R-CNN具体流程分为以下四个步骤:
1.使用选择性搜索(Selective Search)方法生成1k~2K个候选区域(region proposal)
2.对每一个候选区域(region proposal),利用CNN提取特征
3.将特征送入SVM分类器,判断是否属于该类
4.使用回归器精细修正候选框位置

简述R-CNN、Fast R-CNN、Faster R-CNN_第2张图片
实现细节简析:
首先,利用Selective Search方法通过图像分割的方法获得一些原始区域,这些区域中间就会包含可能需要的物体,然后将这些区域合并到1k~2k。
其次,将候选区域缩放到指定的大小然后送进实现训练好的Alex Net网络中,得到相应的特征并将其送入SVM分类器(注意,这里是先将特征存入硬盘然后通过SVM分类器从硬盘中读取来进行分类工作因此会带来较大的时间开销)。
之后SVM分类器采用非极大值抑制(Non-Maximum Suppression,NMS)剔除重叠的建议框,简单讲就是因为重叠的框很多,而每个框都会对应一个分数,这里我们就将不是最大值的框抑制掉,以找到分数最高的框,通常来讲分数越高的框,包含的目标信息也就更加完善,因此更加需要被保留下来。
最后,对于NMS处理后的剩余建议框通过分类器进行进一步筛选,最终得到得分最高的bounding box。

总结:
①原论文中我们可以发现计算特征和候选区域的时间是GPU上是13秒/张,CPU上是53秒/张。而一张图片中会存在大量的候选框,因此在提取特征的时候效率很低。
②因为将提取的特征全部存入磁盘而大量的特征数目也导致所需要的磁盘空间很大,造成成本的增加

二、Fast R-CNN
Fast R-CNN基本处理流程如下图:
简述R-CNN、Fast R-CNN、Faster R-CNN_第3张图片
Fast R-CNN具体流程分为以下三个步骤:
1.使用选择性搜索(Selective Search)方法生成1k~2K个候选区域(region proposal) ( 同R-CNN
2.将图像输入到网络得到相应的特征图,将SS(Selective Search)算法生成的候选框投影到特征图上获得相应的特征矩阵
3.将每个特征矩阵通过ROI(Region of Interest) pooling缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层以获得预测效果。

实现细节简析:
首先,使用SS算法生成1k~2K个候选区域
之后,Fast R-CNN以整张图片与一系列候选区域作为输入,送入到CNN网络中得到特征矩阵(此时不在需要像RCNN那样每次只送一个候选区域进入CNN)。
其次,将特征矩阵通过ROI Pooling层将其缩放到特定大小的特征图
最后,将特征图通过一系列展平处理然后经过一系列全连接层得到相应的预测结果以及bbox regressor参数(此时不再需要像RCNN那样单独训练SVM分类器和回归器对我们的候选区域进行处理),分类器使用softmax代替SVM。回归器求出(x,y,w,h)4个量,分别代表定位框左上角的坐标xy、宽度w、高度h,损失函数用的是Smooth-L1。

边界框回归器运行原理如下图所示:
简述R-CNN、Fast R-CNN、Faster R-CNN_第4张图片

总结:
①在Fast R-CNN中,作者巧妙的把bounding box regression放进了神经网络内部,与region分类和并成为了一个multi-task模型,实际实验也证明,这两个任务能够共享卷积特征,并相互促进。Fast-RCNN很重要的一个贡献是成功的让人们看到了Region Proposal+CNN这一框架实时检测的希望,原来多类检测真的可以在保证准确率的同时提升处理速度,也为后来的Faster R-CNN做下了铺垫。
②Fast R-CNN将特征提取器、分类器、回归器合在了一起,都用CNN实现,不需要像RCNN那样大容量的磁盘以及磁盘读写工作,因此提高了计算效率。
③缺陷:后面的步骤都已经融合进CNN网络之中,之后候选区域的提取依旧使用了SS算法,因此会造成一定的时间开销。

三、Faster R-CNN
Faster R-CNN基本处理流程如下图:
简述R-CNN、Fast R-CNN、Faster R-CNN_第5张图片
RPN工作流程如下图所示,这里我们注意,原论文中给出了anchor的三种尺度( 12 8 2 128^2 1282 25 6 2 256^2 2562 51 2 2 512^2 5122)以及三种比例(1:1,1:2,2:1),而每个位置(每个滑动窗口)在原图上都对应有3*3=9个anchor,但是这一数字是经验所得
简述R-CNN、Fast R-CNN、Faster R-CNN_第6张图片

Faster R-CNN具体流程分为以下三个步骤:
1.将图像输入到网络得到相应的特征图(feature map)
2.使用RPN(Region Proposal Network)网络生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵
3.将每个特征矩阵通过ROI(Region of Interest) pooling缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层以获得预测效果。

实现细节简析:
首先,使用一组基础的conv+relu+pooling层提取image的feature maps。该feature maps被共享用于后续RPN层和全连接层。
其次,使用RPN生成候选框的时候,我们要进行候选框的筛选,这里直接将原论文的内容进行翻译呈现出来,即对于一张 1000 ∗ 600 ∗ 3 1000*600*3 10006003的图像,大约有 60 ∗ 40 ∗ 9 ( 20 k ) 60*40*9(20k) 60409(20k)个anchor,忽略跨越边界的anchor之后,剩下大约6k个anchor,对于RPN生成的候选框之间存在大量重叠,基于候选框的cls得分,采用非极大值抑制,IOU设置为0.7,这样每张图片只剩2k个候选框。

总结:
①Faster RCNN引入了RPN网络,从而可以进行端到端的训练并且加速了已有的算法。

你可能感兴趣的:(Deep,Learning,计算机视觉)