文章目录
- 摘要
- 一、引言
- 二、主要方法
- 1.3D Gaussian Splatting
- 2.其他方法
- 2.1 Gaussian Grouping
- 2.2 GARField
- 3. 2D Versatile 投影
- 4. 3D Semantic Network
- 4. 推理
- 四、实验
- 1. 实验设置
- 2.定量结果
论文:https://arxiv.org/pdf/2403.15624
摘要
开放词汇的三维场景理解是计算机视觉中的一个重大挑战,在具体化代理和增强现实系统中有着广泛的应用。现有的方法采用神经渲染方法作为三维表示,联合优化颜色和语义特征,同时实现渲染和场景理解。本文介绍了一种基于三维高斯溅射的开放词汇场景理解方法语义高斯。我们的关键思想是 将知识从二维预训练模型提取为三维高斯模型 。与现有的方法不同,我们设计了一种通用的投影方法,将预先训练好的图像编码器映射到一个新的三维高斯的语义component ,这是基于空间关系,不需要额外的训练。我们 进一步建立了一个三维语义网络,直接从原始的三维高斯数据中预测语义成分 ,以进行快速推理。 实验在ScanNet segmentation和LERF目标定位上做了定量对比。此外还探索了语义高斯算法的一些应用,包括对象部分分割、实例分割、场景编辑和时空分割,在二维和三维基线上具有更好的定性结果
一、引言
开放词汇表的三维场景理解是计算机视觉中的一项重要任务。给定一个3D场景,其目标是用自由形式的自然语言来理解和解释3D场景,也就是说,而不受限于一组预定义的对象类别。允许开放词汇表场景查询使机器能够更有效地与环境交互,促进诸如对象识别、语义场景重建和在复杂多样的环境中导航等任务。开放词汇3D场景理解在各种现实应用中具有重要意义,如机器人技术和增强现实。
多视图图像是3D场景最直接的表示,但允许开放词汇理解通常涉及2D视觉语言模型,难以在不同视图的一致性,可能是由于缺乏视觉几何知识;点云很流行和研究,但点云固有的稀疏性限制了开放词汇场景理解在上的应用
以往方法[4]、[5]、[8]-[16]的一个主要分支是采用NeRF或3DGS等神经渲染方法作为3D表示,共同优化颜色成分和语义特征,实现任意2D视图的高质量渲染和3D场景理解。语义知识通常是从开放词汇表的二维基础模型中提取出来的,如CLIP 或LSeg ,它们在训练视图上预测的输出在优化过程中充当了弱监督。
本文提出Semantic Gaussians,基于三维高斯溅射的优点的开放词汇表三维场景理解的方法。核心思想是将预先训练好的二维编码器中提取成三维高斯,从而为每个高斯点分配一个语义分量。为了实现这一点,我们建立了二维像素和三维高斯点之间的对应关系,并提出了一个通用的投影框架来将二维像素的语义特征映射到每个三维高斯点上,可以利用任意预先训练过的2D模型,如OpenSeg 、CLIP 、VLPart 等,在2D RGB图像上生成像素级的语义特征,不需要额外训练来将语义组件注入到三维高斯模型中,允许有效的开放词汇表场景查询。
除了投影,还引入了一个三维语义网络MinkowskiNet[21,一个三维稀疏卷积网络],它直接从原始三维高斯中预测开放词汇语义成分。网络以原始的RGB高斯数据作为输入,并由上述投影方法得到的高斯数据的语义成分进行监督。因此,我们可以简单地运行这个网络来获得语义组件,从而实现更快的推理。该网络利用几何属性来理解看不见的场景,提高了我们的方法超越二维投影的通用性和鲁棒性。需要注意的是,三维语义网络的预测可以与投影特征相结合,进一步提高高斯中语义组件的质量和开放词汇表场景理解性能。
二、主要方法
1.3D Gaussian Splatting
本文采用三维3D Gaussian Splatting作为三维场景的表示,其以可区分的方式从任意视点渲染图像,从而有效地利用各种二维基础模型的知识。具体来说,我们通过使用3DGS从指定的视点渲染二维语义图像,来实现场景理解
3DGS由一组可学习的三维高斯点组成,其中每个点都有一个三维坐标µ表示其位置,一个协方差矩阵Σ表示其形状,球面谐波参数c代表其颜色,一个不透明度值α代表其透明度。3DGS可以由多视图图像构建,并可以利用来自运动结构(SfM)点云[48]的信息进行初始化,从而获得更好的渲染质量和几何结构。
3DGS使用基于点的 α α α混合来计算2维图像上的像素值。每个像素C的值通过沿射线的体积渲染给出:
将三维高斯分布投影到某个二维平面上,从相机的角度计算协方差矩阵 Σ ′ Σ' Σ′的方法为(W是world-to-camera变换矩阵,J是投影变换的仿射近似的雅可比矩阵):
其中。如果我们跳过 Σ ′ Σ' Σ′的第三行和列,我们可以得到二维方差矩阵。为了保证正半定性,将协方差矩阵Σ分解为旋转矩阵 R R R和缩放矩阵 S S S:
3DGS可以看作是一个具有附加特性的特殊点云,因此具有点云的一些特性。一个直观的思想是将基于空间关系的语义信息投射到相应的高斯点上,而不是通过可微栅格化和渲染。 在渲染语义映射时,如果不考虑复杂的光照条件,只考虑几何位置的对应关系就足够了 。在此基础上,我们提出了语义高斯算法来实现多功能场景理解。
2.其他方法
2.1 Gaussian Grouping
保留了高斯模型的所有属性(如它们的数量、颜色、不透明度和大小),同时添加了新的身份编码参数(类似于颜色,是一个长度为16的可学习的、紧凑的向量,足以以计算效率区分场景中的不同对象/部分),并使用了一个训练有素的zero-shot tracker 来传播和关联mask。使得每个高斯分布被分配给其在3D场景中所表示的实例或东西。
二维ID损失。为了优化ID编码,将ID 向量以可微的方式渲染为二维图像。从原始GS中提取可微的三维高斯渲染器,并将渲染过程类似于gs中的颜色(SH系数)优化。 GS采用神经点的 α ′ α' α′ 渲染[18,19],进行深度]排序和混合N个与像素重叠的有序点,计算所有高斯分布对单个位置像素的影响。将2D特性 E i d E_{id} Eid作为输入,使用一个线性层 f f f,将特征维数恢复到K+1,然后取 s o f t m a x softmax softmax( f f f( E i d E_{id} Eid))进行ID分类(K是3D场景中的mask总数),采用标准的交叉熵损失 L 2 d L_{2d} L2d进行K+1类别分类。
2.三维正则化损失。除了间接的二维监督,还引入无监督的三维正则化损失来约束ID编码 e i e_i ei的学习:利用三维空间一致性,通过最近的 k个三维高斯分布的ID编码与其特征距离拉近。这允许3D对象内部的三维高斯分布,或在基于点的渲染期间被严重遮挡(在几乎所有的训练视图中都不可见)得到更充分的监督。公式3的 F F F表示为与线性层(在计算二维身份损失时共享)相结合的softmax操作。用m个采样点将KL散度损失形式化为:
2.2 GARField
GARField以pose图像为输入,生成一个分层的三维场景分组,以及一个标准的三维体积辐射场和一个有尺度条件的亲和场。首先用SAM得到输入图像的候选mask。接下来,通过输入的三维位置和欧式尺度,优化一个体积辐射场和亲和场,并输出一个特征向量。亲和度是通过比较点对的特征向量来获得的。优化后,生成的亲和字段可以用于分解场景,通过以粗到细的方式递归地聚类三维特征嵌入,或者用于分割用户指定的查询。整个管道如图3所示。
Scale-Conditioned Affinity Field(尺度条件亲和场) 。在尺度分割条件下,同一点的冲突掩模在训练过程中不再相互对抗,而是在不同的亲和尺度下在同一场景中共存。 我们在三维点 x 和欧氏尺度 s 上定义了尺度条件亲和场 Fg(x,s)→Rd,类似于LERF [13]。输出特性被限制在一个单位超球体内,在一个尺度上两点之间的亲和性由 A(x1,x2,s)= −||Fg(x1,s)−Fg(x2,s)||2 定义。这些特征可以使用基于NeRF密度的相同渲染权重,以加权平均值进行体渲染,以获得每条射线的值。
对比监督。根据DrLIM [9],采用margin-based contrastive 对比目标进行监督。损失又两部分组成:给定的尺度下,同一组中的特征接近,不同组中的特征分开。 具体来说,从同一训练图像中采样掩模 MA、MB 的两条射线rA、rB,以及相应的尺度 sA和sB。我们可以沿每条射线,以体渲染方式得到尺度条件的亲和特征 FA和FB。如果MA=MB,特性将通过L2距离拉在一起: Lpull= ||FA−FB||;反之,特性将被分开: Lpush = ReLU(m−||FA−FB||),其中m是下界距离或边界。这种损失只适用于从同一图像中采样的射线,因为在不同视点上的掩模没有对应关系。
3. 2D Versatile 投影
通用的特征投影方法:从一个二维预训练的模型中提取RGB图像的像素级语义映射,并将其投影到一个场景的三维高斯分布中。
1) 语义映射提取:我们的方法从某一场景的三维高斯G开始。由于三维高斯溅射的逼真渲染性能,Semantic Gaussians可以在没有二维GroundTruth图像的情况下运行。给定形状为 H × W H×W H×W的RGB图像 I I I,Semantic Gaussians 的目的是从任意的二维视觉语言模型 ϵ 2 D \epsilon^{2D} ϵ2D 中得到由 s ∈ R H × W × C s∈R^{H×W×C} s∈RH×W×C表示的像素级语义映射。获得每像素语义映射的最直接的途径是利用像素级分割模型,如OpenSeg。然而,利用其他编码器,例如VLPart [20]可以帮助处理对象的组件(part)的语义(OpenSeg没这个功能)。此外,不同类型模型的特征可以集成,产生更准确的结果。
2) 统一SAM与各种2D特征:适应各种2D预训练特征是重要的,因为它们可以是像素级分割网络(如OpenSeg ,LSeg )、实例级识别网络(如DINO,VLPart)或图像级分类网络(如CLIP)。此外,Semantic Gaussians 能够利用 SAM来为每个模型生成精细的分割映射。对于像素级模型,SAM可以细化分割边界。给定一个RGB图像 I I I,使用SAM中的 everything prompt 来生成 N N N个二进制掩码 M 1 , ⋅ ⋅ ⋅ , M N M_1,···,M_N M1,⋅⋅⋅,MN。我们计算每个mask M i M_i Mi的embedding的平均池化,并将其分配为该mask中所有像素的embedding: s [ M i ] = A v g P o o l ( s [ M i ] ) s[M_i] = AvgPool(s[M_i]) s[Mi]=AvgPool(s[Mi])
对于实例级模型,与Ground-SAM类似,使用预训练模型的预测结果作为SAM的方框提示符。在得到二进制mask后,将该实例的CLIP embedding分配给实例区域内的所有像素。对于图像级模型,SAM可以作为一个预处理模块来获取区域建议。我们使用SAM中的“everything” prompt 来获得不同的建议区域。每个区域都被填充、裁剪和调整到224×224,并输入图像级模型以获得语义embedding,并分配给每个proposal区域内的所有像素。
3) 2D-3D Projection and Fusion. 获取逐像素语义映射后,语义高斯映射将其投影为三维高斯映射,得到语义成分。对于语义映射s中的每个像素 u = ( u , v ) u =(u,v) u=(u,v),语义高斯函数试图寻找空间中是否存在相应的三维高斯点 p = ( x , y , z ) p =(x,y,z) p=(x,y,z)。针孔相机模型下,利用内参矩阵 K K K和world-to-camera矩阵 E E E, 投影可以表示为 u ~ = K ⋅ E ⋅ p ~ \tilde{u}=K·E·\tilde{p} u~=K⋅E⋅p~ ,其中~为齐次坐标。在这个投影之后,每个像素u将对应于三维空间中的一束射线,执行3DGS的深度渲染,来将二维语义投影到三维空间中的表面点。在体渲染过程中,不透明度从近到远累积。因此,我们设置了一个不透明度阈值 α d α_d αd,来判断光线被物体遮挡。我们不需要来自数据集的地面真实深度
二维像素和三维高斯点配对时,假设三维空间中的某个高斯点 p p p具有一组来自 K K K个不同观点的二维语义, 可以通过平均池化融合: s p 2 D = A v g P o o l ( s 1 , ⋅ ⋅ ⋅ , s K ) s^{2D}_p= AvgP ool(s_1,···,s_K) sp2D=AvgPool(s1,⋅⋅⋅,sK)
4. 3D Semantic Network
为了从原始三维高斯中预测语义成分,构建一个三维语义网络 f 3 D f^{3D} f3D 来实现这一点:给定三维高斯 G G G,预测point-wise的语义分量 s 3 D s^{3D} s3D,并使用融合特性 s 2 D s^{2D} s2D 来监督三维模型。损失函数为余弦相似度损失:
使用MinkowskiNet作为我们的三维模型的主干(一种为点云设计的三维稀疏卷积网络)。将透明度、颜色和协方差设置为三维模型的输入特征,输出为每个高斯点的语义嵌入 s 3 D s^{3D} s3D。3D模型通过处理三维几何信息而不是多个二维视图来识别场景,使结果更加一致,且推理速度比二维投影要快得多
4. 推理
语言驱动的开放词汇场景理解。给定一个自由形式的语言查询,使用CLIP文本编码器将提示编码到文本嵌入 t t t中。我们计算文本嵌入与每个三维高斯点的语义分量之间的余弦相似度,匹配的高斯值将被视为与查询的对应。以语义分割和部分分割为例,对N个语义类的标签分别编码为 t 1 、 ⋅ ⋅ ⋅ 、 t N t_1、···、t_N t1、⋅⋅⋅、tN。计算了这些文本嵌入和三维高斯矩阵的语义嵌入之间的余弦相似度:
选择 c n 2 D c^{2D}_n cn2D和 c n 3 D c^{3D}_n cn3D中较大的值作为类 t n t_n tn的余弦相似度。softmax函数后的相似度{ c 1 , ⋅ ⋅ ⋅ ⋅ , c n c_1,····,c_n c1,⋅⋅⋅⋅,cn}是每个类的置信度分数,将其splat到2D视图上,就能得到一个二维语义分割图。
四、实验
1. 实验设置
数据集:ScanNet是一个室内场景的大规模分割基准,具有校准的RGBD轨迹、3D点云和语义label。我们对所有1201个场景训练3D RGB高斯训练。验证集评估12个场景的性能。为了与闭集方法进行比较,将ScanNet-20类映射到来自COCO数据集中的21个类。
对于三维对象定位任务,选择LERF [5]数据集作为我们的基准。LERF数据集提供了几个包含长尾对象和多尺度语义的3D场景。该数据集由iPhone应用程序Polycam捕获,以获得多视图图像和SfM点。
对于定性评估,选择MVImgNet [23]数据集作为我们的部分分割数据集,而CMU全景[52]数据集作为时空跟踪数据集。MVImgNet是一个多视图的单对象数据集,包含238类对象的相机参数和稀疏点云。CMU全景数据集是一个用于多人参与社会活动的大规模数据集。对于语言引导的编辑,我们在Mip-NeRF 360 [53]数据集中选择了一些场景来显示我们的性能
实现细节:NVIDIA RTX 4090 GPU上训练,RGB高斯网络训练10000次迭代,对三维语义网络训练100个时代。在场景级语义分割实验中,我们应用LSeg生成二维投影的像素级开放词汇表语义特征。对于3D语义网络,我们使用闵可夫斯基网34A[21]作为骨干。对于3D对象定位任务,我们都使用了带有SAM和LSeg的CLIP作为我们的2D预训练模型。
对于零部件分割和时空跟踪,使用VLPart作为投影模型。为了评估我们在四维高斯上的语义高斯,我们遵循动态三维高斯[24]的工作,得到了具有时间信息的动态高斯。
2.定量结果
我们从LSeg中提取语义特征来进行二维投影和三维网络训练。因此,本节中的结果将显示我们的方法将从二维视觉语言模型中改进多少。
表1显示了不同方法的性能。可以观察到,我们的语义高斯方法超过了mIoU和mAcc中所有的开放词汇表方法,并且非常接近于最先进的闭集方法的性能。
虽然我们的3D网络的mIou和mAcc低于二维投影,但2D和3D集成将进一步提高我们的性能。我们推测,某些场景中的某些物体由于其质量较低,无法在所有视图中都被二维模型正确识别,而三维网络可以利用几何细节来识别它们
图3显示,LERF和LangSplat的分割精度较低。这主要是因为它们利用多尺度的CLIP特征来理解场景,而CLIP特征很难在像素级上与场景精确对齐,这使得它们不适合生成像素级的语义分割地图。另一方面,PVLFF、Fetatre3DGS和语义高斯都采用LSeg来实现开放词汇表场景理解。作为一种基于nerf的方法,PVLFF的性能相对较差,而且渲染速度也较慢。特征3DGS和我们的方法产生了非常相似的性能,特征3DGS甚至在某些视图中实现了更精确的分割。但是,Festagre3DGS需要对每个场景的语义3DGS进行再训练,其效率和灵活性较低。