侧边栏壁纸
博主头像
Chailyn's homepage

行动起来,活在当下

  • 累计撰写 16 篇文章
  • 累计创建 12 个标签
  • 累计收到 15 条评论

目 录CONTENT

文章目录

PaperRead:PointCLIP:Point Cloud Understanding by CLIP

Introduction

  • 目前,在实际场景中,大规模新采集的3D点云数据中,往往会包含许多“训练时从未见过的类别”,这会让已经训练好的分类器难以识别,再好的模型也会识别失败

2D vision

  • 在2D视觉中已经被Contrastive Vision-Language Pre-training(CLIP)缓解
  • 一种思路
    • 在零样本分类任务中,CLIP通过预训练学到的图像-文本之间的相关性,能够实现开放词汇的识别能力
      • "A photo of a [ CLASS ]"
    • 少样本学习(few-shot)中,为了进一步提升准确率,CoOp 提出了一种方法:把文本提示(prompt)中的 token 设置为可学习参数,使得分类器的权重可以根据少量样本自适应地学习出来
      • "[V1] [V2] a photo of a [ CLASS ]"
  • 另一种思路
    • CLIP-Adapter在图像特征后加了一个轻量级的残差风格的 adapter(由两层线性层组成),用于更好地调整图像特征以适应下游任务。
    • 在此基础上,Tip-Adapter 进一步优化了效果:既提升了性能,又显著降低了训练时间
    • 这两个都比原始的zero-shot CLIP效果更好

转移到3D

挑战1:3D点云是无序的点集合,而CLIP只能处理网格结构的图像

  1. 考虑到像自动驾驶室内导航等场景需要实时预测,我们提出使用在线透视投影来处理点云数据:
  • 不进行任何渲染处理(post rendering),而是将点云中每个点直接投影到一系列预定义的图像平面上,得到的结果是稀疏的深度图(scatter depth maps)
  1. 我们使用 CLIP 的图像编码器(visual encoder)来对每一个视角下的深度图进行编码,并且通过 CLIP 的零样本分类器,为每个视角独立地进行文本匹配预测
  2. 不同视角对整个点云识别的贡献不一样,因此我们对这些视角的预测进行加权融合(weighted aggregation),从而得到最终的点云识别结果。

挑战2:性能仍然不及那些用完整数据集充分训练的传统3D点云网络

  • 设计了一个可学习的跨视角适配器(inter-view adapter),该适配器包含瓶颈结构的线性层(bottleneck linear layers),用来在少样本环境下更有效地提取和融合多视角的特征
    • 先将所有视角的特征拼接(concatenate),然后通过跨视角的信息交互和总结,得到该点云的紧凑的全局特征表示
    • 根据这个全局特征,为每个视角生成一个适配后的特征(维度和原来的一致,就是为了补充特征),并通过残差连接将它加到原始CLIP编码的视角特征上。
  • 训练时,只微调这个轻量级的适配器,而冻结CLIP的视觉和文本编码器,避免因训练样本极少导致的过拟合。

可以与其它点云模型结合

  • 我们发现,CLIP在2D领域通过对比学习获得的知识,与3D点云模型中的有监督信息是互补的,两者能从不同角度帮助提升识别能力。

Related Work

3D领域的零样本学习

  • 最早的3D点云零样本方法将数据集分为“已见类别”(seen)和“未见类别”(unseen), 用 PointNet 在已见类别上训练,在测试时通过类别语义嵌入与预测结果的余弦相似度来进行未见类别的识别。
  • 基于上述方法:接下来进一步缓解了由低质量3D特征引起的“hubness问题”(即某些类别嵌入成为所有样本的邻居,模型容易误判);
  • 另外在可传递(transductive)设置(预训练的时候有seen也有unseen)中引入三元组损失(triplet loss)(拉近相似样本之间的距离,拉远不相似样本之间的距离),使模型在训练时可以利用无标签的“未见类别”数据提升识别性能。
    • [Pasted image 20250710102946.png]
  • 上述方法都需要对部分的3D数据进行训练,PointCLIP可以在整个数据集上进行零样本识别

迁移学习

  • 迁移学习旨在利用数据丰富领域的知识,帮助数据匮乏领域的模型训练。
  • 在CV,基本上都是用ImageNet预训练,可以显著提升性能
  • 在NLP都是基于大规模网络文本的掩码语言模型预训练
  • 大多数的CLIP注入领域特定的监督信息,但大多数迁移学习方法都是在同一模态内进行的
  • PointCLIP是从2D到3D的过程
    [Pasted image 20250713125817.png]

