【目标检测】fast RCNN算法

【目标检测】fast RCNN算法详解
fast RCNN
1.RCNN流程
简单来说,RCNN使用以下四步实现目标检测:

  • 在图像中确定约1000-2000个候选框
  • 对于每个候选框内图像块,使用深度网络提取特征
  • 对候选框中提取出的特征,使用分类器判别是否属于一个特定类
  • 对于属于某一特征的候选框,用回归器进一步调整其位置

2.fast RCNN改进
fast RCNN方法解决了RCNN方法三个问题

  • 问题一:测试时速度慢
    RCNN一张图像内候选框之间大量重叠,提取特征操作冗余。fast RCNN将整张图像归一化后直接送入深度网络。在邻接时,才加入候选框信息,在末尾的少数几层处理每个候选框。
  • 问题二:训练时速度慢
    候选框大量重叠,提取特征操作冗余。fast RCNN在训练时先将一张图像送入网络,紧接着送入从这副图像上提取出的候选区域。这些候选区域的前几层特征不需要再重复计算。
  • 问题三:训练所需空间大
    RCNN中独立的分类器和回归器需要大量特征作为训练样本。fast RCNN把类别判断和位置精调统一用深度网络实现,不再需要额外存储。

在R-CNN网络结构模型中,由于卷积神经网络的全连接层对于输入的图像尺寸有限制,所以所有候选区域的图像都必须经过变形转换后才能交由卷积神经网络进行特征提取,但是无论采用剪切还是变形方式,都无法完整保留原始图像信息,提出空间金字塔池化层(Spatial Pyramid Pooling Layer)有效地解决了传统卷积神经网络对输入图像的尺寸的限制。

3.SPP-net,空间金字塔池化层
SPP-net解决候选区域缩放后的畸变问题和提取特征时的重复计算问题。
SPP-net的思路是由于原图与经过卷积层后得到的特征图在空间位置上存在一定的对应关系,所以只需对整张图像进行一次卷积层特征提取,然后将候选区域在原图的位置映射到卷积层的特征图上得到该候选区域的特征,最后将得到每个候选区域的卷积层特征输入到全连接层进行后续操作。
SPP-net网络结构:
在这里插入图片描述
输入任意尺度的待测图像,用CNN提取得到卷积层特征。将不同大小候选区域的坐标投影到特征图上得到对应的窗口,将每个窗口均匀划分为44,22,1*1的块,然后对每个块使用Max-Pooling下采样,无论窗口大小如何,经过SPP层之后都得到了一个固定长度的特征向量,将这个特征向量作为全连接层的输入进行后续操作。保证只对图像提取一次卷积层特征,同时全连接层的输入维度固定。
SPP-net的目标检测整体流程:

  1. 输入一副待检测图像
  2. 提取候选区域:利用ss算法在输入图像中提取出约2000个最有可能包含目标检测的候选框
  3. 候选区域尺度缩放:候选区域长宽中较短边长度进行统一,即min(w, h)=s, s∈{480, 576, 688, 864, 1200},s取值标准是使得统一后的候选区域尺寸与224*224最接近
  4. 特征提取:利用SPP-net网络结构提取特征
  5. 分类与回归:根据所提特征,利用SVM进行分类,用边框回归器微调候选框的位置。

4.fast RCNN
为了解决R-CNN训练速度慢、训练所需空间大的问题,提出了fast R-CNN,吸收了SPP-net的特点,使得目标检测的速度大幅提升。
fast R-CNN的网络结构如下图所示:
在这里插入图片描述
fast R-CNN的输入由两部分组成:一是待处理的整张图像,二是候选区域。fast R-CNN处理的第一步是对图像进行多次卷积核池化处理来获取卷积特征图。由于存在多个候选区域,系统会有一个甄别,判断出感兴趣区域(Region of Interest,RoI)RoI池化层是SPP层的特殊情况,可以从特征图中提取一个固定长的的特征向量。每个特征向量都会被输送到全连接层序列中,这个全连接分支成两个同级输出层。其中一层的功能是进行分类,对目标关于K个对象类输出每一个RoI的概率分布,也就是产生softmax概率估计;另一层是为了输出K个对象中每一个类的四个实数值(bbox regression)。每4个值编码K个类中的每个类的精确边界框(bounding box)位置。整个结构是使用多任务损失的端到端训练。

fast R-CNN的主要创新点有:将最后一个卷积层的SSP层改为RoI池化层,另外提出了多任务损失函数(Multi-task Loss),将边框回归直接加入到CNN网络中训练,同时包含了候选区域分配损失和位置损失。

RoI池化层:
实际上是SPP层的简化版,SPP层对每个候选区域使用了不同大小的金字塔映射,即SPP层采用多个尺度的池化层进行池化操作,而RoI池化层只需将不同尺度的特征图下采样到一个固定的尺度。例如对于VGG16网络conv5_3有512特征图,虽然输入图像的尺寸是任意的,但是通过RoI池化层后,均会产生一个77512维度的特征向量作为全连接层的输入,即RoI池化层只采用的单一尺度进行池化。
在这里插入图片描述
RoI池化层有两个主要作用:第一个:将图像中的RoI区域定位到卷积特征中的对应位置;第二个:将这个对应后的卷积特征区域通过池化操作固定到特定长度的特征,然后将该特征送入全连接层。

多任务损失函数(Multi-task Loss):
fast R-CNN统一了类别输出任务和候选框回归任务,有两个损失函数:分类损失和回归损失。分类采用softmax代替SVM进行分类,共输出N(类别)+1(背景)类。softmax由于引入了类间竞争,所以分类效果优于SVM,SVM在R-CNN中用于二分类。回归损失输出的是4*N(类别)

SVD对全连接层进行分解:
由于一张图像约产生2000个RoI,将近一半多的时间用在全连接层计算,为了提高运算速度,可以用SVD(奇异值分解)对全连接层进行变换来提高运算速度。一个大的矩阵可以近似分解为三个小矩阵的乘积,分解后的矩阵的元素数目远小于原始矩阵的元素数目,从而达到减少计算量的目的。通过对全连接层的权值矩阵进行SVD分解,使得处理一张图像的速度明显提升。
为了减少繁琐的目标检测步骤,fast R-CNN直接使用softmax替代SVM分类,同时利用多任务损失函数边框回归也加入到了网络中,这样整个的训练过程只包含提取候选区域和CNN训练两个阶段。此外,fast R-CNN在网络微调的过程中,不仅微调全连接层,对部分卷积层也进行了微调,得到了更好的检测结果。

fast R-CNN目标检测主要流程如下:

  1. 输入一张待检测图像
  2. 提取候选区域:利用SS算法在输入图像中提取出候选区域,并把这些候选区域按照空间位置关系映射到最后的卷积特征层
  3. 区域归一化:对于卷积特征层上的每个候选区域进行RoI池化操作,得到固定维度的特征
  4. 分类与回归:将提取到的特征输入全连接层,然后用softmax进行分类,对候选区域的位置进行回归。

fast R-CNN尽管速度和精度上都有了很大的提升,但仍然未能实现端到端的目标检测,比如候选区域的获得不能同步进行,速度上还有提升空间。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值