系统架构
Faster-RCNN是Fast-RCNN的后续版本,主要针对Fast-RCNN速度过慢进行优化。在Fast-RCNN中,速度的瓶颈主要是用于生成候选区域的Selective Search过程。在Faster-RCNN中,候选区域的生成使用RPN网络,且共享的使用了卷积产生的特性,由此将候选区域的生成方式纳入神经网络的范畴下。该系统有以下部分构成:
- 卷积神经网络:对待测图片进行几层卷积,产生高级特征,这些高级特征用于RPN生成候选框和RoI池化输入
- PRN网络:根据卷积产生的高级特性生成一系列不考虑物品类别的候选区域,即代替Selective Search方法
- Fast-CNN:RoI pool层输入的Fast-RCNN网络,输入为高级特征和候选区域,生成该候选区域的类别信息和候选区域的调整因子
PRN网络
PRN网络用于产生类别无关的候选区域,即代替Selective Search的功能,其结构如下:
其输入为从共享卷积部分的输出feature map,该部分再经过PRN网络的卷积部分,变为PRN feature,其长宽不变,通道数变为,其中n为每个点上生成候选框的数量。即每个候选框对应六个数据,分别为:
- 位置信息x,y,w,h:包含位置信息,分别是位置和大小的调整系数。
- 评分信息a,b:对这个区域是否含有物体的打分,一个为物品的分数,另一个为是背景的分数。
需要注意的是,位置信息均是调整系数,其和真实位置信息的关系为:
其中,为网络的输出,为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网络
这里的Fast-RCNN部分指RoI池化层之后的部分,输入为与PRN共享的卷积网络的输出,输出分为两个部分:
- 类别信息:总物体类别加1,即类别+背景,用于判断候选框的物品类别
- 调整因子:用于微调PRN的输出结果,该部分输出的每个数据的功能与PRN的4个调整因子相同
由上图所示,共享卷积层输出的结果与PRN输出的RoI结合通过RoI池化层,获得一个固定大小的RoI feature,该部分经过一个共享的处理(卷积层,全连接层等),获得后续的feature,该feature分别通过两个独立的全连接层,获得类别信息和调整因子。使用其中的调整因子调整PRN输出的RoI数据,获得最终的RoI位置和大小数据。
系统训练
标签标注
标记分为三种,分别是:
- 标记为正例:相对于真实物体IoU高于0.7或相对于真实物体IoU在所有候选区域中最高
- 标记为反例:相对于真实物体的IoU低于0.3
- 不标记:不属于正例也不属于反例的候选区域,这些区域不影响训练过程
代价函数
PRN代价函数
PRN网络的代价函数如上所示,其中是anchor box的标号;为PRN判定的该anchor box有物体的概率;为该anchor box的标记,若标记正例为1,反例则标记为0;为PRN判定的调整因子;为真实的调整因子。
代价函数分为两个部分,分别是:
- 类别代价:衡量类别判断错误产生的代价,为log代价函数(交叉熵)
- 回归代价:衡量调整因子误差产生的代价,为
其中,R函数的表达式如下所示:
Fast-RCNN代价函数
Fast-RCNN代价函数分为两个部分,如下所示:
第一个部分为分类部分的代价函数,使用交叉熵函数,公式如下,其中u为该RoI区域的标记类别,p为神经网络输出的分类向量:
第二个部分为调整因子的代价函数,表示仅当当前位置不是背景时才考虑该部分代价, 超参数表示两个部分之间的权重,论文中取1。如下所示,其中t为网络输出的调整因子,v为目标调整因子。
训练过程
训练过程包括PRN和Fast-RCNN网络的训练,其中,前段的卷积层还是共享权值的,训练方法如下所示:
- 单独训练共享部分和PRN网络,使其能获得类别无关的候选区域
- 单独训练共享部分和Fast-RCNN网络,候选区域使用第一步中训练出的PRN获得,注意这里PRN和Fast-RCNN前端卷积(前向传播时共享权值的部分)并没有实现共享权值,PRN和Fast-RCNN是两个完全独立的网络
- 将PRN网络与第二步训练出的共享部分连接,并固定共享部分权值,单独微调训练PRN网络
- 使用第三步训练产生的PRN产生候选区域,固定共享部分权值,微调Fast-RCNN的ROI池化之后层的参数,注意这一步的PRN和Fast-RCNN网络的前端卷积的权值是共享的
Fast-RCNN和PRN的训练都是批处理的,每一批均是从一张图片中获取的anchor box,且要求正例和反例的数量相同,原论文中batch大小是256,由128个正例和128个反例组成。