3D- vista:预训练的3D视觉和文本对齐Transformer

论文:https://arxiv.org/abs/2308.04352

代码: GitHub - 3d-vista/3D-VisTA: Official implementation of ICCV 2023 paper "3D-VisTA: Pre-trained Transformer for 3D Vision and Text Alignment"

摘要

三维视觉语言基础(3D- vl)是一个新兴领域,旨在将三维物理世界与自然语言联系起来,这对实现具身智能至关重要。目前的3D-VL模型严重依赖于复杂的模块、辅助损耗和优化技巧,这需要一个简单而统一的模型。在本文中,我们提出了3D- vista,一个预训练的3D视觉和文本对齐转换器,可以很容易地适应各种下游任务。3D-VisTA简单地利用self attention层进行单模态建模和多模态融合,而无需任何复杂的特定任务设计。为了进一步提高其在3D- vl任务上的性能,我们构建了ScanScribe,这是第一个用于3D- vl预训练的大规模3D场景文本对数据集。ScanScribe包含2,995个RGBD扫描,用于源自ScanNet和3R-Scan数据集的1,185个独特的室内场景,以及从现有3D-VL任务,模板和GPT-3生成的配对278K场景描述。3D-VisTA通过屏蔽语言/对象建模和场景文本匹配在ScanScribe上进行预训练。它在各种3D-VL任务上实现了最先进的结果,从视觉基础和密集的字幕到问题回答和情境推理。此外,3D-VisTA展示了卓越的数据效率,即使在下游任务微调期间注释有限也能获得强大的性能。

背景

1.

将三维物理世界与自然语言结合起来是实现具身人工智能的关键一步[18,26,37],智能体可以在现实世界中理解并进一步执行人类指令[5,29]。最近,3D视觉语言(3D- vl)任务引起了越来越多的关注[19],包括3D视觉基础(3D visual grounding)[8,1]、密集字幕(dense captioning)[11]、语法学习(grammar learning)[23]、问题回答(question answering)[3,56]和情境推理(situated reasoning [36]。 

然而,大多数为3D-VL开发的模型只关注这些3D-VL任务中的一个或两个,并采用特定的任务设计[7,3,36,35,10]。

例如,3D-SPS[35]和BUTD-DETR[27]通过关注VL特征,对每一层的物体进行检测,逐步发现目标物体。3DVG[55]、MVT[24]和ViL3DRel[10]通过在模型设计中明确地注入空间关系信息,改善了三维视觉基础。

3DJCG[7]通过共享的3D对象建议模块shared 3D object proposal module[16]和两个独立的任务头two separate task-specific heads[7],共同学习3D密集字幕和视觉接地(dense captioning and visual grounding)。

此外,训练这些模型通常需要手动指定辅助损耗(例如,3D物体检测/分类和文本分[35,24,7,3,36])或优化技巧(例如,知识蒸馏[4,53])。

缺乏一个简单而统一的方法会造成严重的开发通用3D-VL模型的差距

为了填补这一空白,我们引入了3D-VisTA,一个基于transformer的模型的3D视觉和文本对齐,可以易于适应各种下游任务。与之前的在设计复杂的任务特定模块的模型中,我们简单地使用一个普通的self attention transformer[46]对于单模态建模和多模态融合3 d-vista。作为一般做法进一步加强三维空间理解[10,55,7],我们明确的将成对的空间关系编码成为对象间的self attention权重用于3D对象建模。

2.

受NLP[15、41、42、6、52、31]、CV[22、17、21、25、38]和2D-VL[30、2、34、40]中大规模预训练成功的启发,我们提出在3D场景文本数据上预训练3D- vista,以期在3D- vl任务上获得更好的性能。为此,我们构建了ScanScribe,这是第一个用于3D- vl预训练的大规模3D场景文本对数据集。

我们在提议的ScanScribe数据集上预训练3D-VisTA。我们的预训练任务包括掩码语言建模、掩码对象建模和场景文本匹配。值得注意的是,类似的目标在2D-VL中被广泛采用,但在3D-VL领域却很少被探索。所提出的预训练过程有效地学习了三维点云和文本之间的对齐,从而消除了下游任务微调中对辅助损失和优化技巧的需要。

贡献

1)提出3D- vista,一个简单而统一的transformer,用于对齐3D视觉和文本。所建议的Transformer只是利用了自注意机制,没有任何复杂的特定于任务的设计。

