深度学习之目标检测Fast-RCNN模型算法流程详解说明(超详细理论篇)

news/2025/1/12 5:14:41/

1.Fast-RCNN论文背景
2. Fast-RCNN算法流程
3.Fast R-CNN 问题和缺点

这篇以对比RCNN来说明,如果你对RCNN网络没太熟悉,可访问这链接,快速了解,点下面链接

深度学习之目标检测R-CNN模型算法流程详解说明(超详细理论篇)

一、Fast-RCNN论文背景

论文地址https://arxiv.org/abs/1504.08083

  Fast R-CNN 是一篇由Ross Girshick 在 2015 年发表的论文,题为 “Fast R-CNN”。这篇论文旨在解决目标检测领域中的一些问题,特别是传统目标检测方法中存在的速度和准确性之间的矛盾。

  论文摘要:本文提出了一种基于快速区域的卷积网络方法来处理目标检测。快速 R-CNN 建立在以前的工作,有效地分类目标建议使用深卷积网络。与以往的工作相比,快速 R-CNN 采用了一些创新,以提高训练和测试速度,同时也提高了检测的准确性。快速 Fast 训练非常深的 VGG16网络比 R-CNN 快9倍,测试速度快213倍,并在 PASCAL VOC 2012上获得更高的 mAP。与 SPPnet 相比,Fast R-CNN 训练 VGG16的速度快3倍,测试速度快10倍,而且更准确。

二、Fast-RCNN算法流程

1.RCNN算法流程4个步骤:

(1)获取候选区域:对于一张输入的图像,首先使用selective search算法获取2000个左右的候选区域,由于selective search生成的候选区域是大小不一致的区域,而后续的卷积神经网络中的全连接层需要保证固定大小的输入,因此在输入卷积网络之后将其缩放至固定大小的图像;

(2)获取图像特征:将图像输入到卷积神经网络中获取图像特征,这一部分可以采用常用的图像卷积神经网络如VGGNet,AlexNet等。

(3)获取区域类别:在初步获得目标的位置之后,需要获取目标的类别,这一步采用SVM分类器来判断当前区域属于哪个类别。

(4)微调区域位置:尽管候选区域已经初步目标的位置,但是这个区域比较粗糙,因此使用回归器对区域位置进行微调

2.Fast-RCNN算法流程:

在这里插入图片描述

(1)输入图像;
(2)通过深度网络中的卷积层(VGG、Alexnet、Resnet等中的卷积层)对图像进行特征提取,得到图片的特征图;
(3)通过选择性搜索算法得到图像的感兴趣区域(通常取2000个);
(4)对得到的感兴趣区域进行ROI pooling(感兴趣区域池化):即通过坐标投影的方法,在特征图上得到输入图像中的感兴趣区域对应的特征区域,并对该区域进行最大值池化,这样就得到了感兴趣区域的特征,并且统一了特征大小,如图2所示;
(5)对ROI pooling层的输出(及感兴趣区域对应的特征图最大值池化后的特征)作为每个感兴趣区域的特征向量;
(6)将感兴趣区域的特征向量与全连接层相连,并定义了多任务损失函数,分别与softmax分类器和boxbounding回归器相连,分别得到当前感兴趣区域的类别及坐标包围框;
(7)对所有得到的包围框进行非极大值抑制(NMS),得到最终的检测结果。
在这里插入图片描述

3.Fast RCNN相比于RCNN改进

(1)Fast RCNN仍然使用selective search选取2000个建议框,但是这里不是将这么多建议框都输入卷积网络中,而是将原始图片输入卷积网络中得到特征图,再使用建议框对特征图提取特征框。这样做的好处是,原来建议框重合部分非常多,卷积重复计算严重,而这里每个位置都只计算了一次卷积,大大减少了计算量
(2)由于建议框大小不一,得到的特征框需要转化为相同大小,这一步是通过ROI池化层来实现的(ROI表示region of interest即目标)
(3)Fast RCNN里没有SVM分类器和回归器了,分类和预测框的位置大小都是通过卷积神经网络输出的
(4)为了提高计算速度,网络最后使用SVD代替全连接层

