GFLv1 论文学习

news2024/11/29 8:54:12

1. 解决了什么问题?

在这里插入图片描述

单阶段目标检测器通过密集预测的方式进行分类、定位。分类一般使用 Focal Loss,而边框回归则通过 Dirac delta 分布来学习。近年来的改进方向是引入一个单独的分支,预测定位的质量,然后用该质量分数去辅助分类得分,提升检测的表现。但质量预测存在两个问题:

  • 训练和推理时,定位质量和类别预测是不一致的。它们各自单独训练,但推理的时候是耦合在一起用的。此外,学习定位质量的监督信号只分配给了正样本,负样本就不受限制了,有可能得到更高的质量得分。如下图所示,负样本得到的质量得分是随机的,NMS 时有可能排到质量得分低的正样本前面。
  • 边框表征不够灵活:当复杂场景中出现模糊和不确定的情况时,定位用的 Dirac delta 分布不够灵活。如上图,因为遮挡、阴影、模糊等,目标边界不够清晰,ground-truth 标签有时不够可信,Dirac delta 分布就不够灵活了。本文方法所学到的表征能反映出目标的形状,扁平的分布表示边界模糊,而尖锐的分布则表示边界清晰。

下图(a) 是一些背景区域,但它们的定位质量得分很高。图(b) 的蓝点说明预测的类别得分和质量得分之间的关系较弱,红圈包含了大量的负样本,但它们的预测定位质量得分都很高。
在这里插入图片描述

下图 (a) 展示了现有方法,有一个单独的质量预测分支(IoU 或 center-ness 得分),图 (b) 是本文方法,将类别得分和定位质量得分融合到一起使用。
在这里插入图片描述

2. 提出了什么方法?

对于定位质量表征,将质量预测融入类别预测的向量,得到定位质量和分类的联合表征,使用统一的向量表示边框定位的任意分布。在类别向量中,ground-truth 索引位置的值是其相应的定位质量得分(通常是预测框和 gt 框的 IoU)。这样,改进后的表征在训练和推理时就一致了,而且能准确描述真实数据的分布情况,但 IoU ( 0 ∼ 1 ) (0\sim 1) (01)标签是连续的,Focal Loss 只能解决 { 0 , 1 } \lbrace0,1\rbrace {0,1}二值标签,于是提出了 Generalized Focal Loss,从离散形式扩展到连续形式。GFL 可以具化为 Quality Focal Loss 和 Distribution Focal Loss。QFL 关注于一组稀疏的难例样本,输出它们相应的类别在 0 ∼ 1 0\sim 1 01之间的质量预测得分。DFL 让网络快速聚焦于学习目标框连续坐标的概率。

对于边框表征,在连续空间内学习离散的概率分布,表示边框坐标的任意分布。

2.1 Focal Loss

