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

news2024/10/5 21:14:31

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

学习视频:Faster RCNN理论合集

Fast RCNN

在这里插入图片描述

概念辨析

1. RoI

在Fast R-CNN中,RoI(Region of Interest,感兴趣区域) 是指在图像中提取的候选区域或者候选框,这些区域被认为可能包含目标物体。RoI是由候选框生成器(例如Selective Search或者Region Proposal Network)生成的,通常通过在图像上滑动窗口或者其他区域生成方法获得。

2. RoI池化

RoI池化(RoI Pooling) 是指将不同尺寸的RoI映射到相同大小的特征图上,从而能够将RoI中的特征提取出来用于后续的分类和定位。在Fast R-CNN中,RoI池化层将每个RoI划分成固定大小的子区域,并对每个子区域进行最大池化操作,最终将每个RoI映射为固定长度的特征向量。

RoI是Fast R-CNN中的关键组成部分,它通过提取候选区域的特征,为后续的分类器提供输入,从而实现目标检测任务。RoI池化操作使得Fast R-CNN能够处理不同大小和形状的候选区域,并且减少了特征提取的计算量,提高了检测速度。

框架结构

1. 实现步骤

  1. 将图片输入Deep ConvNet中进行特征图的提取
  2. 通过RoI projection获取到候选框的特征图
  3. 通过RoI pooling layer将候选框的特征图都缩放到7*7大小
  4. 链接两个全连接层后进行特征的展平,获得RoI feature vector
  5. RoI feature vector后并连两个网络:分类器和回归器,分类器负责对候选框中的目标进行分类,回归框负责对候选框的位置进行调整
    在这里插入图片描述

2. 框架图

Fast R-CNN的框架图如下所示:

  1. Region proposal:通过区域选择SS算法生成候选框;
  2. 通过CNN网络把特征提取、分类和边界框回归都集成到了一起,只使用一个网络就可以完成。
    在这里插入图片描述
    Fast R-CNN和RCNN比较可以看到,RCNN需要单独训练4个部分,而Fast R-CNN只有两个部分,更加简洁并且快速。

具体实现

1. 计算整张图片的特征并通过投影获得候选框的特征

在这里插入图片描述

  • RCNN:生成了2000个候选框,都要传入神经网络中,所以需要进行2000次的网络计算得到2000个特征,计算量极大且会存在大量冗余计算;

  • Fast-RCNN:直接将整张图片输入神经网络获得该图片的特征图,通过每个候选框与该张特征图的映射关系,就可以得到每个候选框的特征图,从而无需输入神经网络进行大量冗余计算,大幅提升计算效率。

2 随机采样 Sampling

在训练过程中,我们并不使用SS算法生成的全部候选框(约2000个),而是从中随机采样一部分候选框进行使用。

2.1 正样本和负样本

  • 正样本: 正样本是指与真实目标(如物体、目标物体的边界框等)高度重叠或包含真实目标的候选区域或者候选框。 在目标检测中,正样本通常被用于训练模型来识别和定位目标物体。

  • 负样本: 负样本是指与真实目标无关或者与真实目标重叠度较低的候选区域或者候选框。 在目标检测中,负样本通常被用于训练模型来识别背景,即图像中不含目标物体的区域。

2.2 为什么要存在正负样本?

  1. 训练模型: 正样本提供了目标物体的信息,有助于模型学习正确地识别和定位目标。负样本则提供了背景信息,有助于模型学习如何区分目标物体和背景。

  2. 防止过拟合: 过拟合是指模型在训练数据上表现很好,但在新数据上表现较差的现象。通过使用负样本,可以使模型学习更好地区分目标物体和背景,从而减少过拟合的风险。

  3. 平衡数据: 在目标检测任务中,正样本(包含目标物体的候选区域)通常远远少于负样本(不包含目标物体的候选区域)。因此,使用负样本可以平衡训练数据,使得模型更好地学习目标物体和背景之间的差异。

2.3 论文中如何定义正负样本

论文中从2000个候选框中选择64个候选框进行训练使用,其中如果与真实目标边界框的IOU值>0.5,则被认定为正样本,负样本则是与真实候选框的IOU值最大的且在(0.1 , 0.5]范围内的。

3 RoI Pooling层

在这里插入图片描述

通过pooling层把候选框产生的特征图都缩放到统一的尺寸(7*7)。

  • 优点:无需限制输入图片的尺寸。RCNN则需要输入的图片尺寸为227*227才行。

如何实现?

