首页 > 编程知识 正文

rcnn和fasterrcnn的区别,fasterrcnn网络参数

时间:2023-05-04 19:15:27 阅读:51262 作者:1880

行人检测 概述:

行人检测有两个方向:传统算法和基于深度学习的算法。 传统算法的典型代表有Haar特征Adaboost算法、Hog特征Svm算法、DPM算法。 基于深度学习的行人检测典型代表有RCNN系列、YOLO系列、SSD系列。 其中RCNN系列算法是目前应用最广泛的基于深度学习的行人检测算法。

在说行人检测之前必须说目标检测。 行人检测是目标检测下的分支,其检测的标签是行人。 我理解的目标检测是准确地找到给定图像中对象的位置并显示对象的类别。 目标检测要解决的问题是目标在哪里以及目标状态的问题。 但是,这个问题并不容易解决。 姿势不合理,对象出现的区域不确定,更何况对象也可以是多个类别。 基于传统算法的目标检测有Haar特征Adaboost算法、Hog特征Svm算法和DPM算法,但由于它们效率低或效果差,目前尚未广泛使用。 常用的主要有RCNN、spp- net、fast- rcnn、faster- rcnn; YOLO和YOLO9000等YOLO系列; 此外还有固态硬盘、ResNet等。

上图为单目标检测和多目标检测的例子,单目标比较容易实现,但多目标容易被忽略。 目前,较新的mask rcnn能够实现目标检测和语义分割,比FCN有更好的进步。

RCNN原理

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

接下来,我们将详细介绍每个过程是如何实现的,以及其中的一些途径。

)1)候选区域选择)区域方案Region Proposal是一种传统的区域提取方法,是一种基于启发式的区域提取方法,利用ss研究现有小区域,将最有可能的两个区域进行合并,将图像合并为一个区域然后,可以认为基于提议提取的目标图像被标准化,并且通过滑动窗口作为CNN的标准输入来获得潜在的目标图像。 可以理解,在RCNN中,Candidate选项一般可以为1k~2k个,将图像划分为1k~2k个网格后,对网格进行特征提取和卷积操作由RCNN算法的分支决定。 然后,根据关于提案提取的目标图像,标准化为CNN的标准输入。

)2)CNN特征提取)标准卷积神经网络根据输入进行卷积和池化等操作,得到固定维输出。 也就是说,在特征提取之后,将特征图卷积并聚合,得到输出。

)3)分类与边界回归)实际上,有两个子步骤,一个是对上一步骤的输出向量进行分类(分类器需要根据特征进行训练)。 第二,通过边界回归框回归(简称bbox )获得准确的区域信息。 其目的是准确定位和整合完成分类的目标,避免多重检查。 分类器的选择包括支持向量机SVM、Softmax等; 边界回归包括bbox回归、多任务损失函数框回归等。

RNN的缺点:

在RCNN刚刚发明的2014年,RCNN在目标检测和行人检测方面取得了很大的成果,但出现了效率低下、耗时长等一系列问题,还是RCNN的运用没有得到广泛的应用,最大的问题有三个,就是提前将对应多个候选区域的图像进行识别此行为占用大量磁盘空间。 在传统的CNN中,输入的map根据需要是固定大小,但归一化过程中图像失真导致图像大小发生变化,CNN的特征提取存在致命缺点; 每个区域专业版都必须进入CNN网络计算。 并且,会多次重复相同的特征提取,计算的浪费会变大。 之后,随之而来的Fast RCNN进入了人们的视线。

Fast RCNN

Fast RCNN与以前的RCNN相比,提高了三个方面:

1 .测试时的速度加快了。 RNN算法与图像中的多个候选帧重叠,导致特征提取操作中的大量冗馀。 Fast RCNN很好地解决了这个问题。

2 .训练时的速度加快了。

3 .训练所需空间很大。 在RNN中,分类器和回归器作为训练样本需要很多特征。 Fast RCNN不需要额外的存储。

Fast RCNN工作流程:

