RCNN系列(3)--Faster-RCNN

1.简介

在Faster R-CNN出现之前,已经存在了R-CNN(无法实现End-to-End训练)和Fast R-CNN(Selective Search耗时),Shaoqing Ren在2016年NIP上提出了Faster R-CNN.

2.基本概念

2.1 ROIpooling
RolPooling可以使生成的候选框region proposal映射产生固定大小的feature map。

1)假设原图中有一region proposal,大小为665665,这样,映射到特征图中的大小:665/32=20.78,即20.7820.78,如果你看过Caffe的Roi Pooling的C++源码,在计算的时候会进行取整操作,于是,进行所谓的第一次量化,即映射的特征图大小为20*20

2)假定pooled_w=7,pooled_h=7,即pooling后固定成77大小的特征图,所以,将上面在 feature map上映射的2020的 region proposal划分成49个同等大小的小区域,每个小区域的大小20/7=2.86,即2.862.86,此时,进行第二次量化,故小区域大小变成22

3)每个22的小区域里,取出其中最大的像素值,作为这一个区域的‘代表’,这样,49个小区域就输出49个像素值,组成77大小的feature map

2.2 RPN
RPN网络用于生成region proposals(也可以说是RoI-region of interest)。该层通过sigmoid函数判断anchors属于foreground或者background(其实就是一个二分类,前景和背景的概率,本文使用keras版本指数一个值表示前景的概率),再利用bounding box regression修正anchors获得修正后的RoI。

3.网络结构

RCNN系列(3)--Faster-RCNN_第1张图片
需要注意的是,Faster R-CNN 使用的网络架构为ZF Net和VGG 16简单的说,Faster R-CNN由四个部分组成,为别为:
(1)特征提取
Faster R-CNN首先使用一组基础的conv+relu+pooling层提取候选图像的特征图。该特征图被共享用于后续RPN层和全连接层。需要注意的是,Faster R-CNN 使用的网络架构为ZF Net和VGG 16来对图像进行特征提取。
(2)RPN网络
RPN网络用于推荐候选区域,这个网络是用来代替之前的search selective的。输入为图片(因为这里RPN网络和Fast R-CNN共用同一个CNN,所以这里输入也可以认为是 featrue maps),输出为多个候选区域,这里的细节会在后面详细介绍。
(3)ROI Pooling
和Fast R-CNN一样,将不同大小的输入转换为固定长度的输出,输入输出和Faste R-CNN中RoI pooling一样。
(4)分类和回归
这一层的输出是最终目的,输出候选区域所属的类,和候选区域在图像中的精确位置。

4.推荐

视频讲解和代码

你可能感兴趣的:(RCNN系列)