t-rex2开放集目标检测

news/2024/5/8 23:42:23/文章来源:https://blog.csdn.net/lovep1/article/details/136984662

论文链接:http://arxiv.org/abs/2403.14610v1

项目链接:https://github.com/IDEA-Research/T-Rex

这篇文章的工作是基于t-rex1的工作继续做的,核心亮点:

  1. 是支持图片/文本两种模态的prompt进行输入,甚至进一步利用两种模态的组合来达到检测和检索的目的,比如文本检索目标、以图搜图或者两个组合的方式
  2. 还有一个非常关键的地方,t-rex2开放了一个负样本抑制的方法,这个极大的缓解了开集目标检测器中使用clip作为head导致的分类器出问题从而有大量误检的情况

可以作为zero-shot的检测器或者一些快速数据集生成的data-engine方式

1、核心框架

text-cv的双模态通用框架还是同时对文本和图像做编码,如文中所说,text依旧使用clip做文本编码,图像上用的是deformable detr(DETR的升级版本),将单/多个图像转换为视觉embedding,然后进一步的利用了一个文本\图像对齐的模块来显示对齐,因此网络能够从文本和图像中互相学习到对方的feature,然后持续地提高相互的能力,该方法适用于4(3)种工作流:

  1. 交互式视觉prompt,类似于SAM,可以理解为框选一个目标后找到同一类目标(跨多个图像来框选也可以)
  2. 文本prompt,类似于clip或者glip/groundingdino的输入方式
  3. 混合prompt输入,结合文本和图像一起做inference

t-rex2模型框架:

如上图框架所示,一句话总结流程,分别对视觉和文本做特征提取, 视觉上结合backbone做视觉编码、输入prompt做位置编码、初始化向量concat(全局注意力+特征聚合)、交叉注意力得到最终的特征提取,然后结合DINO系系列的box预测方式得到各个roi的坐标,利用clip的方式预测出label(训练和完整的inference代码似乎没有开源出来,只能看论文上的工作去猜了,源码更新后再把本文完善下);

框架支持同时对visual和text prompts进行encoder:

对于visual prompt,对于给定的归一化的坐标或者box位置4维坐标,文中提到继承于DETR依旧使用正余弦编码将其编码为位置embedding,然后使用一个线性层将其进行变换(物理意义上可能是一次特征提取?),其中B代表box的prompt,P代表point的prompt,如下图中的1式和2式所示,进一步地,此时文中初始化了一个可学习的embedding(这里特别像DETR系列后续的工作,初始化一个embedding作为类似于anchor或者其他作用)C并广播到K维度,C`是来自其他所有视觉输入的一个聚合向量,然后将C+C`的值相加后然后与第一步提取的位置向量进行通道上的concat(我听下来理解这段是将C广播得到C`,然后将B全局提取得到B`,然后做concat,具体还得看代码理解下),paper写的太复杂了,最后使用交叉注意力后在各个FPN层的特征中得到query,从框架上可以看到这些query物理意义上应该是自注意力到各个层关注的roi部分,然后如5式做自注意力的特征提取,这样保证提取出来的query应该是结合视觉prompt得到的(在前向做inference时是不是会因为不同的输入promp导致每一次inference的特征不一样)

对于text prompt,使用clip将其进行编码,此处略过,文章也没提,有兴趣的同学直接参照clip进行理解就好了;

BOX解码器:最后就是box解码器了,参照DINO以及他们实验室的工作,将传统检测的anchor作为query初始化,然后与grounding-dino一样是直接预测出各层目标的x、y、w、h,将解码器预测出的值得到Qdec,得到最后的box坐标:

类别估计就是使用clip的方式做predict了,毕竟开集检测应该都是这个套路(晚点还得看看代码确认下)

     文中提到了对每一个视觉目标和文本目标做对齐,类似于一个相互蒸馏的过程:

训练过程(损失函数):

损失函数分为5部分,对于框,使用L1+GIOU作为损失函数,对于分类,使用clip的logits和直接提取的logits计算相似性,还有一个是align对齐,L-DINO应该是文中提及的DINO中的加入噪声训练的部分,文中这里有一个细节,就是使用DETCLIP的方式,对于图片正样本边界以外的数据,随机进行负样本采集,这应该是一种很好的负样本抑制策略

