RCNN +SPP+fast-RCNN+faster—RCNN浅显的初步理解

(1)  R-CNN:

Region CNN 其实就是基于候选区域的目标检测。基本框架如下:

RCNN +SPP+fast-RCNN+faster—RCNN浅显的初步理解_第1张图片

首选选定region proposals (方法大多为:Selective search ,edge box)àCNN 网络进行特征提取àSVM进行分类àBB进行回归,返回regions 以及类别

(2)  SPP

Spatial pyramid pooling 它是在CNN的基础上做一些改动,正如它的定义,金字塔式的池化,SPP代替了CNN中POOL5层,换成SPPpooling层。传统CNN中pooling层的滑动窗口是一定的,但在SPP中可以看到,它的pooling层是分层的,正如SPP自身的含义——金字塔式池化一样,它每层pooling  bins的大小是可变的,它的大小是个输入图像的大小成比例的;同时pooling bins的个数是确定的,这就相当于多尺度的poolingSPPpooling的特点:他的pooling是分层的,每一层的poolingbins 的大小是可以变化的。Pooling bins 的数量是一定的。传统的CNN网络是只能接受大小统一的图片,实际上,在传统CNN网络结构中,卷积层是不需要大小统一的图片。因此,SPP就在传统的CNN网络结构中的最后一层卷积层后紧跟SPP层,可输入大小不一致的图片,输出统一大小的图片,继而作为全连接层的输入。其优点是不需要reshape image 也不用crop & warp image 图像也不会丢失特征信息。


(3)  fast-RCNN

在此基础上,MSRA又提出了Fast-RCNN。相较与RCNN和SPP-net,它的亮点在于:

1)MAP相较于RCNN也有很大的提高;

2)训练过程通过运用多任务损失,实现单步骤完成;

3)在训练过程中所有层都可以得到更新;

4)不再需要磁盘存储器作为特征缓存;

5) 比RCNN的训练时间快,测试时间快

在微调阶段曾谈及SPP-net只能更新FC层,这是因为卷积特征是线下计算的,从而无法再微调阶段反向传播误差。而在fast-RCNN中则是通过image-centric sampling提高了卷积层特征抽取的速度,从而保证了梯度可以通过SPP层(即ROI pooling层)反向传播

RCNN +SPP+fast-RCNN+faster—RCNN浅显的初步理解_第2张图片

RCNN +SPP+fast-RCNN+faster—RCNN浅显的初步理解_第3张图片

 

(4)faster-RCNN

Faster-R-CNN由两大模块组成:PRN候选框提取模块;Fast R-CNN检测模块。其中,RPN是全卷积神经网络,用于提取候选框;Fast R-CNN基于RPN提取的proposal检测并识别proposal中的目标。相对fast-RCNN faster 用RPN代替了SS来产生region proposal

RPN:RPN的核心思想是使用CNN卷积神经网络直接产生Region Proposal,使用的方法本质上就是滑动窗口(只需在最后的卷积层上滑动一遍),因为anchor机制和边框回归可以得到多尺度多长宽比的Region Proposal。

RPN网络也是全卷积网络(FCN,fully-convolutional network),可以针对生成检测建议框的任务端到端地训练,能够同时预测出object的边界和分数。只是在CNN上额外增加了2个卷积层(全卷积层cls和reg)。

①将每个特征图的位置编码成一个特征向量(256dfor ZF and512d for VGG)。

②对每一个位置输出一个abjectness score和regressed bounds for k个region proposal,即在每个卷积映射位置输出这个位置上多种尺度(3种)和长宽比(3种)的k个(3*3=9)区域建议的物体得分和回归边界。

RPN网络的输入可以是任意大小(但还是有最小分辨率要求的,例如VGG是228*228)的图片。如果用VGG16进行特征提取,那么RPN网络的组成形式可以表示为VGG16+RPN。

RCNN +SPP+fast-RCNN+faster—RCNN浅显的初步理解_第4张图片


(5)  VGG16


A.  卷积:

RCNN +SPP+fast-RCNN+faster—RCNN浅显的初步理解_第5张图片

B.   池化(包括最大池化,最小池化,均值池化等)

RCNN +SPP+fast-RCNN+faster—RCNN浅显的初步理解_第6张图片

C.  步长(stride):做卷积时候,卷积核每次移动的长度(例如:上图的格子)

D.  卷积核:上图红色的模板,就是卷积核。他的个数,也就是得到卷积结果的粉红色矩阵的个数,就是卷积核的个数

E.   Padding :在做卷积之后减小了维度。有时候,我们不想改变图片的大小(维度),因此我们需要padding。就是在矩阵外面周围加一圈“0”

F.   VGG:

网络结构:

RCNN +SPP+fast-RCNN+faster—RCNN浅显的初步理解_第7张图片

第一层(Conv1_1),它怎么把一个300*300*3的矩阵变成一个300*300*64的矩阵?

RCNN +SPP+fast-RCNN+faster—RCNN浅显的初步理解_第8张图片

RCNN +SPP+fast-RCNN+faster—RCNN浅显的初步理解_第9张图片

我们假设蓝色框是一个RGB图像,橙色是一个3*3*3的卷积核,我们对一个三维的27个数求和,然后扫过去,按照第一部分算的得出来的是一维的298*298的矩阵(因为卷积核也是三维所以结果是一维);padding之后得到: 300*300*1;

然后,VGG16这一层安置有64个卷积核,那么,原来的300*300*1变成300*300*64

接着:Conv1--->Conv2

RCNN +SPP+fast-RCNN+faster—RCNN浅显的初步理解_第10张图片

然后依次~未完~~



参考文章:

http://www.360doc.com/content/17/0303/14/10408243_633634497.shtml

http://blog.csdn.net/errors_in_life/article/details/65950699


 

你可能感兴趣的:(TensorFlow)