2)构建了ScanScribe,这是一个大规模3D- vl预训练数据集,包含278K 3D场景文本对,用于1,185个独特室内场景的2,995个RGB-D扫描。

3)提出了一种基于掩码语言/对象建模和场景文本匹配的自监督预训练方案。它有效地学习了三维点云和文本对齐,进一步简化和提高了下游任务的微调。

4)对3D-VisTA进行微调,并在各种3D-VL任务上实现最先进的性能,从视觉基础和密集字幕到问题回答和情境推理。3D-VisTA还展示了卓越的数据效率,即使在有限的注释下也能获得强大的结果。

相关工作

3D Vision-language Learning 3D视觉语言学习

在这一新兴领域,Chen等人[8]和Achlioptas等人[1]同时引入了scanreferenceReferIt3D数据集,用于对自然语言基于3D对象属性和关系进行基准测试。除了3D视觉基础,Azuma等人[3]开发了一个名为ScanQA的3D问答数据集,该数据集需要一个模型来回答关于给定3D场景的物体及其关系的问题。最近,Ma等人[36]提出了一种称为SQA3D的情境推理任务,用于3D场景中的具体化场景理解。

针对这些基准[8,1,35,27,55,24,10,20,43]几个模型已经提出了。值得注意的是,3D-SPS[35]和BUTD-DETR[27]利用交叉注意机制和语言引导逐步发现目标对象3DVG[55]、MVT[24]和ViL3DRel[10]通过将空间关系信息明确地注入其模型来解决3D视觉接地问题。尽管这些工作在连接3D视觉和语言方面取得了令人印象深刻的成果,但它们仍然严重依赖于模型设计中的特定任务知识[55,24,10]和复杂的优化技术[10,27,35]。相比之下,我们的3D-VisTA通过一个简单的基于transformer的架构统一了视觉基础、问答和定位推理。训练3D-VisTA也很简单,不需要任何辅助损失或复杂的优化技术。3DVisTA与其他3D-VL模型在任务、辅助Loss、架构等方面的详细对比见表1。

Large-scale Pre-training 大规模预训练

近年来,大规模预训练已成为自然语言处理(NLP)、计算机视觉(CV)和2D视觉与语言(2D- vl)领域的基石。引入基于transformer的架构[47],特别是BERT[15]和GPT[41,42,6],已经导致了各种NLP任务的显着改进。这些模型的成功导致了更先进的预训练技术的发展,如XLNet[52]和RoBERTa[31]。这些模型在广泛的NLP任务上取得了最先进的性能,包括文本分类、问题回答和语言生成。CV中最成功的预训练方法是ImageNet[14]预训练,它已被用作广泛的下游任务(如目标检测和图像分割)的起点。最近,引入基于transformer的模型,如ViT[17]和Swin Transformer[32],已经导致各种CV任务的显着改进。

由于预训练技术,2D-VL领域也取得了重大进展。
特别是ViLBERT[34]和LXMERT[45]模型的引入,在视觉问答和图像字幕等任务上取得了最先进的性能。最近,CLIP的发展[40],ALIGN[50]和Flamingo[2]表明,对图像-文本对进行大规模预训练可以更好地进行跨模态理解,并以zero-shot 或few-shot的方式出现上下文学习

大规模预训练在3D-VL中却很少被探索。[7,9]探索了视觉基础和密集字幕的多任务学习,然后在每个任务上进一步微调他们的模型。由于缺乏大规模的预训练数据集,3D-VL预训练的探索可能会受到阻碍。因此,我们构建了ScanScribe,这是第一个用于3D- vl预训练的大规模3D场景文本对数据集。

 如表2所示,ScanScribe比现有的3D-VL数据集大得多,文本也更多样化。在ScanScribe上预训练3D-VisTA已经导致了3D-VL任务的显着改进,因此我们相信ScanScribe可以在未来推动3D-VL预训练的探索。

方法

3D-VisTA

如图2所示,3D-VisTA以一对场景点云和句子作为输入。首先通过文本编码模块对句子进行编码,然后通过场景编码模块对点云进行处理。然后通过多模态融合模块将文本和3D对象标记融合,以捕获3D对象和文本之间的对应关系。3D-VisTA使用自我监督学习进行预训练,可以很容易地对各种下游任务进行微调。

Text Encoding 文本编码