3D点云的深度神经网络

  • 大致分为两类
    • 点基方法:直接在原始点云上处理;如经典的 PointNetPointNet++,通过对每个点使用多层感知机(MLP)编码,再用最大池化实现对点顺序的无关性。最近的点基方法则提出了更先进的局部特征聚合器和网络设计以提升性能。
    • 投影基方法:先把点云转换成其他格式再进行处理,比如体素或者多视角图像
  • 多视角方法将点云投影成多张视角图像,利用在ImageNet上预训练的2D卷积神经网络(CNN)进行处理,代表方法包括 MVCNN 及其他相关工作,通常这些多视角投影图像是离线生成的,可能是通过3D网格转换后投影,或经过后期渲染阴影和纹理。
  • 相反,我们借鉴 SimpleView 的做法, 直接将原始点云投影到图像平面上,像素值对应点的垂直距离(深度), 这种深度图生成方式计算量极小,满足了高效端到端零样本识别的需求

Method

[Pasted image 20250713102558.png]
为了弥合模态差距,PointCLIP 将点云投影到多视图深度图上,并通过在 2D 中预训练的 CLIP 进行 3D 识别。该开关分别提供了在实线和虚线中使用视图间适配器的直接零样本分类和少样本分类的替代方案

CLIP的详细介绍

  • 目的:让图像和对应的自然语言匹配起来
  • 使用两个独立编码器:图像和文本,然后使用对比损失,正确图文对的相似度最大,错误图文对的相似度最小;
  • 首先会采取4亿对图像-文本对进行训练
  • 零样本分类的流程:正确图文对的相似度最大,错误图文对的相似度最小;
    • 类别是 "dog",模板是 "a photo of a {}",那生成的文本是 "a photo of a dog"
    • 对K个提示语,输入文本编码器,得到K个C维向量,在拼成一个矩阵就是分类器的权重矩阵,然后测试图像通过图像的编码器,和特征矩阵进行相乘,计算相似度,进行softmax,最后拿到概率

通过CLIP进行点云理解

  • 3D领域的数据集很少,所以3D领域做迁移学习的难度很大
  • 那么就可以通过跨模态的CLIP进行学习
  • PointCLIP
    • 把点云(Point Cloud)转换成图像;
    • 然后用 CLIP 对图像做分类;
    • 类别由自然语言 prompt 提供 → 形成 zero-shot 分类器;

模态差距弥合

  • 从多个视角对点云进行投影(projection),生成可视化图像,每个视角得到一张投影深度图(depth map),然后可以送入 CLIP 图像编码器;
  • (x, y, z) 是点在三维空间中的坐标;(dx/z, dy/z) 是它在相机视角下的 2D 像素位置;距离越远 z 越大,投影就越“靠近中心、小” → 符合现实照片中的视觉规律
  • 传统方法得到的是 单通道深度图(灰度图),然后用 CNN 处理成 RGB;PointCLIP 方法:不做这些复杂处理,直接把每个像素的 R/G/B 值都设为 z 值(即深度);得到的是一个 “伪彩色 RGB 图”,但实际上每个通道值都一样。

零样本分类

  • 从M个视角投影生成的图,每张都通过CLIP的图像编码器进行提取特征向量
  • 把每个类别名K个放入模板"point cloud depth map of a [CLASS]",用 CLIP 的文本编码器 编码这些 prompt,放入权重矩阵,shape:(K,C)
  • 每一个图像视角 i,对应的分类 logits 计算如下:
    [Pasted image 20250713125859.png]每个视角都可以做一次Zero-shot分类,最后通过加权平均进行计算整体的分类
  • PointCLIP 完全不训练任何 3D 模型,也不微调 CLIP

PointCLIP的跨视角适配器

[Pasted image 20250713103013.png]

  • 我们训练可能收集到每个新类别 少量的点云样本(few-shot),不适合去微调整个模型(容易过拟合)
  • 借鉴了NLP中微调大模型的一个方式:加入一个轻量模块,只学习这个模块,其他冻结
  • 我们的做法:
    • 在原始 PointCLIP 的 logits(分类得分)输出上接一个三层 MLP,命名为 Inter-view Adapter(跨视角适配器),用它来做少样本下的微调。
    • 为了训练,我们冻结了 CLIP 的视觉和文本编码器,并通过交叉熵损失微调可学习的适配器。

