PointGPT 论文解读,点云的自回归生成预训练

news2025/1/19 14:10:32

PointGPT: Auto-regressively Generative Pre-training from Point Clouds

论文:https://arxiv.org/pdf/2305.11487.pdf

一种将GPT概念扩展到点云的方法,在多个3D点云下有任务中(点云分类,part分割等)上实现了最先进的性能。

 图1, PointGPT 方法的示意图。该方法使用 Transformer 解码器进行预训练,以自回归的方式预测点块。这种设计使得我们的方法能够在没有专门规定的规格的情况下预测点块,并避免了位置信息的泄漏,从而提高了泛化能力。

从图中可以看到,输入的点云被分割成多个点块,并按照它们的空间接近性排列成一个有序序列。这个序列被输入到 Transformer 解码器中,解码器根据之前预测的点块来预测下一个点块。这种自回归的方式使得模型能够逐步生成点块,并且模型可以利用之前生成的点块来预测下一个点块。

通过这种方式,PointGPT 的方法能够在没有专门指定点块的情况下进行预测,并且避免了位置信息泄漏的问题,从而提高了模型的泛化能力。这种方法的优势在于能够处理点云数据的无序性,并且在各种下游任务上表现出较好的性能。

1 摘要:

这篇论文介绍了一种名为 PointGPT 的方法,将 GPT 的概念扩展到了点云数据中,以解决点云数据的无序性、低信息密度和任务间隔等挑战。论文提出了一种点云自回归生成任务来预训练 Transformer 模型。该方法将输入的点云分割成多个点块,并根据它们的空间接近性将它们排列成有序序列。然后,基于提取器-生成器的 Transformer 解码器(使用双重掩码策略)学习了在前序点块条件下的潜在表示,以自回归方式预测下一个点块。这种可扩展的方法可以学习到高容量模型,具有很好的泛化能力,在各种下游任务上实现了最先进的性能。

具体来说,该方法在 ModelNet40 数据集上实现了94.9%的分类准确率,在 ScanObjectNN 数据集上实现了93.4%的分类准确率,超过了所有其他 Transformer 模型。此外,该方法还在四个小样本学习基准测试上获得了新的最先进准确率。

PointGPT 是一种将 GPT 的思想应用到点云数据生成中的方法,通过自回归生成任务的预训练,能够学习到点云数据的特征表示,并在各种下游任务上取得了优秀的性能表现


2 论文的主要贡献:

(I) 提出了一种名为 PointGPT 的新型 GPT 模型用于点云自监督学习(SSL)。PointGPT 利用点云自回归生成任务,同时减轻了位置信息泄漏的问题,在单模态自监督学习方法中表现出色。

(II) 提出了一种双重掩码策略来创建有效的生成任务,并引入了提取器-生成器 Transformer 架构来增强学习表示的语义级别。这些设计提高了 PointGPT 在下游任务中的性能。

(III) 引入了一个预训练后阶段,并收集了更大的数据集,以促进高容量模型的训练。利用 PointGPT,我们的扩展模型在各种下游任务上实现了最先进的性能。

综上所述,这篇论文的主要贡献包括了提出了 PointGPT 模型用于点云自监督学习,在生成任务和模型架构方面进行了创新,并引入了预训练后阶段和更大的数据集来训练高容量模型。通过这些贡献,PointGPT 在各种下游任务上取得了最先进的性能表现。


3 PointGPT 原理

 图2:PointGPT的总体架构。 (a) 输入点云被分成多个点块,然后按顺序排序和排列。 (b) 基于提取器-生成器的transformer解码器与双重掩码策略一起使用,用于自回归预测点块。在这个示例中,双重掩码策略的附加掩码应用于相同组的随机令牌,以更好地进行说明。

