目标检测 DAB-DETR(2022)

news2024/10/5 12:18:51

文章目录

  • 前言
  • Query是什么,Detr收敛速度慢的原因是什么?
  • 改进策略
  • 位置先验和模型框架
  • 设置温度系数

前言

本文认为原始的Detr系列论文中:可学习的object queries仅仅是给model预测box提供了锚点(中心点)信息,却没有提供box的宽和高信息。于是本文考虑引入可学习的动态锚框来使model能够适配不同尺寸的物体,深刻地揭示了 Decoder query 的具体意义,并加速网络的收敛。

设计了带有尺度信息的 4d anchor box(x, y, w, h)作为位置先验,并让其利用 Transformer 多层级的结构实现 coarse-to-fine 的迭代更新,因此将其称为 dynamic anchor box。

Query是什么,Detr收敛速度慢的原因是什么?

在这里插入图片描述
在 DETR 中,Decoder的cross attention中的query是由两部分构成的:learnable embeddings(上图的 Learnable Queries,其实是上一层Decoder的输出) 、初始化为全0的非可学习的 embeddings(上图的 Decoder Embeddings,其实是self-Attention的输出)。

Decoder Embeddings 是不可学习的,它通过 cross-attention 与 Encoder 的 key(图像特征) 进行交互,并将得到的注意力施加在 value(来自 Encoder,本质也是图像特征) 上,从而抽取到图像语义,由此可将它视作是图像语义的载体。
于是,Decoder Embeddings 可以对应到内容部分。
至于 Learnable Queries,它是可学习的,通过 cross-attention 与图像特征进行交互(它不断在图像中看某些东西),最终由目标损失反向传播回来获得梯度,那么它理应要学会关注到物体所在的位置。

decoder embeddings对应内容部分,learnable queries对应位置部分

从宏观上来看,Encoder 中,query 是图像特征 + 正余弦位置编码,而在Decoder中的cross attention,query 是初始化为0的 decoder embeddings + learnable queries。

收敛慢的原因是什么?
learnable queries(位置部分) 没有显式地提供位置先验(没有像传统 anchor 那样平铺到图像上、也没有像 Encoder 中那样经历了正余弦位置编码从而得到明确的、可区分的信息),因此,在刚开始进行交叉注意力计算时,大部分 decoder embeddings 中的向量都会被 project 到图像特征的同一个空间位置(因为大家都没有啥区别与约束)。于是,DETR 就势必要经历较多论迭代才能收敛(学得好)。

DETR收敛慢的原因在于没有提供位置先验信息

在DAB-DETR中,通过位置先验为每个查询(query)分配一个特定位置的先验信息,这个位置先验会通过正弦位置编码等方式为每个查询提供位置信息,并通过 Transformer 多层级的结构进行不断迭代更新,使得模型能够更好地理解特征图上的位置关系。

改进策略

作者可视化了Decoder中Query部分的可学习查询learnable queries与Decoder中Key部分的位置嵌入positional embeddings间的注意力权重:
在这里插入图片描述
可以看到:

DETR的可学习查询没有表现出很优秀的定位能力,主要有两个不好的表现:多模式(multiple modes)和注意力权重几乎一致(nearly uniform attention weights)。多模式指同一个查询所产生的关注点不只一个,如上面两个子图所示;注意力权重几乎一致就是说希望被关注的或不希望被关注的区域面积过大,没有聚焦(不是一个点x,y),如下面两个子图所示。因此,可以确定主要问题出在可学习查询没有表达物体位置信息上。

Conditional DETR引入了x,y中心点坐标来作为先验信息进行训练,于是产生了这种类高斯的注意力权重图,每个查询所关注的区域虽然个数都是一个并且位置不同,但是其关注区域的大小基本是一致的,不利于不同尺寸多物体的检测。

为了解决上面的问题,Deformable Detr在引入位置信息( x , y )的基础上,又引入了宽高信息( w , h ),并提出可以对宽高进行调制的交叉注意力策略。效果上图(c)所示,每个查询所关注的区域位置、大小均有差异。

位置先验和模型框架

DAB-DETR与DETR的主要差别集中在Decoder部分(DABDeformable-DETR作为强化版在附录里面被提到),DAB-DETR先用nn.Embedding初始化了300个可学习的( x , y , w , h ) ,维度是[4,300] ,然后经过位置编码将位置信息搞成512维(实际是[512,300]),其中前128+128维分别表示x,y的坐标信息;后128+128分别表示w,h信息(Deformable DETR的查询个数也是300,而不是DETR中的100)。

