本专栏将从论文的角度解读一下CV方向的一些经典神经网络模型及其贡献与意义,以期加深自己的印象,后续可以随时翻看并且学习其中好的tricks。之前我们介绍了R-CNN,接着介绍了基于其改进的SPPNet和Fast R-CNN,这一期介绍集大成者Faster R-CNN,体会其改进之路。
(网图 ↑ ,侵删)
论文相关信息
论文全名为《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》(论文链接),于2016年发表在CVPR上,作者如下:
其中Ross Girshick也是R-CNN、Fast R-CNN的作者,另外三位则是SPPNet的作者,从这里也可以体会Faster R-CNN的改进之路。
论文使用的数据集是PASCAL VOC 2007、2012和MS COCO数据集。Faster R-CNN也在 ILSVRC 和 COCO 2015 的比赛中夺得了多个赛道的第一名。
网络架构
Faster R-CNN可以分成两个模块,第一个模块是生成推荐区域的网络,这里称为RPN(Region Proposal Network),第二个模块是基于推荐区域的 Fast R-CNN 检测器:
放一张更为清晰的流程图(图转自大佬博客,有关RPN清晰的详解也可以看这篇):
tricks
1、RPN是否有效
RPN流程图(仍转自大佬博客):
简单说一下RPN,以上图为例,对于特征图上每一个点(共16×16个),都对应原图中一个方形块,然后将方形块的左上角点或者中心点作为锚点,为每个锚点生成一些预先设置好面积与长宽比的框(这种框文中称为anchor),论文中设定好的初始anchor包含三种面积(128×128、256×256、512×512),每种面积又包含三种长宽比(1:1、1:2、2:1)。这里其实就有个问题,因为相当于这种anchor先验框先给定了大小后续再调整,带有主观性,所以得具体看你的问题里的目标多大,人工设置对应的长宽比和面积,算是个小小的缺点。那么生成了anchor然后干什么呢?
首先要判断anchor到底是前景(覆盖目标)还是背景(没覆盖到目标)。论文中是这么描述的:如果一个anchor与ground truth的IoU在0.7以上,那这个anchor就算前景(positive),在某些情况下如果没有0.7以上的就选IoU最高的;如果IoU在0.3以下,那么这个anchor就算背景(negative)。作者在进行RPN这部分的网络训练的时候,在一张图中,随机抽取了128个前景anchor与128个背景anchor,而没有使用与ground truth的IoU介于0.3和0.7之间的anchor。
另一个就是为前景anchor进行第一次修正,毕竟前面的anchor还是滑动窗口穷举出来的框。因为RPN可以看成一个独立的全卷积网络,也有损失函数,也需要训练,所以Faster R-CNN的精髓我个人认为就是这里通过卷积神经网络的学习来代替传统图像算法产生region proposal。
训练RPN的损失函数也是Fast R-CNN中使用的:
论文中的实验:
说明用一个网络去学习产生region proposal,来代替SS算法或者EB算法是可行的。
2、RPN 与 Fast R-CNN 共享卷积特征是否有效
因为 RPN 和 Fast R-CNN后半部分很像,都有一部分是CNN,且作用都是提取cls层分类和reg层回归所需特征,所以作者们想让这两都有的CNN部分共享参数,这样就只需要训练一个CNN就够了:
用的是迭代的方法,先训练 RPN ,然后用得到的推荐区域去训练 Fast R-CNN ,之后再使用 Fast R-CNN 中训练好的 CNN 去初始化 RPN 的 CNN ,再次训练 RPN (这里不更新 CNN 部分,只更新 RPN 特有的层),最后再次训练 Fast R-CNN (这里同样不更新 CNN 部分,仅更新 Fast R-CNN 特有的层)。
论文中的实验:
总结
R-CNN第一个引入CNN来做目标检测任务,取得了不错的结果;SPPNet去除了输入图像尺寸固定的限制,使得可以只对整张图提取一次特征,然后将基于原图得到的候选框映射到特征图上来,代替了对2000个候选框提取特征的方式;Fast R-CNN提出多任务训练将SVM分类和BBox回归整合进全连接层,实现了端到端的方式。
Faster R-CNN则是将产生区域推荐这一之前都是独立的步骤也整合进了网络,利用RPN来代替SS产生推荐区域(其实也就是通过深度学习来代替传统图像算法产生候选框,厉害,也不厉害),真正意义上把目标检测整个流程都融进了一个神经网络之中,并且 RPN 和 Fast R-CNN 检测器共享特征,大大提高了运行速度,正如论文题目,使得实时目标检测成为了可能。