输入的处理:

如果是多个输入,则对其求均值,如果结合文本,则是(视觉+文本)/2就可以了:

2、其他细节

训练集的维护:当前各种多模态模型的关键是数据集如何从各种乱七八糟来源上获取,本文也提到了,还未看,略过

结果对标:

其他细节进一步读paper再来改正和补充

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

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

相关文章

简单的SpringMVC项目创建流程(基于XML文件(了解))

1&#xff1a;首先创建一个maven项目&#xff0c;并在pom.xml文件中导入依赖 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

浅模仿小米商城布局(有微调)

CSS文件 *{margin: 0;padding: 0;box-sizing: border-box; }div[class^"h"]{height: 40px; } div[class^"s"]{height: 100px; } .h1{width: 1528px;background-color: green; } .h11{background-color:rgb(8, 220, 8); } .h111{width: 683px;background-c…

Linux 基础命令1

目录 一.Linux优点&#xff08;优势&#xff09; 二.Shell 三.Linux命令 四.help命令 五.Linux目录结构 六.目录操作 七.路径 一.Linux优点&#xff08;优势&#xff09; 1.一切都是一个文件 2.系统中拥有小型 &#xff0c;轻量级&#xff0c;单一用途的程序 3.避免令…

【循环神经网络rnn】一篇文章讲透

目录 引言 二、RNN的基本原理 代码事例 三、RNN的优化方法 1 长短期记忆网络&#xff08;LSTM&#xff09; 2 门控循环单元&#xff08;GRU&#xff09; 四、更多优化方法 1 选择合适的RNN结构 2 使用并行化技术 3 优化超参数 4 使用梯度裁剪 5 使用混合精度训练 …

MySQL高阶SQL语句

文章目录 MySQL高阶SQL语句MySQL常用查询1、按关键字排序1.1 语法1.2 ASC和DESC1.3 对数据表中信息进行排序1.3.1 普通排序1.3.2 结合where进行条件过滤1.3.3 对多个字段进行排序 2、区间判断及查询不重复记录2.1 and/or —— 且/或2.1.1 普通查询2.1.2 嵌套/多条件查询 2.2 di…

验证码demo(简单实现)

前言 我们注意到我们登录网站的时候经常会用到网络验证码,今天我们就简单实现一个验证码的前后端交互问题,做一个小demo 准备 我们这里并不需要依靠原生的java来实现,而是只需要引入一个maven依赖,使用现成的封装好的即可,这是我使用的是hutool工具包 网址:Hutool&#x1f36c;…

Linux 收发网络包的流程

应用层&#xff1a; 功能&#xff1a;提供应用程序间通信。例子&#xff1a;电子邮件客户端如Outlook或Thunderbird&#xff0c;它们提供用户界面来发送和接收电子邮件。这些客户端使用SMTP&#xff08;用于发送邮件&#xff09;和IMAP或POP3&#xff08;用于接收邮件&#xff…

计算机软件安全

一、软件安全涉及的范围 1.1软件本身的安全保密 软件的本质与特征&#xff1a; 可移植性 寄生性 再生性 可激发性 攻击性 破坏性 …… 知识产权与软件盗版 软件商品交易形式不透明&#xff0c;方式多样&#xff0c;传统商标标识方法不适用&#xff1b; 盗版方法简捷…

蓝桥杯刷题之路径之谜

题目来源 路径之谜 不愧是国赛的题目 题意 题目中会给你两个数组&#xff0c;我这里是分别用row和col来表示 每走一步&#xff0c;往左边和上边射一箭&#xff0c;走到终点的时候row数组和col数组中的值必须全部等于0这个注意哈&#xff0c;看题目看了半天&#xff0c;因为…

ASP.Net添加Swagger注释

文章目录 Swagger添加Swagger注释 Swagger 添加Swagger注释 1、右击项目->选择属性->点击生成->输出&#xff0c;选中文档文件 2、配置服务 在program.cs 文件里配置SwaggerUI //增加项一 builder.Services.AddSwaggerGen(c> {c.SwaggerDoc("v1", ne…

策略路由-IP-Link-路由协议简介

策略路由 策略路由和路由策略的不同 1.策略路由的操作对象是数据包&#xff0c;在路由表已经产生的情况下&#xff0c;不按照路由表进行转发&#xff0c;而是根据需要&#xff0c;依照某种策略改变数据包的转发路径 2.路由策略的操作对象是路由信息。路由策略的主要实现了路…

基于Java中的SSM框架实现考研指导平台系统项目【项目源码+论文说明】

基于Java中的SSM框架实现考研指导平台系统演示 摘要 应对考研的学生&#xff0c;为了更好的使校园考研有一个更好的环境好好的学习&#xff0c;建议一个好的校园网站&#xff0c;是非常有必要的。提供学生的学习提供一个交流的空间。帮助同学们在学习高数、学习设计、学习统计…

web前端面试题----->VUE

Vue的数据双向绑定是通过Vue的响应式系统实现的。具体原理&#xff1a; 1. Vue会在初始化时对数据对象进行遍历&#xff0c;使用Object.defineProperty方法将每个属性转化为getter、setter。这样在访问或修改数据时&#xff0c;Vue能够监听到数据的变化。 2. 当数据发生变化时…

C语言-Win11安装古老的VC6.0

win11安装VC6 有些学校一直还在使用VC6.0&#xff0c;我们尝试在Win1 下安装这个老古董&#xff0c;以下是在win11下安装VC6.0的方法。 点击安装文件 输入产品序列号 修改公共安装文件夹 如果C盘空间足够可以不用修改。 此处会发现鼠标一直在转圈不能完成更新系统&#xff0c;可…

ChatGPT、千问、讯飞星火等在工作中提高效率

提升代码效率 通义灵码 适配性 100多种主流语言&#xff08;C/C、Java、Python、Go、JavaScript、TypeScript等语言表现更为出色&#xff09;支持常用 IDE&#xff08;VS Code、IntelliJ IDEA、GoLand、PyCharm、WebStorm、CLion、PhpStorm、Android Studio、Xcode、iCoding…

记一次 .NET某游戏后端API服务 CPU爆高分析

一&#xff1a;背景 1. 讲故事 前几天有位朋友找到我&#xff0c;说他们的API服务程序跑着跑着CPU满了降不下去&#xff0c;让我帮忙看下怎么回事&#xff0c;现在貌似民间只有我一个人专注dump分析&#xff0c;还是申明一下我dump分析是免费的&#xff0c;如果想学习.NET高级…

进入消息传递的魔法之门:ActiveMQ原理与使用详解

嗨&#xff0c;亲爱的童鞋们&#xff01;欢迎来到这个充满魔法的世界&#xff0c;今天我们将一同揭开消息中间件ActiveMQ的神秘面纱。如果你是一个对编程稍有兴趣&#xff0c;但又对消息中间件一知半解的小白&#xff0c;不要害怕&#xff0c;我将用最简单、最友好的语言为你呈…

电脑不能读取移动硬盘,但是可以读取U盘解决方法

找到此电脑 右键设备管理器&#xff0c;找到其中的通用串行总线控制器。 注意&#xff0c;凡是插入到电脑当中不能读取的U盘或者移动硬盘&#xff0c;都会在通用串行总线控制器当中显示为USB大容量存储设备 鼠标选中“USB大容量存储设备”&#xff0c;右键卸载它。此时&#x…

静态综合实验

一.搭建拓扑结构 1.根据拓扑结构可以把网段分成14个网段&#xff0c;根据192.168.1.0/24可以划分出ip地址和环回地址 其中环回r1分别是 192.168.1.32/27 192.168.1.32/28 192.168.1.48/28 2.划分完后如图&#xff1a; 二.配置IP地址 注意&#xff1a;为了避免错误&#…

【机器学习300问】49、数据预处理时如何处理类别型特征?

关于特征是什么&#xff1f;以及特征工程是什么意思&#xff1f;在先前我写的文章中已经为大家详细的介绍过了。本文想继续深入特征中的其中一种——类别型特征&#xff0c;来解答一个我自己遇到的困惑&#xff0c;同时记录成文章供大家一起学习。 【机器学习300问】14、什么是…