【三维分割】SAGA:Segment Any 3D Gaussians

系列文章目录

代码:https://jumpat.github.io/SAGA.
论文:https://jumpat.github.io/SAGA/SAGA_paper.pdf
来源:上海交大和华为研究院



摘要

  交互式三维分割技术在三维场景理解和操作中具有重要意义,是一项值得关注的任务。然而,现有的方法在实现细粒度、多粒度分割或争夺大量计算开销方面面临挑战,抑制了实时交互。在本文中,我们引入了分段任意三维gasssin(SAGA),一种新的三维交互分割方法,无缝地将二维分割模型三维高斯Splatting(3DGS)相结合。SAGA通过设计良好的对比训练,有效地将分割模型生成的多粒度二维分割结果嵌入到三维高斯点特征中。实验评估展现了竞争力的性能。此外,SAGA可以在几毫秒内完成3D分割,还实现了多粒度分割,并适应各种提示,包括点、涂鸦和2D mask。


一、前言

  三维交互式分割由于其在场景操作、自动标记和虚拟现实等领域的潜在应用,引起了研究者的广泛关注。以往的方法 [13,25,46,47 Decomposing nerf、 Neural feature fusion fields等] 主要是通过训练特征场,将二维视觉特征提升到三维空间中,以模拟由自监督视觉模型[4,39]提取的多视图二维特征。然后利用三维特征相似性来测量两个点是否属于同一对象。这种方法由于其简单的分割管道而快速,但代价是粗糙的分割粒度,因为缺乏解析嵌入在特征中的信息的机制(例如,分割解码器)。相比之下,另一种范式[5:Segment anything in 3d with nerfs] 通过将多视图细粒度的二维分割结果直接投影到三维掩模网格上,将二维分割基础模型提升到三维模型。虽然这种方法可以产生精确的分割结果,但由于需要多次执行基础模型和渲染,其大量的时间开销限制了交互性。

  以上讨论揭示了现有范式在实现效率和准确性方面的困境,并指出了限制现有范式性能的两个因素。首先,以往方法采用的隐式辐射场[5,13]阻碍了有效分割:必须遍历三维空间才能检索一个三维对象。其次,二维分割解码器的利用,分割质量高,但效率低。

  三维高斯Splatting(3DGS)具有高质量和实时渲染的能力:它采用一组三维彩色高斯分布来表示三维场景。这些高斯分布的平均值表示它们在三维空间中的位置,因此3DGS可以看作是一种点云,它有助于绕过巨大的、通常是空的三维空间的广泛处理,并提供了丰富的显式三维先验。有了这种点云状结构,3DGS不仅实现了高效渲染,而且成为分割任务的理想候选。

  在3DGS的基础上,我们提出了Segment Any 3D GAussians (SAGA)将二维分割模型(即SAM)的细粒度分割能力提取为三维高斯模型,专注于将二维视觉特征提升到3D,并实现细粒度的3D分割。此外,它还避免了二维分割模型的多次推理。蒸馏使用SAM自动提取mask,训练高斯分布的三维特征来实现的。在推理过程中,使用输入提示生成一组查询,然后使用输入提示通过有效的特征匹配,检索期望的高斯。方法可以在毫秒内实现细粒度的3D分割,并支持各种提示,包括点、涂鸦和mask。


二、相关工作

1.基于提示的二维分割

  受NLP任务和最近计算机视觉进展的启发,SAM能够返回给定指定图像中分割目标的输入提示的分割掩码。一个类似于SAM的模型是SEEM [55],也显示了令人印象深刻的开放词汇表分割能力。在他们之前,与提示二维分割最密切相关的任务是交互式图像分割,这已经被许多研究探索。

2.将2D视觉基础模型提升到3D

  最近,二维视觉基础模型经历了强劲的增长。相比之下,三维视觉基础模型还没有看到类似的发展,这主要是由于数据的缺乏。获取和注释3D数据明显比其他2D数据更具挑战性。为了解决这个问题,研究人员试图将2D基础模型提升到3D [8,16,20,22,28,38,51,53]。一个值得注意的尝试是LERF [22],它训练了视觉-语言模型的一个特征场(即CLIP [39])和辐射场。这种范式有助于基于语言提示在辐射场中定位对象,但在精确的3D分割方面表现不佳,特别是当面对多个语义相似的对象时。其余的方法主要关注点云。通过利用摄像机姿态将三维点云与二维多视图图像关联起来,可以将二维基础模型提取的特征投影到三维点云上。这种集成类似于LERF,但与基于辐射场的方法相比,数据采集成本更高。