Step 1:多视角特征拼接 + 获取全局表示

  • 首先就是把M个视角的特征,沿通道拼接成一个长向量1*(M·C)
  • 通过两层全连接(MLP)变换和 ReLU 激活,得到一个压缩且融合了多视角信息的全局特征:[Pasted image 20250713095549.png]

Step 2:从全局特征生成每个视角的适配特征(Residual)

  • 利用全局特征增强每个视角的原始特征:
    [Pasted image 20250713100242.png]
  • 一方面,将全局引导的适应特征混合到 fi 中,以全面了解点云,从而更好地进行视图预测。另一方面,残差样式适配器将新学习的 3D 少样本知识与 2D 预训练 CLIP 的知识注入,这进一步促进了跨模态知识转移。
  • 不需要重新训练整个 3D 模型;也不需要大量的 3D 数据,就能完成跨模态知识迁移。

知识融合

[Pasted image 20250713103026.png]

  • PointCLIP这种“语义先验”与传统 3D 网络的几何先验是 不同类型的知识
  • 那么能不能融合到一起用呢?
    • 推理时两个模型各自输出 logits(未 softmax 的分类分数);
    • 最后让两者直接相加,最后在做softmax得到最终预测
    • 但把PointNet++(或者其他全监督模型)和PointCLIP实验结果之后还在提升,**说明 PointCLIP 的知识是“有用但不显著”的补充信息。但是如果把两个全监督模型组合效果不会明显提升
  • 所以PointCLIP是一个即插即用的增强模块

Experiments

零样本分类

数据集

  • ModelNet10 / 40 是标准的 CAD 点云数据集;
  • ScanObjectNN 是更贴近真实扫描场景的点云数据集
  • 不使用任何训练数据,直接用预训练好的 CLIP 做测试,属于标准 zero-shot 设置。

实验设置

  • 对于预训练的 CLIP 模型,我们默认采用 ResNet-50 作为视觉编码器,transformer 作为文本编码器。
  • 然后我们从 6 个正交视图投影点云:前、右、后、左、上、下,每个视图的相对权重值范围为 1 到 10,如表 1 的第四列所示。
    [Pasted image 20250713103739.png]
  • 投影设置细节:
    • 坐标归一化到 [−1,1];
    • 视角平面(相机)设置在离原点(点云中心)一个固定距离投影参数 Proj.Settings 的第一个值)的位置;
    • 投影图为正方形,边长(第二个值)取决于数据集;图像越大(像素越多),而点云保持同样大小 → 投影后的物体越小;
    • 投影图缩放到 224×224像素,与 CLIP 输入一致。
  • 文本提示(prompt)也要匹配图像的“外观”;投影图看起来像灰度深度图(不是彩色图像),所以写作:
    • “point cloud depth map of a [类别]”
      [Pasted image 20250713104325.png]

实验表现

[Pasted image 20250713104728.png]

  • 能在 ModelNet10 上达到 30.23%,但在另两个表现一般,ModelNet40:类别数是 ModelNet10 的 4 倍,区分更细;ScanObjectNN:来自真实扫描,点云中含有噪声、缺失、背景等问题;
  • 与室内ModelNet10相比,ModelNet40上的PointCLIP需要更多的细节来识别复杂的户外物体,如飞机和植物,因此在更分散的点和更大的物体尺寸下表现更好,即更大的透视投影距离和分辨率。相比之下,对于ScanObjectNN,需要更密集的点和更大的分辨率来过滤噪声并保留复杂的真实场景信息
  • ScanObjectNN真实扫描,地板、天花板噪声多;所以权重非常小

消融实验

[Pasted image 20250713105244.png]

  • 可以看到6个视图是最佳,试图越多越冗余
  • 首先每个视角权重都设置为 3,逐个实验将某一个视角的权重调为 9,观察整体分类准确率变化;
  • Right最好,顶部和底部视图对零样本分类的贡献相对较小
    [Pasted image 20250713110152.png]
  • RN50×16 实现了 23.78% 的最佳性能,比 ResNet-50 多 16 倍。然而,将 ResNet-50 升级到具有更多参数和更深层的 ResNet-101 不会提供更高的分类精度。

设计提示语

[Pasted image 20250713104325.png]

  • 我们观察到,最朴素的提示词 "a photo of a [CLASS]." 在 ModelNet40 上可以达到 17.02% 的精度,插入“point cloud”这个词,反而会降低性能,我们接着去掉“a photo”,直接以“point cloud”作为主语,精度提升了 +1.66%,由于投影后的点云图像通常覆盖了大部分图像区域,因此加上一个形容词“big”还可以进一步提升性能,此外,我们加入“depth map”来更贴切地描述点云的投影图像

