【目标检测经典算法】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.mzph.cn/news/743222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux环境(Ubuntu)上搭建MQTT服务器(EMQX )

目录 概述 1 认识EMQX 1.1 EMQX 简介 1.2 EMQX 版本类型 2 Ubuntu搭建EMQX 平台 2.1 下载和安装 2.1.1 下载 2.1.2 安装 2.2 查看运行端口 3 运行Dashboard 管理控制台 3.1 查看Ubuntu上的防火墙 3.2 运行Dashboard 管理控制台 概述 本文主要介绍EMQX 的一些内容&a…

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

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

西井科技参与IATA全球货运大会 以AI绿动能引领智慧空港新未来

3月12日至14日,由国际航空运输协会IATA主办的全球货运大会(World Cargo Symposium)在中国香港成功举办,这是全球航空货运领域最大规模与影响力的年度盛会。作为大物流领域全球领先的“智能化与新能源化”综合解决方案提供商&#…

05-ESP32-S3-IDF USART

ESP32-S3 IDF USART详解 USART简介 USART是一种串行通信协议,广泛应用于微控制器和计算机之间的通信。USART支持异步和同步模式,因此它可以在没有时钟信号的情况下(异步模式)或有时钟信号的情况下(同步模式&#xff…

【STL】string各种函数的应用

1.string 基本赋值操作 string assign(string str,int n) string assign(string str,int pos,int n) 2.string存取字符操作 (at()) 注意:[ ]越界不会抛出异常,at越界会抛出异常 3.string拼接…

bpmn-js系列之Palette

前边写了四篇文章介绍了bpmn.js的基本使用,最近陆续有小伙伴加我催更,感谢对我这个半吊子前端的信任,接着更新bpmn.js的一些高级用法,本篇介绍对左侧工具栏Palette的隐藏和自定义修改 隐藏shape 左侧工具栏Palette有些图标我用不…

如何利用ChatGPT联系英语口语和听写!分享一些Prompt!

参考文章 ChatGPT4升级方法 namecheap购买方法 sora namecheap 支付 首先先看ChatGPT修改英语作文的能力 足以证明ChatGPT的能力 ChatGPT英语练习 口语: 实时交谈纠错发音纠错语句 写作: 写作建议构思文本 模拟考试: 雅思、托福和…

在域控的Users目录下批量创建用户组,名称来自Excel

对于CSV文件,PowerShell可以直接读取并处理,无需额外安装模块。假设你的CSV文件中,用户组名称在第一列,文件名为"groups.csv",可以使用以下PowerShell脚本来批量创建: # 读取CSV文件中的数据 $g…

西门子PLCS7-1200位逻辑指令的使用

1.LAD触点 常开触点的位值为1时,常开触点将闭合(ON)。位值为0时,常开触点将闭合(OFF)。 常闭触点的位值为1时,常闭触点将闭合(OFF)。位值为0时,常闭触点将闭…

2024.3.13 C++

思维导图 设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>using namespace…

HttpContext请求接收上下文模块设计与实现(http模块四)

目录 类功能 类定义 类实现 编译测试 类功能 类定义 // HttpContext接收请求上下文模块功能设计 typedef enum {RECV_HTTP_ERROR,RECV_HTTP_LINE,RECV_HTTP_HEAD,RECV_HTTP_BODY,RECV_HTTP_OVER } HttpRecvStatu;class HttpContext { private:int _resp_statu; …

【leetcode热题】寻找旋转排序数组中的最小值

已知一个长度为 n 的数组&#xff0c;预先按照升序排列&#xff0c;经由 1 到 n 次 旋转 后&#xff0c;得到输入数组。例如&#xff0c;原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到&#xff1a; 若旋转 4 次&#xff0c;则可以得到 [4,5,6,7,0,1,2]若旋转 7 次&#xff0…

数据库基础知识超详细解析~‍(进阶/复习版)

文章目录 前言一、数据库的操作1.登入数据库2.创建数据库3.显示当前数据库4.使用数据库5.删除数据库 二、常用数据类型三、数据库的约束1约束类型2NULL约束3UNIQUE:唯一约束4DEFAULT&#xff1a;默认值约束5 PRIMARY KEY&#xff1a;主键约束6 FOREIGN KEY&#xff1a;外键约束…

Devin,第一位AI软件工程师

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

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

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

JS高级_数据类型

undefined与null的区别? undefined代表没有赋值null代表赋值了, 只是值为null // 1. undefined与null的区别?var a1var a2 nullconsole.log(a1, a2)什么时候给变量赋值为null呢? var a null //已经确定a是一个对象, 但还没具体赋值&#xff08;开始&#xff09;a null …

二,几何相交---4,BO算法---(3)数据结构

数据结构分两块&#xff0c;一个是某一时间状态的局部相交线段。一个是事件队列&#xff0c;是某一时刻局部相交线段的集合。

Vue2 父子组件某一属性的双向绑定

原本&#xff1a;父组件使用props传值给孩子组件初始化&#xff0c;触发事件子组件使用$emit传值给父组件&#xff0c;很麻烦后来&#xff1a;使用computed和$event例子代码&#xff1a; <template><div class"box">grandpa <el-input v-model"…

STM32平替GD32有多方便

众所周知, GD32一直模仿STM32,从未被超越。 我最近公司使用的GD32E230C6T6 这款芯片有48个引脚。 属于小容量的芯片。 我有一个用STM32写的代码,之前是用的 STM32F103CB 这款芯片是中容量的。 不过在keil中,只需要这两步,就能使用原来的逻辑,几乎不用修改代码。 1. …

华为组网:核心交换机旁挂防火墙,基于ACL重定向配置实验

如图所示&#xff0c;由于业务需要&#xff0c;用户有访问Internet的需求。 用户通过接入层交换机SwitchB和核心层交换机SwitchA以及接入网关Router与Internet进行通信。为了保证数据和网络的安全性&#xff0c;用户希望保证Internet到服务器全部流量的安全性&#xff0c;配置重…