3D Semantic-点云相关
本文最后更新于:1 年前
Introduction
3D Semantic主要关注的问题是如何在3D空间中表示语义,根据3D表示的不同,语义的表示也会有所不同。例如3D表示可能包括点云表示、NeRF表示以及3D Gaussian表示等。
本系列主要关注Open Vocabulary Semantic相关工作,当然可能会混入一些其他的语义类任务,例如Closed Set Semantic Segmentation等。
作为系列开始的第一篇,首先记录一些相关资源地址:
- Open☀️3D:Open3D研讨会,其中包含相关论文的记录
- Chuan-10/awesome-language-embedded-3D-representations:3D语义嵌入的相关论文
OpenMask3D(NeurIPS2023)
OpenMask3D旨在解决开放词汇的3D Instance分割问题。现有的方法通常对3D场景中的每个点学习一个特征,这种方式可以用于执行语义分割,但是无法分离多个对象实例。而OpenMask3D提出了一种基于Instance的特征提取方法,它构建了一个pipeline,来为场景中的实例提取特征。在这种方式中,特征是实例级别的,而不是点级别的。
模型架构
pipeline
OpenMask3D的输入是场景的RGB-D照片序列以及重建出的3D点云(假设相机参数已知),输出则是预测出的一系列3D Instance Mask,以及每个Mask的特征。
OpenMask3D的Pipeline如下:

- 首先,通过预训练的3D分割模型(3D Mask Proposal Network)可以得到类别无关的3D Instance Mask。-> 对应Class Agnostic Instance Mask Proposals
- 然后需要为这些Instance Mask进行特征提取,主要分为Top K 视角提取、2D分割与裁剪、CLIP特征提取和聚合几个步骤。 -> 对应Mask-Feature Computation for Each Instance
- 这样就得到了一系列Instance Mask以及每个Mask对应的特征
Pipeline的第一步是提取类别无关的3D Instance
Mask。具体来说,这一步将点云输入3D Mask Proposal Network,得到
Pipeline的第二步是为每个3D Instance Mask提取对应的特征。这一步骤的目的是计算出可以用于开放词汇概念的特征表示。
对于每个Instance Mask Proposal,首先需要选择该Instance在哪些RGB-D帧中高度可见;然后对于这些RGB-D帧,采用SAM进行2D Mask分割,基于分割结果进行Multi-Scale的裁剪;接着利用CLIP Encoder获取这些裁剪图像对应的Embedding;最后将这些Embedding聚合成为最终的Mask特征。

对于每个Instance
Mask,首先需要为其在RGB-D序列中选取代表帧构成的子集。OpenMask3D采用了一种基于可见度分数Visibility
Score的方式来选择Top K Views。下面公式表示了第
- 为什么
可以表示深度? 参考摄像机几何与极几何 - EverNorif中的公式,得到图像坐标系中的齐次坐标最后一维就是摄像机坐标系中的深度。
通过可见度分数,我们可以为每个Instance Mask得到
经过上面的步骤,对于每个Instance Mask,就可以得到
CLIP,全称为Contrastive Language-Image Pre-Training,对比语言-图像预训练。该模型由OpenAI推出,在4亿级别图像-文本数据对上进行训练,意在学习出更好的图像和文本表征,实现图像和文本之间的深度理解和关联。
下游任务
OpenMask3D输入一组RGBD图像序列以及3D点云,得到一系列Proposal Instance以及每个Instance的类别无关特征。基于这个特征,可以进行下游任务,例如开放词汇3D Instance分割。
OpenMask3D已经有Instance
Mask,要处理开放词汇问题,则需要将文本和Instance特征建立联系。具体来说,对于文本查询
简单总结
OpenMask3D提出了一个可用于开放词汇3D Instance分割的特征提取Pipeline,它能在给定RGBD序列以及点云的情况下,输出3D Instance Mask以及每个Mask的特征。OpenMask3D首先将点云进行Instance分割,然后对于每个Instance,选取RGBD序列中的某些相关度高的帧,对帧中该对象的2D裁剪图片进行CLIP特征的提取,将所有提取的特征进行聚合之后赋给对应Instance的点云。
OpenMask3D的项目地址:OpenMask3D/openmask3d
OVIR-3D(CoRL2023)
OVIR-3D提出了一种有效的开放词汇3D Instance检索方法。给定语言查询,OVIR-3D能够基于不同Instanc和文本查询之间的特征相似性返回一组排序的3D Instance。OVIR-3D利用2D来指导3D,利用在广泛资料上训练的2D开放词汇检测器来生成2D Instance区域Proposal,然后将2D实例特征融合到3D点云上,以实现开放词汇的3D实例分割。OVIR-3D的核心贡献就是这个2D-to-3D的融合模块,它将3D区域Proposal任务视为2D Proposal的融合问题。
模型架构
OVIR-3D的输入包括点云