我们采用四层Transformer将句子S编码为文本标记{wcls,w1,w2,···,wM}序列,其中wcls为特殊分类标记([CLS]), M为句子长度。该文本编码模块由预训练BERT的前四层进行初始化[15]。?

Scene Encoding 场景编码

给定一个3D场景的点云,我们首先使用分割蒙版将场景分解成一包(bag)物体。
分割掩码既可以从ground truth中获得,也可以从实例分割模型中获得[16,28,44]。

1)对于每个对象,我们采样1024个点,并将其坐标归一化为单位球。

2)将目标点云输入PointNet++[39]获取其点特征和语义类。我们将点特征fi、嵌入语义类ci和位置li(即3D位置、长度、宽度、高度)组合为对象标记i的表示。其中Wc和Wl是附加的投影矩阵,将ci和li映射到与fi相同的维度↓

3)为了进一步提供对象的上下文表示,我们通过将对象token注入四层Transformer来捕获对象到对象的交互。受前人研究[55,24,10]的启发,我们将对象的成对空间关系明确编码到Transformer中(图2中的spatial Transformer)。

我们按照[10]定义了对象对i, j的成对空间特征↓

其中dij是欧几里得距离θh, θv是连接两个物体i,j中心的直线的水平线和对顶角

 两两空间特征S = [sij]∈RN×N×5用于调节Transformer中自关注层的关注权重:

 

其中w∈R5用于将空间特征映射到注意分数,σ为sigmoid函数。

Multi-modal Fusion 多模态融合

我们简单地将文本和3D对象标记连接起来(?如何连接?直接相加还是相乘?看代码),并将它们发送到l层变压器(图2中的统一变压器)进行多模态融合。可学习的type embeddings 被添加到token中,以区分文本和3D对象。对于[CLS]、文本标记和3D对象标记,我们将多模态融合模块的输出分别表示为{wcls,w1:M, o1:N}。
 

Self-supervised Pre-training 自监督预训练

为了以自监督的方式学习3D场景和文本对齐,我们通过以下代理任务对3D- vista进行3D场景-文本对的预训练:

Masked Language Modeling (MLM)

Masked Object Modeling (MOM)

Scene-Text Matching (STM)

Downstream Task Finetuning

预训练的3D-VisTA可以很容易地适应各种
3D-VL任务通过添加轻量级任务头。更具体地说,我们在以下任务上微调3D-VisTA↓

3D Visual Grounding

3D Dense Captioning

3D Question Answering

3D Situated Reasoning

ScanScribe

scanscribe是我们建立的一个大规模的三维场景文本对数据集

如表3所示,ScanScribe中三维场景文本对的构建包括两部分:

3D场景:

我们从ScanNet[12]和3R-Scan[48]收集室内场景的RGB-D扫描。为了增加这些场景中3D对象的多样性,每个场景中10%的对象实例根据类别随机替换为Objaverse 3D对象数据库[13]中的对象。对于每个ScanNet和3R-Scan对象类别,我们从Objaverse下载大约40个对象实例作为候选对象替换。因此,我们收集了1,185个室内场景的2,995个RGB-D扫描,其中包含56.1K唯一对象实例

 文本:

对于来自ScanNet的扫描,我们将基于ScanNet的现有数据集中的文本转换为场景描述,包括来自ScanQA[3]的问答对和来自Scan- reference[8]和refit3d[1]的引用表达式。对于来自3RScan的扫描,我们同时采用模板和GPT-3[6],基于它们的场景图注释生成场景描述[51]。

具体地说,对于每个对象,我们首先从场景图中提取所有的〈object, relation, neighbor〉三元组。然后我们使用模板“This is a object, a neighbor is relation to object” 来生成描述。

注意,在基于模板的生成中,我们只选择邻居少于7个的对象。

我们进一步探索使用GPT-3生成带有如下提示“object is relation to neighbor...(repeat until all the neighbors have been used). Where is object? or Summarize the scene.”最终,对收集到的3D场景生成278K的场景描述。

这个貌似就可以解决我LISA:通过大语言模型进行推理分割_Scabbards_的博客-CSDN博客中如何用gpt3生成/改写提示的疑问了

实验

实现细节

预训练运行30个epoch,批大小为128。

AdamW[33]优化器,β1 = 0.9, β2 = 0.98。学习率设为1e−4,预热3000步,余弦衰减。

预训练过程中,我们使用ground-truth segmentation masks生成对象级点云