4.ROI Pooling(Region of Interest)

  它的输入是特征图,输出则是大小固定的channel x H x W的vector。ROI Pooling是将一个个大小不同的region proposals,映射成大小固定的(W x H)的矩形框。它的作用是根据region proposals的位置坐标在特征图中将相应区域池化为固定尺寸的特征图,以便进行后续的分类和输出回归框操作。它可以加速处理速度。

ROI Pooling有两个输入,一个是图片进入CNN后的特征图,另一个是区域的边框。ROI 的输出是一个region_nums x channels x W x H的向量。

  RoI可以看成是SPP的简化版本,原版SPP是多尺度池化后进行concat组成新特征,而RoI只使用一个尺度,可以将任意维度的特征矩阵缩放成固定维度。论文中的具体做法是,把高和宽都平均分为7*7的小块,然后在每一个小块做max pooling操作,channel维度不变,这样做能使输出维度固定,同时RoI Pooling不是多尺度的池化,梯度回传非常方便,为fine-tune卷积层提供了条件。(SPP Net不能fine-tune卷积层)

在这里插入图片描述

5.SPP Net
  在RCNN中,使用selective search方法在原始图像上生成近2000个Region Proposal,然后resize到固定尺寸,输入到CNN网络中,也就是说一张原始图片要进行2000次前向推理计算,存在着大量的重复冗余计算
  SPP Net的主要贡献在于:共享卷积计算和Spatial Pyramid Pooling(空间金字塔池化),使得每张图片只需要进行一次CNN网络的前向推理计算。在RCNN中需要图像块resize到固定大小,难免会有变形和失真

图中第一行是RCNN的流程,需要将每一个图像块输入到网络中。
第二行是SPP方法,大大减小了计算量。具体实现方法和过程下面将进行详细阐述。

在这里插入图片描述
在这里插入图片描述
训练过程:使用ImageNet预训练的AlexNet模型,输入图片进行前向推理,获得conv5特征,同时使用selective search算法在原图上获得候选框,然后将这些候选框映射在conv5特征图上提取到相应的SPP特征,接着将SPP特征fine-tune全连接层(卷积层不fine-tune),得到全连接层的特征。之后和RCNN一致了,将全连接层的特征输入到SVM分类器中进行分类,用SPP特征训练Bounding Box的LR模型来修正候选框的位置。
推理过程:与训练过程一致,原始图片输入到CNN网络中,经过selective search后映射获取到SPP特征,然后经过全连接层获取到分类特征,输入到SVM分类器中,同时SPP特征输入到Bounding Box的LR模型中

6.多任务损失函数

在这里插入图片描述
其中p是分类器预测的softmax概率分布p=(p0, p1, …),
u对应目标真实类别标签,tu对应边界框回归器预测的对应类别u的回归参数,v对应真实目标框的回归参数。

分类损失函数为Negative Log Likelyhood Loss:(考虑到p使用softmax算出来的,相当于分类是用CrossEntropyLoss算出来的)

在这里插入图片描述

三、Fast R-CNN 问题和缺点

1.训练和推断时间较长:Fast R-CNN 的训练过程相对较慢,需要先训练候选区域生成网络(RPN),然后再训练目标分类网络。此外,在推断阶段,需要对整个图像进行前向传播,计算较为耗时。

2.ROI Pooling 的固定大小:ROI Pooling 操作将不同大小的候选区域映射到固定大小的特征图上。这种固定大小的映射可能导致信息的损失或扭曲,特别是对于较小或较大的目标区域。

3.候选区域生成器的质量:Fast R-CNN 使用候选区域生成网络(RPN)生成候选区域,而候选区域生成器的质量直接影响到目标检测的准确性。如果候选区域生成器无法准确地提供包含目标的候选区域,那么最终的检测结果可能会受到影响。

