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

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:

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

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

相关文章

Spring多线程事务处理

一、背景 本文主要介绍了spring多线程事务的解决方案,心急的小伙伴可以跳过上面的理论介绍分析部分直接看最终解决方案。 在我们日常的业务活动中,经常会出现大规模的修改插入操作,比如在3.0的活动赛事创建,涉及到十几张表的插入…

使用DateUtil工具类偏移日期

使用DateUtil工具类偏移日期 一、依赖二、源码三、示例代码 一、依赖 <!--工具依赖--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>二、源码 …

Python常用图片数据方法

文章目录 1. 常用图片数据类型2. 图片的显示2.1 plt.imshow()2.2 使用 turtle 来绘制图片 3.图片ndarray数据的常用切片操作使用 cv2 来读取图片打印数据R G B 通道的获取BGR 转成 RGBcv2 不支持中文路径的解决方法 4 PIL.Image 转成 QImage 或 QPixmap 1. 常用图片数据类型 使…

Android基础开发-通讯录的添加和查询

案例&#xff1a;往手机通讯录添加信息&#xff0c;输入姓名和手机号。 保存的手机的表&#xff1a;一共有两个&#xff0c;一个是主表&#xff0c;提供一个联系人id&#xff0c;另外是辅表&#xff0c;提供id对应的手机号和姓名。 普通操作&#xff1a;一个表一个表的添加 …

【黑马程序员】python函数

文章目录 函数什么是函数为什么学习函数函数定义函数的传入参数函数的返回值返回值基础None返回值 函数说明文档函数的嵌套调用定义代码示例 全局变量和局部变量全局变量global变量局部变量 函数综合案例 函数 什么是函数 组织好的&#xff0c;可重复使用的、用来实现特定功能…

【每日八股】Java基础经典面试题2

前言&#xff1a;哈喽大家好&#xff0c;我是黑洞晓威&#xff0c;25届毕业生&#xff0c;正在为即将到来的秋招做准备。本篇将记录学习过程中经常出现的知识点以及自己学习薄弱的地方进行总结&#x1f970;。 本篇文章记录的Java基础面试题&#xff0c;适合在学Java基础的小白…

设计模式系列之-策略模式(优化过多代码if…else)

首先解释下什么策略模式 如下图&#xff1a; 简而言之&#xff1a;算法的使用与算法的实现分离开来 想象有一个开关按钮&#xff0c;每次按下去都可以切换不同的灯光模式&#xff08;例如&#xff1a;强光、柔光、闪烁&#xff09;&#xff0c;这里的每种灯光模式就是一个策略…

程序人生——Java中基本类型使用建议

目录 引出Java中基本类型使用建议建议21&#xff1a;用偶判断&#xff0c;不用奇判断建议22&#xff1a;用整数类型处理货币建议23&#xff1a;不要让类型默默转换建议24&#xff1a;边界、边界、还是边界建议25&#xff1a;不要让四舍五入亏了一方 建议26&#xff1a;提防包装…

Unity类银河恶魔城学习记录8-5 p81 Blackhole duration源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码、 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Blackhole_Skill_Controller.cs using System.Collections; using Syste…

UL1642标准_锂聚合物电池亚马逊测试报告

UL1642标准_锂聚合物电池亚马逊测试报告 什么是锂聚合物电池UL1642标准&#xff1f; UL1642 认证要求涵盖旨在用于技术人员可更换或用户可更换应用的锂离子电池。UL1642 认证要求是为了避免锂离子电池在产品中工作时发生火灾或爆炸的风险。 锂聚合物电池 UL是Underwriters L…

Devin:首位人工智能软件工程师的介绍

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

2024春招看了上百份程序员简历,这个工具写的简历最好!(附模板)

你们在制作简历时&#xff0c;是不是基本只关注两件事&#xff1a;简历模板&#xff0c;还有基本信息的填写。 当你再次坐下来更新你的简历时&#xff0c;可能会发现自己不自觉地选择了那个“看起来最好看的模板”&#xff0c;填写基本信息&#xff0c;却没有深入思考如何使简历…

DataWhale公开课笔记2:Diffusion Model和Transformer Diffusion

Stable Diffusion和AIGC AIGC是什么 AIGC的全称叫做AI generated content&#xff0c;AlGC (Al-Generated Content&#xff0c;人工智能生产内容)&#xff0c;是利用AI自动生产内容的生产方式。 在传统的内容创作领域中&#xff0c;专业生成内容&#xff08;PGC&#xff09;…

Python数值方法在工程和科学问题解决中的应用

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 随着计算机技术的不断发展&#xff0c;Python作…

UI设计中的图标的分类,功能性图标

图标的分类 既然知道了图标的作用和重要性&#xff0c;那么接下来&#xff0c;就要进一步了解在工作中我们要设计哪些图标。图标可以划分成三种大类:功能性图标、装饰性图标、启动图标。 功能性图标 功能图标是具有指代意义且具有功能标识的图形&#xff0c;它不仅是一种图形&a…

代码随想录算法训练营第day41|背包理论基础、416. 分割等和子集

目录 a.背包理论基础——01背包 1.二维数组的01背包表示 2.一维滚动数组表示 b. 416. 分割等和子集 - 力扣&#xff08;LeetCode&#xff09; a.背包理论基础——01背包 背包问题分类&#xff1a; 对于面试的话&#xff0c;其实掌握01背包&#xff0c;和完全背包&#xff…

Sharding sphere分库分表

需要物理自己实现分表分库&#xff0c;然后通过配置文件配置。 配置文件&#xff1a; 需要配置多个数据源&#xff0c;主从表的关系【默认主表修改&#xff0c;从表读取】&#xff0c;定义分库的策略【比如User id】和分表【表Id】的策略 分库和分表策略&#xff1a;分库策略…

浅谈LockBit勒索病毒

在数字时代&#xff0c;随着科技的飞速发展&#xff0c;网络安全问题愈发凸显。恶意软件和勒索软件等网络威胁正不断演变&#xff0c;其中一款备受关注的勒索软件就是LockBit。 LockBit是一种高度复杂且具有破坏性的勒索软件。与传统的勒索软件相比&#xff0c;LockBit在其攻击…

外包干了5天,技术明显退步。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入南京某软件公司&#xff0c;干了接近2年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…

国产AI视频技术迎来新成员Etna,4K 60帧 15秒超高清视频

国内AI视频技术领域传来好消息&#xff0c;一款名为Etna的AI视频生成工具引起了业界的广泛关注。这款由七火山公司开发的技术&#xff0c;号称能够实现15秒4K 60帧的超高清视频生成&#xff0c;让人眼前一亮&#xff01; &#x1f680; 国产技术的崛起 Etna的问世&#xff0c;…