【目标检测经典算法】R-CNN、Fast R-CNN和Faster R-CNN详解系列一:R-CNN图文详解

学习视频:Faster-RCNN理论合集

概念辨析

目标检测中,proposals和anchors都是用于生成候选区域的概念,但它们在实现上有些许不同。

  • Anchors(锚框): 锚框是在图像中预定义的一组框,它们通常以不同的尺度和长宽比分布在图像的每个位置。锚框的目的是覆盖图像中可能出现的各种目标形状和尺寸,以便在后续的目标检测过程中进行检测。在训练过程中,通过将锚框与真实目标框进行匹配,以确定哪些锚框包含目标,以及它们与目标的重叠程度。

  • Proposals(提议): 提议是通过一种方法(如Selective Search或者Region Proposal Network)生成的候选区域。与锚框不同,提议的位置和形状不是预定义的,而是根据图像内容和算法生成的。提议通常是通过对图像进行分割、合并、过滤或其他技术来生成一组可能包含目标的区域。

总的来说,锚框是一种固定的形状和尺寸的预定义区域,而提议是根据图像内容和算法生成的候选区域。在训练和测试目标检测模型时,通常会使用锚框或提议来生成候选区域,并进一步对这些区域进行分类和定位。

R-CNN

R-CNN(Region-based Convolutional Neural Network) 是一种经典的目标检测方法,它将目标检测任务分解为两个子任务:1)生成候选区域(region proposals);2)对每个候选区域进行分类和位置回归。

  • backbone : VGG16

在这里插入图片描述

R-CNN框架

R-CNN的模型框架总体分为四个部分:

  1. Region proposal: Selective Search算法生成大量候选框
  2. Feacure extraction :神经网络对候选框进行特征提取
  3. Classification: 分类器对候选框内的物体进行分类
  4. Bounding-box regression: 回归器对候选框位置进行修正

在这里插入图片描述