4.依赖预训练模型:Fast R-CNN 通常需要在预训练的卷积神经网络(CNN)模型上进行微调。这意味着它对于预训练模型的选择和质量有一定的依赖性,如果预训练模型不够准确或不适用于特定的任务,可能会影响 Fast R-CNN 的性能。

5.基于滑动窗口的候选区域生成:Fast R-CNN 仍然采用了基于滑动窗口的候选区域生成方法,这可能导致在大规模图像上的计算量较大。尽管 RPN 可以减少滑动窗口的数量,但仍需要对整个图像进行扫描。

  GPU上Fast RCNN跑网络推理只需要0.32s,但是跑selective search就需要2s,也就是说selective search严重制约了Fast RCNN的速度,成为了主要瓶颈。(后面Faster RCNN提出了RPN网络解决了这个问题)


http://www.ppmy.cn/news/573400.html

相关文章

用英伟达A100跑结算是怎样一种体验?

最近,一则灯塔国禁止英伟达向中国出售高端GPU的新闻引发了众多关注。大家虽然对芯片禁售早有心理预期,但现实比预料中发展的更快。对于GPU,可能大多人还只关注在图形图像与人工智能领域。而随着GPGPU的不断演进,在实时OLAP领域&am…

替代A100,英伟达向中国市场推出性能阉割版A800 GPU芯片

点击上方“视学算法”,选择加"星标"或“置顶” 重磅干货,第一时间送达 作者丨陈萍 来源丨机器之心 编辑丨极市平台 导读 英伟达 A800 已于今年第三季度投入生产,在芯片间数据传输速率等参数上略逊于 A100。 今日,据路…

斯坦福发布大模型Alpaca:A100上训3小时,性能比较GPT-3.5,被挤爆!

源|新智元 Meta的LLaMA模型开源,让文本大模型迎来了Stable Diffustion时刻。今天,斯坦福发布了一个由LLaMA 7B微调的模型Alpaca,训练3小时,性能比肩GPT-3.5。 一觉醒来,斯坦福大模型Alpaca(草泥…

Nvidia GPU 入门教程之 11 数据中心 GPU 的对决:A100 与 V100S

数据中心 GPU 的对决:A100 与 V100S 在这篇博客文章中,我们在 NVIDIA A100 GPU 上针对 TensorFlow 进行了深度学习性能基准测试。我们还将这些 GPU 与它们的顶级前身 Volta 驱动的 NVIDIA V100S 进行了比较。 我们的深度学习服务器配备了 8个 NVIDIA A100 PCIe GPU。我们运…

A100计算能力

A100计算能力 A100 GPU支持新的计算功能8.0。表1比较了NVIDIA GPU架构的不同计算功能的参数。 数据中心GPU NVIDIA Tesla P100 NVIDIA Tesla V100 NVIDIA A100 GPU代号 GP100 GV100 GA100 GPU架构 NVIDIA Pascal NVIDIA Volta NVIDIA安培 计算能力 6.0 7.0 8.0 线/经线 32 32 3…

NVIDIA A100云服务器

NVIDIA A100 NVIDIA A100融合了超540亿个晶体管,是目前全世界最大尺寸的7nm制程处理器,内有6912个CUDA核心、40GB运行内存,以及内存网络带宽达1.6TB/s,张量计算核心内容性能大幅度提高,TF32性能达156万亿次/秒&#x…

【每日算法 数据结构(C++)】—— 03 | 合并两个有序数组(解题思路、流程图、代码片段)

文章目录 01 | 👑 题目描述02 | 🔋 解题思路03 | 🧢 代码片段 An inch of time is an inch of gold, but you can’t buy that inch of time with an inch of gold. An inch of time is an inch of gold, but you cant buy that inch of time…

合宙Air724UG Cat.1模块硬件设计指南--看门狗

概述 Air724UG 内部已经自带了看门狗,4秒进行一次喂狗,如果主芯片异常死机,自带的看门狗15秒左右会硬件复位主芯片。 另外主芯片死机情况下,reset键也可以硬重启。 通常情况下不需要外加硬件看门狗,如果对系统稳定性有…