【目标检测经典算法】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图文详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/455235.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

区间异或和异或区间最大值异或区间最小值 --- 题解 --- (字典树好题)

区间异或和异或区间最大值异或区间最小值 : 题目大意: 思路解析: 题目查询的是区间异或和 ^ 最小值 ^ 最大值,如果我们确定了最小值和最大值,[l,r],假设a[l]是最小值,a[r]是最大值&#xff0c…

【漏洞复现】金和OA viewConTemplate.action RCE漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

【linux中cd指令使用】cd进入与退出路径

【linux中cd指令使用】cd如何进入与退出路径 1、cd进入指定路径,比如我要进入下面这个路径中去运行setup.py文件,如果我不跳转到该路径下直接运行,会报错找不到该文件 cd空格路径,即可跳转到该路径 cd /public2/xxx/tiny-cuda…

【零基础学习05】嵌入式linux驱动中platform与设备树基本实现

大家好,为了进一步提升大家对实验的认识程度,每个控制实验将加入详细控制思路与流程,欢迎交流学习。 今天主要学习一下,基于总线、设备和驱动进行匹配的平台驱动模型,这次将采用设备树的platform设备与驱动的编写方法,目前绝大多数的Linux内核已经支持设备树,这次主要来…

MyBatis-Plus学习记录

目录 MyBatis-Plus快速入门 简介 快速入门 MyBatis-Plus核心功能 基于Mapper接口 CRUD 对比mybatis和mybatis-plus: CRUD方法介绍: 基于Service接口 CRUD 对比Mapper接口CRUD区别: 为什么要加强service层: 使用方式 CR…

LEETCODE3

法一:记忆化递归 int climbStairsRecursive(int n, int* memo) {if (n < 2) {return n;}if (memo[n] > 0) {return memo[n];}memo[n] climbStairsRecursive(n - 1, memo) climbStairsRecursive(n - 2, memo);return memo[n]; }int climbStairs(int n) {int* memo (in…

2061:【例1.2】梯形面积

时间限制: 1000 ms 内存限制: 65536 KB 提交数:201243 通过数: 79671 【题目描述】 在梯形中阴影部分面积是150平方厘米&#xff0c;求梯形面积。 【输入】 (无&#xff09; 【输出】 输出梯形面积&#xff08;保留两位小数&#xff09;。 【输入样例】 &#xff…

redis在微服务领域的贡献,字节跳动只面试两轮

dubbo.registry.addressredis://127.0.0.1:6379 注册上来的数据是这样&#xff0c;类型是hash /dubbo/ s e r v i c e / {service}/ service/{category} 如 /dubbo/com.newboo.sample.api.DemoService/consumers /dubbo/com.newboo.sample.api.DemoService/providers has…

JOSEF约瑟 TQ-100同期继电器 额定直流电压220V 交流电压100V±10V

TQ-100型同期继电器 TQ-100同期继电器 ​ l 应用 本继电器用于双端供电线路的自动重合闸和备用电源自投装置中&#xff0c;以检查线路电压与母线电压的 相位差和幅值差。 2 主要性能 2 1采用进口集成电路和元器件构成&#xff0c;具有原理先进、性能稳定、可靠性高、动作值精…

mysql生成连续的日期

1.代码 例如&#xff1a;生成"2023-03-01"至"2023-03-10"之间的日期 WITH RECURSIVE date_range AS (SELECT "2023-03-01" AS date FROM dualUNION ALLSELECT DATE_ADD(date, INTERVAL 1 DAY) dateFROM date_rangeWHERE DATE_ADD(date, INTER…

windows系统提示msvcp120.dll丢失如何解决,如何找回dll文件?

如果你的电脑出现了关于msvcp120.dll丢失的情况那么大家一定要及时去解决msvcp140.dll丢失的问题&#xff0c;msvcp120.dll丢失可能会导致电脑出现各类的问题&#xff0c;今天就教大家四种关于msvcp120.dll丢失的解决办法&#xff0c;有效的解决msvcp120.dll丢失。 一、msvcp1…

php 对接Bigo海外广告平台收益接口Reporting API

今天对接的是Bigo广告reporting api接口&#xff0c;拉取广告收益回来自己做统计。记录分享给大家 首先是文档地址,进入到BIGO后台就能看到文档地址以及参数&#xff1a; 文档地址&#xff1a;https://www.bigossp.com/guide/sdk/reportingApi/doc?type1 接入这些第三方广告…

kangle一键安装脚本

Kangle一键脚本&#xff0c;是一款可以一键安装KangleEasypanelMySQLPHP集合的Linux脚本。 脚本本身集成&#xff1a;PHP5.38.2、MYSQL5.68.0&#xff0c;支持极速安装和编译安装2种模式&#xff0c;支持CDN专属安装模式。同时也对Easypanel面板进行了大量优化。 脚本特点 ◎…

十六、接口隔离原则、反射、依赖注入

接口隔离原则、反射、特性、依赖注入 接口隔离原则 客户端不应该依赖它不需要的接口&#xff1b;一个类对另一个类的依赖应该建立在最小的接口上。 五种原则当中的i 上一章中的接口&#xff0c;即契约。 契约就是在说两件事&#xff0c;甲方说自己不会多要&#xff0c;乙方会在…

Linux下安装Android Studio及创建桌面快捷方式

下载 官网地址&#xff1a;https://developer.android.com/studio?hlzh-cn点击下载最新版本即可 安装 将下载完成后文件&#xff0c;进行解压&#xff0c;然后进入android-studio-2023.2.1.23-linux/android-studio/bin目录下&#xff0c;启动studio.sh即可为了更加方便的使…

医药大数据案例分析

二、功能 &#xff08;1&#xff09;流量分析 &#xff08;2&#xff09;经营状态分析 &#xff08;3&#xff09;大数据可视化系统 配置tomcat vim /root/.bash_profile添加以下内容&#xff1a; export CATALINA_HOME/opt/tomcat export PATH P A T H : PATH: PATH:CATALIN…

程序员的三重境界:码农,高级码农、程序员!

见字如面&#xff0c;我是军哥&#xff01; 掐指一算&#xff0c;我在 IT 行业摸爬滚打 19 年了&#xff0c;见过的程序员至少大好几千&#xff0c;然后真正能称上程序员不到 10% &#xff0c;绝大部分都是高级码农而已。 今天和你聊聊程序员的三个境界的差异&#xff0c;文章不…

LDA主题模型学习笔记

&#xff08;1&#xff09;LDA的基本介绍&#xff08;wiki&#xff09; LDA是一种典型的词袋模型&#xff0c;即它认为一篇文档是由一组词构成的一个集合&#xff0c;词与词之间没有顺序以及先后的关系。一篇文档可以包含多个主题&#xff0c;文档中每一个词都由其中的一个主题…

鸿蒙Socket通信示例(TCP通信)

前言 DevEco Studio版本&#xff1a;4.0.0.600 参考链接&#xff1a;OpenHarmony Socket 效果 TCPSocket 1、bind绑定本地IP地址 private bindTcpSocket() {let localAddress resolveIP(wifi.getIpInfo().ipAddress)console.info("111111111 localAddress: " …

特殊类设计以及C++中的类型转换

1. 请设计一个类&#xff0c;不能被拷贝 拷贝只会放生在两个场景中&#xff1a;拷贝构造函数以及赋值运算符重载&#xff0c;因此想要让一个类禁止拷贝&#xff0c;只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 C98&#xff1a; 将拷贝构造函数与赋值运算符重载只…