Faster R-CNN

Faster R-CNN_第1张图片
Faster R-CNN model

??EdgeBoxes算法选取候选框

Faster R-CNN最根本的目的是在于实现整个目标检测网络的端对端的应用,提高效率。对于Fast R-CNN而言,除了在最开始阶段的基于CPU利用Selective Search提取2000个region proposals,后续的网络可以实现一个完整的pipeline,其基本可以实现实时检测。

为了突出Faster R-CNN的重点部分,在此省略掉之前如Fast R-CNN 中的相关Step,而具体来说明其是如何利用一个端到端的网络实现region proposal提取的。即相比于之前R-CNN,SPP-NET,Fast R-CNN根本性的改变在于其增加了RPN(region proposal netwok)以避免对区域进行单独的提取,从而形成一个完整的端到端的网络系统。

RPN的核心思想:使用全卷积神经网络直接产生region proposal,方法:滑动窗口。

关键点:anchors,LossFunction计算方式和网络的训练方式。

目标实现:a、如何设计区域生成网络

b、如何训练区域生成网络

c、如何使区域生成网络与fast R-CNN共享特征提取网络

Q1:什么事RPN(Region Proposal Network)

其实由名字来看能得知,这个网络的作用相当于之前所用到的Selective Search方法来提取ROI区域。下面就来看看它是如何通过全卷积的方式来进行区域提取的吧~~

Faster R-CNN_第2张图片
RPN

RPN结构模型如上图所示,对经过卷积后的feature map进行卷积操作生成一个低维的256维(对于zf网络为256维,对于VGG网络生成512维)特征向量,然后输入一个并列级别的分类层和回归层,用以进行候选区域的分类及回归。

那这究竟是如何产生候选区域的呢?

利用sliding window机制,设置n*n的窗口大小(原文中n=3),对feature map上的每个像素点生成anchor,并采用多尺度多比例的方式,文中设置了三种尺度和三种比例,尺度分别为{128,256,512}(对应到原图时的region大小),比例分别为{1:1,1:2,2:1}(窗口的比例及region的比例),由此对于每个窗口中心点可产生9个anchor。需要注意的是,这些anchors是由feature map对应回原始的图片,而不是对feature map进行的region proposal。故,对于feature map上的每个像素点,其对应可产生9个区域提取框,如下图所示:

Faster R-CNN_第3张图片
anchors

之后,对每个anchors输入到后续的分类及回归层,由此产生region proposal的区域提取。需要注意到的是,整个区域提取的过程并没有人为显示地进行boundingbox的设置,完全由网络自身判断和修正。

很显然,进行这样的区域提取,一幅图片将会产生很多个region proposal,文中采用的筛选proposal的方式是:

这样一来,一张40*60的feature map可产生约20k个proposal,根据分类预测得分,对其进行排序,选择前300个region proposal作为fast r-cnn的输入进行目标检测。

以上便是如何生成region proposal的原理,至于对于整个网络的训练过程,在此便不详述了,可以参考下面的博客地址,里面有详尽 的说明,在这儿我只是想弄明白RPN网络时如何形成的~~~

*综合了几篇博文写下的自己的理解,在这还是附上个人觉得写得很细致的一篇博文地址http://blog.csdn.net/u014696921/article/details/52824107?locationNum=6&fps=1

你可能感兴趣的:(Faster R-CNN)