9.1.2 简单介绍两阶段模型R-CNN、SPPNet、Fast R-CNN、Faster R-CNN的发展过程
R-CNN(2014年)
R-CNN(Regional CNN)是第一个将卷积神经网络用于目标检测的深度学习模型。
它的主要思路是:
- 首先使用无监督的选择性搜索(SelectiveSearch,SS)方法将输入图像中具有相似颜色直方图特征的区域进行递归合并,产生约2000个候选区域;
- 然后从输入图像中截取这些候选区域对应的图像,将其裁剪缩放至合适的尺寸,并相继送入一个CNN 特征提取网络进行高层次的特征提取,
- 提取出的特征再被送入一个SVM分类器进行物体分类,以及一个线性回归器进行边界框位置和大小的修正;
- 最后对检测结果进行非极大值抑制(Non-Maximum Suppressin,NMS)操作,得到最终的检测结果。
SPPNet(2014)
SPPNet中的SPP是指空间金字塔池化(Spatial Pyramid Pooling)。
- R-CNN问题1:由于R-CNN中的SVM分类器和线性回归器只接受固定长度的特征输入,这就要求之前由CNN提取的特征必须是固定维度的,进一步要求输入的图像也是固定尺寸的,这也是上文提到的R-CNN中要对候选区域图像进行裁剪或缩放至固定尺寸的原因。
然而,这种操作会破坏截取图像的长宽比,并损失一些信息。
-
SPPNet解决1:针对这一缺陷,SPPNet提出了空间金字塔池化层,该层被放置于CNN的末端,它可以接受任意尺寸的特征图作为输入,然后通过3个窗口大小可变但窗口个数固定的池化层,最终输出具有固定尺寸的池化特征。
-
R-CNN问题2:此外,R-CNN还存在另一个问题:它产生的大量候选区域往往是互相有重叠的,这表明特征提取过程存在大量的重复计算,进而导致了R-CNN的速度瓶颈。
-
SPPNet解决2:为解决该问题,SPPNet在R-CNN的基础上,只进行一次全图的特征提取,而后每个候选区域对应的特征直接从全图特征中进行截取,然后送入空间金字塔池化层进行尺寸的统一。
SPPNet的其他流程与R-CNN基本一致。
Fast R-CNN(2015)
Fast R-CNN的思想与SPPNet几乎一致,
-
主要区别在于Fast R-CNN使用感兴趣区域池化(Region-of-Interest Pooling),SPPNet使用空间金字塔池化。
-
同时,Fast R-CNN在得到了固定长度的特征后,使用全连接网络代替了之前的SVM分类器和线性回归器来进行物体分类和检测框修正,这样可以与前面用于提取特征的CNN构成一个整体,大大增强了检测任务的一体性,提高了计算效率。
Faster R-CNN(2015)
-
Faster R-CNN在Fast R-CNN的基础上,将其最耗时的**候选区域提取步骤(即选择性搜索)用一个区域候选网络(Region Proposal Network,RPN)**进行了替代,并且这个RPN和用于检测的Fast R-CNN网络共享特征提取部分的权值。
-
在Faster R-CNN中,一幅输入图像先由RPN提取候选区域,再取出各个候选区域对应的特征图,送入
Fast R-CNN(独立于RPN的后半部分)进行物体分类和位置回归。
-
FasterR-CNN第一次做到了实时的物体检测,具有里程碑意义。
注:插图是根据书中的文字自己绘制的,如有错误,还请您悉心指正,谢谢!
如要转载,请注明出处,谢谢!
参考文献:
《百面深度学习》 诸葛越 江云胜主编
出版社:人民邮电出版社(北京)
ISBN:978-7-115-53097-4
2020年7月第1版(2020年7月北京第二次印刷)
推荐阅读:
//好用小工具↓
// 深度学习经典网络↓