原来的 Focal Loss 用于解决单阶段目标检测,前景和背景类别不均衡的问题。形式如下:
F L ( p ) = − ( 1 − p t ) γ log ⁡ ( p t ) , p t = { p , y = 1 1 − p , y = 0 \mathbf{FL}(p)=-(1-p_t)^{\gamma}\log(p_t),\quad p_t=\left\{ \begin{array}{ll} \quad p \quad,y=1 \\ 1-p\quad, y=0 \end{array} \right. FL(p)=(1pt)γlog(pt),pt={p,y=11p,y=0
y ∈ { 0 , 1 } y\in \lbrace0,1\rbrace y{0,1}是 gt 框的类别, p ∈ [ 0 , 1 ] p\in \left[0,1\right] p[0,1]是对于类别标签 y = 1 y=1 y=1预测的置信度。 γ \gamma γ是控制系数。FL 包含了一个标准的交叉熵 − log ⁡ ( p t ) -\log(p_t) log(pt),和一个动态缩放乘数 ( 1 − p t ) γ (1-p_t)^{\gamma} (1pt)γ,自动降低容易样本的损失贡献,快速聚焦于困难样本。

2.2 QFL

将定位质量得分和类别得分联合起来表示,降低 one-hot 类别标签的约束,对应类别上的目标值是一个浮点数 y ∈ [ 0 , 1 ] y\in \left[0,1\right] y[0,1] y = 0 y=0 y=0表示负样本,定位质量得分是 0 0 0 0 < y ≤ 1 0<y\leq 1 0<y1表示正样本, y y y是 IoU 得分。虽然有了联合表征,但是类别不均衡的问题依然存在,于是作者借鉴 Focal Loss,扩展 Focal Loss 的两个部分:

  • 交叉熵部分 − log ⁡ ( p t ) -\log(p_t) log(pt)扩展为完全形式 − [ ( 1 − y ) log ⁡ ( 1 − σ ) + y log ⁡ ( σ ) ] -\left[(1-y)\log(1-\sigma) + y\log(\sigma)\right] [(1y)log(1σ)+ylog(σ)]
  • 缩放乘数 ( 1 − p t ) γ (1-p_t)^{\gamma} (1pt)γ归纳为预测得分 σ \sigma σ和浮点数标签 y y y的绝对值距离 ∣ y − σ ∣ β , ( β ≥ 0 ) |y-\sigma|^{\beta},(\beta\geq 0) yσβ,(β0)

所以,QFL 的表达式为:
Q F L ( σ ) = − ∣ y − σ ∣ β [ ( 1 − y ) log ⁡ ( 1 − σ ) + y log ⁡ ( σ ) ] \mathbf{QFL}(\sigma)=-|y-\sigma|^{\beta}\left[(1-y)\log(1-\sigma) + y\log(\sigma)\right] QFL(σ)=yσβ[(1y)log(1σ)+ylog(σ)]

σ = y \sigma=y σ=y时,QFL 全局最小。 ∣ y − σ ∣ β |y-\sigma|^{\beta} yσβ是调节系数,当某样本的质量预测 σ \sigma σ不够准确、偏离标签 y y y,调节系数就会增大,从而更关注于困难样本。当质量预测得准确时 σ → y \sigma\rightarrow y σy,该系数趋近于 0 0 0,损失就会降低。 β \beta β控制着权重的降低(QFL 实验时 β = 2 \beta=2 β=2)。
在这里插入图片描述

上图比较了传统方法和本文方法。GFL 包括了 QFL 和 DFL。QFL 学习类别得分和定位质量得分的联合表征,DFL 将边框的位置建模为 general distribution,驱使网络快速聚焦于目标位置相邻点的概率。

2.3 DFL

本文将坐标点距离目标框四条边的相对偏移量作为回归目标。传统的边框回归方法是将回归标签 y y y建模为 Dirac Delta 分布 δ ( x − y ) \delta(x-y) δ(xy),满足 ∫ − ∞ + ∞ δ ( x − y ) d x = 1 \int_{-\infty}^{+\infty}\delta(x-y)\mathop{dx}=1 +δ(xy)dx=1,通常用全连接层实现。Dirac Delta 分布可以认为在一个点的概率密度为无穷大,而其它点的概率密度都为 0。其还原 y y y的积分形式就是:
y = ∫ − ∞ + ∞ δ ( x − y ) x d x y=\int_{-\infty}^{+\infty}\delta(x-y)x \mathop{dx} y=+δ(xy)xdx

然而在真实场景,目标边界并非是十分清楚的,因此如下图(b) 学习一个宽范围的分布更加合理。给定标签 y y y ( y 0 ≤ y ≤ y n , n ∈ N + ) (y_0\leq y\leq y_n,n\in \mathbb{N}^+) (y0yyn,nN+),模型预测的值 y ^ \hat{y} y^就是( y 0 ≤ y ^ ≤ y n y_0 \leq\hat{y} \leq y_n y0y^yn):
y ^ = ∫ − ∞ + ∞ P ( x ) x d x = ∫ y 0 y n P ( x ) x d x \hat{y}=\int_{-\infty}^{+\infty} P(x)x \mathop{dx}=\int_{y_0}^{y_n} P(x)x \mathop{dx} y^=+P(x)xdx=y0ynP(x)xdx

但 CNN 用的是离散表征,作者将值域 [ y 0 , y n ] \left[y_0,y_n\right] [y0,yn]离散为集合 { y 0 , y 1 , . . . , y i , y i + 1 , . . . , y n − 1 , y n } \lbrace y_0,y_1,...,y_i,y_{i+1},...,y_{n-1},y_n\rbrace {y0,y1,...,yi,yi+1,...,yn1,yn},间隔是 Δ \Delta Δ,即从 y y y可能存在的区间 [ y 0 , y n ] \left[y_0, y_n\right] [y0,yn]中均匀采样,这样就从一个回归问题变成了多分类问题。给定离散分布性质 ∑ i = 1 n P ( y i ) = 1 \sum_{i=1}^n P(y_i)=1 i=1nP(yi)=1,预测的回归值 y ^ \hat{y} y^表示为:
y ^ = ∑ i = 0 n P ( y i ) ⋅ y i \hat{y}=\sum_{i=0}^n P(y_i)\cdot y_i y^=i=0nP(yi)yi

作者使用 Softmax 函数可以很容易地实现离散形式的任意分布。 P ( x ) P(x) P(x)用 softmax S ( ⋅ ) \mathcal{S}(\cdot) S()实现, P ( y i ) P(y_i) P(yi)记做 S i \mathcal{S}_i Si y ^ \hat{y} y^可以用 SmoothL1、IoU 损失和 GIoU 损失训练。但是如下图(b)所示, P ( x ) P(x) P(x)的值可能有无数种组合来让最终的积分结果为 y y y,这会降低学习的效率。与 (1) (2) 相比,(3) 更加紧凑、更加确信边框定位的准确性。如果存在最适合的位置,它一定不会离目标标签很远。因此作者提出了 DFL,通过增大 y i y_i yi y i + 1 y_{i+1} yi+1的概率( y i y_i yi y i + 1 y_{i+1} yi+1是最接近 y y y的两个点, y i ≤ y ≤ y i + 1 y_i\leq y\leq y_{i+1} yiyyi+1),让网络快速关注到标签 y y y附近的点。边框的学习只需关注正样本,不用担心正负类别
不均衡问题,于是 DFL 形式为:
D F L ( S i , S i + 1 ) = − [ ( y i + 1 − y ) log ⁡ ( S i ) + ( y − y i ) log ⁡ ( S i + 1 ) ] \mathbf{DFL}(\mathcal{S}_i,\mathcal{S}_{i+1})=-\left[(y_{i+1}-y)\log(\mathcal{S}_i) + (y-y_i)\log(\mathcal{S}_{i+1})\right] DFL(Si,Si+1)=[(yi+1y)log(Si)+(yyi)log(Si+1)]

DFL 通过学习增大 y y y左右两个点的概率( S i \mathcal{S}_i Si S i + 1 \mathcal{S}_{i+1} Si+1),使网络分布聚焦到标签点的附近。当 DFL 达到全局最小点(即 S i = y i + 1 − y y i + 1 − y i \mathcal{S}_i=\frac{y_{i+1}-y}{y_{i+1}-y_i} Si=yi+1yiyi+1y S i + 1 = y − y i y i + 1 − y i \mathcal{S}_{i+1}=\frac{y-y_{i}}{y_{i+1}-y_i} Si+1=yi+1yiyyi),可以保证预测值 y ^ \hat{y} y^无限地接近对应的标签 y y y,即 y ^ = ∑ j = 0 n P ( y j ) y j = S i y i + S i + 1 y i + 1 = y i + 1 − y y i + 1 − y i y i + y − y i y i + 1 − y i y i + 1 = y \hat{y}=\sum_{j=0}^n P(y_j)y_j = \mathcal{S}_iy_i + \mathcal{S}_{i+1}y_{i+1}=\frac{y_{i+1}-y}{y_{i+1}-y_i}y_i+\frac{y-y_{i}}{y_{i+1}-y_i}y_{i+1}=y y^=j=0nP(yj)yj=Siyi+Si+1yi+1=yi+1yiyi+1yyi+yi+1yiyyiyi+1=y
在这里插入图片描述

2.4 GFL

QFL 和 DFL 可以整合为一个通用形式。假设一个模型预测两个变量 y l , y r ( y l < y r ) y_l,y_r(y_l<y_r) yl,yr(yl<yr)的概率分别是 p y l , p y r , ( p y l ≥ 0 , p y r ≥ 0 , p y l + p y r = 1 ) p_{y_l},p_{y_r}, (p_{y_l}\geq 0, p_{y_r}\geq 0, p_{y_l}+p_{y_r}=1) pyl,pyr,(pyl0,pyr0,pyl+pyr=1)。它们线性组合的预测是 y ^ = y l p y l + y r p y r , ( y l ≤ y ^ ≤ y r ) \hat{y}=y_l p_{y_l}+y_r p_{y_r}, (y_l\leq \hat{y}\leq y_r) y^=ylpyl+yrpyr,(yly^yr)。预测 y ^ \hat{y} y^的对应的连续标签 y y y需满足 y l ≤ y ≤ y r y_l \leq y \leq y_r ylyyr。将绝对距离 ∣ y − y ^ ∣ β ( β ≥ 0 ) |y-\hat{y}|^{\beta}(\beta\geq 0) yy^β(β0)作为调节系数,GFL 可以写作:
G F L ( p y l , p y r ) = − ∣ y − ( y l p y l + y r p y r ) ∣ β ( ( y r − y ) log ⁡ ( p y l ) + ( y − y l ) log ⁡ ( p y r ) ) \mathbf{GFL}(p_{y_l},p_{y_r})=-|y-(y_l p_{y_l}+y_r p_{y_r})|^{\beta} ((y_r-y)\log(p_{y_l}) +(y-y_l)\log(p_{y_r})) GFL(pyl,pyr)=y(ylpyl+yrpyr)β((yry)log(pyl)+(yyl)log(pyr))

2.5 GFL 性质

p y l ∗ = y r − y y r − y l p_{y_l}^*=\frac{y_r-y}{y_r-y_l} pyl=yrylyry p y r ∗ = y − y l y r − y l p_{y_r}^*=\frac{y-y_l}{y_r-y_l} pyr=yrylyyl时, G F L ( p y l , p y r ) \mathbf{GFL}(p_{y_l},p_{y_r}) GFL(pyl,pyr)达到全局最小,也就是说 y ^ \hat{y} y^完美地匹配上了连续标签 y y y,即 y ^ = y l p y l ∗ + y r p y r ∗ = y \hat{y}=y_lp_{y_l}^*+y_rp_{y_r}^*=y y^=ylpyl+yrpyr=y。QFL、DFL 和原版 FL 都是 GFL 的特殊形式。GFL 可以用到任意的单阶段目标检测器上。推理时,直接将分类得分(质量预测的联合表征)作为 NMS 分数,而无需乘上质量预测得分。预测边框每个位置的回归分支的最后一层现在有 n + 1 n+1 n+1个输出,而不只是 1 1 1个输出。

2.6 GFL 训练密集检测器

L = 1 N p o s ∑ z L Q + 1 N p o s ∑ z I { c z ∗ > 0 } ( λ 0 L B + λ 1 L D ) \mathcal{L}=\frac{1}{N_{pos}}\sum_z \mathcal{L_Q}+\frac{1}{N_{pos}}\sum_z \mathbb{I}_{\lbrace c_z^*>0\rbrace}(\lambda_0\mathcal{L_B}+\lambda_1 \mathcal{L_D}) L=Npos1zLQ+Npos1zI{cz>0}(λ0LB+λ1LD)

L Q \mathcal{L_Q} LQ是 QFL, L D \mathcal{L_D} LD是 DFL。 L B \mathcal{L_B} LB是 GIoU 损失。 N p o s N_{pos} Npos是正样本个数。 λ 0 = 2 \lambda_0=2 λ0=2 λ 1 = 1 4 \lambda_1=\frac{1}{4} λ1=41平衡 QFL 和 DFL。对特征金字塔上所有的位置 z z z计算求和。 I { c z ∗ > 0 } \mathbb{I}_{\lbrace c_z^*>0\rbrace} I{cz>0}是指标函数。

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

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

相关文章

Mediabox:年度最佳音视频开发工具

“2023稀土开发者大会”落下帷幕&#xff0c;由稀土掘金社区评选的的掘金技术引力榜重磅出炉&#xff0c;共有22个优秀实践案例上榜&#xff0c;涵盖对技术行业发展有特别贡献的人物、开发工具、开源项目、技术团队和技术方案。其中&#xff0c;阿里云视频云「MediaBox」突出重…

新手杯— 天知地知

0x00 前言 CTF 加解密合集&#xff1a;CTF 加解密合集 0x01 题目 好不容易要到了妹子手机号&#xff0c;却是加密的&#xff0c;怎么办&#xff0c;兄弟们很急&#xff0c;在线等&#xff01;听说妹子是佛山的 加密后的手机号&#xff1a;(86)981935301754格式ctfshow{妹子手…

Redis 7.0.12发布,进行了安全和错误修复

导读Redis 7.0.12发布&#xff0c;进行了安全修复和错误修复。 升级紧迫性 安全性&#xff1a;请参阅下面的安全修复。 安全修复 (CVE-2022-24834)在Redis中执行特制的Lua脚本可能会在cjson和cmsgpack库中触发堆溢出。堆溢出&#xff0c;導致堆損毀及可能的遠端執行程式碼。導…

排序算法 - 快速排序(4种方法实现)

快速排序 快速排序是啥&#xff1f;三数取中&#xff1a;1.挖坑法&#xff08;推荐掌握&#xff09;2.前后指针法&#xff08;推荐掌握&#xff09;3.左右指针法&#xff08;霍尔版本&#xff09;&#xff08;容易出错&#xff09;4.非递归实现 本篇文章的源代码在这&#xff0…

解放研究者:GPT自动化科研

GPT Researcher 是一个自主代理程序&#xff0c;旨在进行多种任务的全面在线研究。 该代理能够生成详细、事实性和公正的研究报告&#xff0c;并提供个性化选项&#xff0c;以便关注相关资源、大纲和教训。受到AutoGPT和最近的Plan-and-Solve论文的启发&#xff0c;GPT Researc…

macd底背离画线指标公式

使用说明&#xff1a; MACD底背离是一种可能预示着价格反转的信号&#xff0c;尤其在价格走势出现下跌趋势时&#xff0c;它可以提供一定程度的参考。然而&#xff0c;作为任何技术指标一样&#xff0c;MACD底背离并不是绝对准确的&#xff0c;可能会产生误导性信号。因此&…

Inno Setup打包winform、wpf程序可判断VC++和.net环境

Inno Setup打包winform、wpf程序可判断VC和.net环境 1、下载Inno Setup2、新建打包文件、开始打包1、新建打包文件2、填写 应用名称、版本号、公司名称、公司官网3、选择安装路径 Custom是指定默认路径、Program Files folder是默认C盘根目录4、选择程序启动exe文件 以及Addfol…

stable diffusion webui mov2mov

手把手教你用stable diffusion绘画ai插件mov2mov生成动画_哔哩哔哩_bilibili手把手教你用stable diffusion绘画ai插件mov2mov生成动画, 视频播放量 14552、弹幕量 3、点赞数 275、投硬币枚数 114、收藏人数 980、转发人数 75, 视频作者 懂你的冷兮, 作者简介 科技改变世界&…

I2S 总线接口

I2S(Inter-IC Sound)总线有时候也写作IIS&#xff0c;I2S是飞利浦公司提出的一种用于数字音频设备之间进行音频数据传输的总线。和I2C、SPI这些常见的通信协议一样&#xff0c;I2S总线用于主控制器和音频CODEC芯片之间传输音频数据。因此&#xff0c;要想使用I2S协议&#xff0…

C#基础--进程和线程的认识

C#基础–进程和线程的认识 一、基础概念 1. 什么是进程? 进程并不是物理的东西,是虚拟出来的,是一种概念。当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。是一种计算机概念,是程序在运…

CSDN新的改变2023.7.19

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

[Java]Set、Map、List常见实现类的特点、使用方法总结

文章目录 1、图谱2、List1、ArrayList1. 特点2. 常见方法 2、LinkedList1、特点2、常见方法 3、Vector1、特点 3、Map1、HashMap1、特点常用方法 2、TreeMap1、特点 3、LinkedHashMap1、特点 4、Set1、HashSet1 、特点2、常用方法 2、LinkedHashSet特点 3、TreeSet1、特点2、使…

智能照明控制系统在体育场馆项目中的应用

摘要&#xff1a;在智能化时代&#xff0c;运用智能技术设计照明已经成为社会发展的关键组成。文章简单介绍了智能体育场馆的含义&#xff0c;然后围绕智能照明系统的基本要求&#xff0c;从灯具选型、灯具配光的光线选择与瞄准、灯具眩光与外溢光控制&#xff1b;基本控制方式…

python编程语言之流程控制

代码块 以冒号作为开始&#xff0c;用缩进来划分作用域&#xff0c;代表一个整体&#xff0c;是一个代码块。所谓的作用域&#xff0c;就是程序运行过程中变量的可调用范围。 一个文件(模块)也可以称为一个代码块。 print(11) print(22) print(33)if True:print(1)print(2)p…

001-Spring简要原理分析-草稿

Bean查找流程 根据类型找找到多个根据名称找 Map<被代理类&#xff0c; List<方法>> 事务 Config 方法代理

使用mybatis-plus分页查询数据

这里使用springboot整合mybatis-plus&#xff0c;需要有springboot的基础才用的顺畅&#xff0c;下面直接开始&#xff0c; 首先导入mybatis-plus依赖&#xff0c; <!-- 使用mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifa…

基于.net6的WPF程序使用SignalR进行通信

之前写的SignalR通信&#xff0c;是基于.net6api&#xff0c;BS和CS进行通信的。 .net6API使用SignalRvue3聊天WPF聊天_signalr wpf_故里2130的博客-CSDN博客 今天写一篇关于CS客户端的SignalR通信&#xff0c;后台服务使用.net6api 。其实和之前写的差不多&#xff0c;主要在…

怎样查看Oracle的sid和service_name

用sysdba身份登录 比如 conn / as sysdba 匿名管理员登陆执行 select name form V$database; 或是执行select * from V$database;不过执行第二个显示的内容太多了不好找自己想要的结果你也可以先用desc V$database;语句查看一下V$database都有什么字段然后选择自己想要的字段…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第二十九天 29/50【数据流中的中位数( 大根堆 + 小根堆 )】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

百度卫星地图切换个性化地图

1.切换 if (mapType.value 1) {mapInstance.setMapType(BMAP_SATELLITE_MAP);//卫星地图} else if (mapType.value 2) {mapInstance.setMapType(BMAP_NORMAL_MAP);//标准地图mapInstance.setMapStyleV2({ styleJson: darkJson });//个性化样式}2.不带路况的卫星地图 mapIn…