
在传统的卷积神经网络中,因为过度使用池化层(包含最大池化层 max pooling layer 和平均池化层 average pooling layer),导致在进行图像分类任务时,网络平移不变性(translation-invariance)性能提升,但是在目标检测的时候我们需要的是“平移改变性”(translation-variance),即需要对位置敏感(position sensitive),因此这两个方面构成了一个矛盾困境(dilemma)。
现在(16年)流行的网络架构是在卷积网络后面接一个空间池化层(spatial pooling layer),然后再接几层全连接层。卷积计算进行特征提取时共享计算,但是在兴趣区域池化(RoI pooling layer)时不共享计算。后来有人提出全卷积网络(fully convolutional network),删掉了兴趣池化层,发现当它用于分类任务上效果很好,而当把它直接应用于检测任务上时精度很差。为了解决这个问题,Faster R-CNN 等算法在使用像 ResNet,GoogLeNet 等全卷积网络时,开始在一些卷积层间很不自然地插入一些兴趣区域池化层,兴趣区域池化是一个区域相关(region-specific)的操作,因此可以提高检测精度,但是由于兴趣区域池化不共享计算,所以网络的整体速度有所下降。
为了解决这个矛盾,R-FCN 专门对位置信息进行了编码,在传统的全卷积层后额外地输出一个对位置敏感的得分图(position-sensitive score map),从而既保持了整个框架全卷积的结构,又实现了“平移改变性”。在整个全卷积网络的顶部,R-FCN 加上了对位置敏感的兴趣池化层(position-sensitive RoI pooling layer),用来强调位置敏感性。这样一来,整个全卷积层既能共享计算,又能对位置进行编码。
R-FCN 的网络结构如下图所示:

原始图片先经过深度卷积神经网络(比如 ResNet-101)得到特征图谱,然后接一层卷积层,生成通道数为 k^2(C+1)-d 的位置敏感得分图。然后将区域提议网络(region proposal network,RPN)得到的兴趣区域(region of interest,RoI)使用作者提出的位置敏感兴趣池化层池化后,得到一个形状为 k×k×(C+1)-d 的 位置敏感得分(position-sensitive scores),对其的前两个维度求均值后,即可得到 (C+1) 个数值(digits)(注:把背景作为一个特殊的类别)。如果是预测(inference)阶段,直接取最大数值对应的索引(index)即可得到类别。如果是训练(training)阶段,对各个数值进行 softmax 操作后即可用于训练。
位置敏感的池化层的具体计算方法如下图所示:

将得分图谱分成 k^2 个深度为 C+1 的条块(bins),每个条块只负责计算池化后(pooled scores)的一个位置。假如令 k=3,则共有 9 个 bins,第一个负责左上角,第二个负责上中间,第三个负责右上角,以此类推。图中以不同的颜色标明了不同的条块所负责的区域。对不同条块中的对应区域取平均值(average pooling),即可得到池化结果。
用数学公式描述如下:

式中 (i, j) 指第 (i, j) 个条块,c 指的是第 c 个物体类别,rc 指池化结果(pooled response),z 指的是得分图(score maps),(x0,y0) 指得分图中的兴趣区域的左上角,n 指的是一个条块中所有像素的个数,Θ 指网络中所有可学习的参数(learnable parameters)。
而表决(vote)过程,则是对各个类别对应的得分求均值,即对位置敏感得分的前两个维度求均值,用公式描述如下:

对于边界框回归问题,可采用类似的结构,只不过在特征图经过卷积层后生成的应该是 4k^2−d 的得分图,经过位置敏感池化后,得到 k×k×4-d 的池化结果(pooled response),最后经过表决(vote),得到 1×1×4-d 的向量,即回归(regression)结果。
R-FCN 的 RPN 训练过程与参数化都参照 Faster-RCNN,其损失函数如下:

其中,t=(tx,ty,tw,th),表示参数化的位置坐标,c 代表 class,Lcls(sc∗)=−log(sc∗) 指交叉䊞损失(cross-entropy loss),∗ 代表真实标注(ground-truth label),λ 表示平衡参数(balance weight)。[c∗>0] 是一个指示器(indicitor):

R-FCN 一方面改善了 Faster R-CNN 的结构,删掉了全卷积中不自然插入的兴趣区域池化层,在网络顶端加上位置敏感的池化层,使得全卷积层的计算得以共享,减少了训练及预测的时间,另一方面在位置敏感的得分层中使用不同的条块专一地检测图片中物体的不同部分,使得检测精度得以提升。这些改进使得 R-FCN 的速度比 Faster R-CNN 快了 2.5 到 20 倍,精度从 Faster R-CNN 在 PASCAL VOC 2007 上的 69.9% mAP 提升到了 83.6% mAP。R-FCN 集合了全卷积网络和区域池化的优点,成为近年比较完善的两步目标检测算法代表之一。