DAB-DETR用uniform(0, 1)将( x , y ) 调整成了均匀分布,并消除了梯度(注意( w , h ) 的梯度没有消除)。之后由Width & Height Modulated Multi-Head Cross-Attention的输出再经过MLP得到预测偏移量( Δ x , Δ y , Δ w , Δ h ) ,来逐层修正( x , y , w , h ) 。

取消xy梯度保留wh梯度的原因:在训练过程中,如果x和y的坐标直接作为网络的一部分参与反向传播,模型可能会过度学习训练样本中的特定位置信息,导致过拟合,取消了xy的梯度,相当于每来一张图我的位置先验都是随机地均匀分布在图中各个位置,不会因为偏好于训练集中目标物体的位置分布而影响到模型在其它数据上的泛化性。宽度和高度(w, h)的信息仍然保留了梯度。这是因为宽度和高度的预测需要与特征图中的上下文信息相结合,以便模型能够学习如何根据输入特征来调整目标框的尺寸。通过保留(w, h)的梯度,模型可以根据特征图的内容来预测合适的尺寸,而不仅仅是依赖于位置信息。
在这里插入图片描述
DAB-DETR的Decoder的详细结构图如下:
在这里插入图片描述
在这里插入图片描述
对于交叉注意力模块:

  1. Value也是编码器输出的图像特征 ,定义为 F x , y F_{x,y} Fx,y
  2. Key部分包括编码器输出的图像特征 F x , y F_{x,y} Fx,y和位置编码PE( x q x_q xq, y q y_q yq) (仅编码(x,y)),DETR是将图像特征和位置编码相加,DAB-DETR却是将两者拼接。
  3. Query部分包括自注意力模块的输出即用于表达图像内容信息的维度为D的 C q C_q Cq,与中心坐标( x , y ) 对应的D维位置编码PE( x q x_q xq, y q y_q yq) ,还有进入自注意力模块之前的 C q C_q Cq再经过MLP加权位置编码。三者通过concat拼接在一起。

交叉注意模块的Query、Key、Value分别如下:
在这里插入图片描述
此外,在交叉注意力模块DAB-DETR还引入了尺寸(宽度和高度)调制功能,“宽和高调制交叉注意力模块”:在计算 P k P_k Pk P q P_q Pq的权重相似度时引入了一个(1/w,1/h)的一个尺度变换操作:
在这里插入图片描述

设置温度系数

在这里插入图片描述

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

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

相关文章

SpringBoot环境下古典舞交流平台的快速开发

第三章 系统分析 3.1 可行性分析 需要使用大部分精力开发的古典舞在线交流平台为了充分降低开发风险,特意在开发之前进行可行性分析这个验证系统开发是否可行的步骤。本文就会从技术角度,经济角度,还有操作角度等进行综合阐述。 3.1.1技术可行…

Python案例--三数排序

一、引言 在信息爆炸的时代,我们每天都会接触到大量的数据。无论是工作中的报表、学习中的数据集,还是日常生活中的购物清单,数据的有序性对于提高效率和决策质量都至关重要。排序算法作为数据处理的基础工具,其重要性不言而喻。…

日记学习小迪安全27

感觉复制粘贴没有意思,而且还有点浪费时间,主要是学习,不是复制,那就复制别人的吧 第27关就参考这篇文章吧,以下大部分内容都是参考以下文章(侵权删除) 第27天:WEB攻防-通用漏洞&a…

芯片录-低压差线性稳压器AZ1084D-ADJE1失效记录与原理分析

背景 最近主板坏了,现象是主机不停重启,USB设备LED灯一会儿亮,一会儿灭。经过一些分析和定位,通过测温发现主板上AZ1084D-ADJE1芯片高达91摄氏度,进一步测量该芯片的输出引脚和接地引脚短路,初步推测某些原…

Shell-使用函数

在 Shell 脚本中,函数是由一段代码定义的,可以被重复调用。Shell 函数的定义和调用相对简单,并且它支持参数传递和返回值。错误处理在 Shell 中也非常重要,通常通过检查返回的状态码来判断是否有错误发生。 1.Shell 函数的定义和…

构建高效招聘流程:Spring Boot大学生就业系统

1系统概述 1.1 研究背景 如今互联网高速发展,网络遍布全球,通过互联网发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传…

28 基于51单片机的两路电压检测(ADC0808)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,通过ADC0808获取两路电压,通过LCD1602显示 二、硬件资源 基于KEIL5编写C代码,PROTEUS8.15进行仿真,全部资源在页尾,提供…

【中间件学习】Git的命令和企业级开发