论文中的图2展示了 PointGPT 在预训练阶段的整体流程。下面是对图2中各部分的解释:

  1. 点云序列模块(Point Cloud Sequencer Module):这个模块用于构建点块的有序序列。它将点云分割成不规则的点块,并按照 Morton 排序将它们排列起来,形成一个有序序列。

  2. 提取器(Extractor):这是一个用于学习潜在表示的模块。有序的点块序列被输入到提取器中,通过自回归的方式学习点块的潜在表示。提取器的目标是从前面的点块中预测下一个点块。

  3. 生成器(Generator):这是一个用于自回归生成点块的模块。在预训练阶段,生成器根据前面的点块生成下一个点块,以自回归的方式逐步生成点块序列。在预训练结束后,生成器被丢弃,不再使用。

  4. 预训练后的阶段(Post-Pre-training Stage):在预训练阶段结束后,生成器被舍弃,而提取器则利用学习到的潜在表示进行下游任务。此时,不再使用双重掩码策略。

3.1 Point Cloud Sequencer

在点云领域,与自然语言处理(NLP)领域不同,点云缺乏预定义的词汇表,并且点云是一种稀疏结构,具有无序性的特点。为了克服这些挑战并获得一个有序的点云序列,其中每个组成单元捕捉到丰富的几何信息,论文中采用了一个三阶段的过程,包括点块划分、排序和嵌入。

  1. 点块划分(Point Patch Partitioning):该阶段将点云划分为不规则的点块。通过将点云分割成块状的子集,可以将点云的结构分解成更小的部分,以便更好地进行处理。

  2. 排序(Sorting):划分的点块按照 Morton 排序进行排序。Morton 排序是一种用于多维数据的排序方法,通过将多维数据转换成一维的比特串,实现了对多维数据的排序。通过 Morton 排序,点块的顺序得到了定义,形成了有序的点块序列。

  3. 嵌入(Embedding):排序后的点块序列被嵌入到模型中,用于后续的预训练和任务学习。嵌入可以将点块的几何信息转化为模型能够理解和处理的向量表示。

通过这个三阶段的过程,点云被划分为有序的点块序列,并经过嵌入转换为模型可处理的表示形式。这样做的目的是克服点云领域缺乏预定义词汇表和无序性的问题,为后续的预训练和任务学习提供有序的输入。


(1)点云序列PointGPT 的预训练流程包括使点云序列模块构建有序的点块序列,提取器学习点块的潜在表示,生成器自回归生成点块序列在预训练后阶段,生成器被舍弃,提取器利用学习到的表示进行下游任务。这个流程旨在通过自回归生成任务来学习点云数据的特征表示,并为后续任务提供更好的表示能力。

(2)点块分割:考虑到点云的固有稀疏性和无序性,输入点云通过最远点采样(FPS)和K近邻(KNN)算法处理,以获取中心点和点块。给定一个包含M个点的点云X,我们使用FPS初始采样n个中心点C。然后,利用KNN算法从X中选择k个最近的点构建n个点块P。

(3)排序:为了解决点云的固有无序性,获得的点块根据它们的中心点被组织成一个连贯的序列。具体而言,使用Morton编码[34]将中心点的坐标编码到一维空间中,然后进行排序以确定这些中心点的顺序O。然后,将点块按照相同的顺序排列。

(4)嵌入: 在 PointGPT 中,采用了嵌入(Embedding)步骤来提取每个点块的丰富几何信息。与论文中引用的 Point-MAE 和 PointNet 方法类似,这里使用了 PointNet 网络来进行几何信息的提取。

具体而言,对于每个点块,使用 PointNet 网络对其进行处理,以提取其中的几何信息。PointNet 是一种常用的点云处理网络,能够对点云数据进行特征提取和学习。通过应用 PointNet 网络,可以从每个点块中提取丰富的几何特征。

为了促进训练的收敛性,对每个点的坐标进行了归一化处理,相对于其所在点块的中心点进行归一化。这样做可以减小数据的尺度差异,帮助模型更好地进行训练。在嵌入步骤中,使用 PointNet 网络对每个点块进行处理,提取其中的几何信息,并对点的坐标进行归一化处理,以促进训练的收敛性。


3.2 Transformer Decoder with a Dual Masking Strategy

论文中提到,将 GPT 直接应用到点云数据的方法是利用基本的 Transformer 解码器来自回归地预测点块,并对所有预训练参数进行微调以进行下游任务。然而,由于点云数据的信息密度有限以及生成和下游任务之间存在差距,这种方法在低级语义方面存在问题。

为了解决这个问题,论文提出了一种双重掩码策略,以促进对点云的全面理解。这个策略能够帮助模型更好地处理点云数据,提高语义的表达能力。

