其他分享
首页 > 其他分享> > R-CNN、Fast R-CNN、Faster R-CNN

R-CNN、Fast R-CNN、Faster R-CNN

作者:互联网

行人检测 概述:
行人检测主要有两种:传统检测算法和基于深度学习检测算法。传统检测算法的典型代表有Haar算法+Adaboost算法,Hog特征+SVM算法,DPM算法。而基于深度学习的行人检测典型代表有RCNN系列,SDD系列,YOLO系列
在这里插入图片描述
上图是单目标检测和多目标检测的例子,单目标相对容易实现一些,但是多目标很容易出现遗漏,现在比较新的mask rcnn可以实现目标检测和语义分割,相比FCN来说取得了更好的进步。

RCNN原理

论文:Rich feature hierarchies for accurate object detection and semantic segmentation

RCNN(Region with CNN feature)是卷积神经网络应用于目标检测问题的一个里程碑的飞跃。CNN具有良好的特征提取和分类性能,采用RegionProposal方法实现目标检测问题。算法可以分为三步(1)候选区域选择。(2)CNN特征提取。(3)分类与边界回归。

RCNN算法流程:

  1. 一张图像生成1k~2k个候选区域(使用Selective Search)
  2. 对每个候选区域,使用深度网络提取特征
  3. 特征送入每一类的SVM分类器,判别是否属于该类
  4. 使用回归器精细修正候选框位置

(1)候选区域选择:区域建议Region Proposal是一种传统的区域提取方法,基于启发式的区域提取方法,用的方法是ss(selective research),查看现有的小区域,合并两个最有可能的区域,重复此步骤,直到图像合并为一个区域,最后输出候选区域。然后将根据建议提取的目标图像标准化,作为CNN的标准输入可以看作窗口通过滑动获得潜在的目标图像,在RCNN中一般Candidate选项为1k-2k个即可,即可理解为将图片划分成1k~2k个网格,之后再对网格进行特征提取或卷积操作,这根据RCNN类算法下的分支来决定。然后基于就建议提取的目标图像将其标准化为CNN的标准输入。

(2)CNN特征提取:标准卷积神经网络根据输入执行诸如卷积或池化的操作以获得固定维度输出。也就是说,在特征提取之后,特征映射被卷积和汇集以获得输出。比如有VGG,ZF等。

(3)分类与边界回归:实际上有两个子步骤,一个是对前一步的输出向量进行分类(分类器需要根据特征进行训练); 第二种是通过边界回归框回归(缩写为bbox)获得精确的区域信息。其目的是准确定位和合并完成分类的预期目标,并避免多重检测。在分类器的选择中有支持向量机SVM,Softmax等等(文中选择SVM,附录给出了解释原因,但是目前多数还是以Softmax);边界回归有bbox回归,多任务损失函数边框回归等 (文中使用带正则化的交叉熵损失函数)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

RCNN的缺点:

在RCNN刚刚被发明出来的2014年,RCNN在目标检测与行人检测上取得了巨大的成就,然而效率低下,花费时间长等一系列的问题的产生,还是导致了RCNN的运用并没有取得大范围的应用,其最大的问题有三:需要事先提取多个候选区域对应的图像。这一行为会占用大量的磁盘空间;针对传统的CNN来说,输入的map需要时固定尺寸的,而归一化过程中对图片产生的形变会导致图片大小改变,这对CNN的特征提取有致命的坏处;每个region proposal都需要进入CNN网络计算。进而会导致过多次的重复的相同的特征提取,这一举动会导致大大的计算浪费。在这之后,随之而来的Fast RCNN逐渐进入了人们的眼帘。

改进RCNN:

Fast RCNN

Fast RCNN较之前的RCNN相比,有四个方面得到了提升:

  1. 测试时的速度得到了提升。RCNN算法与图像内的大量候选帧重叠,导致提取特征操作中的大量冗余。而Fast RCNN则很好的解决了这一问题(先提取输入图像的特征向量,候选区域直接映射减少了重复提取相同的特征)。
  2. 训练时的速度得到了提升。
  3. 训练所需的空间大。RCNN中分类器和回归器需要大量特征作为训练样本。而Fast RCNN则不再需要额外储存。
  4. 实现了单阶段多任务损失函数,即端到端的训练。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ROI pooling详解

Fast RCNN的工作流程:

1.选择性搜索Selective Search(SS)在图片中获得大约2k个候选框。

在第一步中所使用到的候选区域生成方法与RCNN无异,使用的方法都是Selective Search(SS)。以此方式来生成2k个候选框。其基本思路如下所述:使用过分割方法将图像分成小区域。在此之后,观察现有的区域。之后以最高概率合并这两个区域。重复此步骤,直到所有图像合并为一个区域位置。注意,在此处的合并规则与RCNN是相同的,优先合并以下四种区域: ==颜色(颜色直方图)相近的; 纹理(梯度直方图)==相近的; 合并后总面积小的。最后,所有已经存在的区域都被输出,并生成候选区域。

2.使用卷积网络提取图片特征。类似于RCNN,在获取特征映射之后,需要卷积神经网络来进行卷积操作。 在此处Fast RCNN使用的卷积神经网络为普通的fc7,但是有所改动,也有使用VGG16的神经网络。 前五个阶段是conv + relu + pooling的基本形式。

3.在第二步进行的卷积操作过后可以得到feature map,根据之前RoI框选择出对应的区域(可以理解为将feature map映射回原图像), 在最后一次卷积之前,使用 RoI池层来统一相同的比例(这里利用的是单层ssp)。

在RCNN中,在进行卷积操作之前一般都是先将图片分割与形变到固定尺寸,这也正是RCNN的劣势之处。不得不说,这对检测来说是十分不应该出现的,这会让图像产生形变,或者图像变得过小,使一些特征产生了损失,继而对之后的特征选择产生巨大影响。Fast RCNN与RCNN不同。其不同之处如下:Fast RCNN在数据的输入上并不对其有什么限制,而实现这一没有限制的关键所在正是ROI Pooling层。该层的作用是可以在任何大小的特征映射上为每个输入ROI区域提取固定的维度特征表示,然后确保每个区域的后续分类可以正常执行。

在这里插入图片描述

Faster R-CNN (RPN+Fast R-CNN)

Faster RCNN算法流程可分为3个步骤

  1. 将图像输入网络得到相应的特征图
  2. 使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵
  3. 将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图战平通过一些列全连接层得到预测结果

原文链接:https://blog.csdn.net/gentelyang/article/details/80469553

标签:Faster,卷积,Fast,区域,图像,CNN,RCNN
来源: https://blog.csdn.net/frighting_ing/article/details/121218787