Region Based CNN 系列之——(3) Faster-RCNN思路及其基础整理

    基于之前两篇博客对RCNN和Fast-RCNN的介绍,现在来理解Faster-RCNN就会觉着很简单。因为Faster-RCNN就是在Faste-RCNN的基础上,做了一些改进。

一、整体结构

Region Based CNN 系列之——(3) Faster-RCNN思路及其基础整理_第1张图片

    整个网络由两个模块组成,第一个是RPN(Region Proposal Network),代替之前用传统方法(如Selective Search)进行Region Proposal的工作;另外一个是Fast-RCNN检测器,两者共用卷积神经网络提取的特征。(在我看来,分为三个模块更好理解:第一个是卷积网络,用来提取特征;第二个是RPN,利用卷积神经网络提取的特征生成proposal region;第三个是分类和回归,同样利用卷积网络提取出的特征进行分类和边框回归)。

二、RPN(Region Proposal Network)

1.RPN结构介绍

    RPN的作用就是代替SS来进行Region Proposal工作,那么它是如何做到的呢?我们来看具体的网络吧,以VGG16特征提取为例。

    对于用VGG16进行特征提取来说,首先输入任意尺寸的图片PXQ,先缩放成固定尺寸MXN,经过VGG16(最后一层为CONV_13+RELU)后变成\frac{M}{16}\times \frac{N}{16}\times 512,然后在每个点处用一个3\times 3的卷积核来卷积(+RELU),得到的整张特征图尺寸还是\frac{M}{16}\times \frac{N}{16}\times 512

Region Based CNN 系列之——(3) Faster-RCNN思路及其基础整理_第2张图片

    再往后,网络分成两个分支:第一个分支(上面的1\times 1卷积)用于分类是前景还是背景;第二个分支(下面的1\times 1卷积)用于边框坐标预测。至于数字18和36是什么意思?我们接着来看。

    在做边框定位之前,作者提出了一个Anchor的概念,于给出最初的边框信息(当然,这个边框是非常不准的)。Anchor的意思就是,在\frac{M}{16}\times \frac{N}{16}\times 512的特征图的每个点(锚点)处,做九个框(三个尺度,每个尺度有三个框,长宽比例分别为1:2,1:1,2:1)。

Region Based CNN 系列之——(3) Faster-RCNN思路及其基础整理_第3张图片

PS:这种做法的好处是,具有平移不变性。即使图像中的目标平移了,也没有任何影响,因为在不同的锚点处,其前向传输是一样的,并且到目前为止,还全部都是卷积层,卷积层本身就具有平移不变特性。

    也就是说,每个锚点处有9个框。在上面的分支,对框进行分类的时候,要分成两类(前景还是背景),因此就要对应2*9=18个得分;在下面的分支中,要对九个框的坐标进行回归,也就是4*9=36个量。在每个锚点处,原特征向量应该是256-D的,经过512\times1\times1\times18的卷积核卷积之后,可以变成18-D的分类得分向量,36-D的边框坐标向量同理。

    也就是说,对于每个锚点,Proposal Layer 输入了三个信息:第一个是softmax分类器得出的18个前景背景得分;第二个是九个框的偏移量与缩放量(对于边框回归不理解的,可以参考RCNN中的介绍);第三个是im_info,其实记录的是原图(PXQ)以及缩放成网络输入的图(MXN)时的缩放量。

2. 损失函数:

stage1: rpn_loss

Region Based CNN 系列之——(3) Faster-RCNN思路及其基础整理_第4张图片

    RPN的损失函数由两部分组成,一部分是分类误差L_{cls}(p_i,p_i^*),另一部分是框回归误差。我们首先解释一下pi^*,是指的第iAncher是为正样本(前景,则pi^*=1)还是负样本(背景则pi^*=0),在两种情况下认为某个Ancher是正样本,第一种情况是与某个真实框的具有最大的IoU,另一种情况是与每个真实框的IoU都大于0.7。当Ancher与任何一个真实框的IoU都小于0.3的情况下,则认为是背景。

    ①分类为前景和背景,采用交叉熵(或log损失函数):L_{cls}(p_{i},p_{i}^{*})=-\sum_{j=1}^{2} p_{ij}^{*}log(p_{ij}),其中,j=1 \parallel j = 2分别代表这个Ancher为正样本或负样本的分类。

    ②L_{reg}(t_i,t_i^*)= R(t_i-t_i^*) where R(x)=,这里在求和的时候,加了一个真实类别因子pi^*,只让真实样本为正样本时才对框回归起作用。

      而t_it_i^*的定义如下:

    Region Based CNN 系列之——(3) Faster-RCNN思路及其基础整理_第5张图片

三、RoI Pooling

    RoI Pooling 的介绍,因为在Fast-RCNN中已经介绍,这里不再赘述。

四、最终分类与边框回归

Region Based CNN 系列之——(3) Faster-RCNN思路及其基础整理_第6张图片

与Fast-RCNN一致。

你可能感兴趣的:(机器学习)