RoI Pooling Layer通过maxpooling方法把候选框的特征图都统一缩放到7*7的大小的特征矩阵。
在这里插入图片描述

4. 分类器和回归器

4.1 分类器classification

预测N+1个类别概率,全连接层需要N+1个节点,概率值都是经过softmax进行处理过的,相加为1。
在这里插入图片描述

4.2 边界框回归器regressor

每个候选框都有4个边界框回归参数:(dx,dy,dw,dh),因此对应N+1个类的全连接层需要的节点个数是(N+1)* 4.

  • d x d_x dx:调整中心点x坐标的回归参数
  • d y d_y dy:调整中心点y坐标的回归参数
  • d w d_w dw:调整边界框宽度的回归参数
  • d h d_h dh:调整边界框高度的回归参数

在这里插入图片描述

4.2.1 如何回归(公式)

根据如下的公式进行计算。可以将橙色的框回归调整到红色的框。

在这里插入图片描述

5. 损失函数

因为是主要了解算法流程,所以损失函数的具体计算方法暂时不详细展开介绍,大家可以去看视频。

在这里插入图片描述

6. 缺陷

  1. 候选框生成器瓶颈:Fast R-CNN仍然需要依赖于候选框生成器(如Selective Search或Region Proposal Network)来生成候选区域,这一过程仍然比较耗时,成为训练和推理的瓶颈之一。

  2. RoI池化固定尺寸的限制:Fast R-CNN中的RoI池化层将不同尺寸的RoI映射为固定长度的特征向量,这可能导致信息损失,尤其是对于不同大小的目标物体。

  3. 不支持端到端的训练:Fast R-CNN仍然需要多阶段的训练过程,包括候选框生成、特征提取和分类定位等,这种多阶段的训练过程不利于端到端的优化。

  4. RoI对齐:Fast R-CNN中的RoI池化操作存在位置量化的问题,可能导致特征偏移和信息损失。后续的一些方法(如RoI Align和RoI Transformer)对此进行了改进。

7. 改进

Faster R-CNN:

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

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

相关文章

Python导入类说一说

要在Python中导入一个类,需要使用import关键字。 详细去看下面的代码 1、多例类 class Restaurant:餐馆类def __init__(self,restaurant_name,cuisine_type):#类的属性self.restaurant_name restaurant_nameself.cuisine_type cuisine_type# self.stregth_leve…

Python网络基础爬虫-python基本语法

文章目录 逻辑语句if,else,elifforwhile异常处理 函数与类defpassclass 逻辑语句 熟悉C/C语言的人们可能很希望Python提供switch语句,但Python中并没有这个关键词,也没有这个语句结构。但是可以通过if-elif-elif-…这样的结构代替,或者使用字…

解决JVM进程被系统杀掉问题

背景 服务A在测试环境,隔几个小时接口就无法访问。登录机器查看,发现进程已经没了。大致猜想是进程使用的内存或CPU资源使用太多,导致被系统kill。 问题定位 使用dmesg命令查看进程被kill的详情。 > dmesg --time-format iso2024-03-0…

【Python如何与电脑玩石头剪刀布游戏】

