最近看了原创大神hjimce博客,受益匪浅,为了表示对于码字的原创大神们的尊重,我以后也会将参考链接都放在前面:
hjimce大神的博客:https://blog.csdn.net/hjimce
hjimce大神对Overfeat的解读地址:http://blog.csdn.net/hjimce/article/details/50187881
hjimce大神对Faster R-CNN的解读地址:https://blog.csdn.net/hjimce/article/details/73382553
其他参考链接地址(我也不知道底下这些是不是博主原创,就不写名了):
https://blog.csdn.net/amor_tila/article/details/78809791
https://www.cnblogs.com/gongxijun/p/7097630.html
https://zhuanlan.zhihu.com/p/48169867
(本文主要从R-CNN、fast R-CNN到faster R-CNN中总结,最新的Mask R-CNN 、YOLO和SSD还没有学习,以后会更新。)
R-CNN:https://arxiv.org/pdf/1311.2524v5.pdf
fast R-CNN:https://arxiv.org/pdf/1504.08083.pdf
faster R-CNN:https://arxiv.org/pdf/1506.01497.pdf
----------------------------------------------------------------------我是分割线---------------------------------------------------------------------------------
深度学习在2012年图像分类上有了突破后,自然而然的会演进到其他视觉领域;2013年就发出了目标检测领域奠定基础的论文《Rich feature hierarchies for accurate object detection and semantic segmentation》(R-CNN),将目标检测带入到深度学习领域。
1、概览
从上图中可以看到,从R-CNN到faster R-CNN的演变思想很直观,从R-CNN的三个独立模块,到最后end-to-end的统一模块。
Faster中提出的RPN网络将目标检测中应用深度神经网络进阶到2.0,下面一个更详细的列表中可以看出,在前两代网络中,均使用selective search(SS)的方法,到了Faster才演变为RPN。
使用方法 | 缺点 | 改进 | |
R-CNN (Region-based Convolutional Neural Networks) | 1、SS提取RP; 2、CNN提取特征; 3、SVM分类; 4、BB盒回归。 | 1、 训练步骤繁琐(微调网络+训练SVM+训练bbox); 2、 训练、测试均速度慢 ; 3、 训练占空间 | 1、 从DPM HSC的34.3%直接提升到了66%(mAP); 2、 引入RP+CNN |
Fast R-CNN (Fast Region-based Convolutional Neural Networks) | 1、SS提取RP; 2、CNN提取特征; 3、softmax分类; 4、多任务损失函数边框回归。 | 1、 依旧用SS提取RP(耗时2-3s,特征提取耗时0.32s); 2、 无法满足实时应用,没有真正实现端到端训练测试; 3、 利用了GPU,但是区域建议方法是在CPU上实现的。 | 1、 由66.9%提升到70%; 2、 每张图像耗时约为3s。 |
Faster R-CNN (Fast Region-based Convolutional Neural Networks) | 1、RPN提取RP; 2、CNN提取特征; 3、softmax分类; 4、多任务损失函数边框回归。 | 1、 还是无法达到实时检测目标; 2、 获取region proposal,再对每个proposal分类计算量还是比较大。 | 1、 提高了检测精度和速度; 2、 真正实现端到端的目标检测框架; 3、 生成建议框仅需约10ms |
首先,我们先了解一下什么是selective search。
从上图可以看出SS的大致流程,通过对一张图片从低向上进行层次划分,当我们划出一个大区域时,继续在这个大区域中迭代划分,直到划不出区域为止.并将这个过程中产生的所有的区域记录下来,再通过颜色,纹理,吻合度,大小来将这些细碎的区域进行合并。 从当今技术回头看,感觉没有什么高明,但这种方式不需要设定滑动窗口,滑动格子,可以适应于任何目标的尺寸。
RPN(Region Proposl Network)
通过作者论文里面示意图比较清楚的了解RPN的作用,其实就是对这些feature map中的各个点进行分类,如果属于某一类会回归生成几个anchor boxes,然后在这些划分出来的区域继续进行更精细的分类和精细的回归的计算。
其实RPN的概念跟OverFeat中提出来的差不多(后续深入了解后,会继续补充)
hjimce大神详细的介绍:
现在回头看论文的这一点,大家可能会好奇fast R-CNN的作者为什么不把这一点加入呢?我们看下面这张图:
fast和faster中都是在2015年上提出的,而且都是顶会。两篇文章中都有Ross Girshick这位大神,而且fast是这位大神单独署名的。所以,很有可能微软的科研团队在提出fast R-CNN时,已经在酝酿Faster R-CNN了,所以上面这个困惑我一周多的问题,答案就很简单:
大神们都想到了,只是工作量比较大,把阶段性成果先发出来一部分。(真的是佩服这些研究工作者,边角料的东西都够我毕业好几次了)