1 .选择性搜索1.selectivesearch(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区域提取固定的维度特征表示,然后确保每个区域的后续分类可以正常执行。

ROI pooling层详解

 

ROI是指的在SS完成后得到的“候选框”在特征图上的映射;

在Faster RCNN中,候选框是经过RPN产生的,然后再把各个“候选框”映射到特征图上,得到ROIs特征图:在Fast RCNN中,它位于RoI Pooling之前,在Faster RCNN中,它是与RPN共享那个特征图,通常我们常常称之为“share_conv”;

RoI Pooling层将每个候选区域分为m * n个块。 针对每个块执行最大池操作,使得特征映射上不同大小的候选区域被变换为均匀大小的特征向量。 然后送入下一层。 举例来说,某个 ROI区域坐标为( x1, y1, x2, y2), 那么输入尺寸大小为( y2− y1)∗( x2− x1); 如果合并输出的大小为池高乘池宽,即pooledheight∗pooledwidth,则每个网格的大小都是为

 

虽然ROI Pooling可以看做是针对ROI区域的特征图像的池化操作,但有个问题。那就是因为不是固定大小的输入,会导致每次池化网格的大小都必须手动计算。这也将是在以后会得到改进的地方之一 。

因此先用Selective Search等proposal提取算法得到了候选框坐标, 然后输入到卷积神经网络中。其目的是预测每个候选框中包含的对象。但是在以上步骤中神经网络只是起到了在ROI区域的分类作用,并没有起到对整个图片进行分类。

在RCNN中,在进行卷积操作之前一般都是先将图片分割与形变到固定尺寸,这也正是RCNN的劣势之处。不得不说,这对检测来说是十分不应该出现的,这会让图像产生形变,或者图像变得过小,使一些特征产生了损失,继而对之后的特征选择产生巨大影响。

Fast RCNN与RCNN不同。其不同之处如下:Fast RCNN在数据的输入上并不对其有什么限制,而实现这一没有限制的关键所在正是ROI Pooling层。该层的作用是可以在任何大小的特征映射上为每个输入ROI区域提取固定的维度特征表示,然后确保每个区域的后续分类可以正常执行。经过Fast RCNN的作者的努力,回归层完成了,起作用为输出为4*K维数组t,表示属于 K- class时应该进行全景变换的参数,该参数进行了优化,针对每个ROI区域坐标的便宜都需要进行优化。tk=(tkx,tky,tkw,tkh),0≤k≤K是多类检测的类别序号。假设对于类别k∗,地面真值ground truth坐标在图中被标注:

 t*=(tx*,ty*,tw*,th*) 真实的坐标值

t=(tx,ty,tw,th)   预测的坐标值

损失函数

这里中的x即−,即对应坐标的差距。函数是(-1,1)之间的二次函数,其他区域是线性函数。此处的回归操作与RCNN中的回归操作相同。但是有一点,其仅针对特定候选框(即Ground Truth的IoU大于特定阈值)。

纵使Fast RCNN与RCNN相比提升了不少,但是Fast RCNN仍旧有许多不足之处:因为Fast RCNN使用的是selective search选择性搜索,这一过程十分耗费时间,其进行候选区域提取所花费的时间约为2~3秒,而提取特征分类仅需要0.32秒[19],这会造成无法满足实时应用需求,而且因为使用selective search来预先提取候选区域,Fast RCNN并没有实现真正意义上的端到端训练模式,因此在众人的努力下,Faster RCNN应运而生。

Faster RCNN

从RCNN到Fast RCNN,再到Faster RCNN,一直都有效率上的提升 ,而对于Faster RCNN来讲,与RCNN和Fast RCNN最大的区别就是,目标检测所需要的四个步骤,即候选区域生成,特征提取,分类器分类,回归器回归,这四步全都交给深度神经网络来做,并且全部运行在 GPU上,这大大提高了操作的效率。

Faster RCNN可以说是由两个模块组成的:区域生成网络RPN候选框提取模块+Fast RCNN检测模块.

RPN是全卷积神经网络,其内部与普通卷积神经网络不同之处在于是将CNN中的全连接层变成卷积层。Faster RCNN是基于RPN提取的proposal检测并识别proposal中的目标。其具体流程大致可概括为:1.输入图像。2.通过区域生成网络RPN生成候选区域。3.提取特征。4.分类器分类。5.回归器回归并进行位置调整。

区域代网络RPN的核心思想是直接使用卷积神经网络CNN生成候选区域region proposal区域提议。本节主要来对RPN的具体流程进行讲解。RPN使用的方法实际上是在最后一个卷积层上滑动窗口。

RPN的具体操作流程如下:使用小型网络在最后的卷积特征地图feature map上执行滑动扫描,每当滑动网络完全连接到特征地图上的 n* n窗口,然后将其映射到低维矢量,最后将这个低维矢量发送到两个完全连接的层。即 bbox回归层( reg)和 box分类层( cls)。 滑动窗口处理确保reg层和cls层与conv5-3的整个特征空间相关联。在其中,reg层的作用是预测proposal的anchor对应的proposal的(x,y,w,h),cls层的作用是判断该proposal是前景(object)还是背景(non-object)。

在候选区域(锚点anchor)部分,该特征可以被视为大小为51 * 39的256通道图像:三种面积{128*128,256*256,512*512}×三种比例{1:1,1:2,2:1}。这些候选窗口称为anchors即锚点。下图示出51*39个anchor中心,以及9种anchor示例。 

在RPN中,reg与cls层分别是进行窗口分类与位置精修的[21]。分类层(cls_score)输出9个锚点属于每个位置的前景和背景的概率。在每个位置的bbox_pred输出中,9个锚点对应点应该是泛化的(x,y,w,h)。对于每个位置来说,分类层从256维特征输出属于前景和背景的概率。而回归图层则是从256维特征中输出4个平移和缩放参数。

 

RPN网络有两个同级输出层,cls_score和 bbox_prdict层,都是全连接层。

其具体操作为输出k+1维数组p,表示属于k类和背景的概率。对每个RoI(Region of Interesting)输出离散型概率分布

p=(p0,p1,p2...pk)                       

通常,p由来自k + 1级完全连接层的softmax激活函数计算。

bbox_prdict层的作用是调整候选区域的位置并输出边界框的回归位移。

其具体操作为输出一个4 * K维数组t,它表示当它们属于k-class时应该被泛化的参数。

tk =(tkx,tky,tkw ,tkh)                   

k表示类别索引,它是指相对于对象建议尺度的常量平移,它是指对数空间中对象建议的高度和宽度。loss_cls层评估分类损失函数,由真实分类的概率决定:

loss_bbox评估检测框定位的损失函数。比较真实分类对应的预测平移缩放参数和tu=(tux,tuy,tuw ,tuh)和真实平移缩放参数之间的差异:

其中,smooth L1损失函数为:

smooth L1损失函数曲线如下图2.11所示,与L2损失函数相比,它对异常值不敏感。 可以控制梯度的大小,这方便在训练过程中不易失控。

 

 

 

 

 

 

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。