1. 候选框生成(使用SS算法

在这里插入图片描述

什么是目标检测中的Selective Search (SS) 算法

Selective Search是一种常用于目标检测候选区域生成方法。在传统的目标检测算法中,需要对图像中的每个可能包含目标的区域进行检测,但这样做会导致计算量巨大,尤其是在图像具有大量区域时。Selective Search的目标是通过一种高效的方式生成一组可能包含目标的区域,以减少后续目标检测算法的计算复杂度。

Selective Search算法的核心思想是通过结合不同的图像特征(如颜色、纹理、大小等)来生成候选区域。具体来说,算法首先将图像分割成多个小的超像素,然后利用这些超像素之间的相似性进行合并,生成不同大小和形状的候选区域。最终,Selective Search输出一组具有多样性和丰富性的候选区域,其中有些可能包含真实目标。

这些生成的候选区域可以用作后续目标检测算法的输入,从而减少了需要检测的区域数量,提高了检测的效率。Selective Search已经成为了目标检测领域中的经典方法之一,在许多基于深度学习的目标检测算法中仍然被广泛使用。

2. 使用神经网络提取每个候选框的特征

在这里插入图片描述

由2000个候选框输入神经网络中,获取4096维的特征,变为2000*4096的矩阵。特征矩阵如下所示。

在这里插入图片描述

3. 分类器判定候选框所选物体的类别

在这里插入图片描述
在这里插入图片描述

NMS非极大值抑制

计算两个候选框(A和B)的IOU值,如果A和B两个候选框所计算的IOU计算结果都大于设定的阈值,则说明这两个候选框代表的是同一个物体,就把预测概率更低的候选框(B)删除,保留A,如此循环操作。

目的:剔除掉多个重复的候选框,只保留每个类中得分最高的候选框。

在这里插入图片描述

具体流程如下所示。

在这里插入图片描述

4. 回归器修正候选框位置

在这里插入图片描述
因为候选框位置可能不够精确,所以使用回归器对NMS剩下的候选框进行进一步的位置修正,从而得到每个类别得分最高的bounding box。

5. RCNN缺陷

  1. 计算量大:R-CNN需要在图像中生成大量的候选区域,并对每个候选区域进行CNN特征提取和分类,这导致了大量的重复计算,计算量巨大,使得其在实时性上受限。

  2. 训练和推理速度慢:由于R-CNN需要对每个候选区域进行独立的CNN前向传播,因此其训练和推理速度较慢,尤其是在大规模数据集上。

  3. 空间利用率低:R-CNN在生成候选区域时会产生大量的重叠区域,而且需要每个候选区域都要进行独立的CNN特征提取,这导致了空间利用率较低,计算资源的浪费。

  4. 不可端到端训练:R-CNN是一种多阶段的目标检测方法,需要分别训练生成候选区域的模块和分类位置回归的模块,这种多阶段的训练过程不利于端到端的优化。

  5. 感兴趣区域池化(RoI Pooling)的固定大小:R-CNN中的RoI Pooling操作将不同尺寸的候选区域映射到相同大小的特征图上,这会造成信息损失,尤其是对于较小的目标。

6. 改进

详见下篇:
目标检测经典算法】R-CNN、Fast R-CNN和Faster R-CNN详解系列二:Fast R-CNN图文详解


http://www.niftyadmin.cn/n/5433751.html

相关文章

我是继续学习编程,还是学数控?

今日话题,继续学习编程,还是学数控?综合来说肯定是软件的待遇和工作环境都要好些。 当然这行有一定的技术门槛,所谓会者不难,难者不会。要入门需要一定的天赋或者说时间,当然 兴趣是最好的老师,…

opencv编解码base64字符串

cpp-base64代码地址&#xff1a; https://github.com/ReneNyffenegger/cpp-base64 下载仓库&#xff0c;并将base64.h&#xff0c;Base64.cpp 加入代码中&#xff0c; 将Mat对象编码为base64字符串 Mat img imread("xxx.png"); std::vector<uchar> buf; cv::…

uniapp——第2篇:编写vue语法

前提&#xff0c;建议先学会前端几大基础&#xff1a;HTML、CSS、JS、Ajax&#xff0c;还有一定要会Vue!&#xff08;Vue2\Vue3&#xff09;都要会&#xff01;&#xff01;&#xff01;不然不好懂 一、去哪写&#xff1f; 就在【pages】的你的人一个页面文件夹里的【.vue】文…

【正则表达式】正则表达式里使用变量

码 const shuai No My Name Is ShuaiGe.match(new RegExp(shuai, gi)); //↑↑↑↑↑↑↑↑ //等同于 //↓↓↓↓↓↓↓↓ /No/gi.test(My Name Is ShuaiGe)用作领域 搜索的字符动态改变&#xff0c;例如↓模糊搜索例&#xff1a; 一个文本宽&#xff0c;输入文本模糊搜索用…

踏上机器学习的征程:探索基础概念与学习模式

摘要: 机器学习是当今科技领域最具前沿和应用价值的技术之一,它正在改变我们对数据的理解和利用方式。本文将引导读者深入了解机器学习的基本概念,包括监督学习、无监督学习和半监督学习等,并通过生动的例子解释这些概念,帮助读者迈出学习机器学习的第一步。 导言: 随着…

提高安全投资回报:威胁建模和OPEN FAIR™风险分析

对大多数人和企业来说&#xff0c;安全意味着一种成本。但重要的是如何获得适合的量&#xff0c;而不是越多越好。然而&#xff0c;你如何决定什么时候可以有足够的安全性&#xff0c;以及你如何获得它&#xff1f;则完全是另一回事。 该篇文章是由The Open Group安全论坛主办&…

测试开发 - 面经 - 得物青训营

面前准备&#xff1a; 自我介绍 省略具体技术栈&#xff0c;侧重数据筛选部分以及数据可视化 实习经历简单表述 反问环节 对于测试开发的岗位认知还有些模糊&#xff0c;想问下这个岗位工作中的具体内容&#xff0c;以及常用的技术或者工具 想请教下对于测试开发岗未来的…

鲸鱼优化算法双馈风电机组一次调频三机九节点虚拟惯量下垂控制DFIG matlab/simulink

以频率偏差变化最小为优化目标&#xff0c;采用鲸鱼算法优化风电机组一次调频控制系数。 采用matlab.m文件与simulink.slx文件联合。 系统频率优化结果 鲸鱼算法 时域模型