此外,论文还引入了提取器-生成器 Transformer 架构,其中生成器更专注于生成任务,并在预训练后被丢弃,从而增强了提取器学习到的潜在表示的语义水平。这种架构设计使得提取器能够更好地学习点云的语义信息,提高模型的表示能力。

为了应对点云数据的低级语义和生成任务与下游任务之间的差距,论文提出了双重掩码策略和提取器-生成器 Transformer 架构。这些方法能够提高模型对点云数据的理解能力,并增强潜在表示的语义水平。

  (1)Dual masking strategy:

双重掩码策略:transformer解码器中的基本掩码策略使得每个令牌都可以从所有前面的点令牌中接收信息。为了进一步促进有用表示的学习,提出了双重掩码策略,该策略在预训练期间还会额外屏蔽每个令牌所参考的一定比例的前置令牌。在 PointGPT 中,提取器(Extractor)和生成器(Generator)是两个关键组件,用于学习点云的表示和生成任务。

(2)Extractor-generator:

提取器完全由 Transformer 解码器块组成,并采用双重掩码策略,得到潜在表示 T。在这里,每个点的令牌只与前面未被掩码的令牌相互关联。考虑到点块是用归一化坐标表示的,并且全局结构对于点云的理解至关重要,论文中采用正弦位置编码(Sinusoidal Positional Encodings)将排序后的中心点的坐标映射到绝对位置编码(Absolute Positional Encoding)。在每个 Transformer 块中添加位置编码,以提供位置信息和整合全局结构信息。

生成器的架构与提取器类似,但包含较少的 Transformer 块。它以提取的令牌 T 作为输入,并生成用于后续预测头的点令牌 Tg。然而,由于中心点采样过程可能会影响点块的顺序,这在预测后续点块时会引入不确定性。这使得模型难以有效地学习有意义的点云表示。为了解决这个问题,在生成器中提供了相对于后续点块的方向信息,作为提示而不暴露被掩码的点块的位置和整体点云对象的形状。

提取器由 Transformer 解码器块组成,并采用双重掩码策略生成潜在表示 T。生成器与提取器类似,但包含较少的 Transformer 块,并在生成过程中引入了方向信息以解决顺序预测中的不确定性问题。

(3)Prediction head:

预测头用于在坐标空间中预测后续的点块。它由一个两层的多层感知机(MLP)组成,包含两个全连接(FC)层和修正线性单元(ReLU)激活函数。预测头将令牌 Tg 投影到向量空间,其中输出通道的数量等于一个点块中的坐标总数。然后,这些向量被重新组织成预测的点块 。

3.3 Generation Target

在每个点块的生成目标是预测后续点块内点的坐标。给定预测的点块 Ppd 和与排序后的点块序列中最后 n0 个点块对应的真实点块 Pgt,生成损失 Lg 使用 Chamfer 距离(CD)的 L1 形式和 L2 形式进行定义,分别记为 Lg1 和 Lg2。Chamfer 距离是一种衡量两个点云之间距离的指标,用于评估生成的点块与真实点块之间的差异。Lg1 表示使用 L1 形式计算的 Chamfer 距离,而 Lg2 表示使用 L2 形式计算的 Chamfer 距离。

具体而言,生成损失 Lg1 和 Lg2 可以通过计算预测的点块 Ppd 与真实点块 Pgt 之间的 Chamfer 距离来获得。这些损失函数用于衡量生成结果与真实结果之间的差异,以指导生成器的训练。

3.4 Post-Pre-training

传统的点云自监督学习(SSL)方法直接在目标数据集上微调预训练模型,由于语义监督信息有限,这可能导致潜在的过拟合问题。为了缓解这个问题并便于训练高容量模型,PointGPT采用了中间微调策略,并引入了一个预训练后的阶段。

在这个阶段中,使用一个带标签的混合数据集(Sec. 4.1)进行训练,该数据集收集和对齐了多个带标签的点云数据集。通过在这个数据集上进行监督训练,可以有效地从多个来源合并语义信息。随后,在目标数据集上进行微调,将学到的通用语义知识转移到任务特定的知识上。

这种中间微调和预训练后阶段的策略有助于提高模型的泛化能力,避免潜在的过拟合问题,并利用多样化的语义信息来提升模型的性能。

