一、前言
- 在目标检测模型的Roi-wise子网络中类似地应用全卷积设计,结果精度相当不理想,这是由于加剧了图像分类的变换不变性与目标检测的变换可变性的两难局面而导致的
- 为解决上述困境,将Roipooling层插入两组卷积层之间,针对每个候选区域再通过卷积进行特征提取,结果精度提高了,速度却更慢了
- 本文的R-FCN模型中,提出了位置敏感得分图(Position-sensitive score map),解决了该问题
1.1 Roi-wise子网络
由上图可知,Roi pooling层将整个目标检测模型分为了两个子网络模块:
- 独立于RoI pooling层的共享计算的“全卷积”子网络
- 不共享计算的RoI pooling子网络(包括后面的全连接部分)
第一个子网络,Roi pooling层之前的模块,即特征提取和RPN候选区域生成的部分,它们都是通过卷积共享计算的
第二个子网络,Roi pooling层及其之后的模块,因为Roi pooling层是将RPN筛选出来的候选区域,一个个经过Roi pooling,即所谓的RoI-wise subnetwork,得到固定维度的特征向量,再一个个通过全连接层,对每个候选区域进行分类和位置回归,所以它们是不共享计算的
1.2 变换不变性和变换可变性
-
变换不变性:输入变化,输出不变
-
变换可变性:输入变化,输出要相应发生变化
由上述可知,图像分类任务是需要变换不变性的 ,即输入图像中的目标怎么变形,输出的类别结果应该都是不变的,比如,输入图像中目标是一只狗,那么将图片变形,扭曲,或是将狗的从中间位置往左移或往右移,模型输出的结果还是狗
目标检测任务是需要变换可变性的,当输入图像中的目标位置发生变化了,或者形状变化了,模型输出的结果中,描述其位置坐标自然要相应的发生变化
此外,当网络的卷积层加深后,输出的feature map会的变更小,输入中目标的位置发生微小变化,该变化在输出的小feature map难以得到相应,即导致了变换可变性变差
二、 模型设计
2.1 主要设计思路
如果一个RoI含有一个类别c的物体,那么将该RoI对应的feature map上划分为k*k个区域,分别表示该物体的各个部位,然后经过Position-sensitive RoI pooling后,得到k*k*(C+1)大小的得分图,每个通道对应的得分图上都有的
k
2
k^2
k2个数,对应Roi对应各个部位的得分,其中得分图数值最大的那个通道所对应的类别,才是最终的分类类别
2.2 Position-sensitive feature map & score map
位置敏感特征图position-sensitive feature map:
如上图所示,它是对特征提取的子网络模块得到的feature map,经过卷积操作得到的一个宽高与输入相同但是输出通道为
k
2
(
C
+
1
)
k^2(C+1)
k2(C+1)的feature map,其中:
- C+1:C为数据集的类别数,其中1为背景类
- k:为对Roi对应的feature map区域的划分的块数,每块对应于Roi的中目标的每个部分
- k 2 ( C + 1 ) k^2(C+1) k2(C+1):意味着feature map每个通道,表示为Roi上 k 2 k^2 k2个块对应C+1个类别的特征
位置敏感得分图position-sensitive score map:
由上图可知,位置敏感得分图是由位置敏感特征图经过Position-sensitive RoI pooling得到的,它维度为k*k*(C+1)
说明:
- k*k:它表示的是score map的大小,即score map上面有 k 2 k^2 k2个数,每个数表示对应每个部分的得分
- C+1:为得分图的通道数,即每个类别都一个k*k大小的特征图
2.3 Position-sensitive RoI pooling
Position-sensitive RoI pooling操作过程:
上图所示,假设k=3,C=20,所以对Roi在feature map上对应的区域划分3*3的子区域,输出的score map应是3*3*21,下面来看这个3*3*21个数是怎么得到的
由上图可知,有9层颜色不同的feature map,图上表出了,从橙色到浅蓝色,分别对应输出的score map的左上,上中,…,右下这9个块。
以左上角的块为例,在橙色通道对应的feature map上的左上的子区域进行平均池化,得到1*1*21的的特征图,即为score map左上角的块。
然后上中位置的块,在黄色通道对应的feature map上的上中子区域进行平均池化,得到1*1*21的的特征图,即得到了score map上中块的值。
以此类推,就得到3*3*21的score map,然后再以通道为单位,分别将这21个3*3的feature map进行求和,就得到了一个21维的向量,然后输入softmax层进行分类
2.4 position-sensitive regression
R-FCN中的分类和位置回归是通过两个独立的PS-ROIPooling来实现的,所以,这里位置回归部分,其实现方式和上面几乎一样,只是feature map的通道数变成了
4
k
2
4k^2
4k2,而score map的通道数变成了
k
2
k^2
k2,池化操作的过程上面完全一样,最后得到一个4维的向量,进行Bounding box regression
2.5 模型结构
R-FCN模型的总体结构:
- Stage1:特征提取共享卷积层 + RPN
- Stage2:两个子PsROI子网络
- PS feature map -> PS score map -> 分类向量
- PS feature map -> PS score map -> 回归向量
三、总结
3.1 解决的问题
问题:
- 基于区域的目标检测器,如Faster RCNN,存在Roi-wise子网络结构,时间开销大
- 之前的目标检测器没有实现全卷积的操作,没有实现计算共享,时间开销大
- 直接对Roi-wise应用全卷积的设计,会引发图像分类的变换不变性与目标检测的变换可变性之间的矛盾,而使得精度降低
解决
- 提出了Ps ROI pooling结构,取代了Roi-wise子网络结构
- R-FCN实现了全卷积,并且Ps ROI pooling结构不含任何参数,时间开销小
- Position-sensitive score map增加了变换可变性
关于最后一点,详情可见:https://zhuanlan.zhihu.com/p/32903856
3.2 主要创新点
- 提出了Position-sensitive score map
- 使用了全卷积的网络,实现了完全的计算共享