GFLv2 论文学习

news2024/11/29 10:57:02

1. 解决了什么问题?

预测定位质量对于目标检测很重要,在 NMS 时它能提供准确的得分排序,提高模型的表现。现有方法都是通过分类或回归的卷积特征来预测定位质量得分。

2. 提出了什么方法?

受到 GFLv1 的 general distribution 启发,本文提出基于边框的 { l , r , t , b } \lbrace l,r,t,b\rbrace {l,r,t,b}四个参数的分布来学习定位质量预测。边框分布如果是尖锐的,则其定位质量就高。边框分布的统计和真实定位质量之间具有紧密的关系,于是作者设计了 distribution-guided quality predictor,它学习每条预测边离散的概率分布。下图(b) 反映的是预测框 general distribution 的最大值(四条边的均值)和真实定位质量(IoU)之间的关系。

在这里插入图片描述

2.1 GFLv1

提出了分类-IoU 联合表征,减轻定位质量预测和分类预测在训练和推理时不一致的问题。给定一个类别为 c ∈ { 1 , 2 , . . . , m } c\in \lbrace 1,2,...,m\rbrace c{1,2,...,m}的目标,GFLv1 使用分类分支输出类别与 IoU 的联合表征 J = [ J 1 , J 2 , . . . , J m ] \mathbf{J}=\left[J_1,J_2,...,J_m\right] J=[J1,J2,...,Jm],满足:
J i = { IoU ( b p r e d , b g t ) , if i = c 0 , otherwise J_i = \left\{ \begin{array}{ll} \text{IoU}(b_{pred}, b_{gt}),\quad\text{if}\quad i=c \\ 0,\quad\quad\quad\quad\quad\quad \text{otherwise} \end{array} \right. Ji={IoU(bpred,bgt),ifi=c0,otherwise

边框表征的 General Distribution

现有的检测器通常使用 Dirac Delta 分布建模边框回归问题: y = ∫ − ∞ + ∞ δ ( x − y ) x d x y=\int_{-\infty}^{+\infty}\delta(x-y)x \mathop{dx} y=+δ(xy)xdx。GFLv1 提出的 General Distribution P ( x ) P(x) P(x)将每条边表示为 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。再从连续域转化为离散域 [ y 0 , y 1 , . . . , y i , y i + 1 , . . . , y n − 1 , y n ] \left[y_0,y_1,...,y_i,y_{i+1},...,y_{n-1},y_n \right] [y0,y1,...,yi,yi+1,...,yn1,yn],等间距为 Δ = y i + 1 − y i , ∀ i ∈ { 0 , 1 , . . . , n − 1 } \Delta=y_{i+1}-y_i,\forall i\in \lbrace0,1,...,n-1\rbrace Δ=yi+1yi,i{0,1,...,n1}。根据离散分布的性质 ∑ i = 0 n P ( y i ) = 1 \sum_{i=0}^n P(y_i)=1 i=0nP(yi)=1 y ^ \hat{y} y^的预测回归值为:

y ^ = ∑ i = 0 n P ( y i ) y i \hat{y}=\sum_{i=0}^n P(y_i)y_i y^=i=0nP(yi)yi
如上图© 和 (d) 所示,与 Dirac Delta 分布相比,General Distribution 能更好地反映边框的预测质量。

2.2 GFLv2

Decomposed Classification-IoU Representation

尽管联合表征解决了目标分类和定位质量预测在训练和推理时不一致的问题,但它仍有缺陷,因为只用了分类分支预测的联合表征。本文方法则直接利用分类分支( C \mathbf{C} C)和回归分支( I I I)的信息:
J = C × I \mathbf{J}=\mathbf{C}\times I J=C×I

C = [ C 1 , C 2 , . . . , C m ] , C i ∈ [ 0 , 1 ] \mathbf{C}=\left[C_1,C_2,...,C_m\right],C_i\in \left[0,1\right] C=[C1,C2,...,Cm],Ci[0,1]表示 m m m个类别的分类表征。 I ∈ [ 0 , 1 ] I\in \left[0,1\right] I[0,1]是一个标量,表示 IoU 表征。

尽管 J \mathbf{J} J拆分为两个部分,但在训练和推理时只用 J \mathbf{J} J C \mathbf{C} C来自于分类分支, I I I来自于回归分支的 DGQP。训练时 J \mathbf{J} J用 QFL 进行监督,推理时直接作为 NMS 的得分使用。

DGQP

DGQP 将学到的 general distribution P \mathbf{P} P输入一个子网络,得到预测的 IoU 标量 I I I,辅助生成 J \mathbf{J} J。用位置到目标框四条边的相对偏移量作为回归目标,由 general distribution 表示。用 { l , r , t , b } \lbrace l,r,t,b\rbrace {l,r,t,b}表示四条边,用 P w = [ P w ( y 0 ) , P w ( y 1 ) , . . . , P w ( y n ) ] , w ∈ { l , r , t , b } \mathbf{P}^w=\left[P^w(y_0),P^w(y_1),...,P^w(y_n)\right], w\in \lbrace l,r,t,b\rbrace Pw=[Pw(y0),Pw(y1),...,Pw(yn)],w{l,r,t,b}表示各边的离散概率。

如上图所示,学到的分布与最终检测框的质量是高度相关的,可以用一些统计数字表示 general distribution 的平坦程度。这些统计特征与定位质量高度相关,能降低训练的难度、提升预测的质量。从每个分布向量 P w \mathbf{P}^w Pw中选取 top-k 个值及其均值,将它们 concat 产生基础统计特征 F ∈ R 4 ( k + 1 ) \mathbf{F}\in \mathbb{R}^{4(k+1)} FR4(k+1)

F = Concat ( { Topkm ( P w ) ∣ w ∈ { l , r , t , b } } ) \mathbf{F}=\text{Concat}(\lbrace \text{Topkm}(\mathbf{P}^w) | w\in \lbrace l,r,t,b\rbrace\rbrace) F=Concat({Topkm(Pw)w{l,r,t,b}})

Topkm ( ⋅ ) \text{Topkm}(\cdot) Topkm()表示 top-k 个值和均值的联合操作。 Concat ( ⋅ ) \text{Concat}(\cdot) Concat()表示通道 concat。选取 top-k 个值和均值作为输入统计有两个好处:

  • 因为 P w \mathbf{P}^w Pw是固定的, ∑ i = 0 n P w ( y i ) = 1 \sum_{i=0}^n P^w(y_i)=1 i=0nPw(yi)=1,top-k 个值和均值基本上反映了分布的平坦程度:值越大,分布越尖锐;值越小,分布越平坦。
  • 如下图,top-k 值和均值能让统计特征在分布域内,对相对偏移量不敏感,表征就不易受目标尺度的影响,更加鲁棒。

[图片]

将 general distribution 的统计特征 F \mathbf{F} F作为输入,作者设计了一个微型网络 F ( ⋅ ) \mathcal{F}(\cdot) F()来预测 IoU 质量得分。该网络有 2 个全连接层,后面分别跟着 ReLU \text{ReLU} ReLU Sigmoid \text{Sigmoid} Sigmoid I I I的计算如下:

I = F ( F ) = σ ( W 2 δ ( W 1 F ) ) I=\mathcal{F}(\mathbf{F})=\sigma(\mathbf{W}_2 \delta(\mathbf{W}_1 \mathbf{F})) I=F(F)=σ(W2δ(W1F))

δ , σ \delta,\sigma δ,σ分别是 ReLU \text{ReLU} ReLU Sigmoid \text{Sigmoid} Sigmoid函数。 W 1 ∈ R p × 4 ( k + 1 ) \mathbf{W}_1\in \mathbb{R}^{p\times 4(k+1)} W1Rp×4(k+1) W 2 ∈ R 1 × p \mathbf{W}_2 \in \mathbb{R}^{1\times p} W2R1×p。实验时, k = 4 k=4 k=4表示 top-k 的参数, p = 64 p=64 p=64是隐藏层的通道数。

GFLv2 的整体结构如下图所示。DGQP 非常轻量。它只增加了几千个参数,对于模型 ResNet-50 和 FPN,DGQP 的参数量只占 ∼ 0.003 % \sim0.003\% 0.003%,不会降低训练和推理速度。

在这里插入图片描述

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

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

相关文章

端口复用与重映射

端口复用和重映射 STM32F1有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。 大家都知道,MCU都有串口…

Linux中的ldd命令使用方法总结

ldd(List Dynamic Dependencies)命令是Linux系统中的一个工具 它用于打印出一个可执行文件所依赖的共享库文件(动态链接库) 当你运行ldd命令,并跟上一个可执行文件作为参数,它会列出该可执行文件所需要的…

Spingboot 整合netty-socket.io

Spingboot 整合netty-socket.io 依赖 注意版本号&#xff0c;不然client版本不对的话也是连不上的 https://github.com/mrniko/netty-socketio ​ <dependency><groupId>com.corundumstudio.socketio</groupId><artifactId>netty-socketio</art…

使用TensorFlow训练深度学习模型实战(下)

大家好&#xff0c;本文接TensorFlow训练深度学习模型的上半部分继续进行讲述&#xff0c;下面将介绍有关定义深度学习模型、训练模型和评估模型的内容。 定义深度学习模型 数据准备完成后&#xff0c;下一步是使用TensorFlow搭建神经网络模型&#xff0c;搭建模型有两个选项…

年轻小伙爆肝ARST

关于 ARTS 的释义 —— 每周完成一个 ARTS&#xff1a; ⭐️● Algorithm: 每周至少做一个 LeetCode 的算法题 ⭐️● Review: 阅读并点评至少一篇技术文章 ⭐️● Tips: 学习至少一个技术技巧 ⭐️● Share: 分享一篇有观点和思考的技术文章 希望通过此次活动能聚集一波热爱技…

GitLab 删除项目

1.点击头像 2.点击Profile 3.选择要删除的项目点进去 4.settings-general-Advances-expand 5.然后在弹出框中输入你要删除的项目名称即可

【WEB开发】Java获取高德POI(关键词搜索法)实现数据展示

前言 该篇文章是关键词搜索法获取高德poi&#xff0c;但鉴于无法突破200条记录的上限&#xff0c;所以采用了本方法进行区/县循环检索。开始之前我们首先需要明白一些常识 poi是兴趣点&#xff0c;它本身除了经纬度&#xff0c;还记录了一些信息&#xff0c;如名称、地址、联…

mirror功能

实现方式 mirror逻辑的工作阶段&#xff1a; ngx在log phase之后&#xff08;在ngx_http_free_request处调用&#xff09;已完成向client端返回response&#xff0c;在log phase之后完成close connection&#xff08;短链接&#xff09;&#xff0c;在该阶段处理mirror逻辑不…

【Redis】高级篇: 一篇文章讲清楚Redis的单线程和多线程

目录 面试题 Redis到底是多线程还是单线程&#xff1f; 简单回答 详解 Redis的“单线程” Redis为什么选择单线程&#xff1f; 后来Redis为什么又逐渐加入了多线程特性&#xff1f; Redis为什么快&#xff1f; 回答 IO多路复用 Unix网络编程的5种IO模型 主线程和IO…

温湿度传感器的工作原理及应用领域你了解多少呢?

传感器是一种将物理量转换为电信号的装置&#xff0c;用于检测温度、湿度、压力、光强、震动等物理量。它能够将检测到的物理量转换为电信号&#xff0c;并输送到计算机、单片机等设备进行分析和处理。生产生活中&#xff0c;不同的场所和环境对温湿度有着特殊要求&#xff0c;…

看完即会,抓取微信小程序数据包教程

在给VIP学员答疑的时候&#xff0c;有很多小伙伴问到能不能抓取到微信小程序数据呢&#xff1f;答案当然是肯定的&#xff0c;通过Fiddler或者Charles这些主流的抓包工具都可以抓得到&#xff0c;在IOS平台抓取微信小程序和https请求都是一样的设置&#xff0c;接下来给大家通过…

【代码随想录day20】验证二叉搜索树

题目 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 思路 最开始想简单…

Linux 学习记录58(ARM篇)

Linux 学习记录58(ARM篇) 本文目录 Linux 学习记录58(ARM篇)一、GIC相关寄存器1. 系统框图2. 中断号对应关系 二、GICD寄存器1. GICD_CTLR2. GICD_ISENABLERx3. GICD_IPRIORITYRx4. GICD_ITARGETSRx5. GICD_ICPENDRx 三、GICC寄存器1. GICC_PMR2. GICC_CTLR3. GICC_IAR4. GICC_…

JAVA面试总结-Redis篇章(五)——持久化

Java面试总结-Redis篇章&#xff08;五&#xff09;——持久化 1.RDBRDB全称Redis Database Backup file (Redis数据备份文件)&#xff0c;也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后&#xff0c;从磁盘读取快照文件&#x…

持续贡献开源力量,棱镜七彩加入openKylin

近日&#xff0c;棱镜七彩签署 openKylin 社区 CLA&#xff08;Contributor License Agreement 贡献者许可协议&#xff09;&#xff0c;正式加入openKylin 开源社区。 棱镜七彩成立于2016年&#xff0c;是一家专注于开源安全、软件供应链安全的创新型科技企业。自成立以来&…

短视频账号矩阵系统源码开发部署路径

一、短视频批量剪辑的开发逻辑算法 1.视频剪辑之开发算法 自己研发视频剪辑是指通过对视频素材进行剪切、调整、合并等操作&#xff0c;利用后台计算机算法&#xff0c;进行抽帧抽组抽序进行排列以达到对视频内容进行修改和优化的目的。自己研发的视频剪辑工具可以通过后台码…

系统集成项目管理工程师挣值分析笔记大全

系统集成项目管理工程师挣值分析笔记大全 挣值分析是一种项目管理技术&#xff0c;用于量化和监控项目绩效。它通过比较计划值&#xff08;PV&#xff09;、实际成本&#xff08;AC&#xff09;和挣值&#xff08;EV&#xff09;三个参数来评估项目的进展情况和成本绩效。 挣值…

系统架构设计师-软件架构设计(3)

目录 一、软件架构风格&#xff08;其它分类&#xff09; 1、闭环控制结构&#xff08;过程控制&#xff09; 2、C2风格 3、MDA&#xff08;模型驱动架构 Model Driven Architecture&#xff09; 4、特定领域软件架构&#xff08;DSSA&#xff09; 4.1 DSSA基本活动及产出物…

《CUDA C++ Programming Guide》第一章 CUDA介绍

第一章 CUDA介绍 1.1 使用GPUs的好处 在相同的价格和功耗范围内&#xff0c;图形处理器 GPU 比 CPU 提供了更高的指令吞吐量和内存带宽, 许多应用程序利用这些更高的功能在 GPU 上比在 CPU 上运行得更快。相比较其他计算设备&#xff0c;如 FPGA&#xff0c;也是非常节能的&a…

协议和模型

1 规则 1.1 通信基础知识 不同网络的规模、形状和功能都存在很大差异。它们可以复杂到通过互联网来连接设备&#xff0c;也可以简单到直接将两台计算机用一根电缆连接&#xff0c;或者是介于这两种之间。然而&#xff0c;只是完成终端设备之间的有线或无线物理连接并不足以实…