跟着问题学3.3——Faster R-CNN详解及代码实战

Fast R-CNN的不足

  • 选取区域使用的算法是固定的,不参与学习
  • 选取区域的算法本身消耗比较高 (搜索选择法)
  • 选取区域的算法选出来的区域大部分都是重合的,并且只有很小一部分包含我们想要识别的对象
  • 区域范围的精度比较低 (即使经过调整)
  • 判断分类有时只能使用部分包含对象的区域 (例如选取区域的算法给出左半张脸所在的区域,那么就只能使用左半张脸判断分类)

Faster-RCNN 是 RCNN 和 Fast-RCNN 的进化版,最大的创新是引入了区域生成网络 (RPN - Region Proposal Network),区域生成网络支持使用机器学习代替固定的算法找出图片中可能包含对象的区域,精度比固定的算法要高很多,而且速度也变快了。

从R-CNN到Fast R-CNN,再到本文的Faster R-CNN,目标检测的四个基本步骤(候选区域生成,特征提取,分类,位置精修)终于被统一到一个深度网络框架之内。所有计算没有重复,完全在GPU中完成,大大提高了运行速度。

Faster R-CNN可以简单地看做“区域生成网络(RPN)+Fast RCNN“的系统,用区域生成网络代替Fast R-CNN中的Selective Search方法

Faster R-CNN的网络框架

如上图所示,Faster R-CNN网络框架可以分为4大部分,分别是(1)骨干卷积网络层(conv layers)用于提取特征图(2)区域推荐网络(Region Proposal Network)输出图像上的anchor类别和第一次调整边界框位置;(3)RoI池化层输出统一尺度的候选框特征图;(4)分类器(classifier)用于输出候选框的类别同时第二次回归边界框的精确位置;

上图是以VGG16为骨干网络的Faster R-CNN模型的网络结构,再进一步的观察4个部分的模型细节:

(1)骨干卷积网络层(conv layers):首先预处理将尺寸为P*Q的图像转变为M*N的图像,然后将此图像送入骨干网络提取特征,骨干网络包含了13个conv层+13个relu层+4个pooling层(卷积层和池化层的设置可根据选用的骨干网络切换),然后输出特征图,该特征图共享用于后面的RPN和ROI层;

(2)区域推荐网络(Region Proposal Network):该部分首先利用3*3的卷积层进一步对特征图进行提取,然后送入2个分支,第一个分支为1*1*18的卷积层(18是通道数,后面为解释实际意义),然后经过softmax输出边界框内二分类是否含有物体(positive或者negative);第二个分支为1*1*36的卷积层,回归输出确定边界框(bounding box regression);

(3)RoI池化层:该部分利用骨干卷积网络层输出的特征图(feature maps)和区域推荐网络输出的候选框(proposals),结合图像缩放尺度等信息,输出推荐候选框对应的固定尺寸特征图(proposal feature maps);

(4)分类器和回归层:该部分根据ROI池化层输出的特征图,经过全连接层输出候选框的位置(bounding box regression)和具体类别(多分类)。

下面我们将详细地学习一下这4个部分的细节。

Fast R-CNN的输入

和 Fast-RCNN 一样,Faster-RCNN 也会使用 CNN 模型针对整张图片生成各个区域的特征,所以我们需要缩放原图片。(尽管 CNN 模型支持非固定大小的来源,但统一大小可以让后续的处理更简单,并且也可以批量处理大小不一样的图片。)

骨干卷积网络conv layers

如前面所说,骨干卷积网络一般直接借用VGG,ResNet等网络结构,包含了conv,pooling,relu三种网络层,值得注意的有下面2点:

(1)特征图尺寸的变化:骨干网络中,conv层一般只卷积提取特征,通过padding填充使得特征图的宽高尺寸不会变化,而池化pool层一般会使得宽高尺寸缩小2倍。

以VGG16模型为例:

Conv layers部分共有13个conv层,13个relu层,4个pooling层,所有的conv层的设置都是:kernel_size=3 ,pad=1,stride=1;所有的pooling层都是:kernel_size=2,pad=0,stride=2。因此,一个MxN大小的矩阵经过Conv layers固定变为(M/16)x(N/16)(注意这里的16是VGG16模型的4个池化层计算得到的,记为spatial_scale)!这样Conv layers生成的特征图feature map中都可以和原图对应起来,VGG16模型下,特征图的每个像素点对应着原图16*16的区域。

(2)特征图通道数的变化:最初的输入图像一般是3通道的,经过骨干网络后,会得到特征图,这时的特征图除了第一点讲到的尺寸的变化,还有一个重要的点是通道数的变化,比如VGG16模型最终的特征图是256通道的,这个通道数会随着选用模型的不同而变化,后面在区域生成网络中会再一次提到。

以VGG16模型再次概述,其输入图像张量大小(channels,width,height)为 [3, 256, 256],经过VGG16 模型特征提取得到输出feature维度为 [256, 32, 32]。过程中数据经过4次2*2的MaxPool,特征进行了16倍缩放,相应地原边界框位置和大小也会进行等比例缩放。

区域推荐网络(RPN)

经典的检测方法生成检测框都非常耗时,如OpenCV adaboost使用滑动窗口+图像金字塔生成检测框;或如R-CNN使用SS(Selective Search)方法生成检测框。而Faster RCNN则抛弃了传统的滑动窗口和SS方法,直接使用RPN生成检测框,这也是Faster R-CNN的巨大优势,能极大提升检测框的生成速度。

前面介绍了骨干特征提取网络,图像也从最初的输入变为了高维特征图,尺寸缩放了,通道数增加了,接下来我们详细看一下区域推荐网络是如何利用这些特征图输出推

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值