R-FCN: Object Detection via Region-based Fully Convolutional Networks
作者:JiFeng Dai,Yi Li, Kaiming He, Jian Sun
短评:该论文中提出并计算了位置敏感得分,不仅可以充分利用物体的局部信息来估计整体,而且可以指导反馈过程做出修整。处理单张图片的效率惊人呀。受博主知识上界限制,文中理解不充分之处在所难免,恭请批评指教。
摘要直译:为了提高物体识别的精确度和效率,我们展示了基于区域的全卷机网络。相比于之前的基于区域的检测器,比如Fast / Faster R-CNN,对每个区域子网络应用几百次,我们的基于区域的检测器是全卷积的且几乎所有的计算都在整个图像上共享。为了实现这个目的,我们提出了位置敏感得分图(position-sensitive score maps)来解决这样的两难困境,即分类上的平移不变形和物体检测上的平移变性。我们的方法很自然的采用了全卷机图像分类骨干,比如最新的残差网络(Residual Networks, ResNet)用来物体检测。在PASCAL VOC 数据集上,采用101-层的ResNet主干网,我们展示了充满竞争力的结果,比如,在2007数据集上,83.6%的mAP。同时我们的结果也达到了在测试速度中每张图片170ms的效果,2.5-20倍于Faster R-CNN。源码已经公开,地址为 https://github.com/daijifeng001/r-fcn.
核心分析:该论文非常重要的概念是位置敏感得分图(position-sensitive score maps),通过下图来直观感受下:
在上图中的由R-FCN学习到的位置敏感得分图,其中k×k = 3×3。在图像中某个物体的相对位置上,我们期望这些图能够产生被强烈的激活,比如,在Figure 3中,位置敏感RoI池化图中的“上中敏感得分”显示了很高的得分(近乎白色),即近乎接近对应物体的上中位置。如果一个候选box精准的覆盖了一个物体,那么RoI对应的k²个box中大部分box都会被激活,然后他们投票得到一个很高的得分。反之,如果候选框并没有正确的覆盖一个物体,那么RoI对应的k²个box中很多不会被激活,也就意味着投票得分很低,比如Figure 4中9个box中有5个得分偏低(颜色较暗),那么投票结果就是no。
接着看下一个图:
在这个框架图中,注意到前面的位置敏感RoI池化对应于该图中的池化过程(ps 因为刚开始对这个池化很迷惑,所以就先介绍了)。在这个框架图中,可以看到从feature maps过来有k²(C+1)个通道的位置敏感得分图,其中k²对应于池化后的位置敏感RoI池化图的大小,不一定是3×3的大小;(C+1)对应于C个物体类别和1个背景。对于每个RPN提出的RoI,RoI会映射到特征图上,并将RoI分割成k×k个box,每个box上计算一个得分,之后计算每个类别对应的所有通道上的位置得分图的位置敏感RoI池化图,计算公式如下:
r c ( i , j ∣ θ ) = ∑ ( x , y ) ∈ b i n ( i , j ) z i , j , c ( x + x 0 , y + y 0 ∣ θ ) / n r_c(i, j | \theta) = \sum_{(x,y)\in bin(i,j)} z_{i,j,c}(x+x_0, y+y_0 | \theta) / n rc(i,j∣θ)=(x,y)∈bin(i,j)∑zi,j,c(x+x0,y+y0∣θ)/n
其中 r c ( i , j ) r_c(i,j) rc(i,j) 是在 c − t h c-th c−