DeepLearning · 2019年11月20日 0

DL-003-FastRCNN

FastRCNN大家大多拿来与RCNN相比较,其优点从大致的方向笼统说有三个方面得到了提升:

1. 测试时的速度得到了提升。 RCNN算法与图像内的大量候选帧重叠,导致提取特征操作中的大量冗余。 而Fast RCNN则很好的解决了这一问题。

2. 训练时的速度得到了提升。

3. 训练所需的空间大。RCNN中分类器和回归器需要大量特征作为训练样本。而Fast RCNN则不再需要额外储存。

不知道为什么总觉得和SPP很像。。
流程图:

 

 

 

 

 

首先用SS(同RCNN)的方式提取两千个候选区域,然后使用卷积网络提取图片特征。类似于RCNN,在获取特征映射之后,需要卷积神经网络来进行卷积操作。 在此处Fast RCNN使用的卷积神经网络为普通的fc7,但是有所改动,也有使用VGG16的神经网络。 前五个阶段是conv + relu + pooling的基本形式,得到feature map。
再根据之前RoI框选择出对应的区域(将feature map映射回原图像), 在最后一次卷积之前,使用 RoI池层来统一相同的比例(单层ssp)

和SPP一样,Fast也是解决了图像变形影响特征的问题,其做法是使用ROI pooling 层。
ROI Pooling层。该层的作用是可以在任何大小的特征映射上为每个输入ROI区域提取固定的维度特征表示,然后确保每个区域的后续分类可以正常执行。

ROI的理解?
可以说是“候选框”在特征图上的映射

在Faster RCNN中,候选框是经过RPN产生的,然后再把各个“候选框”映射到特征图上,得到ROIs特征图:在Fast RCNN中,它位于RoI Pooling之前,在Faster RCNN中,它是与RPN共享那个特征图,通常我们常常称之为“share_conv”;

RoI Pooling层将每个候选区域分为m * n个块。 针对每个块执行最大池操作,使得特征映射上不同大小的候选区域被变换为均匀大小的特征向量。 然后送入下一层。 举例来说,某个 ROI区域坐标为( x1, y1, x2, y2), 那么输入尺寸大小为( y2− y1)∗( x2− x1); 如果合并输出的大小为池高乘池宽,即pooledheight∗pooledwidth