摘要
由于其令人印象深刻的零样本能力,CLIP等视觉语言模型已被广泛应用于各种任务。 但是,CLIP不适用于提取三维几何特征,因为它仅通过自然语言监督在图像和文本上进行训练。 我们致力于解决这一局限性,并提出一个名为CG3D(CLIP Goes 3D)的新框架,其中学习一个三维编码器以展现零样本能力。CG3D使用点云、相应的渲染二维图像和文本的三元组进行训练,并使用自然语言监督。 为了在多模态嵌入空间中对齐特征,我们利用对比损失对从三维编码器获得的三维特征以及从CLIP提取的视觉和文本特征进行处理。 我们注意到,用于训练CLIP的自然图像和CG3D中渲染的二维图像存在分布差异。 试图训练视觉和文本编码器来解释这种差异会导致灾难性遗忘和性能显著下降。 为了解决这个问题,我们采用提示微调,并在输入空间中引入可训练参数,以将CLIP转向CG3D中使用的三维预训练数据集。 我们对预训练的CG3D框架进行了广泛测试,并证明了其在零样本、开放场景理解和检索任务中的出色能力。 此外,它还可以作为在下游三维识别任务中进行微调的强大起始权重。 代码和预训练模型可在此处找到:https://github.com/deeptibhegde/CLIP-goes-3D.
*
1引言
对于二维视觉中的许多任务,目前最有效和准确的结果是通过调整在大型数据集上预训练的基础模型[47, 48, 2, 70]获得的。 目前有大量的研究集中在有效地调整基础模型以适应特定的二维视觉任务[71, 52, 64, 18],而不是从头开始开发新的监督方法。 这些方法试图在现有模型的基础上构建,并利用其预训练特征来在目标任务上取得更好的性能,同时减少数据和计算需求。 视觉领域的这些最新趋势实际上类似于几年前在自然语言处理 (NLP) 中观察到的趋势。 在NLP领域,自2018年以来,基础模型一直占据主导地位,因为像BERT[10]和GPT-3[4]这样的模型展现出完成各种NLP任务的卓越能力,例如问答、句子预测、情感分类等。此外,在多模态数据(如图像和文本)上预训练的基础模型通过展现令人印象深刻的零样本能力而变得有用。 特别是,对比语言图像预训练 (CLIP)[46]已被应用于各种二维任务,包括图像分类[77]、目标检测[53, 16]、图像分割[29, 62, 75]、图像检索[21, 33]和视觉问答[39, 8]。 视觉和NLP领域基础模型的这些进步尚未颠覆三维视觉和理解领域。 在这项工作中,我们试图弥合这一差距,并专注于回答以下问题: 我们如何构建一个三维网络,使其拥有类似于CLIP这样的基础模型的功能?
三维视觉理解在机器人技术[19, 76]、增强现实[20, 60, 68]和自动驾驶[44, 43, 51, 38]等方面具有许多实际应用。 理解三维空间中每个点的语义和特征对于解决下游任务中的广泛问题至关重要。 因此,对于类似于视觉和NLP基础模型的潜在三维基础模型,存在一些用例。 一个强大的具有零样本能力的三维网络不仅有助于提高现有三维骨干网络的性能,而且还能够实现开放的三维场景理解和三维检索任务。 然而,开发用于三维理解的基础模型面临着一些挑战,包括与图像相比,三维数据的可用性有限。 尽管 CLIP 能够利用互联网上大量的图像来创建大型的图像-标题配对预训练数据集,但由于 3D 数据的稀缺性,无法直接采用类似的方法来预训练具有文本的 3D 编码器。 最近出现了一些工作,例如 PointCLIP[72],试图利用 CLIP 的零样本能力解决 3D 零样本问题。PointCLIP 直接将 3D 点云的深度图应用于 CLIP 的 2D 视觉编码器。 虽然它为 3D 零样本问题提供了一个快速简单的解决方案,但由于它不能用于 3D 微调任务或 3D 开放场景理解,因此它缺乏基础模型的特性。 此外,它不具备提取与 3D 理解中的下游任务相关的任何 3D 几何特征的能力。
为此,我们提出了一种新的预训练框架,称为 CG3D(CLIP Goes 3D),它使用自然语言监督训练 3D 编码器,同时利用 CLIP 的知识。 我们首先创建一个预训练数据集,该数据集由 3D 点云、图像和相应的文本描述的三元组组成。 我们使用来自 ShapeNet[5] 的点云作为我们的 3D 数据,并整理其相应的渲染的 2D 图像和标题。 由于 ShapeNet 由纹理 CAD 模型组成,我们渲染每个对象的随机视图作为图像对。 尽管它们具有不同的特性,但 3D 点云和同一对象的图像都共享共同的语义属性。 这得到了诸如单图像点云重建 [35, 12] 等任务的成功以及将预训练权重从基于图像的网络转移到 3D 点云分类网络(如 [65] 中所示)的成功所证实。CG3D 的目标是确保 3D 特征和 2D 特征之间以及 3D 特征和同一类别的对象的文本特征之间存在相似性,而不同类别的对象的特征则不同。 这种对比学习方法使 3D 编码器能够获得类似于 CLIP 的零样本能力。
使用对比损失训练 3D 编码器并将 3D 特征与 CLIP 视觉编码器的 2D 特征进行比较的过程是将 CLIP 的语义特征蒸馏到 3D 编码器的一种方法。 虽然训练 CLIP 的视觉编码器以与 3D 对象及其相关图像的数据分布对齐会很有效,但我们观察到在 CG3D 中与 3D 编码器一起训练 CLIP 的视觉和文本编码器时,性能显着下降。 这可以解释为 CLIP 在被训练转移到新的分布时开始灾难性地遗忘其之前的特征。 然而,保持视觉编码器完全冻结并非理想状态。 像CLIP这样的大规模语言模型主要在自然图像上进行训练,其分布与3D对象的图形渲染视图不同。 为了解决这个领域差异[58, 56, 57, 55],我们提出使用提示微调技术[22, 7]来转换输入空间中的分布,然后再将其转发到视觉编码器。 我们在CLIP视觉编码器的Transformer主干中添加视觉提示,从而仅在输入空间中添加少量参数,同时保持CLIP视觉编码器的权重冻结。 这些参数学习输入分布的偏移以适应CLIP,从而使3D预训练有效。 为了证明CG3D的有效性,我们进行了一些实验。 首先,我们在ModelNet[61]和ScanObjectNN[54]等合成和真实物体数据集上展示了它的零样本能力。 此外,我们通过使用基于文本的查询展示了3D模型在开放场景理解方面的能力,以及它在使用图像或文本查询进行跨模态3D数据检索的能力。 此外,使用CG3D预训练3D编码器获得的权重也可以作为微调模型以用于其他3D任务的有效初始权重。
总之,以下是我们的主要贡献:
•
我们提出CG3D,这是一种对比预训练框架,用于使用自然语言监督训练3D网络,同时利用CLIP的知识。
•
我们利用提示微调来转换预训练视觉编码器的输入空间,从CAD对象的渲染图像转换为自然图像,从而更有效地利用CLIP进行3D形状处理。
•
我们进行了广泛的实验来证明CG3D的多功能能力。 它展现了强大的零样本、3D检索和具有语言能力的3D场景理解能力。CG3D还可以作为多个3D识别任务的强大起始权重。
2相关工作
视觉语言模型: 基于注意力机制的模型上大规模文本预训练[10, 73]的使用,由于其在视觉理解任务[26, 32, 46]中令人印象深刻的性能,导致了视觉语言模型 (VLM) 的日益普及。 最近对比学习的进步使CLIP[46]能够利用从网络爬取的4亿条噪声数据进行多模态学习。 通过各种方法,例如ALBEF[24]和Cyclip[15],CLIP已被扩展用于高效的模型训练和循环一致性。BLIP[23]包含文本到图像生成作为辅助任务,通过利用合成数据作为补充,从而获得更好的性能。 将VLM用于3D点云处理仍处于起步阶段。PointCLIP[72]是第一个将CLIP用于3D任务的方法。 它直接使用3D点云的深度图,并将其用于CLIP的视觉编码器进行零样本分类。 与此不同,我们专注于在CLIP中使用3D编码器,以便它可以直接接收3D点云。
3D点云处理方法: 一般来说,点云处理方法要么直接处理原始点云集[44, 45],要么将原始点云转换为中间表示,例如体素[36, 50]或图像[67, 25]。PointNet[44]对点云处理领域做出了重大贡献,因为它通过共享MLP能够直接使用无序点集作为输入。PointNet++[45]后来作为PointNet的扩展被提出,它结合了一种分层特征学习方法,递归地捕获局部几何结构。 这种特征表示方法已被证明是有效的,因为它能够捕获多尺度信息,并且已广泛应用于各种点云应用[59, 13, 66]。 最近,PointTransformer[74]和PCT[17]等方法提出了基于Transformer的方法,显示出显著的性能提升。 目前最先进的方法是PointMLP[34],它有效地使用深度残差MLP网络进行点云分析。
也有一些预训练方法表明,可以使用未标注的数据对3D主干网络进行预训练,以获得强大的初始权重,从而提升微调性能。PointContrast[63] 通过将同一样本的大量增强视图聚集在一起,并最小化经过刚性变换的点云场景中其他样本视图之间的相似性,来执行对比训练 [6]。CrossPoint[1] 通过最大化图像和点云物体之间的一致性来提升点云分类性能。PointBERT[69] 和 PointMAE [42] 利用掩码建模方法进行预训练。 与这些主干网络或预训练工作不同,我们专注于在提出的 CG3D 框架中为给定的 3D 编码器赋能零样本能力。
3方法
我们的主要目标是训练一个 3D 形状编码器,以获取能够有效捕捉点云几何属性的形状特征,同时与 CLIP 对每个物体类别的特征表示保持一致。 本质上,我们希望获得对每个类别都独一无二,但不受表示方式影响的特征。 为此,我们使用点云-图像-标题三元组来训练框架。 点云-图像-标题三元组中的每个元素都表示一个具有特定语义特征的物体,这些特征在集合中的其他物体之间是共享的。 在本节中,我们首先概述所提出的 CG3D 框架,然后详细介绍如何有效地训练网络。 然后,我们将详细介绍 CG3D 的潜在用例。
3.1CG3D 框架
如图 2 所示,CG3D 框架由 3 个网络组成——3D 形状编码器、视觉编码器和来自 CLIP 的文本编码器。
3D编码器 以3D点云作为输入。 为了捕捉物体的基本形状特征,我们采用了一个专门设计用于分析点云并生成表示物体的特征向量的3D编码器。 我们的框架与3D编码器的选择无关,一个附加的投影层确保输出特征维度保持一致。
2D视觉编码器 以3D点云对应的渲染图像作为输入。 虽然形状特征在表示点云中至关重要,但从大量数据训练的视觉语言模型中的图像主干提供了图像的有力特征表示,这些表示在语义上与文本相关。 我们采用CLIP的视觉编码器,因为它鲁棒且在海量数据上进行了预训练。 通过利用视觉编码器,我们可以获得点云数据集中存在的类别的高效且隐含的表示,然后将其用于与3D特征对齐。 请注意,CLIP为视觉编码器提供了ResNet和ViT权重。
文本编码器 以3D点云对应的文本标题作为输入。 采用自然语言监督进行图像特征学习已成功地训练模型来掌握可以在图像和文本中描绘的视觉概念 [46]。 在CLIP中,文本编码器被训练以将文本描述与图像对应,我们在与[46]相同的配置下直接使用它。
3.23D编码器训练
我们的主要训练目标是将3D点云与其对应的类别级别图像和文本对齐。 这种对齐发生在一个公共嵌入空间中,来自每种模态的数据从特定于模态的编码器和投影头投影到该空间。 我们的训练策略依赖于对比学习,它激励同一对的跨模态特征在嵌入空间中彼此靠近,同时保持属于其他对的样本分开。 我们在下面制定了所提出的损失函数。 考虑一组
其中
其中
其中
3.3视觉编码器的提示调优
CG3D框架中的视觉编码器以3D点云的渲染图像作为输入。 尽管CLIP视觉编码器已在海量互联网数据上进行训练,并具有很强的鲁棒性,但在CG3D的预训练过程中,它仅处理渲染图像。 因此,微调CLIP视觉编码器以处理渲染图像可以改进3D编码器的训练过程。 一种可能的方法是通过使用计算图像和文本特征之间相似度的CLIP损失函数优化其权重来训练视觉编码器。 但是,当我们尝试这种方法时,我们注意到性能大幅下降。 这种现象可以用训练CLIP的视觉编码器会导致灾难性遗忘来解释。 也就是说,编码器在试图适应新的数据分布时会丢失其所有先验知识。 通常,可以通过增加用于微调的新数据的数量来避免这个问题。 但是,获得足够大的3D数据集以匹配用于训练CLIP的大规模图像文本数据是不现实的。 因此,我们专注于开发有效地利用新的预训练数据微调模型同时保持视觉编码器冻结的方法。
如[18]所述,视觉提示调优是一种在输入空间中添加少量可训练参数以针对特定任务微调基础模型的方法。 在我们提出的CG3D预训练方法中,我们采用了这种方法,并修改了输入空间以更好地与原始CLIP模型的视觉编码器对齐。 这反过来又允许视觉编码器产生更高质量的特征,从而可以增强3D编码器的训练。 我们使用深度提示,其中我们在ViT(视觉编码器)的Transformer层中的每一层都引入可学习的提示作为可学习的符元。 对于
其中
其中
3.4使用CG3D
3.4.1零样本3D识别
零样本3D分类是指在不需要对特定对象进行任何先前训练的情况下对3D对象进行分类的方法。 它在机器人技术和自主系统中有很多用例,在这些用例中,需要快速准确地识别物体,而无需对新物体进行大量训练。CG3D可以直接使用3D编码器实现零样本3D识别,该编码器从输入点云中提取形状特征。 对于零样本推理,我们仅使用我们提出的CG3D框架中的3D和文本编码器。 模型将点云测试样本(表示为
其中
3.4.2使用语言进行场景查询
3D场景理解是计算机视觉中的一项重要任务。 这对于实现人机交互和促进直观的人机界面至关重要。 特别是,使用语言查询来查询场景以了解场景的关键细节是一项非常有用的任务。 这其中一个方面是回答诸如“沙发在哪里?”或“椅子在哪里?”之类的查询,这可以帮助个人理解环境或使机器人能够智能地与之交互。 通过准确识别场景中的物体及其位置,机器人可以执行各种任务,例如操作、导航和物体识别。 同时,个人可以使用交互式查询和可视化工具来更好地理解和分析复杂的3D场景。
CG3D能够使用语言查询进行零样本场景理解。 我们无需在室内场景上训练模型或使用直接监督,即可证明可以使用预训练的CG3D框架来理解带有文本查询的场景。 给定一个输入场景,我们首先使用k均值聚类将场景划分为有意义的片段。 接下来,我们将所有这些聚类转发到我们CG3D框架中的3D编码器,并获得一组3D特征
其中
3.4.3检索
3D点云检索是搜索和检索与给定查询类似的3D点云数据的过程。 此处的查询可以是不同的模态,例如图像或文本。 这具有多个实际应用,例如将现实世界中的物体与其在虚拟环境中的相应3D点云匹配,以帮助创建更逼真和准确的增强现实和虚拟现实体验。
为了使用CG3D检索数据,我们利用预训练的编码器来获取查询和3D点云的特征表示。 具体来说,我们将图像或文本查询输入到相应的编码器以获得其特征向量,我们对3D点云使用3D编码器也执行相同的操作。 传递给3D编码器的点云构成了我们从中检索相关形状的完整数据库。 接下来,我们获得这些查询特征和3D特征之间的相似度得分,并选择具有最高相似度得分的点云作为输出。
在图4中,我们展示了CG3D在检索相关3D点云方面的有效性。 我们从互联网上随机选择一些图像作为查询图像,并使用ModelNet40作为我们的三维检索数据库。 我们选择与输入查询最相似的四个三维点,并在图4中显示它们。 同样,我们也使用一些随机文本查询并显示最佳匹配结果。 可以观察到,所有检索到的点云与输入查询都非常相似,这证明了CG3D的有效性。
3.4.4用于监督任务的微调
预训练技术是提高三维计算机视觉任务中微调性能的有效策略。 在大型未标记图像数据集上预训练模型可以帮助它们学习通用和可迁移的特征,使它们对数据变化更具鲁棒性,并能够很好地泛化到新的任务和数据集。
尽管CG3D的主要目标是其零样本能力,但它也可能成为微调下游任务的三维模型的有价值的起点。 这是由于三维编码器的出色特征表示能力,该编码器已在CG3D框架中使用自然语言监督进行预训练。 此外,CG3D是模型无关的,这意味着任何三维骨干网络都可以使用CG3D进行预训练,并且生成的权重可以用作下游任务的起点。 我们展示了多个实验,证明了使用CG3D进行微调任务的有效性。
4实验和结果
4.1数据集
预训练数据集: 我们选择 ShapeNet [5] 作为预训练数据集,因为它包含大量的类别和样本。ShapeNet 包含 55 个物体类别和总共 52,460 个样本的纹理化 CAD 模型。 我们从每个物体网格中采样固定大小的点云,并将其标准化以适应单位球体。 我们遵循 [14],在 Blender 中渲染彩色 CAD 模型视图,以获得每个点云的图像对。 每个点云-图像对的文本标题被构建为描述性句子,这些句子来自一组标准模板,例如“一张{物体}的照片”。 每个输入点云都使用标准技术进行增强,例如物体缩放、旋转、随机丢弃和扰动。
微调数据集: 我们在流行的 3D 数据集 ModelNet40 [61] 和 ScanObjectNN [54] 上执行零样本 (ZS) 分类和下游微调。 按照标准做法,我们在完整数据集 (ModelNet40) 以及 10 类子集 (ModelNet10) 上评估零样本分类。ModelNet40 包含来自 40 个类别的 12,311 个常见物体的合成网格。 每个网格都被下采样并标准化以适应单位球体。ScanObjectNN 是一个来自激光扫描室内场景的真实世界物体点云数据集。
4.2实现细节
存在几种视觉语言模型,可以认为是 CLIP 的变体,它们在图像上提供了优越的零样本性能 [24, 40, 28]。 由于其性能和灵活性,我们利用来自 SLIP[40] 的预训练视觉和文本编码器权重来训练 CG3D。 我们特别选择 ViT-Base[11] 作为图像主干。
预训练: 在预训练期间,视觉提示参数和3D编码器的参数在交替迭代中使用不同的优化器进行微调。 这是因为它们各自由不相交的损失函数监督,并且需要不同的学习率。 我们在ViT中每个编码器层的输入处附加5个可学习的提示符元,并将其随机初始化。 使用具有余弦退火[30]调度器的SGD [49]优化器对视觉提示进行微调,学习率为
微调: 使用SGD优化器和余弦调度器对PointMLP进行微调,学习率为
4.3零样本实验
我们在表1中展示了在ModelNet10、ModelNet40和ScanObjectNN的测试分布上进行的零样本实验的结果。 我们实验了两个主干:使用CG3D预训练的PointTransformer和PointMLP。 请注意,以前的方法PointCLIP使用2D深度图和CLIP的视觉编码器来获得预测结果。 我们直接使用3D编码器并提取相关的3D形状特征来执行零样本分类。 这比PointCLIP有了显著的改进,在ModelNet10上提高了
Method | Zero-shot performance | ||
MN10 | MN40 | ScanObjectNN | |
PointCLIP [72] | 30.2 | 20.2 | 15.4 |
PointTransformer [74]+ CG3D | 67.3 | 50.6 | 25.6 |
PointMLP [34] + CG3D | 64.1 | 50.4 | 25.0 |
4.4微调实验
Method | Overall accuracy | |
ModelNet40 | ScanObjectNN | |
Pointnet [44] | 89.2 | 68.0 |
Pointnet | 90.5 | 77.9 |
PointCNN [27] | 92.2 | 78.5 |
DGCNN [59] | 92.9 | 78.1 |
Point-BERT [69] | 93.2 | 83.07 |
Point-MAE [42] | 93.8 | 85.18 |
PointTransformer [74] | 91.62 | 75.56 |
PointTransformer [74] | 92.93 | 80.95 |
PointMLP [34] | 92.61 | 84.08 |
PointMLP [34] | 93.35 | 85.78 |
我们在表2中展示了我们在合成数据集(ModelNet40)和真实数据集(ScanObjectNN)上的微调实验结果。 对于ScanObjectNN,我们在实验中选择了最难的变体PB-T50-RS。 我们将其与领先的主干网络以及Point-BERT和Point-MAE等预训练方法进行了比较。 我们展示了在两个主干网络PointTransformer和PointMLP上的微调性能。 需要注意的是,我们的框架并非主要作为预训练策略开发的,而是为了使3D编码器能够实现零样本能力。 即便如此,正如表2中观察到的那样,我们的框架也展示了作为预训练策略的竞争性能。 特别地,在ScanObjectNN和ModelNet40上,使用CG3D起始权重比随机权重分别为PointTransformer提高了
5讨论
消融研究: 我们进行了一项消融研究,以分析CG3D的每个组件对零样本性能的影响。 在表3中,我们报告了在ScanObjectNN的PB-T50-RS变体中,在不同损失配置下预训练的PointTransformer 3D编码器的整体零样本准确率。 我们首先使用
visual prompt | ZS | ||
✓ | 19.1 | ||
✓ | 19.7 | ||
✓ | ✓ | 23.9 | |
✓ | ✓ | ✓ | 25.6 |
少数据分析: 预训练模型在处理数据访问有限的任务时特别有用。 为了证明 CG3D 在此类场景中的有效性,我们在 ModelNet40 数据集上进行了实验,分别使用 PointMLP 和 PointTransformer 作为主干网络。 我们在数据集的不同子集
3D 特征表示的可视化: 为了分析我们方法学习到的特征的质量,我们使用 ModelNet10 数据集,可视化了 CG3D 提取的 3D 特征和图像特征的 UMAP[37]嵌入。 在图6中,我们绘制了使用 CG3D 预训练前后 PointTransformer 学习到的 3D 特征。 如图6(a)所示,预训练前大多数特征缺乏类别可分性。 预训练后,即使对于 ModelNet10 中未见过的类别,3D 编码器也能产生类别区分特征,如图6(b)所示。
提示调优的效果: 我们将 CG3D 中使用和未使用学习到的提示的可视化编码器学习到的图像特征进行了可视化。 由于并非所有样本都具有纹理化CAD模型,我们考虑将投影到二维平面上的点的深度图。 图7(a)显示了CLIP视觉编码器学习到的深度图图像特征。 由于这些图像在视觉上与自然图像不同,编码器无法产生具有区分性的特征。 但是,如图7(b)所示,在CG3D预训练后使用视觉提示进行训练的视觉编码器产生的特征具有改进的类别可分离性,证明了提示调优的有效性。
局限性: 我们注意到我们的预训练数据集规模仍然很小,并且仅包含模拟点云对象,从而限制了CG3D的潜力。 为了构建一个强大的3D基础模型,我们需要对3D点云数据进行整理,并包含相应的图像和文本标题。 我们还专注于对对象而不是场景进行预训练。 对场景进行预训练可以开启CG3D中有趣的完整场景理解能力。
6结论
在本文中,我们提出了一种新的框架CG3D(CLIP goes 3D),其中将3D编码器引入CLIP框架。 对该3D编码器进行训练,使其提取的3D特征与同一类别的图像和文本特征对齐。 我们还提出使用可学习的视觉提示符将渲染图像分布转移到 CLIP 的分布,以从视觉编码器中获得更好的表征图像特征。 通过广泛的分析,我们证明了 CG3D 的零样本能力,这使得零样本 3D 分类、使用自然语言进行场景查询以及跨模态检索成为可能。 此外,CG3D 在训练用于下游任务的 3D 网络时提供了强大的初始权重。