小样本分类

实验设置

  • 我们在三个数据集(ModelNet10、ModelNet40 和 ScanObjectNN)上使用 inter-view adapter 对 PointCLIP 进行了小样本分类实验,shot 数分别为 1、2、4、8、16。
  • 对于每个 K-shot 设置,我们从训练集中随机抽取每个类别的 K 个点云样本
  • 我们沿用了零样本分类最佳投影设置,但我们使用了 ResNet-101 作为 CLIP 的视觉编码器(替换默认的 ViT-B/32)来增强特征提取能力
    [Pasted image 20250713105244.png]
  • 我们将投影视角数量增加到 10个,新增了一些角度(如上下前后左斜角视角)因为根据,左视角在 few-shot 任务中是信息量最大的,因此增加与其相关的角度。
    [Pasted image 20250713104325.png]
  • 我们将文本提示词修改为:"point cloud of a big [CLASS]." —— 在小样本实验中这一 prompt 效果更好。
  • 对于视角间适配模块(inter-view adapter),我们构造了一个残差结构的 MLP,包含三个线性层,具体结构在3.3节中有详细描述。

实验表现

[Pasted image 20250713113020.png]

  • 我们展示了 PointCLIP 在 few-shot 分类任务中的表现,并与四个代表性的 3D 网络进行对比:PointNet、PointNet++、SimpleView 和当前最先进的 CurveNet,可以看到,PointCLIP 搭配 inter-view adapter在小样本分类任务中优于所有其他方法
  • 当每个类别只有很少样本时,PointCLIP 展现出显著优势,但由于所使用的三层轻量 MLP adapter 表达能力有限,性能差距逐渐缩小。

消融实验

其实上面已经介绍过了,补充如下
[Pasted image 20250713110152.png]ResNet-101 以更少的参数实现了最高准确率,超过了 ViT 或 ResNet-50×16。

多知识融合

实验设置

  • 16-shot PointCLIP(准确率87.20%) 为基准
    [Pasted image 20250713114213.png]
  • 与以下模型进行 logits 层融合(即输出概率分布融合):PointNet、PointNet++、SimpleView、DGCNN、CurveNet;使用人工设定的融合比例(PointCLIP 占比 R,其它模型占比 1-R);

实验表现

[Pasted image 20250713114213.png]

  • 16-shot PointCLIP 的单独准确率 低于所有全数据训练的模型,但融合之后结果很好
  • 对于基线性能较低的模型,PointCLIP 在融合中需要占更大比重(比例 R 更高),融合比例 R 应根据基模型强度动态调整

消融实验

[Pasted image 20250713114829.png]

  • 使用两个完全训练过的 3D 模型并且为了简单起见,使用了固定的 1:1 融合比例(logits 加权),效果很差,把两个 PointCLIP 融合起来(例如两个不同初始化或shot数的),也会造成性能下降。
  • 因此,如果两个模型的训练策略类似(同源),简单融合通常会导致性能下降
    [Pasted image 20250713115012.png]
  • 我们将 CurveNet 与训练程度不同的 PointCLIP 进行融合:包括 zero-shot、8-shot、16-shot、32-shot、64-shot、128-shot,观察它们的融合效果
  • 即使 zero-shot 的 PointCLIP(准确率仅 20.18%),也能将 CurveNet 提升 0.04%,但如果 PointCLIP 的训练太充分(比如 128-shot),融合后的效果反而变差(有可能是变得相似,无法提供互补信息)

Conclusion and Limitation

  • 我们提出了 PointCLIP,该方法可以在无任何 3D 数据训练的情况下,对点云进行跨模态的零样本识别(zero-shot)
  • 通过 多视角投影,PointCLIP 能够有效地将 CLIP 在 2D 上学到的知识迁移到 3D 点云任务中
  • few-shot 场景下,我们设计了一个轻量的“视角间适配器(inter-view adapter)”,用于整合多视图特征并生成自适应表征
  • 仅微调 adapter、冻结其他模块,PointCLIP 的性能就得到了显著提升。
  • 此外,PointCLIP 还可以作为一个 即插即用(plug-and-play)模块,为传统的 3D 网络 提供互补信息,从而超越当前最先进(SOTA)的性能表现

未来研究方向

虽然 PointCLIP 实现了 从 2D 向 3D 的迁移学习,但如何将 CLIP 的知识用于更多 3D 任务,仍然是个有待深入探索的问题,我们的未来工作将致力于让 CLIP 能够泛化用于更广泛的 3D 应用场景。

0

评论区