一、Git命令 1.1 创建Git本地仓库 仓库是进行版本控制的一个文件目录。我们要想对文件进行版本控制,就必须创建出一个仓库出来。创建一个Git本地仓库对应的命令是 git init ,注意命令要在文件目录下执行。 hrxlavm-1lzqn7w2w6:~/gitcode$ pwd /home/hr…

Yocto - 使用Yocto开发嵌入式Linux系统_06 掌握Bitbake工具

Grasping the BitBake Tool 在上一章中,我们了解了元数据、元数据集合概念以及 conf/layer.conf 的重要性。在本章中,我们将更深入地研究元数据,了解配方如何相互依赖,并了解 BitBake 如何处理依赖关系。 In the previous chapter…

Python机器视觉:01- 利用列表和切片操作 - 做一个弧线和图片相交的mask区域

前言: Python的列表处理,在机器视觉中经常被用到,这里结合基本的概念机器视觉实践案例,成文如下: 本身将实现一个,弧线的mask填充:这个mask是我的一个天文项目的应用,目的在于将月…

冥想第一千三百零一天(1301)

1.今天上午溪溪和小侄子写作业,我带着桐桐去了惠济区的裕华广场永辉,给家人买了好吃的,下午4点半左右去了妈妈朋友家里摘石榴。 2.感谢父母,感谢朋友,感谢家人,感谢不断进步的自己。

JavaWeb 14.详解TCP协议的三次握手和四次挥手

目录 一、TCP协议与UDP协议 二、TCP协议 1、建立连接(三次握手) 过程 2、断开连接(四次挥手) 过程 国庆节快乐! 一文详解TCP协议中的三次握手建立连接和四次挥手断开连接 —— 24.10.3 一、TCP协议与UDP协议 tcp协议与…

【可答疑】基于51单片机的智能台灯(含仿真、代码、报告、演示视频等)

✨哈喽大家好,这里是每天一杯冰美式oh,985电子本硕,大厂嵌入式在职0.3年,业余时间做做单片机小项目,有需要也可以提供就业指导(免费)~ 🐱‍🐉这是51单片机毕业设计100篇…

MATLAB中minres函数用法

目录 语法 说明 示例 线性系统的迭代解 使用指定了预条件子的 minres 提供初始估计值 使用函数句柄代替数值矩阵 minres函数的功能是求解线性系统 - 最小残差法。 语法 x minres(A,b) x minres(A,b,tol) x minres(A,b,tol,maxit) x minres(A,b,tol,maxit,M) x mi…

CPU性能篇-平均负载-Day 01

1. 平均负载 1.1 什么是平均负载 平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。 1.1.1 什么是可运行状态 指正在使用 CPU 或者正在等待 CPU 的进程&#xff…

如何轻松查看你的 Windows 版本? 检查电脑Windows版本号五种方法

很多朋友发现windows拥有许多版本,比如如家庭版、企业版、专业版和教育版等,而每个版本都有相应的版本号,那么,怎么知道电脑windows版本呢?下面分享五种查看方法 自 1985 年首次推出以来,Windows 操作系统…

IntelliJ IDEA 2024.2 新特性概览

文章目录 1、重点特性:1.1 改进的 Spring Data JPA 支持1.2 改进的 cron 表达式支持1.3 使用 GraalJS 作为 HTTP 客户端的执行引擎1.4 更快的编码时间1.5 K2 模式下的 Kotlin 性能和稳定性改进 2、用户体验2.1 改进的全行代码补全2.2 新 UI 成为所有用户的默认界面2.3 Search E…

利用CRITIC客观权重赋权法进行数值评分计算——算法过程

1、概述 ‌CRITIC客观评价法是一种基于指标的对比强度和指标之间的冲突性来确定指标客观权数的方法。‌ 该方法适用于判断数据稳定性,并且适合分析指标或因素之间有着一定的关联的数据‌。 CRITIC方法的基本原理包括两个主要概念:对比强度和指标之间的…

Linux学习笔记(六):服务管理,监控,RPM包管理,yum包管理工具,Linux启动管理,网络管理

Linux学习笔记(六):服务管理,监控,RPM包管理,yum包管理工具,Linux启动管理,网络管理 1. 服务管理 1.1 service 启动/停止服务 service 命令是最常用的服务管理工具之一&#xff0c…

介质的分类

在有损的麦克斯韦方程中等效介电常数如下 所以理想介质的介电常数接近于实数,导体介电常数接近于复数 介质分类中不规定εμσ是实数还是复数,带入这个麦克斯韦方程组就行。不过在有损介质的电磁波公式推导中老师做出εμσ是实数的假设