论文地址:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
本文是基于Fast R-CNN的改进
Fast R-CNN是使用selective search方法计算Region Proposal(RoI),然后在conv feature map上提取RoI,再使用RoI pooling layer提取到RoI的feature,在送到全连接层进行分类和位置检测,selective search非常消耗时间,所以本文提出了一种使用CNN来进行Region Proposal,成为RPN(Region Proposal Network)
RPN
整体网络结构如上图所示,RPN全部使用全卷积层,在conv feature map上使用滑窗(sliding window)然后根据先前确定的anchor使用n*n(这篇文章中n=3)卷积提取特征,然后再进行两个1*1的卷积分类层,一个为reg用来计算Region Proposal位置,一个为cls用来确定这个anchor内有没有需要识别的object
因此我们假设有k个anchor,通过一个滑窗使用卷积得到两个分类,一个为2k个的cls(2为是否有需要识别的object),一个为4k(4为Region Proposal位置)
也就是说我们使用RPN得到是使用各种anchor在feature map上sliding后得到最有可能是object的RoI(Region Proposal),然后把这些RoI(Region Proposal)放到fast R-CNN中的RoI pooling layer中再进行物体的检测和准确的位置回归,相当于使用CNN代替了之前的selective search得到Region Proposal的方法
Anchor
anchor是在每个sliding window中间的一个使用scale(尺寸放缩)和aspect ratio(宽高比)来进行框选择的区域,在本文中scale=3,aspect ratio=3,因此k=9
多尺度图像
在之前的方法中我们经常看到使用多尺度图像预测,有两种方法,一种是使用image/feature pyramids,如图(a),就是将图像进行多分辨率的缩放,然后再把各分辨率的图像得到feature map,一种是使用多尺度的sliding window,也就是使用不同尺寸的sliding window在future map上得到多尺寸的feature map
本文的多尺度信息放在了anchor上来实现,在之前也讲到anchor有一个参数scale就是可以对于调整anchor的大小
训练流程
由于RPN(上图中从image到proposals)和Fast R-CNN(上图中从image到classifier)是两个网络,我们想要这两个网络来共享feature map之前的卷积层,所以本文使用三种方法(Alternating training、Approximate joint training、Non-approximate joint training)来进行训练测试,最终选择了一种最有效的方法(Alternating training),分为四个步骤:
1、先单独训练RPN,也是先使用ImageNet进行pre-trained,在进行fine-tuning用到region proposal上
2、使用第一步得到的RPN得到的region proposal来单独训练Fast R-CNN,也是先使用ImageNet进行pre-trained
3、使用第二步得到的Fast R-CNN网络来初始化RPN,只对RPN独有的层进行fine-tuning,在这一步我们达到了共享feature map之前的卷积层的目标
4、最后我们根据第三步得到的网络,只对Fast R-CNN独有的层进行fine-tuning