Ross Girshick的团队从R-CNN到Fast RCNN,再到Faster R-CNN,历经三代,终于将目标检测的全过程(候选区域生成,特征提取,分类,位置精修)整合到了一个深度网路框架之内进行。

在之前的回答中,有介绍Fast RCNN在Region Proposal时比较耗费时间。这一点在Faster R-CNN得到了改进,Faster R-CNN可以简单地看做「区域生成网路(Regio Proosal Network,RPN) + Fast RCNN」,把图像一整张地输入到卷积网路中进行特征提取,利用提取出来用RPN代替Fast RCNN中的Selective Search方法,之后在作分类和回归操作,真正里提供了「一条龙式服务」

Faster R-CNN著重解决了这个系统中的两个问题:

1)如何设计区域生成网路RPN,快速生成候选区域;

3)如何让区域生成网路RPN和Fast RCNN网路共享参数。

接下来简单介绍一下Faster R-CNN的Region Proposal Networks的设计和训练思想:

RPN网路的作用就是输入一张图像,输出一批矩形候选区域,类似于之前FastRCNN中的Selective Search。其中anchor是RPN网路的核心,它的作用是给出一个基准窗大小,设置不同的倍数和长宽比得到不同大小的窗。在论文是实现代码中k=9,即9种尺度的anchor,基准窗大小选为16,设置了0.5、1、2三种比例得到的,如下图所示。

在训练的RPN网路时,采取如下三个规则判定anchor内是否有目标:

1)假如某anchor与任一目标区域的IOU最大,则该anchor判定为有目标;2)假如某anchor与任一目标区域的IOU>0.7,则判定为有目标;

3)假如某anchor与任一目标区域的IOU<0.3,则判定为背景。

最后,作者采用交替训练(Alternating training)阶段卷积层特征共享对网路进行联合训练:

1)训练RPN网路,网路参数是用ImageNet预训练模型载入的,微调后用于区域建议任务;

2)训练Fast-RCNN网路,利用1)RPN网路生成的候选区域作为输入,由Fast R-CNN训练一个单独的检测网路,这个检测网路同样是由ImageNet预训练的模型载入的。截止到目前,两个网路还没有进行共享参数,只是各自单独训练训练;

3)我们用检测网路初始化RPN训练,此时固定共享的卷积层,也就是网路公共部分的参数,只更新RPN独有层的参数,现在两个网路已经共享卷积层;

4)保持共享的卷积层固定,用RPN的结果再次微调Fast-RCNN网路,固定网路公共部分的参数,只更新Fast-RCNN独有部分的参数。两个网路共享相同的卷积层,构成一个统一的网路。


Faster R-CNN的由来

R-CNN是Ross Girshick等在2013年底提出的(Rich feature hierarchies for accurate object detection and semantic segmentation,arXiv:1311.2524),R-CNN是Regions with CNN features(CNN特征区域)的缩写。R-CNN使用选择性搜索(Selective Search)演算法建议可能的感兴趣区域(regions of interest),并应用卷积神经网路来分类和调整这些区域。

2015年初,在R-CNN的基础上,Ross Girshick进一步提出了Fast R-CNN(Fast R-CNN arXiv:1504.08083),采用了一些创新技术显著提升了RNN的训练和测试速度,以及精确度

2015年夏,Shaoqing Ren、Kaiming He、Ross Girshick、Jian Sun提出了Faster R-CNN(Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks,arXiv:1506.01497),和R-CNN、Fast R-CNN的区别在于,Faster R-CNN是完全可微的。

Faster R-CNN架构

下图为Faster R-CNN的架构。

从下往上,我们可以看到,Faster R-CNN模型的输入是一张图像。使用卷积层提取图像特征,得到特征映射。然后将特征映射传给区域建议网路(Region Proposal Network),由区域建议网路计算出可能的感兴趣区域(建议),结合建议与特征映射,所得传给分类器——其中使用了感兴趣区域池化(RoI Pooling)技术进行优化。

区域建议网路的架构如下图。

上图中蓝色的为带锚包围盒(anchor box),简单来说就是各种可能的不同形状和大小的包围盒。

至于感兴趣区域池化,简单来说,这是一种优化技术,通过共享耗时长久的运算提升模型速度。

最后,下图直观地展现了Fast R-CNN的效果。

Faster R-CNN(本回答中的图片均取自Faster R-CNN 论文,arXiv:1506.01497)


推荐阅读:
相关文章