Fast-RCNN网络详解

news2024/9/22 7:37:26

文章目录

  • 一、前言
  • 二、Fast-RCNN原理步骤
    • 2.1候选区域的生成
    • 2.2.ROI Pooling层
    • 2.3.分类器
    • 2.4.边界框的预测
    • 2.5.损失计算
      • 2.5.1.分类损失
      • 2.5.2.边界框回归损失
  • 三、总结
  • 参考博客与视频、代码

一、前言

前面学习了SS算法、R-CNN网络,接下来继续学习Fast-RCNN网络。
在这里插入图片描述

本文两个目的,其一作为个人笔记,方便自己巩固复习知识;其二帮助正在自学的朋友,希望拙劣的见解可以帮助到大家。

二、Fast-RCNN原理步骤

Fast-RCNN可以分为三个步骤:

1)使用SS算法生成大概1-2k的候选框。
2)参考SPPnet模型来将整张图片输入网络得到特征图,再将第一步得到的候选框映射到特征矩阵来提取特征矩阵。
3)特征层通道ROI pooling操作缩放到7*7大小,展平连接一系列的全连接层得到分类结果和边界框回归参数。

2.1候选区域的生成

在这里插入图片描述
上图为R-CNN与Fast-RCNN生成候选区域的方式对比

R-CNN
可以看到R-CNN生成的候选框都需要输入深度网络提取特征,进行正向传播,冗余区域的重复计算,极大的增加了计算量,降低效率。
Fast-RCNN
它将整张图片输入网络,得到特征图,SS算法得到的候选框映射到特征图来获取特征,这样就不需要再重复计算这些候选区域。大大减小了计算量。

训练数据的采样(正样本与负样本)

与R-CNN不同的是,我们并没有使用SS算法生成的所有候选框,SS算法生成的近2000个候选框,实际上训练只使用了一小部分的候选框,而且样本分为正样本和负样本。具体论文里面有提到:分为正样本和负样本是为了平衡数据,因为如果正样本明显偏多,那么网络会理所当然的认为待识别的候选框是目标种类的一种,但实际上候选框也很有可能是背景,因此为了平衡包含目标和包含背景分为了正样本和负样本。

正样本与负样本的定义:候选框与真实框IOU大于0.5即为正样本,IOU在[0.1,0.5],记为负样本。
在这里插入图片描述

2.2.ROI Pooling层

在这里插入图片描述

ROI Pooling层的实现

将样本划分为7*7个区域,对每个区域进行max pooling操作
在这里插入图片描述

2.3.分类器

在这里插入图片描述
上面讲到我们在提取特征后经过ROI pooling层处理缩放到相同大小,然后拉直展平再经过两个全连接层,再分别于并联全连接层来分别进行类别概率的预测和bounding box边界框的预测。

对于分类器最后输出N+1个类别的概率,N为检测目标的类别数目,1为背景,得到的概率分布是经过了softmax的处理。

2.4.边界框的预测

在这里插入图片描述
对于每个类别都会输出一组候选框回归参数(d_x, d_y, d_w, d_h)最后一层输出的结点个数为(N+1)*4

那么如何利用这些参数得到最终的预测框?
在这里插入图片描述

如图中所示:P表示预测框,G为真实框、G^为最终预测框,我们可以这么理解这几个公式:认为输出的回归参数对预测框进行中心坐标x,y的偏移调整,以及对候选框的宽和高进行缩放调整。

这几个公式来自于R-CNN论文,exp指指数次方。

2.5.损失计算

在这里插入图片描述
与R-CNN不同的是,Fast-RCNN因为分类与边界框的回归是一起训练的,因此损失也为对应部分损失的和。

2.5.1.分类损失

L c l s ( p , u ) L_{cls}(p, u) Lcls(p,u)指分类的损失,p为预测类别的概率分布p=p_0,p1,…pk,u为目标真实类别标签​,计算公式为:

L c l s ( p , u ) = − l o g p u L_{cls}(p, u) = -log^{p_u} Lcls(p,u)=logpu

Pu指当前框预测类别为u的概率。实际上上面的公式就是为交叉熵损失,只不过其他的类别标签为0,因此被化简了。
在这里插入图片描述

2.5.2.边界框回归损失

λ 表示平衡系数来使数值稳定 \lambda表示平衡系数来使数值稳定 λ表示平衡系数来使数值稳定
[u>=1]为艾弗森括号,当真实标签为u类别这一项为1,当不满足这个条件等于0,也就是说只有预测类别不是背景才为1,为背景则为0, t u t^u tu为预测的边界框回归参数,具体为:
( t x u , t y u , t w u , t h u ) ({t_x}^u,{t_y}^u,{t_w}^u,{t_h}^u) (txu,tyu,twu,thu)
v为真实的边界框回归参数(v是通过真实的框位置中心和框宽和高利用上面的公式反推而来的,反推公式如下)

