GFLv2 论文学习

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%,不会降低训练和推理速度。

在这里插入图片描述

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

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

相关文章

Mysql 主从复制、读写分离

目录 一、前言: 二、主从复制原理 2.1 MySQL的复制类型 2.2 MySQL主从复制的工作过程 2.2.1 MySQL主从复制延迟 2.3 MySQL 三种数据同步方式 2.3.1、异步复制(Async Replication) 2.3.2、同步复制(Sync Replication&#…

【基于CentOS 7 的iscsi服务】

目录 一、概述 1.简述 2.作用 3. iscsi 4.相关名称 二、使用步骤 - 构建iscsi服务 1.使用targetcli工具进入到iscsi服务器端管理界面 2.实现步骤 2.1 服务器端 2.2 客户端 2.2.1 安装软件 2.2.2 在认证文件中生成iqn编号 2.2.3 开启客户端服务 2.2.4 查找可用的i…

微服务远程调用openFeign简单回顾(内附源码示例)

目录 一. OpenFeign简介 二. OpenFeign原理 演示使用 provider模块 消费者模块 配置全局feign日志 示例源代码: 一. OpenFeign简介 OpenFeign是SpringCloud服务调用中间件,可以帮助代理服务API接口。并且可以解析SpringMVC的RequestMapping注解下的接口&#x…

在拦截器中使用redis报错空指针

问题 当在拦截器中使用 redis 时,获取不到 RedisTemplate 对象 原因 拦截器在SpringContext初始化之前就执行了,即Bean初始化之前它就执行了,所以肯定是无法获取SpringIOC容器中的内容的 解决 提前实例化拦截器 在配置类里面先实例化拦截…

学C的第三十天【自定义类型:结构体、枚举、联合】

相关代码gitee自取:C语言学习日记: 加油努力 (gitee.com) 接上期: 学C的第二十九天【字符串函数和内存函数的介绍(二)】_高高的胖子的博客-CSDN博客 1 . 结构体 (1). 结构体的基础知识: 结构…

怎么学习Java网络编程? - 易智编译EaseEditing

学习Java网络编程是掌握Java语言重要的一部分,它使得你能够开发网络应用、客户端/服务器应用以及与远程服务进行交互。以下是学习Java网络编程的一些建议: 学习基本的网络概念: 首先,你需要了解计算机网络的基本概念&#xff0c…

foreverlasting and fried-chicken hdu7293

Problem - 7293 题目大意&#xff1a;给出一个n个点&#xff0c;m条边的图&#xff0c;问其中包含了几个下面这样的子图 1<n<1000; 思路&#xff1a;我们要找两个点u,v&#xff0c;他们至少有4个公共点&#xff0c;且至少有一个点的度数至少为6&#xff0c;其中还要判断…

65英寸OLED透明屏的显示效果出色吗?

65英寸OLED透明屏是一种新型的显示技术&#xff0c;它采用有机发光二极管&#xff08;OLED&#xff09;作为显示元件&#xff0c;具有高亮度、高对比度、快速响应和广视角等优点。 与传统的液晶显示屏相比&#xff0c;OLED透明屏具有更高的透明度和更好的显示效果。 OLED透明屏…

Emacs之改造最快文本搜索工具ripgrep(一百一十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

第三大的数

414、第三大的数 class Solution {public int thirdMax(int[] nums) {Arrays.sort(nums);int tempnums[0];int ansnums[0];int count 0;// if(nums.length<3){// return nums[nums.length-1];// }// else {for(int inums.length-1;i>0;i--){if (nums[i]>nums[i…

嵌入式_GD32看门狗配置

嵌入式_GD32独立看门狗配置与注意事项 文章目录 嵌入式_GD32独立看门狗配置与注意事项前言一、什么是独立看门狗定时器&#xff08;FWDGT&#xff09;二、独立看门狗定时器原理三、独立看门狗定时器配置过程与注意事项总结 前言 使用GD3单片机时&#xff0c;为了提供了更高的安…

Jenkins+Docker 实现一键自动化部署项目

1.安装Jenkins mkdir /docker/jenkins # 新建Jenkins工作目录 docker pull jenkins/jenkins:lts # 拉取Jenkins镜像ls -nd /docker/Jenkins # 查看目录归属ID chown -R 1000:1000 /docker/jenkins # 赋予权限注&#xff1a;因为Jenkins容器里的用户是Jenkins&#xff0c;…

C# Modbus TCP上位机测试

前面说了三菱和西门子PLC的上位机通信&#xff0c;实际在生产应用中&#xff0c;设备会有很多不同的厂家生产的PLC&#xff0c;那么&#xff0c;我们就需要一种通用的语言&#xff0c;进行设备之间的通信&#xff0c;工业上较为广泛使用的语言之一就是Modbus。 Modbus有多种连…

2023年基准Kubernetes报告:6个K8s可靠性失误

云计算日益成为组织构建应用程序和服务的首选目的地。尽管一年来经济不确定性的头条新闻主要集中在通货膨胀增长和银行动荡方面&#xff0c;但大多数组织预计今年的云使用和支出将与计划的相同&#xff08;45%&#xff09;&#xff0c;或高于计划的&#xff08;45%&#xff09;…

MIT 6.830数据库系统 -- lab four

MIT 6.830数据库系统 -- lab four 项目拉取引言事务、锁 & 并发控制事务ACID特性两阶段锁 Recovery and Buffer ManagementGranting Locks(授予锁)练习1 Lock Lifetime练习2 Implementing NO STEAL练习3 事务练习4 死锁和中止练习5 项目拉取 原项目使用ant进行项目构建&am…

微服务系列(1)-who i am?

微服务系列&#xff08;1&#xff09;-我是谁 应用架构的演化 简单来说系统架构可以分为以下几个阶段&#xff1a;复杂的臃肿的单体架构-SOA架构-微服务 单体架构及其所面临的问题 在互联网发展初期&#xff0c;用户数量少&#xff0c;流量小&#xff0c;硬件成本高。因此…

96、Kafka中Zookeeper的作用

Kafka中zk的作用 它是一个分布式协调框架。很好的将消息生产、消息存储、消息消费的过程结合在一起。在典型的Kafka集群中, Kafka通过Zookeeper管理集群配置,选举leader,以及在Consumer Group发生变化时进行rebalance。Producer使用push模式将消息发布到broker,Consumer使用…

leetcode做题笔记37

编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&#xff09; 数独部分…

IDEA导入微服务项目后自动将微服务展示在service面板中

有时候&#xff0c;不会自动将微服务展示在service面板中。 添加service面板&#xff1a; service面板&#xff1a; 更新所有maven&#xff0c;就可以自动将微服务展示在service面板中。

小程序----配置原生内置编译插件支持sass

修改project.config.json配置文件 在 project.config.json 文件中&#xff0c;修改setting 下的 useCompilerPlugins 字段为 ["sass"]&#xff0c; 即可开启工具内置的 sass 编译插件。 目前支持三个编译插件&#xff1a;typescript、less、sass 修改之后可以将原.w…