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个数字表示,所以每个特征单元的位置回归层就有369 个区域建议框的坐标位置,分类层有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网络进行交替训练的方法:第一步:将RPNImageNet预训练模型初始化,然后用训练数据微调训练,使用训练出的模型产生初步候选区域框;第二步:利用ImageNet预训练模型初始化Fast R-CNN网络,用第一步生成的候选区域框训练出一个检测模型;第三步:用上一步得到的模型RPN网络,固定共享的卷积层,训练时RPN独有的层,同样使用得到的模型产生候选区域框;第四步,保持共享卷积层固定,用第三步产生的候选区域框Fast R-CNN的全连接层。这样,两个网络就共享了卷积层,构成了统一的网络。
Faster RCNN 在检测过程中使用 RPN 进行候选区域生成,然后送入Fast RCNN 中得出分类结果和目标检测结果,最后完成目标检测任务。