视觉大模型--deter的深入理解

news2025/1/17 17:52:57

但对于transformer用于目标检测领域的开创性模型,该模型言简意赅,但是但从论文理解,有很多细节都不清楚,尤其是解码器的query和二分图匹配(Bipartite Matching)和匈牙利算法(Hungarian Algorithm)相关,本文将根据代码详细介绍这一部分

原理

 大家最常见的就是上面两幅图,这也是deter模型的整体架构,原理大家可以参考网络其他问题,有很多,我这里就不细讲了, 但是我会突出讲解,整个过程到底是什么样。

解码器的query

 

  • Detection Transformer检测器是queries set(查询集合)到目标对象(object)的映射
  • queries分为内容查询query和一一对应位置查询query_pos,每组queries对应一个预测结果(类别和框的位置)
  • queries set的数量通常为100、300或900,远远少于之前密集预测(dense prediction)的工作
  • queries set与经过Backbone、Neck和Encoder提取的图片特征在Decoder中交互,并经过FFN输出结果
  • NMS-Free算法,输出结果(set prediction)无需NMS后处理。只有和label等量的queries会预测并直接输出目标的类别和框的位置,其余的gueries预测的结果为“没有目标”(no obiject) 

 解码器第一层:

 可以看到query进入self-Attention时全是0零向量且不具备学习权重,query_pos初始化为:

# posequery初始化
self.query_embedding = nn.Embedding(self.num_queries, self.embed_dims)

# forward使用,每经过解码器的一层transformer层都会获取前一层的位置query的权重,这样位置随着每层训练都会进行更新,但是query在第一层为全0,在第一层结束后既不是全0向量了,他是前一层的输出
query_pos = self.query_embedding.weight # 这个是可学习的,每次训练都会更新参数
        # (num_queries, dim) -> (bs, num_queries, dim)
        query_pos = query_pos.unsqueeze(0).repeat(batch_size, 1, 1)
        query = torch.zeros_like(query_pos) # 这个是不可学习,每次推理直接为0,相当于内容embeding

总结,从图中和代码可以发现,位置query即query_pos 是可学习的,除了第一batch训练的第一层的权重是随机初始化的,其他层的query_pose都是更新学习的,而内容query即query每次迭代训练输入都是全0开始,然后经过第一层后就不在是全0了,而是计算出了值即内容,然后将当前层输出的作为下一层输入的query。通俗来讲,deter的解码器的query由两部分组成,分别为query_pos和query_content(即图片的self.self_attn(query=query,...)),此时query_pos负责预测位置,query_content负责关注图片的内容,也就是为什么只对query_pos进行梯度更新,因为这是需要学习,才能对位置越来越准,而query_content是最终的计算结果集对内容特征的输出,这不需要更新,因为决定内容输出的不是query_content,而是key和value,因此只需要更新输入计算的权重即可,这就是本文的一大核心观点,后续很多都模型都是对这里进行修改。

 

loss计算和权重更新

 从上面我们可以看到,解码器的每层输出的query都保留了,这为后面预测类别和坐标做准备,因为每层都进行预测和计算loss

 从上面代码可以发现,hidden_status就是记录的解码器的每层输出,同时每层的输出都是100个query,每个query是256维度的向量,然后每层每个query通过全连接层进行预测类别和坐标信息,而且每层的全连接层是相同的,即分别进行分类和回归坐标的全连接层是一样的。

后续拿到预测的分类数据和坐标数据后,先对坐标数据进行转换,因为上面的shape【6,2,100,4】中的4代表cx、cy、w、h,需要转为xyxy即左上角和右下角的点,同时把归一化坐标转为绝对坐标,这样才能通过计算预测结果和标签数据的1对1匹配。

分类代价:

 

 上面的三个代价计算结果都会存储到cost_list中,然后对该代价进行匈牙利配备后去最小的代价分配,进而确定使用哪个query进行预测前景,其他query预测背景

 通过上面的匈牙利匹配我们找到了使用哪个query预测,后续就是使用这个query的分类预测结果和位置预测结果和对应的标签计算损失函数了:

其他的损失例如位置损失和iou损失同样的进行计算即可:

 以上就是deter的主要内容。

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

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

相关文章

我认识的Git-Git工作流

WorkFlow 的字面意思,工作流,即工作流程。工作流不涉及任何命令,因为它就是一个规则,完全由开发者自定义,并且自遵守。 集中式工作流 集中式工作流以中央仓库作为项目所有修改的单点实体。相比svn缺省的开发分支trunk…

基于深度学习的植物叶片病害识别系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要:本文深入研究了基于YOLOv8/v7/v6/v5的植物叶片病害识别系统,核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法,进行性能指标对比;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码,及基于Strea…

FA模型切换Stage模型配置文件的差异app和deviceConfig的切换

FA模型切换Stage模型配置文件的差异 FA模型应用在 config.json文件 中描述应用的基本信息,一个应用工程中可以创建多个Module,每个Module中都有一份config.json文件。config.json由app、deviceConfig和module三部分组成,app标签用于配置应用…

捷途山海T2预售正式开启,起售价18.49万元,品质与价值并存!

捷途汽车于4月2日宣布,旗下全新车型山海T2正式启动预售。新车预售价格区间为18.49万元-21.69万元。这款定位为“旅行越野超混SUV”的新车,以其独特的方盒子造型和强大的混动系统,吸引了众多消费者的关注。 山海T2是捷途山海系列的第二款产品&…