4 Experiments

为了展示PointGPT在不同下游任务上的性能,我们进行了一系列实验,包括真实世界和干净对象数据集上的物体分类、少样本学习和部分分割。我们使用三种不同的模型容量来评估PointGPT的性能:PointGPT-S,在ShapeNet数据集上进行预训练但不进行预训练后阶段;PointGPT-B和PointGPT-L,在收集的混合数据集上进行预训练和预训练后阶段。

表1显示了在ScanObjectNN和ModelNet40数据集上的分类结果,所有结果均以百分比表示。具体来说,对ScanObjectNN数据集进行了三个变体的评估。此外,报告了在ModelNet40数据集上使用1k点和8k点时的准确率。

 5 Conclusion

本文介绍了PointGPT,这是一种将GPT概念扩展到点云领域的新方法解决了点云的无序性、信息密度差异和生成任务与下游任务之间的差距等挑战

与最近提出的自监督遮蔽点建模方法不同,我们的方法避免了整体物体形状泄漏,具有更好的泛化能力。此外,我们还探索了高容量模型的训练过程,并收集了用于预训练和预训练后阶段的混合数据集。

我们的方法在各种任务上验证了其有效性和强大的泛化能力,表明我们的PointGPT在模型容量相似的单模态方法中表现优异。此外,我们的大规模模型在各种下游任务上取得了SOTA的性能,无需跨模态信息和教师模型的参与。

尽管PointGPT表现出了良好的性能,但其探索的数据和模型规模仍然比NLP [5; 10]和图像处理 [65; 27] 领域小几个数量级。我们的愿望是,我们的研究可以在这个方向上刺激进一步的探索,并缩小点云与这些领域之间的差距。

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

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

相关文章

C++中set的用法

博主简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的人。 博主主页:陈童学哦 所属专栏:CSTL 前言:Hello各位小伙伴们好!欢迎来到本专栏CSTL的学习,本专栏旨在帮助大家了解…

[SWPUCTF 2021 新生赛] (WEB一)

目录 gift_F12 jicao easy_md5​ caidao include easy_sql easyrce babyrce Do_you_know_http ez_unserialize gift_F12 1.开启环境 2.题目提示f12 ctrlf 搜索flag 得到flag "WLLMCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft} jicao 1.开启环境 2.传参 jso…

MyBatis-Plus中AutoGenerator的详细使用案例

AutoGenerator是什么? AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Pojo、Mapper、 Mapper XML、Service、Controller 等各个模块的代码 AutoGenerator能干什么? 对于单表而言,几乎是一个全能…

调用百度API实现菜品识别

调用百度API实现菜品识别 1、作者介绍2、百度API菜品识别接口介绍2.1图像识别接口介绍2.2接口使用说明2.2.1请求示例2.2.2请求参数 3、调用百度API流程4、代码实现 1、作者介绍 李延,男,西安工程大学电子信息学院,2022级研究生 研究方向&…

如何禁用网络共享打印?

139端口是为“NetBIOS Session Service”提供的,主要用于提供Windows文件和打印机共享以及Unix中的Samba服务。在Windows中要在局域网中进行文件的共享,必须使用该服务。 开启139端口虽然可以提供共享服务,但是常常被攻击者所利用进行攻击&am…

chatgpt赋能Python-python_chi

Python Chi:掌握Python语言的关键 Python是一种面向对象、直译式计算机程序设计语言,被广泛应用于各种领域。无论是数据分析、人工智能、Web开发、网络爬虫还是科学计算,Python都扮演着重要的角色。而Python Chi则是Python语言中一个重要的方…

HQL函数--打地鼠游戏及WordCount案例分析及实现

