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中各部分的解释:
- 点云序列模块(Point Cloud Sequencer Module):这个模块用于构建点块的有序序列。它将点云分割成不规则的点块,并按照 Morton 排序将它们排列起来,形成一个有序序列。
- 提取器(Extractor):这是一个用于学习潜在表示的模块。有序的点块序列被输入到提取器中,通过自回归的方式学习点块的潜在表示。提取器的目标是从前面的点块中预测下一个点块。
- 生成器(Generator):这是一个用于自回归生成点块的模块。在预训练阶段,生成器根据前面的点块生成下一个点块,以自回归的方式逐步生成点块序列。在预训练结束后,生成器被丢弃,不再使用。
- 预训练后的阶段(Post-Pre-training Stage):在预训练阶段结束后,生成器被舍弃,而提取器则利用学习到的潜在表示进行下游任务。此时,不再使用双重掩码策略。
3.1 Point Cloud Sequencer
在点云领域,与自然语言处理(NLP)领域不同,点云缺乏预定义的词汇表,并且点云是一种稀疏结构,具有无序性的特点。为了克服这些挑战并获得一个有序的点云序列,其中每个组成单元捕捉到丰富的几何信息,论文中采用了一个三阶段的过程,包括点块划分、排序和嵌入。
- 点块划分(Point Patch Partitioning):该阶段将点云划分为不规则的点块。通过将点云分割成块状的子集,可以将点云的结构分解成更小的部分,以便更好地进行处理。
- 排序(Sorting):划分的点块按照 Morton 排序进行排序。Morton 排序是一种用于多维数据的排序方法,通过将多维数据转换成一维的比特串,实现了对多维数据的排序。通过 Morton 排序,点块的顺序得到了定义,形成了有序的点块序列。
- 嵌入(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] 领域小几个数量级。我们的愿望是,我们的研究可以在这个方向上刺激进一步的探索,并缩小点云与这些领域之间的差距。