说明
1.本文是博主的学习记录,主要为了方便以后查看,当然如果能为别人提供帮助就更好了,如果有不对的地方请指正
2.本文重点是了解R-FCN要解决的问题以及它是如何解决的,尽量用较少篇幅表达清楚论文整体思路,其他一些不影响理解论文算法的东西有需要的请查看其他博客
3.论文中的链接是我经过大量搜索,个人认为讲解最清楚的参考,看本文的过程中如对一些名词有疑惑可以直接点击参考链接

原论文
代码
论文翻译

创新点
1.使用全卷积网络实现共享计算
2.利用Position-Sensitive ROI Pooling处理位移不变性

为何提出R-FCN
(Faster R-CNN到R-FCN)
1.两种Faster R-CNN
1)base部分是VGG,head部分是全连接层
2)base部分是ResNet,head部分是卷积层(conv5)加全连接层
注:
1)base就是基础主干网络,用来提取特征,共享计算
2)head就是后面不能共享计算的部分(生成的ROI每一个经过head部分,无法共享计算就会计算几百次,是导致Faster R-CNN速度慢的原因之一)
2.由于无法共享计算,所以尝试把ROI放到conv5后面,这样前面卷积都能共享计算,但是因为ROI放在Conv5后面的特征图上,由于网络太深了,原图的位置变化很难反映到特征图上,即对平移可变性产生影响
注:
1)平移不变性(translation invariance)是对应分类的,就是说无论输入图片中的物体(例如狗)怎么平移变换,网络都会正确识别它的类别(怎么平移都是狗)
2)平移可变性(translation variance)是对应检测的,因为检测不仅要知道类别还要知道物体在图片中的位置,例如一张图片里的物体(还是猫)平移变换后,检测网络输出的bbox应该随着物体平移
3)如果网络太深,平移可变性和平移不变性是矛盾的,网络深平移不变性好,但是位置变化就很难反映到后面小特征图上,平移可变性差
3.为了解决平移可变性问题,提出R-FCN
参考

R-FCN
(知道了R-FCN要解决的问题,接下来看它是如何解决的)
1.网络设计
R-FCN学习记录
图中ROI为位置敏感ROI池化(Position-Sensitive ROI Pooling),用来改善平移可变性;ROI前面实现了卷积共享计算,后面只剩池化,跟卷积和全连接的计算量比起来可以忽略
2.Position-Sensitive ROI Pooling
R-FCN学习记录
2.1Position-Sensitive ROI Pooling工作原理
1)c+1是类别数以及背景类
2)k^2 (c+1)是最后一层卷积输出的位置敏感得分特征图(position-sensitive score map)的通道数(通过设置最后一层卷积的滤波器数量来得到,实际k=3,k ^2 (c+1)=9(c+1))
3)那为什么要设置k^2(c+1)这个数量的通道数呢?这就是位置敏感ROI池化和普通ROI池化(如果不了解ROI池化可以点击链接或者自行搜索)区别的关键。如果是普通ROI池化,那只需要(c+1)通道数就可以了,c+1类每一类一张特征图,每一类在自己对应的特征图上进行ROI池化就行;如果是位置敏感ROI池化,很明显k ^2(c+1)通道数就表示,c+1类每类有k ^2(实际9张)张特征图,所以池化的时候每一类要在自己对应的k ^2张特征图上进行,得到后面的由9个颜色小格子组成的尺寸为kxk,通道数为c+1的特征图。怎么操作?如下图所示(以一类为例,即c=1),下图中间九张就对应上图中的一类对应的位置敏感得分特征图(position-sensitive score map),也是9张;下图后面的3x3的特征图就对应上图中的9个不同颜色组成的特征图(此时c+1改为1,因为我们以一类为例)。上下图对应完继续看下图后两部分,不难发现后面3x3的特征图的左上角(1号格子)是在中间9张特征图中的第一张上进行池化得到的,以此类推,3x3的特征图的每个小格子都是在中间不同的9张上进行的(而普通ROI池化只在一张特征图上进行池化就得到后面3x3的特征图了),再对应回上图,也就是说后面的c+1通道数的由9个颜色格子组成的特征图是在前面9(c+1)通道数的位置敏感得分特征图(position-sensitive score map)上每一类在自己对应的9张上进行池化得到的(颜色正好对应)
R-FCN学习记录
4)后面的vote是进行全局平均值池化,生成一个 C+1 维的向量,这个向量就可以用于判断当前ROI是什么类别
5)这是分类,检测还有回归位置信息,所以还有和k^2 (c+1)的位置敏感得分特征图(position-sensitive score map)并列4xk ^2的特征图用来回归
2.2为什么Position-sensitive score map可以改善平移可变性
由9个颜色组成的特征图每个小方格在每张图上的位置并不相同,而是在上下左右方向上有偏移,当组合出来的9宫格对应ground truth时,小方格1就对应了 ground truth左上角的位置,小方格2对应了ground truth正上方的位置,依此类推,所以用这种9宫格训练目标时就有了相对目标位置的信息在里面
参考:论文csdn知乎知乎
2.3效果可视化
R-FCN学习记录
R-FCN学习记录
3.损失函数,测试过程和训练过程和Faster R-CNN类似
4.其他
1)原图的RoI是如何映射到position-sensitive score map上的:参考
2)Atrous Convolution算法:论文

R-FCN缺点
准确率不如Faster R-CNN,速度不如YOLO、SSD

相关文章: