【论文笔记】物体检测系列 R-FCN: Object Detection via Region-based Fully Convolutional Networks

来源:互联网 发布:剑雨江湖升阶数据 编辑:程序博客网 时间:2024/05/17 02:34

论文链接:https://arxiv.org/abs/1605.06409

代码链接:https://github.com/daijifeng001/R-FCN


——————————————————————————我是正文的分割线——————————————————————

0. 引言

本文提出了region-based fully convolutional networks(RFCN)用于目标检测。

在此之前的RCNN系列的目标检测框架通常包含两部分:(i)ROI Pooling之前的一个共享的全卷积网络;(ii)ROI Pooling之后的不共享的ROI-wise的子网络。这主要是因为历史上先驱的分类网络如AlexNet,VGGNet等都是类似的结构——一个卷积组成的网络,接pooling层,再接几个fc层。这样物体分类网络中的最后一个pooling层可以方便地替换成ROI Pooling,然后用在物体检测网络中。

现在时代已经翻到了新的篇章,现在的state of the art 的物体分类网络如ResNet,GoogLeNet都是全卷积网络,我们想在目标检测方面也全卷积。但是之前的尝试都精度比较低。为了解决这一问题,在ResNet的文章里在两部分conv层之间插入了RoI Pooling layer,这样通过加深ROI-wise的子网络的深度提高了精度,但同时却降低了速度,因为在计算每一个RoI时计算不共享。 

前面提到的通过ROI-wise的子网络提高精度,这主要是解决了图像分类和物体检测之间的差异:分类需要特征具有平移不变性,检测则要求对目标的平移做出准确响应。现在的大部分CNN在分类上可以做的很好,但用在检测上效果不佳。SPP,Faster R-CNN类的方法在ROI pooling前都是卷积,是具备平移不变性的,但一旦插入ROI pooling之后,后面的网络结构就不再具备平移不变性了。这样就能用于物体检测。当然这种设计也导致了训练和测试时更加耗时,因为ROI pooling后的子网络在计算每一个RoI时计算不共享。

本文提出了一种Region-based Fully Convolutional Network (R-FCN),其结构是FCN中的一种,为了将translation variance 包含进FCN,我们用FCN的输出设计了一组 position sensitive score maps,它包含物体的位置信息,其顶端设有RoI Pooling层来处理位置信息,之后再没有权重层。这样,RFCN就将几乎所有的计算都共享,可以达到比faster rcnn快2.5-20倍。

1. our approach

 

  • Backbone architecture:ResNet 101去掉最后一层全连接层,保留前100层,再接一个1*1*1024的全卷积层(100层输出是2048d,为了降维引入了一个1*1的卷积层,则输出为1024d)。

  • k^2*(C+1)的conv层:Backbone architecture的输出是W*H*1024,经过k^2*(C+1)的conv层得到channel=k^2*(C+1),大小为W*H的position sensitive score map。k = 3表示把一个ROI划分成3*3,表示分别预测9个位置(上左,上中,上右,中左,中中,中右,下左,下中,下右)包含(C+1)个物体的score。如下图所示,在3*3的区域内,每一个区域内都预测(C+1)类的得分,比如下图左上角的bin预测的是可能是人这个类且是人的左上部位的score(也预测是其他C个类且是该类坐上部位的score)
这里写图片描述
  • ROI pooling输入是k^2*(C+1)*W' *H'(W'和H'是ROI的宽度和高度)的score map,输出为(C+1)*k*k大小的score map,然后k*k个bin直接进行求和(每个类单独做)得到每一类的score,然后进行softmax得到每类的最终得分
  • 损失函数:和faster RCNN类似,由分类loss和回归loss组成,分类用交叉熵损失(log loss),回归用L1-smooth损失

  • 训练的样本选择策略:online hard example mining。主要思想就是对样本按loss进行排序,选择前面loss较小的,这个策略主要用来对负样本进行筛选,使得正负样本更加平衡。
  • 训练细节:
    • decay = 0.0005
    • momentum = 0.9
    • 单尺度训练:图片resize到短边600
    • 使用8个GPU进行训练,每个GPU 1张图,选择B=128个ROIs进行反向传播
    • fine-tune learning rate = 0.001 for 20k mini-batches,  0.0001 for 10k mini-batches on VOC.
    • the 4-step alternating training between training RPN and training R-FCN.(类似于Faster RCNN)
    • 使用atrous(hole算法)来解决stride reduce的问题

2. experiments

下文选自reference【1】

  • VOC2007和VOC2010上与Faster R-CNN的对比:R-FCN比Faster RCNN好!

  • 深度影响对比:101深度最好!

  • region proposal算法对比:RPN比SS,EB好!

 

  •  COCO库上与Faster R-CNN的对比:R-FCN比Faster RCNN好!

  • 效果示例:


reference:

1.http://blog.csdn.net/baidu_32173921/article/details/71741970




阅读全文
0 0
原创粉丝点击