r-fcn论文阅读

  • 简介:R-FCN(Region-based Fully Convolutional Networks),是一个准确和高效的基于区域的对象检测框架。 与先前的基于区域的检测器(诸如Fast/Faster R-CNN)在每个区域子网络几百次的高成本计算相反,R-FCN的基于区域的检测器是利用深度完全卷积网络,几乎所有计算在整个图像上共享。 R-FCN可以采用强大的完全卷积图像网络结构,例如ResNets等。
  • 背景:把分类网络改改弄成检测网络时对于resnet等会出现精度下降,其原因是对分类来说,是平移不变的,但是检测却是平移可变的。ResNet提出一个方法解决,就是在检测的BaseNet后面加一个ROI-pooling,但是这样的做法会因为引入了一些按区域操作层而牺牲效率。
  • 为了把平移可变性加入FCN,我们构造了一系列位置敏感特征图(position-sensitive score maps),在FCN的上面,添加了一个position-sensitive RoI pooling layers(没有权值). 我们的R-FCN成功地解决了在分类网络转化为检测网络时平移可变/不可变带来的问题,使得如ResNet这样的全卷积分类网络能高效地转化为检测网络。

  • RPN也是一个全卷积结构,可以获得候选区域。我们共享RPN和R-FCN的网络参数。R-FCN的作用就是把ROIs进行分类的。都是全卷积且一张图片参数共享的。最后一个卷积层每个类别 产生了一堆k*k的position-sensitive score maps。
R-FCN
  • R-FCN的最后一层为位置敏感的ROI-Pooling层,结合了最后一层卷机层和生成了每个ROI的分数。我们的ROI-Pooling和一般的ROI-Pooling不同,特点在于我们是位置敏感的,即每个格子都是一个ROI-pooling独立来的。这样能学习到最后一层卷积层的位置敏感信息。具体细节如下:
  • Backbone architecture:
ResNet-101有100个卷积层,后面接着一个全局average pooling,然后接了一个1000类的FC。我们这里只用到了他100的卷积层,,用Imagenet做预训练,在后面再加了一个1024-d的卷积层为了减少维度(本来最后一层是2018-d的),然后再在后面加了k*k(c+1)个channel的卷积层用来产生score maps.
  • Position-sensitive score maps & Position-sensitive RoI pooling:
为了把位置信息准确地传给每个ROI,我们把每个ROI划成k*k个格子,最后一层卷积层每个类会产生k*k个score maps.每个格子由之前的一个featuremap的对应位置小格子 avg-pooling而来。即这k*k个score maps的每一个只贡献固定位置信息,这样子最后我们能得到k*k个 position-sensitive scores ,然后进行vote(这里用avg方法),即算出每个类的position-sensitive scores的均值,得到的值拿来softmax,看哪个大就是哪个类并且可以利用softmax值来算出分类loss。
回归类似,类似之前k*k(c+1)维的卷积,我们在后面接一个4*k*k维卷积为了回归,为了把位置信息加进去,利用position-sensitive RoI pooling (PS-ROIPooling)得到每个ROI对应4*k*k个向量,然后利用avg-voting压缩到4维.
  • Training:
如果提前计算好region proposals,R-FCN结构就可以end-to-end了。与gt的IOU大于0.5为正样本,否则为负样本;
我们还用了OHEM,假如一张图片有N个ROI,利用loss进行排序,选出B(128)个loss最高的ROI,这一步几乎不花时间。
  • Inference:
We use a weight decay of 0.0005 and a momentum of 0.9. By default we use single-scale training:images are resized such that the scale (shorter side of image) is 600 pixels [6, 18]. Each GPU holds 1image and selects B = 128 RoIs for backprop. We train the model with 8 GPUs (so the effective mini-batch size is 8×). We fine-tune R-FCN using a learning rate of 0.001 for 20k mini-batches and 0.0001 for 10k mini-batches on VOC. To have R-FCN share features with RPN (Figure 2), we adopt
the 4-step alternating training3 in [18], alternating between training RPN and training R-FCN.
我们训练的时候为了共享R-FCN和RPN的参数,采用循环交替训练,共4轮。
  • À trous and stride.
我们的结构收益于用于 semantic segmentation 的FCN网络结构修改,特别的(即相对于传统FCN,我们R-FCN不一样的地方),我们减少了ResNet-101的 effective stride 从32到16,增加了 score map resolution.conv4(stride=16)之前的东西都不变,本来conv5的stride为2现在改为1,并且利用“hole algorithm”技术补偿丢失的stride, RPN放在conv4的top上,所以RPN不会被“hole algorithm“影响到。总体来讲,用了这个À trous使精度提升了2.6个点.
3、Related Work
R-CNN已经证明了用region proposal的高效性,但是这些region proposal的参数是不共享的;SPP呢他,Fast-Rcnn和Faster-Rcnn是半卷积即前半部分共享,后半部分不共享.Faster-Rcnn里的RPN是全卷机的,产生一堆候选框,这些候选框是分类别的。
4、Experiments
  • Comparisons with Other Fully Convolutional Strategies
全卷积探测器精度不高,我们实验了以下几个全卷积策略(或者每个ROI只有一个分类FC层的几乎全卷积),用的ResNet-101
Naïve Faster R-CNN:在conv5后面的最后一层卷积后加ROI pooling,每个ROI会经过一个21分类的FC,用了 à trous 。
Class-specific RPN:conv5拉出来RPN,后接21分类FC,用了à trous
R-FCN without position-sensitivity:把k=1这样等于去掉了R-FCN的位置敏感。
反正结果就是我哦们的R-FCN效果可以比拟Faster rcnn并且在ROI pooling后没有加学习层。或者我们可以看到,把K=1后即放弃位置敏感后R-FCN根本没办法收敛
反正就是各种巨牛逼,精度和Faster rcnn差不多,但是速度快很多


ResNet补充













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值