微调过程中,我们使用ground-truth mask或Mask3d[44],这取决于任务设置。在scanreference数据集上,我们还合并了PointGroup[28]与之前的方法进行比较。

消融实验中,为了简单起见,我们在所有任务中都使用ground-truth masks

预训练和微调都在单个NVIDIA A100 80GB GPU上进行。

实验结果

1.即使从头开始训练,3D-VisTA也可以通过SOTA方法获得具有竞争力的性能。

2.ScanScribe上的预训练显着提高了3D-VisTA的性能。

3.预训练的3D-VisTA在性能上大大优于SOTA。

4.在有限注释的下游任务上微调3D-VisTA可以获得强大的结果。

 

消融实验

Transformer Depth

 

Pre-training Objectives

Pre-training Data

 

定性研究和附加结果

我们进行额外的研究,以更好地理解预训练是如何帮助的。

如图4所示,预训练提高了3D-VisTA在视觉基础上的空间理解能力,使其更符合人类对空间关系的先验观点和推理。当模型需要将目标对象与同一类的多个实例区分开来时,这非常有用。预训练还有助于更好地理解颜色和形状等视觉概念,以及回答问题和情境推理的情况。

 此外,预训练增强了长文本与3D场景对齐的能力,如图5所示,较长查询的改进幅度更大。

未来工作

 目前,3D- vista使用离线3D物体检测模块,这可能是进一步改进的瓶颈。在预训练阶段共同优化目标检测模块是一个有趣的未来方向。此外,对于大规模3D-VL预训练,ScanScribe的数据量仍然不足,因此,扩大预训练数据集和模型大小是进一步提高3D-VL学习的一个有希望的方向。

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

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

相关文章

在 React+Typescript 项目环境中创建并使用组件

上文 ReactTypescript清理项目环境 我们将自己创建的项目环境 好好清理了一下 下面 我们来看组件的创建 组件化在这种数据响应式开发中肯定是非常重要的。 我们现在src下创建一个文件夹 叫 components 就用他专门来处理组件业务 然后 我们在下面创建一个 hello.tsx 注意 是t…

Azure共享映像库构建VM镜像

什么是Azure共享映像库 Azure共享映像库是一项在Microsoft Azure中以共享方式存储和管理映像的服务。映像是预配置的虚拟机操作系统和应用程序的快照,可以用来创建多个虚拟机实例。通过将映像存储在共享映像库中,用户可以轻松地共享映像给其他Azure订阅…

探索无限创造力的星辰大道,画出想象的浩瀚宇宙!-turtle

介绍 视频教程地址在此:https://www.bilibili.com/video/BV1Pm4y1H7Tb/ 大家好,欢迎来到本视频!今天,我们将一同探索Python编程世界中的一个有趣而创意的库——Turtle库。无需专业绘画技能,你就可以轻松地用代码绘制…

【微服务技术一】Eureka、Nacos、Ribbon(配置管理、注册中心、负载均衡)

微服务技术一 技术栈图一、注册中心Eureka概念:搭建EurekaServer服务注册服务发现(消费者对提供者的远程调用) 二、Ribbon负载均衡负载均衡的原理:LoadBalanced负载均衡的策略:IRule懒加载 三、Nacos注册中心Nacos的安…

什么是单例模式

什么是单例模式 文章目录 什么是单例模式1. 单例(单个的实例)2. 单例模式应用实例3. 饿汉式 VS 懒汉式 1. 单例(单个的实例) 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一…

nginx介绍

Nginx是什么? Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用ng…

android wifi扫描 framework层修改扫描间隔

