【深度学习】R-CNN、Fast-RCNN以及Faster—RCNN三剑客
1、R-CNN
RCNN是第一个可以真正工业级应用的解决方案。可以说改变了目标检测领域的主要研究思路,紧随其后的系列文章:Fast-RCNN ,Faster-RCNN都沿袭R-CNN的思路。
关键点:
- (1)使用训练窗口2000个,并使用cnn对其特征提取;
- (2)样本缺乏时,使用大量辅助样本预先训练,再用自己的样本进行微调。
整体框架大致为:
- 采用selective search生成建议窗口约2000个(每张图片),由于建议窗口尺寸不一,所以通过拉伸形成统一的输入尺寸227*227
- 运用CNN进行特征提取,把统一尺寸的建议图像输入CNN,提取CNN特征
- 对建议窗口图像进行分类(SVM),用SVM对CNN输出特征分类
- Bound ing Box回归,用bb回归值校正原来的建议窗口,生成预测窗口坐标、
缺点:
- 1、 训练步骤繁琐(微调网络+训练SVM+训练bbox);
- 2、 训练、测试均速度慢 ;
- 3、 训练占空间
2、Fast-RCNN
关键点:
- (1)测试时速度慢:RCNN把一张图拆解为2000个建议框,每个建议框拉伸形成的图像都会单独通过CNN提取特征,实际上建议框大量重叠,特征值之间完全可以共享,造成了运算能力的浪费。Fast-RCNN 将整张图像归一化后直接送入CNN,在最后的卷积层输出的feature map上,加入建议框的信息,使得在此之前的CNN运算得以共享。
- (2)训练速度慢:R-CNN在训练时,是在采用SVM分类之前,把通过CNN提取的特征存储在硬盘上。这种方法在硬盘上大量的读写影响训练速度,Fast-RCNN在训练时,只需要将一张图像送入网络,每张图像一次性提取CNN特征和建议区域,训练数据在GPU内存里直接进入Loss层,这样候选区域的前几层特征不需要在重复计算且不需要把大量数据存储在硬盘上。
- (3)训练所需空间大:R-CNN中独立的SVM分类器和回归器需要大量特征作为训练样本,需要大量的硬盘空间,同时把类别判断和位置回归统一用深度网络实现,不再需要额外存储成本
- (4)将第五层的普通池化层替换为RoI池化层,图片然后经过5层卷积操作后,得到一张特征图(feature maps)开始得到的坐标信息通过一定的映射关系转换为对应特征图的坐标,截取对应的候选区域,经过RoI层后提取到固定长度的特征向量,送入全连接层。
- (5)在R-CNN中的流程是先提proposal,然后CNN提取特征,之后用SVM分类器,最后再做bbox regression进行候选框的微调;Fast R-CNN则是将候选框目标分类与bbox regression并列放入全连接层,形成一个multi-task模型。
框架结构
相比R-CNN最大的区别,在于RoI池化层和全连接层中目标分类与检测框回归微调的统一。
3、Faster-RCNN
作者提出了 Region Proposal Network(RPN),RPN 网络共享输入图像的卷积特征,能够快速生成候选区域,计算代价小。生成的候选区送入Fast R-CNN网络进行 detection。因此 Faster R-CNN 也可以理解为 RPN + Fast R-CNN(文中作者称 RPN 具有 attention 的意味,即告诉网络关注的区域在哪里)。
通过上述介绍可以知道,Faster R-CNN与Fast R-CNN最大的区别就是提出了一个叫RPN(Region Proposal Networks)的网络,专门用来推荐候选区域的,RPN可以理解为一种全卷积网络,该网络可以进行end-to-end的训练,最终目的是为了推荐候选区域。