structure.png
Faster-RCNN是Fast-RCNN的后续版本,主要针对Fast-RCNN速度过慢进行优化。在Fast-RCNN中,速度的瓶颈主要是用于生成候选区域的Selective Search过程。在Faster-RCNN中,候选区域的生成使用RPN网络,且共享的使用了卷积产生的特性,由此将候选区域的生成方式纳入神经网络的范畴下。该系统有以下部分构成:
PRN网络用于产生类别无关的候选区域,即代替Selective Search的功能,其结构如下:
prn_structure.png
其输入为从共享卷积部分的输出feature map,该部分再经过PRN网络的卷积部分,变为PRN feature,其长宽不变,通道数变为
,其中n为每个点上生成候选框的数量。即每个候选框对应六个数据,分别为:
需要注意的是,位置信息均是调整系数,其和真实位置信息的关系为:
其中,
为网络的输出,
为anchor box提供的基础框大小,而x,y,w,h为最终预测的结果。这里的anchor box为一种预设为固定大小的框,其长度和宽度为超参数,在训练前指定,其x坐标和y坐标为PRN feature产生该预测框的点在原图中对应的点。例如输入原图大小为400*400,卷积网络使用了三次2*2的池化,feature map的尺寸为50*50,那么在PRN feature中坐标为(4,4)产生的所有anchor box的预设中心坐标
均为(32,32)。
anchor box的尺寸共n个,每个点共享n个anchor box尺寸,该尺寸一般通过类聚数据集上的物品尺寸产生,每个点都按指定的n个anchor box尺寸生成n个anchor box的调整系数和分数,调整后产生RoI的尺寸,注意RoI尺寸是原图上的尺寸,应用到Fast-RCNN上还需要进行缩放变换。
fast_rcnn_structure.png
这里的Fast-RCNN部分指RoI池化层之后的部分,输入为与PRN共享的卷积网络的输出,输出分为两个部分:
由上图所示,共享卷积层输出的结果与PRN输出的RoI结合通过RoI池化层,获得一个固定大小的RoI feature,该部分经过一个共享的处理(卷积层,全连接层等),获得后续的feature,该feature分别通过两个独立的全连接层,获得类别信息和调整因子。使用其中的调整因子调整PRN输出的RoI数据,获得最终的RoI位置和大小数据。
标记分为三种,分别是:
PRN网络的代价函数如上所示,其中
是anchor box的标号;
为PRN判定的该anchor box有物体的概率;
为该anchor box的标记,若标记正例为1,反例则标记为0;
为PRN判定的调整因子;
为真实的调整因子。
代价函数分为两个部分,分别是:
衡量类别判断错误产生的代价,为log代价函数(交叉熵)
衡量调整因子误差产生的代价,为
其中,R函数的表达式如下所示:
Fast-RCNN代价函数分为两个部分,如下所示:
第一个部分
为分类部分的代价函数,使用交叉熵函数,公式如下,其中u为该RoI区域的标记类别,p为神经网络输出的分类向量:
第二个部分
为调整因子的代价函数,
表示仅当当前位置不是背景时才考虑该部分代价, 超参数
表示两个部分之间的权重,论文中取1。
如下所示,其中t为网络输出的调整因子,v为目标调整因子。
训练过程包括PRN和Fast-RCNN网络的训练,其中,前段的卷积层还是共享权值的,训练方法如下所示:
train.png
Fast-RCNN和PRN的训练都是批处理的,每一批均是从一张图片中获取的anchor box,且要求正例和反例的数量相同,原论文中batch大小是256,由128个正例和128个反例组成。