本文主要用于介绍rbg大神于2014年提出的RCNN网络,该网络架构也奠定了神经网络在目标检测领域应用的基础。本笔记主要为方便初学者快速入门,以及自我回顾。
论文链接:https://arxiv.org/pdf/1311.2524.pdf
github主页:https://github.com/rbgirshick/rcnn
rbg大神个人主页:http://www.rossgirshick.info/#girshick2014rcnn
基本目录如下:
- 摘要
- 核心思想
- 总结
------------------第一菇 - 摘要------------------
1.1 论文摘要
在PASCAL VOC数据集上做测验的目标检测算法,在过去几年(2013年前)突破并不大。其中最优的方法是一种复杂的集成系统,将高纬度的图像特征与低纬度的图像特征相结合。在本论文中,我们提出了一种新的可量化的检测算法,将过去在PASCAL VOC数据集上取得的最优map(mean average precision)53.3%提升了超过30%。论文提出的方法包含2个关键点,首先就是用CNN网络在建议区域(region proposals)来定位和分割物体,其次当标注数据稀缺的时候,我们用其他任务中监督训练出来的网络来达到预训练的目的,实验表明该做法能提高网络表现。因为论文结合了CNN和region proposals,该方法又被称为R-CNN:提出的区域由CNN提取特征。
------------------第二菇 - 核心思想------------------
2.1 论文的突破点
本篇论文是极具历史意义的,因为其奠基了后续一系列的目标检测/语义分割神经网络模型,因此有必要优先强调一下本论文的突破点是什么。
在2010-2012年期间,目标检测算法采用的依旧是传统图像特征因子算法(有兴趣的同学可以了解一下,不过现在基本都不用了),但其效果一直停滞不前。而在2012年ImageNet上大放异彩的CNN网络也只适用于分类任务,并不直接适用于目标检测。
因此,目标检测领域一个新的研究方向就此诞生,即能多大程度的运用CNN的图片分类结果来帮助提高目标检测算法的精度?
本文就在图片分类和目标检测之间,首次架起了桥梁!并且首次用实验表明CNN网络能极大的提高目标检测算法的精度!
能否架起桥梁,有2个核心关键点:
1)如何用深度神经网络来实现定位问题(localizing objects)
2)如何用有限的数据来训练神经网络
第1个关键点,传统上有2个解决办法:
1)将定位问题转化为回归问题。实验证明效果并不好。
2)滑动窗口检测。实验证明精准定位效果不佳(往往由于窗口过大造成)
因此,本文没有采用上述2种方法,而是采用区域建议(region proposals,简单理解就是用某种方法,选取潜在的备选框),将这些框输入到CNN网络中提取特征,再利用SVM进行分类~
第2个关键点,本文的实验表明,利用其他任务的大数据(比如图片分类),提前预训练CNN网络,再用目标检测数据集进行微调,能极大的提升模型表现~
有了以上的初步认识后,我们再来细品一下具体的模型架构~
2.2 R-CNN模型架构
话不多说,我们先上一张,论文自己给出的模型架构图。
上面的流程图可以说是非常的清晰了,总共由3部分组成,
1)提出候选区域(Region proposals):在过去已经由很多种提取候选区域的办法啦,主要用的还是传统的图像算法,本文所采用的就是一种名为“selective search”的方法。这里简单提一下该方法,其核心思想就是先利用图的图像分割方法将图分割成很多很多小块,然后使用贪心策略,计算每个相邻区域的相似度,每次合并最相似的两块,直到最终只剩下一块完整的图片(而这其中产生的图像块就是我们要的候选区域),具体想了解更多的同学可以参考这篇博客。
2)特征提取(Feature Extraction):这里比较关键的一个点就是上一个流程出来的候选区域的尺度都是不一致的,但是输入到CNN网络中的图片必须要求是227*227的,因此中间过渡转换的这一步预处理也是至关重要的。本文采用了一种最简单的,即无视候选区域的大小尺度,一起“缩放/打包(wrap)”进一个固定大小的框(作者这里提到了在候选区域外面还扩大了一个16宽的边框,理论上是为了考虑更多的背景信息)。这里有很多处理的细节论文没有具体展开说,有兴趣的同学可以看一下源码(有点久远,真的有空的再去看吧哈哈)
3)利用SVM进行分类:这就没什么好展开说的了,值得补充的一点就是作者还训练了一个回归器用于对第一阶段提出的区域进行调整,从而得到更精确的位置。
至此整个模型架构算是理清了,我们再来看看训练细节~
2.3 训练细节
如上述所说,训练也分为3部分,
1)有监督的预训练(Supervised pre-training):主要是预训练CNN的参数,利用图像分类的大量标注数据。
2)特定领域的微调(Domain-specific fine-tuning):把需要做目标检测的图像的相关特定领域进行微调训练。
3)目标分类训练(Object category classifiers):这里存在一个正负样本不平衡的问题。。。毕竟背景的区域肯定是要比目标区域大的。。。这里论文也没有具体展开来说,有兴趣的同学可以再深入研究。
至此,整篇论文的核心已经说清楚了,具体的实验过程及结果本文不作展开,结论就是大幅提升目标检测的效果😄~
------------------第三菇 - 总结------------------
3.1 总结
到这里,整篇论文的核心思想已经说清楚了。本论文主要是提出了一种新的思路,将CNN运用于目标检测算法,并实验证明其可行性,为后续发展奠定了基础。
简单总结一下本文就是先罗列了一下该论文的摘要,再具体介绍了一下本文作者的思路,也简单表述了一下,自己对R-CNN网络的理解。希望大家读完本文后能进一步加深对该论文的理解。有说的不对的地方也请大家指出,多多交流,大家一起进步~😁