JS详解-函数柯里化

简介: 柯里化(Currying)是一种关于函数的高阶技术。柯里化是一种函数的转换,它是指将一个函数从可调用的 f(a, b, c) 转换为可调用的 f(a)(b)(c)。柯里化不会调用函数。它只是对函数进行转换。 举个例子: 已最简单的…

nvme协议学习总结

一、nvme命令 1 nvme在pcie基础上的协议,与PCIE配合,实现高效传输。 2 nvme命令主要分IO命令和admin命令。 3 一个NVME CMD执行流程: step1:host把cmd写入SQ queue中; step2:host远端更新Device&#x…

Unity commandbuffer

在渲染不透明物体和天空盒之后,当前图像被复制到一个临时渲染目标中,模糊并设置为全局着色器属性。然后在玻璃物体上的着色器对模糊的图像进行采样,基于法线贴图的UV坐标偏移来模拟折射。这类似于shader GrabPass所做的,除了你可以…

解密辛普森悖论:如何在数据分析中保持清醒头脑

解密辛普森悖论:如何在数据分析中保持清醒头脑 之前也参加fine Bi的 培训,学到了辛普森悖论,今天为大家介绍一下 文章目录 解密辛普森悖论:如何在数据分析中保持清醒头脑前言我们来举一个例子数据分析解释管理应用的启示 前言 什…

Game Framework框架Builder窗口展示不完全问题解决方案

Game Framework框架Builder窗口展示不完全问题解决方案 问题描述解决方法 问题描述 最近在使用(研究)GF框架进行AssetBundle打包的时候,打开Builder窗口时发现下面的打包按钮被遮挡了,而且也没有滑动条可以滑动。 上网搜了一圈也…

文字超出收起展开功能的实现(vue2)

1.编写展开收起组件 <template><div class"text-clamp"><div class"text" :style"{height}"><span v-if"isVisible" class"btn" click"toggle">{{isExpand ? 收起 : ... 展开}}</spa…

简约好用的TCPUDP小工具

csdn下载地址&#xff1a; https://download.csdn.net/download/a876106354/89077745

Echarts自定义折线图的节点与图标

文章目录 需求分析 需求 如图所示需要自定义节点的图标展示 分析 首先需要 symbol 属性添加引入 需要用到一个工具&#xff1a;http://tu.chacuo.net/imagetodataurl 这里是我的几个图片转出来的svg export const lineColors [#FF5360,#45CB85,#EEB902,#9CEC0F,#FF9562,#…

书生作业2

Task 1 生成200字以上的笑话&#xff0c;可以看到使用不同的提示词&#xff0c;会有不同的效果。 如果使用提示词“讲一个笑话.200字以上”&#xff0c; 会有偶发的输出较短的笑话的情况。 如果使用提示词“讲一个200字以上的笑话”时&#xff0c;结果相对稳定。 下载目前两种…

Collection与数据结构 Stack与Queue(一): 栈与Stack

1. 栈 1.1 概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈&…

STL常用容器(2)---vector容器

1.1 vector基本概念 功能&#xff1a; vector数据结构和数组非常相似&#xff0c;也称为单端数组 vector与普通数组区别&#xff1a; 不同之处在于数组是静态空间&#xff0c;而vector可以动态扩展 动态扩展&#xff1a; 并不是在原空间之后的续接的新空间&#xff0c;而…

腾讯云4核8G配置的服务器有哪些优惠?价格好不?

2024年腾讯云4核8G服务器租用优惠价格&#xff1a;轻量应用服务器4核8G12M带宽646元15个月&#xff0c;CVM云服务器S5实例优惠价格1437.24元买一年送3个月&#xff0c;腾讯云4核8G服务器活动页面 txybk.com/go/txy 活动链接打开如下图&#xff1a; 腾讯云4核8G服务器优惠价格 轻…

邀请媒体采访报道对企业宣传有何意义?

传媒如春雨&#xff0c;润物细无声的&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 邀请媒体采访报道对企业宣传具有多重意义&#xff1a; 提升品牌知名度和曝光度&#xff1a;媒体是信息传播的重要渠道&#xff0c;通过媒体的报道&#xff0c;企业及其活动、产品能够…

SpringBoot整合Flowable/Activiti

SpringBoot版本: 2.0.1.RELEASE Flowable版本: 6.3.1 Activiti版本: 6.0.0 一.添加pom依赖 因为之前我整合的时候有报错关于sqlsession的错误,后面查询文章才发现flowable要排除掉mybatis,又没说具体排除哪一个,所以我这干脆全部排除了 <!-- Flowable dependencies -->…

Servlet 的基本理解

Servlet 是JavaEE规范的一种&#xff0c;主要是为了扩展Java作为Web服务的功能&#xff0c;统一接口。由其他内部厂商如tomcat&#xff0c;jetty内部实现web的功能。如一个http请求到来&#xff1a;容器将请求封装为servlet中的HttpServletRequest对象&#xff0c;调用init()&a…

Spring Security 实现后台切换用户

Spring Security version 后端代码&#xff1a; /*** author Jerry* date 2024-03-28 17:47* spring security 切换账号*/RestController RequiredArgsConstructor RequestMapping("api/admin") public class AccountSwitchController {private final UserDetailsSe…