目标检测经典网络——R-FCN网络介绍

R-FCN发明比YOLOv1、SSD晚,但创新度上可能不够,只能算是对Faster R-CNN的改进。R-CNN网络证明了CNN提取特征的有效性,SPP解决了如何应对不同尺度特征图的问题,Fast R-CNN通过RoI pooling实现RoI特征图块卷积运算的共享,加快了速度并提升了准确度,而Faster R-CNN进一步加大卷积神经网络的共享,即将产生候选框的过程合并到CNN中,以RPN子网络的形式实现CNN共享。

R-FCN第一版论文提交于2016年5月左右,此时已经有GoogLeNet、ResNet等经典卷积神经网络了,并且这些网络证明了不使用全连接也能获得很好的效果,而且更重要的是可以应对不同尺度的图像。

当目标检测网络架构中将分类网络与检测网络进行卷积共享时,分类任务需要特征具有平移不变性,而检测任务要求对目标的平移做出准确响应,因此R-FCN网络主要解决了“图像分类网络的位置不敏感性”和“目标检测网络的位置敏感性”之间的矛盾。

RoI之前的层是共享卷积运算的,RoI之后一个卷积网络对RoI进行卷积并完成region的提取,另一个网络根据RoI结果进行最终目标的分类和回归任务。因此,为了最大化卷积的共享,作者把所有的卷积都放在了RoI之前。如下表所示:

目标检测经典网络——R-FCN网络介绍

R-FCN整体架构如下图所示:

目标检测经典网络——R-FCN网络介绍

如上图所示,一个典型的R-FCN网络由backbone网络(如ResNet101)、一个RPN网络(Faster R-CNN中的RPN层)和一个位置敏感的预测层,以及最后是RoI pooling+投票的决策层组成。对于上图,乍一看与Faster R-CNN网络的结构非常类似,主要区别就在于pooling的地方。

R-FCN网络提出了位置敏感的得分图(position sensitive score map)概念,将目标的位置信息融合到RoI pooing中。

目标检测经典网络——R-FCN网络介绍

  • Backbone:使用ResNet101网络,去除最后的全均平均池化和全连接层,保留前100个卷积层。这100个卷积层的输出是2048维的特征图,为了降维添加了一层1024个1*1卷积核的卷积层。因此最终输出为W*H*1024维的特征图。()
  • 目标检测经典网络——R-FCN网络介绍的卷积层:使用目标检测经典网络——R-FCN网络介绍个1*1卷积核的卷积层得到W*H*目标检测经典网络——R-FCN网络介绍的位置敏感的score map。R-FCN原论文中使用k=3,即把每一个RoI划分成3*3的区域,对位9个位置分别为:上左、上中、上右、中左、中中、中右、下左、下中、下右。
  • 目标检测经典网络——R-FCN网络介绍个特征图的物理意义:当k=3时,如上图所示共有9种颜色表示。每个颜色的立方体块W*H*(C+1)表示不同位置存在目标的概率值,即第一块黄色表示上左位置,第二块黄色代表上中位置,依次类推,最后一块蓝白色代表下右位置。
  • RoI pooling:采用Faster R-CNN中的RoI pooling。即对于不同大小的RoI,在上面画n*n个bin的网格,每个网格里的所有像素值做pooling(平均),此时无论RoI多大最终都会变成n*n的维度。这里的n的大小在Faster R-CNN中由后面卷积网络输入大小决定,在R-FCN中其大小就是k。(注意:这里的RoI pooling是每个特征图单独做,而不是所有通道一起做!)
  • RoI pooling的输入与输出:输入为目标检测经典网络——R-FCN网络介绍的score map上对应某一RoI的立方体块,这里的W'和H'是RoI的长和宽。将(C+1)不同颜色上的每个目标检测经典网络——R-FCN网络介绍的RoI区域划分成k*k的bins,然后对每个bins按像素值做pooing,最终把目标检测经典网络——R-FCN网络介绍个bin组成新的立方体块(即上图中k*k*(C+1)的立方体块)。
  • 投票(vote):对于C+1个类别,分别在k*k个bin上求和得到score值,然后进行softmax得出每个类别的概率值。
  • 损失函数:与Faster R-CNN类似,使用多任务损失,即交叉熵的分类损失和L1平滑的回归损失组成:

                            目标检测经典网络——R-FCN网络介绍

  • 训练样本选择策略:采用online hard example mining (OHEM)方法,其主要思想是对样本按loss值排序,取前面loss值比较小的,其主要是用来对负样本进行筛选,使得正负样本均衡。 

 

总结

R-FCN在Faster R-CNN网络的基础上进行了一些改进。第一,将baseline从VGG16改成了ResNet101。第二,将所有卷积网络层移到RoI pooling的前面,实现卷积共享最大化。第三,由于RoI pooling后会丢失位置信息,因此在pooling之前保留了位置信息,即指定不同score map负责目标的目标检测经典网络——R-FCN网络介绍不同位置,pooling后利用保留的score map组合获得位置信息。