1.打地鼠 uid,hit,m 1,1,0 1,2,1 1,3,1 1,4,1 1,5,0 1,6,0 1,7,1 2,1,1 2,2,1 2,3,1 2,4,1 2,5,1 3,1,1 3,2,1 3,3,1 3,4,0 3,5,0 3,6,1 3,7,0 3,8,1 create table tb_ds( uid int , -- 用户名 hit int , -- 第几次打地鼠 m int -- 是否命中 1命中 0 …

Request响应和Response对象

什么是Request响应和Response对象 实际上就是指Request对象和Response对象。 一个get或者post请求实际上就是一些有规律的字符串,Tomcat将这些字符串获取并且封装成一个可操作的对象。 通过Response对象可以设置响应数据,也就是Tomcat想要给浏览器发送…

Redis安全性详解

目录 ​编辑 Redis安全性详解 1.Redis的访问控制措施。 2.Redis的密码认证机制 3.Redis的绑定IP地址 4.Redis的网络ACL 5.Redis的防火墙或网络安全组 Redis安全性详解 Redis是一个快速、开源的内存数据库,被广泛用于缓存、消息传递和数据存储等场景。然而&a…

sql查询每组数据中时间最大的一条

sql查询每组数据中时间最大的一条 前言代码总结 前言 先来了解一下业务需求。博主好久没写过后端了,这一写就直接碰到我知识盲区了 我们简单还原一下,这里使用一个表模拟下 表的字段如下 表的内容如下,我们的需求就是取出相同name的数据中…

五、AOP(1)

一、AOP基本概念 1.什么是AOP 面向切面编程(方面),利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。不通过修改源代码方式添…

章节1:Burp Suite基本介绍

章节1:Burp Suite基本介绍 Burp [bɜ:p] Suite [swiːt] 01 Burp Suite基本介绍 官网介绍 https://portswigger.net/ 主要产品 Burp Suite培训和认证(Academy)研究院(Research)日报(Daily)…

win10下annoconda安装及更改镜像源,加速软件下载速度

1 annoconda下载 文件地址,选择版本下载https://repo.anaconda.com/archive/ 如下在win10版本: https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Windows-x86_64.exe 完成后根据向导安装。 2 清空镜像源,回到初始状态…

QT之动态加载下拉框(QComboBox)

QT之动态加载下拉框(QComboBox) 简介效果原理分析实现 简介 这两天遇到一个需求,需要下拉选项中动态加载一些数据,实现之后感觉挺有意思,特此记录一下。 效果 还是先看下效果,源码也放在文末了 原理分…

图形学中的抗锯齿讨论以及在unity中的应用

抗锯齿(Anti-Aliasing)是图形学中,很重要的一个部分。本文旨在做一些分析总结,并对平时不理解的细节,做了调研总结,但毕竟不是做GPU行家,所以有不对的地方,欢迎拍砖^^。 1 什么是锯齿 下图,是…

Linux 防火墙 Firewalld

firewalld概述 firewalld防火墙是Centos7系统默认的防火墙管理工具,取代了之前的iptables防火墙,也是工作在网络层,属于包过滤防火墙。 firewalld和iptables都是用来管理防火墙的工具(属于用户态)来定义防火墙的各种规…

《C++primer》5~6章总结

《CPrimer》 语句函数 语句 if else 就C而言,规定else与离它最近的尚未匹配的if匹配,从而消除程序的二义性,所以最好的处理方法就是养成习惯在if else 后面加一个花括号swirch搭配case关键字使用,case关键字和它对应的值一起被称…

PCB~地平面

地平面的特征 • 在同一块板子上,无线数字信号经常会有较高的数字逻辑,例如高增益的RF电路 • 屏蔽和接地对于接收端的设计是非常有效的 – 辐射在源端就应该被屏蔽掉 – 地平面电流应该回到源端 – 电源电流会通过最小电阻和电感路径回到源端 • 至少有…

Git的项目管理工具的使用

Git的项目管理工具的使用 为什么学习Git软件? 主流开发中,基于互联网的开发项目都会使用git进行资源管理 资源管理:人力资源 ​ 代码资源 : .java .c . js 等 ​ 文档资源 : doc.md ,pdf 等 git是最常用的scm软件(Soft…

Vivado综合属性系列之九 CLOCK_BUFFER_TYPE

目录 一、前言 二、CLOCK_BUFFER_TYPE ​ ​2.1 属性说明 ​ ​2.2 工程代码 ​ ​2.3 结果 一、前言 ​ ​在设计中,对于时钟端口驱动时钟单元时,工具会自动综合出全局时钟BUFG连接时钟源和时钟负载。当存在全局时钟BUFG不足或者因为某些…