R-FCN: Object Detection via Region-based Fully Convolutional Networks
R-FCN 是一个two stage的目标检测方法,先使用RPN(region proposal network)提取proposal信息,这部分和faster RCNN是同样的结构。在对物体进行具体分类和定位时,R-FCN在通过提出的位置敏感分数图(position sensitive score maps)来增强网络对于位置信息的表达能力,提高检测效果。具体做法如下图:
先对卷积得到的feature map进行卷积得到通道数为K*K*(c+1)的特征,其中K*K是对ROI进行pooling时的cell的个数,作者在论文中举的例子K=3;C是检测的类别数同时,加1是引入背景作为一类。作者为了增强征位置信息,将通道数为K*K*(c+1)的特征分为每类对应k*k个位置信息。此时通道以c+1作为间隔,可以形成k*k个特征位置信息,将这K*K这个位置信息依次作为ROI各个cell。
之后通过把RPN得到的ROI分为k x k 个小块,此时得到的通道数为c+1,大小为K*K,沿着通道的方向进行average pooling。得到的结果在通过softmax得到具体分类结果。
上面的处理过程中,引入位置敏感得分图对最终的分类具有巨大影响,不同位置的特征信息相加即可得到特征图对于该类别的响应,即可对该特征进行相应的分类。
对于位置框回归阶段仿照分类的思路,将特征通道数组合为4 x k x k 的形式,其中每个小块的位置都对应了相应的通道对其进行位置回归的特征提取。最后将不同小块位置的四个回归值融合之后即可得到位置回归的响应,进行后续的位置回归工作。
最好,我们看看作者在论文中对这种位置敏感分数图的分析:
当RoI包涵物体属于某类别时,损失函数即会使得该RoIs不同区域块所对应的响应通道相应位置的特征响应尽可能的大(图中白色区域),下图展示了这一过程,可以明显的看出不同位置的特征图都只对目标相应位置的区域有明显的响应,其特征提取能力是对位置敏感的。
对于任意一个RoI,计算它的Softmax损失,和当其不属于背景时的回归损失。因为每个RoI都被指定属于某一个GT box或者属于背景,即先让GT box选择与其IoU最大的那个RoI,再对剩余RoI选择与GT box的IoU>0.5的进行匹配,而剩下的RoI全部为背景类别。当RoI有了label后loss就可以计算出来。这里唯一不同的就是为了减少计算量,作者将所有RoIs的loss值都计算出来后,对其进行排序,并只对最大的128个损失值对应的RoIs进行反向传播操作,其它的则忽略。并且训练策略也是采用的Faster R-CNN中的4-step alternating training进行训练。在测试的时候,为了减少RoIs的数量,作者在RPN提取阶段就将RPN提取的大约2W个proposals进行过滤:
1.去除超过图像边界的proposals
2.使用基于类别概率且阈值IoU=0.3的NMS过滤
3.按照类别概率选择top-N个proposals
在测试的时候,一般只剩下300个RoIs。并且在R-FCN的输出300个预测框之后,仍然要对其使用NMS去除冗余的预测框。