【深度学习】R-FCN-关键点解读

PS:本文直接说明问题,其他基础暂不做介绍
论文名称:《 R-FCN:object detection via region-based fully convolutional networks 》

论文下载:http://papers.nips.cc/paper/6465-r-fcn-object-detection-via-region-based-fully-convolutional-networks.pdf

论文代码:https://github.com/daijifeng001/r-fcn


在这里插入图片描述
R-FCN提出是为了什么?

【摘要部分】
We present region-based, fully convolutional networks for accurate and efficient object detection. In contrast to previous region-based detectors such as Fast/Faster R-CNN [7, 19] that apply a costly per-region subnetwork hundreds of times, our region-based detector is fully convolutional with almost all computation shared on the entire image.

文章摘要部分说明作者提出R-FCN是为了更快、更好的进行目标检测,但是之前的Fast/Faster R-CNN 在ROI pooling之后的计算,也就是作者提到的subnetwork,计算重复次数太多了,来看看such as Fast/Faster R-CNN 的架构图在这里插入图片描述
在这里插入图片描述
可以看出,在Fast/Faster R-CNN 的ROI pooling之后,分别跟了FC和卷积层,FC的参数本来就多,而且subnetwork的FC和卷积层是针对每个(per-region )区域单独计算的,因此也就造成了计算量的重复。

这些参数可以共享吗?
可以,作者就提出了fully convolutional with almost all computation shared on the entire image,也就是对整张图片实现全卷积参数共享

怎么实现参数共享的呢?
思路很简单,将岔路口 ROI pooling的位置后移,直接在ROI pooling层后面进行分类和回归,那问题了来了,如果卷积层越深,分类准了,但位置信息丢失过多,定位不准,怎么办?前人怎么做的呢?他们就没想到吗?想到了,但没解决,历史遗留问题
在这里插入图片描述
网络越深,分类精度高,但是回归定位就次了,Faster R-CNN不自然的就把ROI pooling 放在了两个卷积 集合中间了,略显尴尬,这么做确实提高了定位的精度,但是ROI pooling后的计算量就上来了。

那到底怎么解决的呢?

【摘要部分】
To achieve this goal, we propose position-sensitive score maps to address a dilemma between translation-invariance in image classification and translation-variance in object detection.

作者认为(其实是假设),这是卷积的平移不变性造成的,随着卷积网络的深度的增加,feat-map越来越小,原图上面目标的少量移动在经过多层卷积后,可能根本就体现不出来。
We hypothesize that deeper convolutional layers in an image classification network are less sensitive to translation.

SPP,Faster R-CNN类的方法在ROI pooling前都是卷积,是具备平移不变性的,但一旦插入ROI pooling之后,后面的网络结构就不再具备平移不变性了。因此,本文想提出来的position sensitive score map这个概念是能把目标的位置信息融合进ROI pooling。

现在的情况是 ROI pooling打算往后移,为了解决卷积带来的位置不敏感性,作者提出了position sensitive score map

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190813090836639.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTQ0OTYzNw==,size_16,color_FFFFFF,t_70
作者在最后一层卷积层上进行划分,划分3*3=9个区域,这9个区域分布代表左上、中上、右上、。。。、右下,九个区域代表九个位置,重叠在一起后,进行ROI pooling操作。

这种操作其实是把不同位置的信息一起组合,进行投票,提高了对位置的敏感度,只有每个位置都出现了同一物体的不同部位,那它的得分才很高,才会优先被选出来,这才是文章的精华所在。
这部分的解释可以参考:
https://blog.csdn.net/Gentleman_Qin/article/details/84846244
https://www.cnblogs.com/shouhuxianjian/p/7710707.html

在这里插入图片描述
文章说的清楚,是每个ROI,也就是ROI的个数有很多,之后,假设每个ROI的尺寸是w x h ,每个ROI被矩形分割成成k^2个bin,每个bin的大小是(w/k,h/k)
在这里插入图片描述
后续的操作不再说明了,本文旨在缕清这几个问题

1.R-FCN提出是为了什么?
一句话:通过全卷积实现精确和高效的目标检测

2.是否可以实现全卷积?
一句话,Fast/Faster-rcnn是将ROI pooling层将整个网络分开,ROI pooling后的网络计算量大,但是ROI pooling移到最后一层,会使得物体位置精度降低很多,效果差

3.全卷积的位置平移不变性怎么解决的?
一句话:将整个物体分解为九个区域(3*3,也可以更多,但对计算力有要求),通过检测一个物体的不同位置,来提高物体整体的位置检测精度

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值