v x = G x − P x P w v_x = \frac{G_x - P_x}{P_w} vx=PwGxPx
v y = G y − P y P h v_y = \frac{G_y - P_y}{P_h} vy=PhGyPy
v w = l o g G w P w v_w =log^{ \frac{G_w}{P_w}} vw=logPwGw
v h = l o g G h P h v_h = log^{\frac{G_h}{P_h}} vh=logPhGh

L l o c ( t u , v ) = Σ i ∈ x , y , w , h ( s m o o t h L 1 ( t i u − v ) ) L_{loc}(t^{u}, v) = \Sigma_{i \in {x, y, w, h}}(smooth_{L_{1}}{(t_i}^{u}-v)) Lloc(tu,v)=Σix,y,w,h(smoothL1(tiuv))

SoomthL1函数如下:

s o o m t h L 1 = { 0.5 ∗ x 2 i f ∣ x ∣ < 1 ∣ x ∣ − 0.5 o t h e r w i s e soomth_{L_1}=\begin{cases}0.5*x^2 & if|x|< 1 \\ |x| - 0.5 & otherwise\end{cases} soomthL1={0.5x2x0.5ifx<1otherwise

三、总结

在这里插入图片描述
相比R-CNN,步骤简化为了两步,特征提取、分类、边界框回归都用一个CNN来完成。

参考博客与视频、代码

B站up主视频地址

[代码地址](https://github.com/rbgirshick/ fast-rcnn)

[论文地址]([1504.08083] Fast R-CNN (arxiv.org))
前文博客:
SS-算法
R-CNN网络详解

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

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

相关文章

KingbaseES V8R3 备份恢复系列之 -- sys_rman备份过程分析

​ 案例说明&#xff1a; 本案例通过对KingbaseES sys_rman物理备份过程的详细描述&#xff0c;有助于在执行sys_rman过程中发生故障的分析。适用版本&#xff1a; KingbaseES V8R3 一、sys_rman执行过程简介 1. 调用select sys_start_backup()开始备份&#xff0c;sys_start_b…

028python-配置文件

配置文件&#xff1a;以properties 、config、ini、log4j等结尾的都是配置文件&#xff0c;里面的参数改一下&#xff0c;项目就可以按照不同的方式执行出来&#xff1b; configparser 可以去读取配置信息&#xff0c;configparser里面的类模块ConfigParser&#xff1b;配置文件…

SpringMVC 笔记

1. SpringMVC 简介 1.1 什么是MVC MVC是一种软件架构的思想&#xff0c;将软件按照模型、视图、控制器来划分 M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 一类称为实体类Bean&#xff…

Linux安装Docker(这应该是你看过的最简洁的安装教程)

Docker是一种开源的容器化平台&#xff0c;可以将应用程序及其依赖项打包成一个可移植的容器&#xff0c;以便在不同的环境中运行。Docker的核心是Docker引擎&#xff0c;它可以自动化应用程序的部署、扩展和管理&#xff0c;同时还提供了一个开放的API&#xff0c;可以与其他工…

一文带你了解MySQL之连接原理

前言 本文章收录在MySQL性能优化原理实战专栏&#xff0c;点击此处查看更多优质内容。 搞数据库一个避不开的概念就是Join&#xff0c;翻译成中⽂就是连接。相信很多小伙伴初学连接的时候有些一脸懵&#xff0c;理解了连接的语义之后又可能不明白各个表中的记录到底是怎么连起…

用iOS版ChatGPT第一步:手把手带你注册美区Apple ID!(史上最简单)

大家好&#xff0c;我是鸟哥。 前两天ChatGPT官方毫无征兆的上线了iOS版&#xff0c;和网页版的相比功能和响应速度都提升了N个档次&#xff0c;具体看这篇文章&#xff1a;iOS版ChatGPT突然上线&#xff01;Plus用户笑疯了&#xff01; 但是呢&#xff0c;目前iOS版只在美区…

玩客云刷NAS

测试路由器支持IPV6 参考 这里 我用的是TPlink WDR7660 支持IPV6 主要设置桥模式 玩客云刷写固件 参考 这里 还有这里 玩客云固定IP 参考这里 sudo armbian-config 选择Network 选择有线网络->ip 选择static 然后根据自己情况进行设置 点击OK即可 更新国内源 参考这里 证书…

那就别担心了(DFS优化)30行代码简单易懂

下图转自“英式没品笑话百科”的新浪微博 —— 所以无论有没有遇到难题&#xff0c;其实都不用担心。 博主将这种逻辑推演称为“逻辑自洽”&#xff0c;即从某个命题出发的所有推理路径都会将结论引导到同一个最终命题&#xff08;开玩笑的&#xff0c;千万别以为这是真正的逻辑…

最简单的 goland package 教程包括自定义包的使用

一、Hello World项目 一切从最简单开始&#xff1a; mkdir myappcd myappgo mod init myapp // myapp是主项目名 这行命令将生成一个go.mod文件&#xff0c;这个文件会记录所有的包的依赖关系&#xff0c;一个空的go.mod只有项目名称和go版本号. nano main.go : package mai…

VMware虚拟机三种网络模式详解之NAT(地址转换模式)

VMware虚拟机三种网络模式详解 NAT&#xff08;地址转换模式&#xff09; 二、NAT&#xff08;地址转换模式&#xff09; 刚刚我们说到&#xff0c;如果你的网络ip资源紧缺&#xff0c;但是你又希望你的虚拟机能够联网&#xff0c;这时候NAT模式是最好的选择。NAT模式借助虚拟…

[组合数学]母函数与递推关系

文章目录 母函数---解决计数组合 球相同 盒子不同 不能是空 C n − 1 m − 1 \quad C_{n-1}^{m-1} Cn−1m−1​数的拆分 递推关系常系数线性齐次递推关系常系数线性非齐次递推关系汉诺塔递推关系 母函数—解决计数 普母函数—组合问题 指母函数—排列问题 f(x) ∑ i 1 n a i…

阿里云服务器开放端口的正确方式(超详细新版教程)

阿里云服务器端口怎么打开&#xff1f;云服务器ECS端口在安全组中开启&#xff0c;轻量应用服务器端口在防火墙中打开&#xff0c;阿里云服务器网以80端口为例&#xff0c;来详细说下阿里云服务器端口开放图文教程&#xff0c;其他的端口如8080、3306、443、1433也是同样的方法…

VMware虚拟机三种网络模式详解之Host-Only(仅主机模式)

VMware虚拟机三种网络模式详解 Host-Only&#xff08;仅主机模式&#xff09; 三、Host-Only&#xff08;仅主机模式&#xff09; Host-Only模式其实就是NAT模式去除了虚拟NAT设备&#xff0c;然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机…

CAR-T细胞疗法在实体瘤研究中的挑战和新进展

什么是CAR-T? CAR-T是Chimeric Antigen Receptor T-cell&#xff08;嵌合抗原受体T细胞&#xff09;的缩写。它是通过将人体自身的T细胞进行基因改造&#xff0c;使其具有针对肿瘤细胞的抗原特异性&#xff0c;从而增强免疫系统对肿瘤细胞的攻击能力。CAR-T治疗的过程&#xf…

OJ练习第107题——二叉搜索子树的最大键值和

二叉搜索子树的最大键值和 力扣链接&#xff1a;1373. 二叉搜索子树的最大键值和 题目描述 给你一棵以 root 为根的 二叉树 &#xff0c;请你返回 任意 二叉搜索子树的最大键值和。 二叉搜索树的定义如下&#xff1a; 任意节点的左子树中的键值都 小于 此节点的键值。 任意…

SpringBoot——IOC与AOP

文章目录 IOC AOP一、 分层解耦1.1 IOC - 控制反转 详细1.2 DI - 依赖注入 详解 二、AOP2.1 了解2.2 快速入门 - AOP 开发步骤2.2.1 Maven依赖2.2.2 代码实现2.2.3 AOP 应用场景及优势 2.3 核心概念2.3.1 连接点 - JoinPoint2.3.2 AOP执行流程 2.4 通知2.4.1 通知类型2.4.2 通知…

百度贴吧视频发布软件视频教程(操作十分简单)

百度贴吧视频发布软件视频教程(操作十分简单) 软件有月卡、季卡、半年卡、年卡 【有时软件个别卡种售空&#xff0c;价格有上涨下降&#xff0c;关注获取当日价格】 我现在正在发帖的一个实时的一个画面&#xff0c;就是有很多同学问我就是喜羊羊今天还好跑吗&#xff0c;明天…

linux入门---通信的理解和匿名管道

这里写目录标题 为什么有通信通信的两个标准通信的本质管道通信的本质如何实现管道通信管道文件的特点管道的特征如何理解指令上的管道 为什么有通信 在我们的生活中有很多地方都需要用到通信&#xff0c;比如说出去玩要告诉伙伴们我们到哪了&#xff0c;做一件事的时候得通过…

MySQL基础(三十七)主从复制

1. 主从复制概述 1.1 如何提升数据库并发能力 此外&#xff0c;一般应用对数据库而言都是“ 读多写少 ”&#xff0c;也就说对数据库读取数据的压力比较大&#xff0c;有一个思路就是采用数据库集群的方案&#xff0c;做 主从架构 、进行 读写分离 &#xff0c;这样同样可以提…

第四十六天学习记录:C语言进阶:KMP算法个人学习方法

学习了strstr库函数后&#xff0c;老师让了解KMP算法&#xff0c;这也算是我接触到的第一个算法。 由于这一块得自己翻资料自学&#xff0c;因此初识比较吃力。 后面根据自己的理解方式&#xff0c;个人认为理解KMP算法最关键点就是理解next数组是怎么生成的。 下面说说我理解n…