深度学习——Faster R-CNN原理

Fast R-CNN有个不足之处在于它事先需要Selective Search提取框,这个过程非常慢,检测一张图像,大部分时间不是花在计算神经网络分类上,而是花在Seclective Search提取框上。在Faster R-CNN中,用RPN(Region Proposal NetWork)网络取代了SS,不仅速度得到了大大的提高,而且精度也更加精确。

解决:加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做了。
做这样的任务的神经网络叫做Region Proposal Network(RPN)。

具体做法:
  • 将RPN放在最后一个卷积层的后面
  • RPN直接训练得到候选区域

其中RPN网络结构图如下:

深度学习——Faster R-CNN原理_第1张图片

RPN还是需要先使用一个CNN网络对原始图像进行特征提取。设前置CNN提取的特征为51x39x256。对这个卷积特征再进行一次卷积计算,保持宽,高,通道不变,再次得到一个51x39x256的特征。为了方便叙述,定义个“位置”的概念:对于一个51x39x256的卷积特征,称它一共有51x39个“位置”。让新的卷积特征的每一个“位置”都“负责”原图中对应位置9种尺寸的框的检测,检测的目标是判断框中是否存在一个物体,因此共有51x39x9个“框”。在Faster R-CNN中称这些框为“anchor”。

RPN简介:
  • 在feature map上滑动窗口
  • 建一个神经网络用于物体分类+框位置的回归
  • 滑动窗口的位置提供了物体的大体位置信息
  • 框的回归提供了框更精确的位置

anchor的9种尺寸如下图所示,它们的面积分别为128^2  , 256^2 ,  512^2 ,每种面积又分为3种长宽比,分别为2:1、1:2、1:1。 anchor的尺寸实际是属于可调的参数,不同任务可以选择不同的尺寸。

深度学习——Faster R-CNN原理_第2张图片

对于这51x39个位置和51x39x9个anchor,下图展示了接下来每个位置的计算步骤。设k为单个位置对应的anchor的个数,此时k=9。首先使用一个3x3的滑动窗口,将每个位置转换为一个统一的256维的特征,这个特征对应了两部分的输出。一部分表示该位置的anchor为物体的概率,这部分的总输出长度为2xk(一个anchor对应两个输出:是物体的概率+不是物体的概率)。另一部分分为框回归,框回归的含义与Fast R-CNN中一样,一个anchor对应4个框回归参数,因此框回归部分的总输出的长度为4xk 。

深度学习——Faster R-CNN原理_第3张图片

对应上图的解释为:

深度学习——Faster R-CNN原理_第4张图片

Fast R-CNN使用RPN生成候选框后,剩下的网络结构和Fast R-CNN中的结构一模一样。在训练过程中,需要训练两个网络,一个是RPN网络,一个是在得到框之后使用的分类网络。通常的做法是交替训练,即在一个batch内,先训练RPN网络一次,再训练分类网络一次。

深度学习——Faster R-CNN原理_第5张图片

R-CNN, Fast R-CNN, Faster R-CNN三者对比如下:

深度学习——Faster R-CNN原理_第6张图片

你可能感兴趣的:(深度学习/机器学习)