首先,对于每个图像帧
OVIR-3D适用的2D开放语义检测器不局限于Detic,还可以使用其他模型,不过它需要满足如下两个条件:
- 能够生成像素级别的Mask
- 能够为每个区域提供文本对齐的特征
(实际上也可以换成正常的分割模型+某种区域语义特征提取策略)
下一步,每个2D的Proposal区域都可以利用相机参数将其投影到3D点云上,得到投影3D区域
对于某个投影3D区域
上述的投影过程可能会生成冗余的3D
Instance,导致低质量的分割以及不准确的数据关联。为了解决这个问题,OVIR-3D周期性(每
最后,OVIR-3D使用简单的后处理步骤来分离3D空间中孤立的Instance,以及过滤可能是噪声的片段。具体来说,OVIR-3D对每个Instance进行DBSCAN处理来找到聚类结果,如果某个Instance的聚类结果无法相连,则将其分裂成多个Instance。
在推理方面,首先使用CLIP文本Encoder对文本查询
简单总结
OVIR-3D输入点云和一组RGB-D图像,对于给定的查询,则可以输出一组按照相关性排序的点云Mask。它的核心在于将3D区域划分视作2D区域Proposal的合成,语义特征则来自2D区域,整个Pipeline的核心就在于2D-to-3D融合模块的设计。
OVIR-3D的局限性在于它并不是总能够合并非常大的Instance,对于较大的Instance,它可能会将其拆分成多个小Instance。另外,OVIR-3D也可能错过较为微小的物体,这是因为它们在过程中可能被视作噪声从而被移除。
OVIR-3D的项目地址为:shiyoung77/OVIR-3D
Open3DIS(CVPR2024)
Open3DIS的目标是解决3D场景中的开放词汇实例分割问题,它的对标前置工作是OpenMask3D和OVIR-3D。前者采用类别无关的分割网络来识别场景中的实例,后者则采用2D Proposal区域聚合的方式来获得3D区域Proposal。Open3DIS发现现存的方法很难识别较小尺寸的物体以及几何形状模糊的物体,它则融合了上面两个工作,提出改进的Pipeline,得到了更好的效果,解决了现有方法的局限性。这三个工作pipeline之间的对比如下:

模型架构
Open3DIS的Pipeline如下图所示,其中的核心在于如何得到最终的3D Instance Mask。它融合了两类方式,分别是通过预训练的3D实例分割网络得到3D Instance Proposal,和通过2D Proposal合并得到3D Proposal,最终将这两类方式的结果再进行融合得到最终的3D Proposal。

首先,Open3DIS使用ISBNet作为3D实例提议网络,直接输出3D点云的实例Mask,对应图中的
另一方面,Open3DIS提出了一个2D-guide-3D Instance
Proposal模块,该模块能够更好地捕获场景中的较小对象。具体来说,该模块的输入包括点云
首先,Open3DIS会对点云进行预处理,将其分组为不同的Super
point超点,假设超点的个数为
直接选择上面过程产生的3D区域作为3D Instance
Proposal可能会导致结果的碎片化,为了解决这个问题,Open3DIS采用了一个自下而上的方式来合并来自不同帧的点云区域,以创建更加完整和连贯的3D
Instance
Proposal。首先,考虑帧内结果区域的合并,两个区域的合并同样基于IoU和特征相似性来进行,这样每个帧就得到一个对应的合并后的点云区域。接下来考虑帧间结果区域的合并。考虑两帧的结果区域分别为
agglomerative clustering是一种自底向上的聚类方法。在初始阶段,每个数据点被认为是单独的一个聚类,然后根据某种相似度度量来合并成更大的聚类,知道所有的数据点最终合并成为一个整体的聚类结构。
上面的操作可以得到两帧之间的合并结果,按照顺序次序或者分层次序进行全帧的合并,即可以得到最终的3D区域Proposal,对应图中的
至此我们就得到了从两种不同方法得到的3D Proposal,将其进行简单合并,并利用非极大值抑制NMS来消除近似重复的Proposal,这样就得到最终的3D Instance Proposal。
在最后一个阶段,Open3DIS为每个3D
Proposal提取语义特征。OpenMask3D采用选取top-k视图然后进行多尺度CLIP特征的提取,而Open3DIS则使用了一个更加合理的方案,核心思想是在top-k视图中更加频繁出现的点应该对最终的特征做出更多的贡献。具体来说,考虑
简单总结
Open3DIS结合了OpenMask3D和OVIR-3D两个工作的优点来构建了一个新的Pipeline,利用了两类3D Proposal,包括来自预训练的3D Instance分割网络的3D Proposal,以及从2D Mask出发合并得到的3D Proposal。
MaskClustering(CVPR2024)
解决开放词汇3D Instance分割问题的一种思路是使用来自2D模型的特征,根据几何和特征相似性等指标来合并2D Mask以生成3D Instance。但是现有的基于该指标的合并方式通常缺乏跨所有帧的全局最优性。MaskClustering主要关注如何获取高质量,zero-shot的3D Instance Mask,它提出了一种称为视图共识(view consensus)的新指标,能够更好地利用多视图信息。其中的核心思想是,假设有非常多来自其他视图的Mask同时包含了某两个mask,那么就可以认为这两个mask属于同一个Instance。
模型架构
MaskClustering的Pipeline流程如下图所示。

MaskClustering的核心过程是基于视图共识的2D
Mask合并过程。MaskClustering的输入同样是RGBD序列图像
首先使用类别无关的2D实例分割模型(例如CropFormer)来对每帧的图像进行分割,对图像
为了进行Mask之间的融合,MaskClustering需要构建一个Mask Graph
论文的核心即是视图共识(view consensus)的计算方式。在介绍计算方式之前,先对一些前置定义和表示进行介绍。
对于给定的点云
接下来是两个可见的概念。首先是点的可见性,如果点
最后是点云之间的近似包含关系。如果点云
引入视图共识的核心目的是判断两个Mask是否属于同一个实例。考虑两个Mask
简单使用循环来计算视图共识的时间复杂度相对较高。为了加快速度,可以提前计算并存储中间结果来消除冗余计算。具体实现可以参考原始论文或者代码实现。
给定所有的Mask作为结点,两两计算视图共识来构造Mask
Graph。MaskClustering会合并视图共识
在最终的聚类结果中,每一簇表示一个3D Instance,同时每个3D Instance也包含了对应的2D Mask。MaskClustering采用OpenMask3D对应的Top-K帧的方法来获取实例特征。
简单总结
MaskClustering提出了一种新颖的指标,称为视图共识。用这个指标,我们能够判断两个Mask是否属于同一个Instance。这种方法充分地利用了其他帧的信息,基本能够做到全局最优。
MaskClustering的项目地址为:PKU-EPIC/MaskClustering