锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

R-CNN、Fast RCNN和Faster RCNN的详细讲解

时间:2023-06-17 11:37:00 绿色矩形连接器

R-CNN、Fast RCNN和Faster RCNN的详细讲解


文章目录

  • R-CNN、Fast RCNN和Faster RCNN的详细讲解
  • 前言
  • R-CNN
    • R-CNN算法流程
    • R-CNN框架
      • 1. 生成候选区域
      • 2. 使用深度网络提取每个候选区域的特征。
      • 3. 特征送到每一类SVM分类器,判定类别
      • 4.用过回归器惊喜修正候选框的位置
      • R-CNN存在的问题:
  • Fast R-CNN
    • Fast R-CNN算法流程
    • Fast R-CNN框架
      • R-CNN和Fast R-CNN生成候选框的区别
      • ROI Pooling工作原理
      • 如何根据和预测的回归参数获得预测边界框?
  • Faster R-CNN
    • Faster R-CNN算法流程
    • Faster R-CNN框架
      • RPN网络结构
      • 2k目标概率值和4k如何影响边界框的位置?
      • RPN损失计算
      • Faster R-CNN的训练
  • R-CNN、Fast R-CNN和Faster R-CNN的框架比较


前言

根据原论文对本文R-CNN、Fast RCNN和Faster RCNN网络进行了详细讲解。


R-CNN

R-CNN可以说是利用深度学习进行目标测试的开山之作。Ross Girshick多次在PASCAL VOC在目标测试比赛中,折桂带领团队在2010年获得终身成就奖。

R-CNN算法流程

R-CNN算法流程可以分为4步:

  • 图像生成1K~4K候选区(使用)Selective Search方法)
  • 使用深度网络提取每个候选区域的特征
  • 特征送到每一类分类器,判断是否属于这一类
  • 用回归器惊喜修正候选框的位置

R-CNN框架

在这里插入图片描述


1. 生成候选区域

利用Selective Search算法通过图像分割获得一些原始区域,然后使用一些合并策略合并这些区域,获得一个包含可能需要的物体的层次化区域结构。

如下图所示,通过SS该算法可以获得一系列矩形框,它可能包含我们要检测的目标。


2. 对每个候选区域,使用深度网络提取特征。

通过SS算法可以在另一张图片中生成大约2000个候选区域,并将候选区域发送到另一张图片中CNN网络先进行resize将2000候选区域缩放到227x227pixel,然后将候选区域输入事先训练好的候选区域AlexNet CNN获取4096维网络的特征是2000×4096维矩阵


3. 特征送到每一类SVM分类器,确定类别

将2000×4096维特征与20个SVM权值矩阵4096×20相乘,获得2000×20维矩阵意味着每个建议框都是目标类别的得分。分别对上述20000×20维矩阵中的每一列,即对每一类进行非极大抑制,消除重叠建议框,得到该列中得分最高的建议框。

如图所示,前面是2000×4096维特征向量表示通过候选框的每行CNN由于有2000个候选区域,网络获得的向量有2000行。SVM权值矩阵,每列对应一个类别的权值向量,因为有20个类别,所以有20个列,最后乘以2万×20概率矩阵。


下一步是使用非极大抑制来消除重叠建议框



非极大抑制消除重叠建议框流程:

  • 寻找得分最高的目标
  • 计算其他目标和目标IoU值
  • 删除所有IoU目标值大于给定阀值
  • 在剩下的边界框中重复前三步,直到所有边界框完成

4.用过回归器惊喜修正候选框的位置

对NMS处理后进一步筛选剩余建议框。然后用20个回归器回归上述20个类别中剩余的建议框,最终获得每个类别修正后得分最高的bounding boX。

如图所示,黄框P表示建议框Region Proposal,绿窗G表示实际框架Ground Truth,红窗G表示Region Proposal最小二乘法可以解决线性回归问题。


R-CNN存在的问题:

  • 检测速度慢

测试大约53张图片s (CPU)。用Selective Search算法提取候选框需要2秒左右,图像中的候选框之间有很多重叠,提取特征操作冗余。

  • 训练速度慢

过程极其复杂

  • 训练空间大

对于SVM和bbox回归训练需要从每个图像中的每个目标候选框中提取特征并写入磁盘。对于非常深的网络,如VGG16,从VOCO7训练集上的5k图像上提取的特征需要数百个GB存储空间。


Fast R-CNN

Fast R-CNN是作者Ross Girshick继R-CNN后来又一力作。同样使用vGG16作为网络的backbone,与R-CNN与训练时间快9倍相比,测试推理时间快213倍,精度从62%提高到66%(然后Pascal voc数据集)。

Fast R-CNN算法流程

Fast R-CNN算法过程可分为三个步骤

  • 一张图片生成1K~2K个候选区域(使用Selective Search方法)
  • 将图像输入网络获取相应的特征图。SS将算法生成的候选区域投影到特征图上以获得相应的特征矩阵
  • 通过每个特征矩阵ROI pooling层错放到7 X 7大小的特征图,然后通过一系列全连接层平整特征图,得到预测结果