3.辐射场中的三维分割

  受NeRF成功的启发,许多研究探索了其中的三维分割。Zhi等人[54]提出了SemanticNeRF,证明了NeRF在语义传播和细化方面的潜力。NVOS [40]引入了一种交互式的方法,通过训练一个轻量级的多层感知,使用定制设计的3D特征,从NeRF中选择三维对象(MLP)。通过使用2D自监督模型,如N3F [47],DFF [25],LERF [22]和ISRF [13],通过训练额外的特征场输出2D特征图,这些特征域可以模仿不同的2D特征图,将2D视觉特征提升到3D。NeRF-SOS [9]用对应蒸馏损失[17]将2D特征相似性提炼为3D特征。在这些基于二维视觉特征的方法中,可以通过比较嵌入在特征域中的三维特征来实现三维分割,这似乎是有效的。然而,由于仅依赖于欧几里得距离或余弦距离时,高维视觉特征中嵌入的信息无法得到充分利用,因此这类方法的分割质量受到了限制。还有一些其他的实例分割和语义分割方法[2,12,19,30,35,44,48,52]结合辐射场。

  与我们的SAGA最密切相关的两种方法是ISRF [13]和SA3D [5]。前者遵循训练一个特征场来模拟多视图二维视觉特征的范式。因此,它很难区分具有相似语义的不同的对象(特别是对象的部分)。后者迭代查询SAM得到二维分割结果,并将其投影到mask网格上进行三维分割。其具有良好的分割质量,但分割管道复杂,导致时间消耗高,抑制了与用户的交互。

三、Methodology

1. 3D Gaussian Splatting (3DGS)

  作为辐射场的最新发展进展,3DGS [21]使用可训练的三维高斯分布来表示三维场景,并提出了一种有效的可微栅格化渲染和训练算法。给定一个具有摄像机姿态的多视图二维图像的训练数据集I,3DGS学习一组三维彩色高斯 G = {g1,g2,…,gN },其中N表示场景中的三维高斯数。每个高斯分布的平均值表示其在三维空间中的位置,协方差表示尺度。因此,3DGS可以看作是一种点云。给定一个特定的相机姿态,3DGS将三维高斯投影到二维,然后通过混合一组重叠于像素的有序高斯N来计算一个像素的颜色C:
在这里插入图片描述
其中 ci 是每个高斯分布的颜色,α 是通过计算一个具有协方差Σ的二维高斯分布乘以一个学习到的每高斯不透明度得到。从公式(1)开始我们可以学习栅格化过程的线性性:像素渲染的颜色,是所涉及的高斯分布的加权和。这种特性确保了三维特征与二维渲染特性的对齐。

  SAM 以一幅图像 I 和一组提示P作为输入,并输出相应的二维分割掩码M,即:

在这里插入图片描述

2. 整体框架

  如图2所示,给定一个预先训练的3DGS模型G及其训练集,我们首先使用SAM的encoder,提取每个图像I∈RH×W的二维特征 :FISAM∈RCsam×H×W 和一组多粒度掩码 MI<

SAI3D,即在三维场景中分割任意实例,是一个高级的计算机视觉技术,它涉及到深度学习模型,特别是用于3D物体检测和实例分割的算法。由于这是一项复杂的任务,它通常基于深度神经网络,如PointNet++、MinkowskiNet等,配合3D数据结构(如点云或voxel网格)。 对于具体的代码实现,SAI3D的细节可能会依赖于所使用的库和框架,比如PyTorch或TensorFlow。以下是一个简化的概述: ```python # 引入必要的库 import torch from pointnet2.models import PointNet2SAMSSeg from voxelmapper import load_voxels # 加载预训练模型 model = PointNet2SAMSSeg(num_classes=NUM_CLASSES) # NUM_CLASSES是3D类别数 model.load_state_dict(torch.load('sai3d_model.pth', map_location='cuda')) # 定义输入数据处理函数 def preprocess(scene_data): points, voxel_coords = load_voxels(scene_data) points = torch.from_numpy(points).float() # 将numpy数组转换为张量 return points, voxel_coords # 预测并分割实例 def segment_instance(scene_data): inputs = preprocess(scene_data) with torch.no_grad(): outputs = model(inputs[0]) # 假设模型期望点云作为输入 pred_labels = outputs.max(1)[1] # 获取每个像素的最大概率类别 return pred_labels # 使用模型对新的3D场景进行分割 instance_segmentation = segment_instance(new_scene_data) ``` 请注意,这段代码只是示例,并未包含完整的训练过程,实际操作中还需要处理数据加载、网络前向传播、损失计算和优化等步骤。而且,真正的代码会包含大量的数据预处理、调试和性能优化部分。完整的代码将非常庞大,并且需要查阅相应的研究论文或开源项目才能获得。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值