论文笔记 R-FCN: Object Detection via Region-based Fully Convolutional Networks

插一句,我又回来啦~

这篇论文主要采用“位置敏感度图”的方法,将FCN 网络引入到目标检测中来,将图像分类和目标检测很好地结合。因此这种方法可以和很多FCN中的图像分类框架结合,比如ResNets等,使其应用到目标检测中来。本文实验了101层的ResNet在VOC数据下结果,取得了mAP 83.6%和 速度 170ms一张图的结果(速度比Faster RCNN快)。代码开源:https://github.com/daijifeng001/r-fcn 代码支持在Titan,TitanX,K40,K80上跑~~下次有时间可以跑跑玩玩。


想法来源:

一般常见的目标检测主要有两个子网络:(1)一个独立于RoI的共享的全连接层子网络(2)涉及RoI决策的不共享计算的子网络。这样进行网络的分解主要来源于目标检测问题之前,人们大量地对于图像分类的研究。其中的一些经典网络如AlexNet,VGG等,在卷积子网络的结尾直接连接一个pooling层,跟着是一些全连接层(fc)。因此,图像分类网络中的pooling层也就自然而然地出现在了目标检测网络中。

随着ResNets,GoogLeNets等全连接卷积(fully convolutional)的设计网络的出现,自然而然地让作者想到将传统网络改成fully convolutional进行目标检测。为了提高精度并满足检测要求,作者在ResNet的检测流程中加入RoI pooling层到卷积之间,使得其网络可以达到对于区域特定的目标,来完成作者认为的目标检测所需要不同于分类的translation-invariant。


网络结构:

整体来说,本文在FCN网络中使用一个位置敏感的RoI pooling层,得到一个“位置敏感度图”作为输出,完成一个端到端的目标检测网络结构,其主要网络流程如下图:



图中可以清楚看出,整个R-FCN网络依旧是采用RPN+detection两个部分,分别进行候选proposal提取和检测。RPN类似于原始设计,进行前景背景的分离,而在R-FCN的结尾连接着RoI pooling层,该层产生对应于每一个RoI区域的分数。

在R-FCN的后面阶段里,所有卷积权值共享。和fast rcnn相比,主要差别就在后面跟的是ResNet,ResNet101有100个卷积层,一个pooling层一个1000类的fc层,本文为了应用在目标检测,将pooling层和fc层去除,只保留其卷积层得到的feature map,进一步产生分数图进行检测。


位置敏感分数图:

将RoI矩形分成k*k个网格,针对每一个位置为(i,j)处分数的计算,主要不仅针对该处的softmax响应的分数,同时结合了其相对于RoI的位置,其计算公式如下(x0,y0为RoI的top-left角坐标):

为了简化计算,对于一个RoI区域内计算均值作为该RoI的vote,接着算对应的softmax分数。

对于回归和loss函数部分,整体全部和Fast RCNN一致。这里我不再细说。作者给出一个简单的可视化图如下:



实验结果:

主要进行了和Faster RCNN和ResNet-101的对比,我认为和ResNet-101的对比对于目标检测没什么意义,因此主要放图和Faster RCNN的,如下:


你可能感兴趣的:(Deep,Learning,Computer,Vision,Object,Detection,论文笔记,R-FCN,目标检测)