Fast R-CNN框架


R-CNN和Fast R-CNN生成候选框的区别

如图为R-CNN在生成候选框的过程中,首先缩放每个候选区域,然后输入网络获取特征,因此通过SS算法获得2000个候选框,那么就要进行2000正向传播,这就造成了冗余,因为候选区域存在大量重叠的部分。

下图为Fast R-CNN生成候选框的过程是直接输入整个图像CNN根据候选区域与特征图对应的映射关系,直接在特征图中获取特征矩阵,避免重复区域部分的计算。

ROI Pooling将来,候选框将统一缩放到统一尺寸


ROI Pooling工作原理

假设下图左侧图为候选区对应的特征矩阵,将特征矩阵分为7X7 49等份,然后对分区进行最大池化采样操作,得到图右所示的7X7特征矩阵。

在Fast R-CNN的最后并联了两个全连接层,第一个全连接层用于目标概率的预测,第二个全连接层用于边界框回归参数的预测

对目标概率预测分类器的描述

目标概率预测分类器输出N 1类概率,其中N为检测目标的种类,1
为背景,以PASCAL VOC为例,它有20个类别,则会输出21个概率类别,第一个概率为候选框为背景的概率,全连接中有21个节点。

对边界框回归器的说明

边界框回归器会输出N+1个类别候选边界框回归参数(d_x,d_y,d_w,d_h),因为每个类别对应四个候选边界框回归参数,所以全连接层有(N+1)x4个节点。


如何根据和预测的回归参数得到预测边界框?

根据如下公式根据回归参数计算得到边界框的横纵坐标和宽度和高度,就可以将黄色框调整到红色框的位置,红色框就是我们最后的预测边界框。

Fast R-CNN损失计算

因为Fast R-CNN进行了目标概率的预测和回归参数的预测,所以Fast R-CNN损失包括分类损失和边界框回归损失

其中分类损失为交叉熵损失:


边界框损失:


Faster R-CNN

Faster R-CNN是作者Ross Girshick继Fast R-CNN后的又一力作。同样使用vGG16作为网络的backbone,推理速度在GPU上达到5fps(包括候选区域的生成),准确率也有进一步的提升。在2015年的ILSVRC以及cOCo竞赛中获得多个项目的第一名。

Faster R-CNN算法流程

Faster R-CNN算法流程可分为3个步骤

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

Faster R-CNN框架

其实Faster R-CNN就是在FastR-CNN中加入了RPN,如图

所以,这里我们主要说明RPN。


RPN网络结构

在特征图上使用滑动窗口在特征涂上进行滑动,每滑动到一个位置就生成一个向量,在向量的基础上通过两个全连接层输出2k个目标概率值和4k个边界框回归参数


2k个目标概率值和4k个边界框回归参数是如何影响边界框位置?

在2k个scores中两两一组,其中第一个值为背景的概率,第二个值为不是背景的概率,只判断目前anchor中是背景还是前景。

将4k个coordinates4各参数为一组,其中前两个为anchor的中心坐标偏移量,后两个为anchor的相对宽度和高度

Faster R-CNN中共使用三种尺度和三种比例的anchor,每个位置在原图上都对应3x3=9个anchor:

对于一张1000x600x3的图像,大约有60x40x9(20k)个anchor,忽略跨越边界的anchor以后,剩下约6k个anchor。对于RPN生成的候选框之间存在大量重叠,基于候选框的cls得分,采用非极大值抑制,IoU设为0.7,这样每张图片只剩2k个候选框。


RPN损失计算

RPN损失同样包含分类损失和边界框回归损失

其中分类损失如下:

边界框回归损失如下:

RPN边界框损失和Fast R-CNN边界框损失相同


Faster R-CNN的训练

原论文中采用分别训练RPN以及Fast R-CNN的方法:

  • 利用ImageNet预训练分类模型初始化前置卷积网络层参数,并开始单独训练RPN网络参数;
  • 固定RPN网络独有的卷积层以及全连接层参数,再利用lmageNet预训练分类模型初始化前置卷积网络参数,并利用RPN网络生成的目标建议框去训练Fast RCNN网络参数。
  • 固定利用Fast RCNN训练好的前置卷积网络层参数,去微调RPN网络独有的卷积层以及全连接层参数。
  • 同样保持固定前置卷积网络层参数,去微调Fast RCNN网络的全连接层参数。最后RPN网络与Fast
    RCNN网络共享前置卷积网络层参数,构成一个统一网络。

R-CNN、Fast R-CNN和Faster R-CNN的框架比较


本文参考:https://blog.csdn.net/qq_37541097?type=blog


如果本文对您有帮助的话请点赞支持哦!
您的支持是对我最大的鼓励!!!

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章