当前位置: 代码迷 >> 综合 >> TensorFlow 07——ch05-理解R-CNN、Fast R-CNN、Faster R-CNN
  详细解决方案

TensorFlow 07——ch05-理解R-CNN、Fast R-CNN、Faster R-CNN

热度:88   发布时间:2023-09-26 21:32:18.0

目录

    • R-CNN
    • Fast R-CNN
    • Faster R-CNN
    • R-CNN、Fast R-CNN 、 Faster R-CNN 的对比

R-CNN

全称:Region-CNN
出处:《Rich feature hierarchies for accurate object detection and semantic segmentation》

它可以说是第一个成功地将深度学习应用到目标检测上的算法。

传统的目标检测方法大多以图像识别为基础。一般可以在图片上使用穷举法选出所高物体可能出现的区域框,对这些区域框提取特征并使用图像识别方法分类,得到所有分类成功的区域后,通过非极大值抑制(Non-maximum suppression)输出结果。

R-CNN遵循传统目标检测的思路,同样采用提取框、对每个框提取特征、图像分类、非极大值抑制四个步骤进行目标检测。只不过在提取特征这一步,将传统的特征(如SIFT、HOG特征等)换成了深度卷积网络提取的特征。

R-CNN的整体框架如图所示:
TensorFlow 07——ch05-理解R-CNN、Fast R-CNN、Faster R-CNN
R-CNN的训练可以分成下面四步:

  • 在数据集上训练CNN。R-CNN论文中使用的CNN网络是AlexNet,数据集为ImageNet。
  • 在目标检测的数据集上,对训练好的CNN做微调。
  • 用Selective Search搜索候选区域,统一使用微调后的CNN对这些区域提取特征,并将提取到的特征存储起来。
  • 使用存储起来的特征,训练SVM分类器。

缺点:计算量大,耗时

Fast R-CNN

出处:《Fast R-CNN》

SPPNet 是改进的重点,英文全称是 Spatial Pyramid Pooling Convolutional Networks,中文是“空间金字塔油化卷积网络” 。 作用是将CNN的输入从固定尺寸改进为任意尺寸。

在SPPNet中,实际上特征提取和区域分类两个步骤还是分离的。只是使用 ROI 池化化层提取了每个区域的特征3在对这些区域分类时,还是使用传统的SVM作为分类器。
FastR-CNN相比SPPNet更进一步,不再使用SVM作为分类器,而是使用神经网络进行分类,这样就可以同时训练特征提取网络和分类网络,从而取得比SPPNet更高的准确度。

Fast R-CNN的网络结构如图所示
TensorFlow 07——ch05-理解R-CNN、Fast R-CNN、Faster R-CNN

R-CNN和SPPNet对比:

  • 不同点:R-CNN要对每个区域计算卷积,而SPPNet只需要计算一次,因此SPPNet的效率比R-CNN高得多。

  • 相同点:它们都遵循着提取候选框、提取特征、分类几个步骤。在提取特征后,官们都使用了SVM进行分类。

Faster R-CNN

出处:《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》

Fast R-CNN看似很完美了,但在Fast R-CNN中还存在着一个有点尴尬的问题:需要先使用Selective Search提取框,这个方法比较慢,有时检测一张图片,大部分时间不是花在计算神经网络分类上,而是花在Selective Search提取框上!
在Fast R-CNN升级版Faster R-CNN中,用RPN网络(Region Proposal Network)取代了Selective Search,不仅速度得到大大提高,而且还获得了更加精确的结果。

RPN 网络的结构如图所示:

TensorFlow 07——ch05-理解R-CNN、Fast R-CNN、Faster R-CNN
“anchor”指的是“框”,面积分别 1282、2562、5122,每种面积又分为 3 种长竟比,分别是 2:1、1:2、1:1
TensorFlow 07——ch05-理解R-CNN、Fast R-CNN、Faster R-CNN

anchor与网络输出的对应关系:TensorFlow 07——ch05-理解R-CNN、Fast R-CNN、Faster R-CNN
Faster R-CNN 使用RPN生成候选框后,剩下的网络结构和 Fast R-CNN 中的结构一模一样。 在训练过程中,需要训练两个网络,一个是 RPN 网络, 一个是在得到框之后使用的分类网络 。 通常的做法是交替训练,即在一个 batch 内,先训练 RPN 网络一次,再训练分类网络一次。

TensorFlow 07——ch05-理解R-CNN、Fast R-CNN、Faster R-CNN

R-CNN、Fast R-CNN 、 Faster R-CNN 的对比

TensorFlow 07——ch05-理解R-CNN、Fast R-CNN、Faster R-CNN

  相关解决方案