frameworks/opt/net/wifi/service/java/com/android/server/wifi/ScanRequestProxy.java 这个也就是说前台应用可以在120s(2分钟) 扫描 4 次 * a) Each foreground app can request a max of* {link #SCAN_REQUEST_THROTTLE_MAX_IN_TIME_WINDOW_FG_APPS} scan every* {l…

08-微信小程序视图层

08-微信小程序视图层 文章目录 视图层 ViewWXML数据绑定列表渲染条件渲染模板引用importimport 的作用域include WXSS尺寸单位样式导入内联样式选择器全局样式与局部样式 WXS注意事项页面渲染数据处理 视图层 View 框架的视图层由 WXML 与 WXSS 编写,由组件来进行…

http库 之 OKHttpUtil

源码位置 方便实用&#xff0c;个人感觉不错 依赖 <dependency><groupId>io.github.admin4j</groupId><artifactId>common-http-starter</artifactId><version>0.7.5</version> </dependency>代码实践 /*** 通用http的pos…

改进YOLO系列:2.添加ShuffleAttention注意力机制

添加ShuffleAttention注意力机制 1. ShuffleAttention注意力机制论文2. ShuffleAttention注意力机制原理3. ShuffleAttention注意力机制的配置3.1common.py配置3.2yolo.py配置3.3yaml文件配置1. ShuffleAttention注意力机制论文 论文题目:SA-NET: SHUFFLE ATTENTION …

网络编程(基础)

一、OSI体系结构 ISO&#xff08;国际标准化组织&#xff09;制定了一个国际标准OSI&#xff08;开放式通讯系统互联参考模型&#xff09;&#xff0c;对通讯系统进行了标准化。 定义了7层模型&#xff1a; 二、TCP/IP协议介绍 OSI模型是一个理想化的模型已经很少使用&#x…

ElasticSearch DSL语句(bool查询、算分控制、地理查询、排序、分页、高亮等)

文章目录 DSL 查询种类DSL query 基本语法1、全文检索2、精确查询3、地理查询4、function score &#xff08;算分控制&#xff09;5、bool 查询 搜索结果处理1、排序2、分页3、高亮 RestClient操作 DSL 查询种类 查询所有&#xff1a;查询所有数据&#xff0c;一般在测试时使…

耗资170亿美元?三星电子在得克萨斯州建设新的半导体工厂

据报道&#xff0c;三星电子在得克萨斯州泰勒市建设的新的半导体工厂预计将于2024年下半年投入运营。这座工厂将成为三星电子在美国的第二座芯片代工厂&#xff0c;与位于得克萨斯州奥斯汀市的第一座工厂相距不远。 此次投资将耗资约170亿美元&#xff0c;显示了三星电子在半导…

Slingshot | 细胞分化轨迹的这样做比较简单哦!~(一)

1写在前面 今天是医师节&#xff0c;祝各位医护节日快乐&#xff0c;夜班平安&#xff0c;病历全是甲级&#xff0c;没有错误。&#x1f970; 不知道各位医师节的福利是什么&#xff01;&#xff1f;&#x1f602; 我们医院是搞了义诊活动&#xff0c;哈哈哈哈哈哈哈。&#x1…

Python可视化在量化交易中的应用(16)_Seaborn热力图

Seaborn中热力图的绘制方法 seaborn中绘制热力图使用的是sns.heatmap()函数&#xff1a; sns.heatmap(data,vmin,vmax,cmap,center,robust,annot,fmt‘.2g’,annot_kws,linewidths0,linecolor‘white’,cbar,cbar_kws,cbar_ax,square,xticklabels‘auto’,yticklabels‘auto’…

Linux 进程间通信——消息队列

一、消息队列的原理 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为含有一个类型&#xff0c;接收进程可以独立接收含有不同类型值得数据库。 消息实际上是一个数据块&#xff0c;这个数据块是一个结构体&#xff0c;结构体由自己命名。消…

Aurix TC3xx系列MCU ResourceM模块配置(多核资源分配)

文章目录 1 前言2 配置方法 >>返回总目录<< 1 前言 为减轻主核的负载率或者平衡各个核的资源分配&#xff0c;通常需要把一些MCU内部资源分配到从核上&#xff0c;在EB tresos工具中&#xff0c;通过ResourceM模块实现多核资源分配。 2 配置方法 ResourceMMaste…

mysql数据传输到mssql

一、找开Navicat Premium 12 此时目标数据库会创建一个同名的表

学习笔记:Opencv实现拉普拉斯图像锐化算法

2023.8.19 为了在暑假内实现深度学习的进阶学习&#xff0c;Copy大神的代码&#xff0c;记录学习日常 图像锐化的百科&#xff1a; 图像锐化算法-sharpen_lemonHe_的博客-CSDN博客 在环境配置中要配置opencv&#xff1a; pip install opencv-contrib-python Code and lena.png…

OpenCV基础知识(5)— 几何变换

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。OpenCV中的几何变换是指改变图像的几何结构&#xff0c;例如大小、角度和形状等&#xff0c;让图像呈现出缩放、翻转、旋转和透视效果。这些几何变换操作都涉及复杂、精密的计算。OpenCV将这些计算过程都封装成了非常灵活的…