Faster-rcnn详解

Faster R-CNN算法是在Fast R-CNN算法的基础上,将RPN与Fast R-CNN结合到一个深度神经网络中的端到端的目标检测网络。Faster R-CNN由候选区域框网络(Region Proposal Network,简称RPN)和Fast R-CNN网络两部分组成。整体网络框架如图3-1所示。

 

3-1 Faster R-CNN框架

其中,RPN是全卷积神经网络,用于提取候选框;Fast R-CNN用于对RPN中提取的候选区域进行检测并识别候选区域中的目标。Faster R-CNN算法大概可以分为:特征提取、生成候选区域框、分类回归三个步骤。

3.2.1 特征提取网络

基于卷积神经网络在图像特征提取中的优越性能,Faster R-CNN 算法的特征提取网络就采用卷积神经网络,这个特征提取网络是可替换的,可以根据实际要求选择适合深度的网络。Faster RCNN 原文中使用的是VGG16 网络【】VGG16 的特点是网络深度较深,从而可以提取更深层次的图像特征,取得更好的检测效果。

   深度学习中,训练数据的数量是决定网络模型性能的关键因素,训练数据越多,训练出来的网络各方面性能就会越好;相反,如果训练数据的数量过少,即使是设计很好的网络,训练出来的模型性能也不一定好。因此在深度学习中,通常把在海量数据中已经训练好的模型应用到自己的网络中,然后利用目标数据对目标网络进行微调以提高网络的性能。Image Net数据集包含约 120 万张训练图像,分为1000 个不同的类别,利用它训练出来的模型具有极好的特征提取能力,因此 Faster R-CNN 算法使用Image Net的预训练模型初始化自身的特征提取网络。

3.2.2 候选区域框网络

RPN是一个全卷积网络( Fully Convolutional Network,简称FCN)14],用于生成高质量的候选区域框。它和检测网络共享特征提取网络提取到的图像特征,大大提升了原来选择性搜索( Selective Search,简称SS)15]方法的速度,进而提高了目标检测网络的性能。候选区域网络的主要结构如下图【】

 

3-2 RPN框架

RPN使用一个n*n(原文中n=3)的滑动窗口在特征提取网络最后一个卷积特征图上滑动,滑动后可以获得一个多维的向量,特征提取网络不同,维度也不同。将这个向量送入到两个并列的全连接层,分类层和位置回归层,这两个全连接层具体可以理解为使用1*1的卷积核对多维向量进行卷积操作,最后得到分类和位置信息。

每个滑动窗口的中心,对应m个锚点( anchor) ,每个anchor对应一种尺寸和长宽比,如上图【】。RPN使用3 种尺寸(,,)和3种长宽比(1:1,1:2, 2:1)组合,所以每一个特征图上的最小单元可以对应出9 个锚点,即m=9。每一个特征单元的位置,可以预测出9 个候选区域框。因为候选区域的位置信息用4个数字表示,所以每个特征单元的位置回归层就有36个输出,代表9 个区域建议框的坐标位置,分类层有18个输出,代表每个候选框是目标/背景的概率。

3.2.3 目标检测网络

RPN生成候选区域框之后,Faster RCNN算法使用了Fast RCNN进行目标检测分类Fast RCNN算法的检测速度快、训练消耗小,还实现了部分端到端的联合训练,有很好的检测效果。Fast RCNN 用RPN 提供的高质量候选区域进行目标检测,极大提高了目标检测的性能。其网络结构如图3-3所示。

 

3-3 Fast R-CNN网络框架

由于使用了RPN 和Fast R-CNN 两种网络,比较难直接使用反向传播( Back Propagation,BP) 算法训练,所以在训练时,原文中采取将RPN 网络和 Fast RCNN网络进行交替训练的方法:第一步:RPN网络用ImageNet预训练模型初始化,然后用训练数据微调训练,使用训练出的模型产生初步候选区域框;第二步:利用ImageNet预训练模型初始化Fast R-CNN网络,用第一步生成的候选区域框训练出一个检测模型;第三步:用上一步得到的模型初始化RPN网络,固定共享的卷积层,训练时只微调RPN独有的层,同样使用得到的模型产生候选区域框;第四步,保持共享卷积层固定,用第三步产生的候选区域框微调Fast R-CNN的全连接层。这样,两个网络就共享了卷积层,构成了统一的网络。

Faster RCNN 在检测过程中使用 RPN 进行候选区域生成,然后送入Fast RCNN 中得出分类结果和目标检测结果,最后完成目标检测任务。

猜你喜欢

转载自blog.csdn.net/tommorrow12/article/details/80709254