1、石头剪刀布Python代码如下: import random while True:a random.randint(0, 2)b int(input("请输入一个数字(0石头, 1剪刀, 2布): "))c [石头, 剪刀, 布]if b ! 0 and b ! 1 and b ! 2:print("傻子,你出错了…

五子棋小游戏(sut实验报告)

实验目的 实现人与人或人与电脑进行五子棋对弈 实验内容 启动游戏,显示游戏参数设置界面,用户输入参数后进入游戏界面,显示棋盘及双方博弈过程,游戏过程中可选择退出游戏。判定一方获胜后结束本局游戏,可选择继续下…

S4 Hana SD -信贷管理 - 02

2.3 给信贷控制范围分配公司代码 TCODE: SPRO 配置路径:IMG > 企业结构 > 分配 > 财务会计 > 给信贷控制区分配公司代码 配置路径截图: 公司:被分配的公司代码。 公司名称&城市:已在公司代码数据中维护。 CCAR:分配的信贷控制范围。 覆盖CC范围:如…

InstantID Zero-shot Identity-Preserving Generation in Seconds

InstantID: Zero-shot Identity-Preserving Generation in Seconds TL; DR:InstantID IP-Adapter (Face) ControlNet,实现了具有较高保真度的人脸 ID 生成。 方法 InstantID 想做到的事情是:给定一张参考人脸 ID 图片,生成该…

专升本 C语言笔记-07 逗号运算符

1.逗号表达式的用法 就是用逗号隔开的多个表达式。逗号表达式,从左向右依次执行。 2.逗号表达式的特性 2.1.当没有括号时,第一个表达式为整个表达式的值。 代码 int x 3,y 5,a 0; a x,y; printf("a %d",a); 说明:因为逗号优先级最低,会…

利用Python进行网络爬虫:Beautiful Soup和Requests的应用【第131篇—Beautiful Soup】

利用Python进行网络爬虫:Beautiful Soup和Requests的应用 在网络数据变得日益丰富和重要的今天,网络爬虫成为了获取和分析数据的重要工具之一。Python作为一种强大而灵活的编程语言,在网络爬虫领域也拥有广泛的应用。本文将介绍如何使用Pyth…

【智能硬件、大模型、LLM 智能音箱】MBO:基于树莓派、ChatGPT 的桌面机器人

MAKER:David Packman/译:趣无尽(转载请注明出处) 这是国外 Maker David Packman 制作的基于树莓派机器人 MBO,该机器人的外观设计灵感来自动漫 Adventure Time 中的机器人 MBO。它具有强大的交互功能,可实现脱机唤醒词检测、调用 ChatGPT 3.5 进行聊天、机器视觉对图像进…

解决Git:Author identity unknown Please tell me who you are.

报错信息: 意思: 作者身份未知 ***请告诉我你是谁。 解决办法: git config --global user.name "你的名字"git config --global user.email "你的邮箱"

Android 15 首个开发者预览版到来

作者 / 工程副总裁 Dave Burke Android 15 的首个开发者预览版现已发布,以便各位开发者能与我们通力协作,打造更优秀的 Android 平台。 在 Android 15 中,我们继续致力于打造一个既能提升工作效率,又能提供全新功能的平台。这些新…

蓝桥杯-模拟-4402. 刷题统计

题目 思路 代码 a,b,nmap(int,input().split()) sa*5b*2 resn//s*7 # 存在周期 d[a,a,a,a,a,b,b] n%s i0 while n>0: # 对剩余数量进行枚举,如果等于0,相当于还会再进去加一天n-d[i]i1res1 print(res)

es 聚合操作(一)

前言 Elasticsearch除搜索以外,提供了针对ES 数据进行统计分析的功能。聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如: 衣服品牌的受欢迎程度这些衣服的平均价格、最高价格、最低价格这些衣服的每天、每月销量如何 使用…

cpp qt 一个奇怪的bug

今天在用cpp qt的时候发现了一个奇怪的东西 这是我的源代码 #include "mywidget.h" #include <QPushButton>myWidget::myWidget(QWidget *parent): QWidget(parent) {QPushButton * btn1 new QPushButton;btn1->show();btn1->setParent(this);btn1-&g…

在集群模式下,Redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?

目录 一、分布式寻址算法 1. hash 算法 2. 一致性 hash 算法 3. Redis cluster 的 hash slot 算法 二、Redis cluster 的高可用与主备切换原理 1. 判断节点宕机 2. 从节点过滤 3. 从节点选举 4. 与哨兵比较 一、分布式寻址算法 hash 算法(大量缓存重建) 一致性 hash…

【代码随想录 | 链表 02】反转链表

文章目录 2.反转链表2.1题目2.2解法2.2.1双指针法2.2.2递归法 2.反转链表 2.1题目 206.反转链表——力扣链接 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例一&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;…

重建大师出现图中密集匹配失败的情况,是什么原因导致的?

可以检查瓦块是否位于测区边缘&#xff0c;边缘瓦块可以忽略&#xff1b;如果是中间区域的话&#xff0c;可能中间文件有异常&#xff0c;可以新建个reconstruction&#xff0c;然后单独提交失败的瓦块。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件&…

数据结构:7、队列

一、队列的概念与结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out) 入队列&#xff1a;进行插入操作的一端称为队尾 出队列&#xff1a;进行删除操作的一端称为队头…

Cisco Packet Tracer模拟器实现路由器的路由配置及网络的安全配置

1. 内容 1. 配置路由器实现多个不同网络间的通信&#xff0c;路由器提供的路由协议包括静态路由协议、RIP动态路由、OSPF动态路由协议等等&#xff0c;训练内容包括路由器的静态路由配置、路由器的RIP动态路由配置、路由器的OSPF动态路由配置以及路由器的路由重分布配置。 2.…