langsplat团队 投稿
量子位 | 公众号 qbitai
入选cvpr 2024 highlight的三维语义高斯泼溅最新成果,查询速度比之前的sota方法lerf快了199倍!
清华&哈佛团队提出langsplat,在开放文本目标定位和语义分割任务上达到sota性能。
该工作目前在𝕏(twitter)上受到广泛关注,论文视频累计浏览量超过100,000,论文代码已开源。
结合三维高斯泼溅技术重建三维语义场
人类生活在一个三维世界中,并通过文本语言描述三维场景。构建三维语义场以支持在三维空间中的开放文本查询最近越来越受到关注。
langsplat方法结合三维高斯泼溅技术重建三维语义场,能够实现准确高效的开放文本查询。
现有方法在nerf的基础上嵌入clip语义特征,langsplat则通过结合三维高斯泼溅,在每个高斯点上编码了从clip提取的语义特征。
langspla采用tile-based的三维高斯泼溅技术来渲染语义特征,从而避免了nerf中计算成本高昂的渲染过程。
首先训练特定场景下的语义自编码器,然后在场景特定的低维latent space上学习语义特征,而不是直接学习高维的clip语义特征,从而降低了计算量。
现有基于nerf的方法的三维语义场比较模糊,无法清晰地区分目标的边界。本文深入研究了这一问题,提出使用sam学习多层次语义,在不引入dino特征的情况下获得了更准确的语义场。
广泛的实验结果表明,langsplat在开放文本目标定位和语义分割任务上的性能显著超过了之前的sota方法lerf。值得注意的是,langsplat在1440×1080分辨率的图像上,查询速度比lerf快了199倍。
团队强烈推荐查看在项目主页中的更多视频结果。
https://langsplat.github.io/
具体方法
首先来看langsplat的主要贡献,分别为:
通过引入带有语义特征的3d高斯泼溅来进行三维场景感知。
与以前的方法相比,实现了显著的速度提升,使其适合实时应用。
通过采用层次语义和新的渲染技术,langsplat提高了3d语义场的精确度。
通过使用场景特定的自动编码器,减少了处理高维数据所需的计算和内存开销。
具体来说,采用了如下方法:
层次语义学习:langsplat利用segment anything model(sam)学习层次语义,解决了三维语义场的边界模糊问题。
3d语义高斯泼溅:langsplat引入了一种新的技术,即3d高斯泼溅,它使用包含语义特征嵌入的3d高斯来表示3d场景。这种方法比nerf-based的方法渲染过程更快。
特定场景的语义自编码器:为了缓解高维语义特征嵌入导致的内存out of memory问题,langsplat构建特定场景的语义自编码器将这些文本语义特征降维。
层次语义学习
在本文中,团队利用sam来获得实例级的精确对象掩码,然后用这些掩码对应的图像区域提取像素对齐的特征。团队还明确地建模了sam定义的语义层次,以解决点模糊性问题。
具体来说,团队将一个32×32点提示的常规网格输入sam,以获得三个不同语义层次下的掩码,分别代表子部分、部分和整体层次的掩码。
然后基于sam预测的iou分值、稳定性分值和掩码之间的重叠率,为每一组掩码去除冗余的掩码。
每个过滤后的掩码集合独立地根据其各自的语义层次做全图分割,从而得到三个分割图: ms,mp,mw。
这些分割图准确地勾勒出对象在其层次结构中的边界,有效地将场景划分为语义上有意义的区域。通过获得的分割图,团队继续为每个分割区域提取clip特征。数学上,得到的像素对齐的语义嵌入是:
如此,从三维语义场景渲染的每个像素都具有与其精确语义上下文相匹配的clip特征。这种匹配减少了模糊性,提高了基于语义的查询的准确性。
此外,由于团队在“整体”、“部分”和“子部分”层次上都有不同的分割图,团队可以直接在这些预定义的尺度上查询三维语义场。这消除了在多个绝对尺度上进行密集搜索的需要,使查询过程更加高效。
3d语义高斯泼溅
在一组2d图像上获得语义嵌入后,团队可以通过建模3d点和2d像素之间的关系来学习一个3d语义场。大多数现有方法使用nerfs进行3d建模,但它们面临着耗时的渲染过程。
为了解决这个问题,团队提出了基于3d高斯散射的3d语义场建模方法。这种3d高斯散射方法明确地将3d场景表示为各向异性的3d高斯分布的集合,每个高斯分布g(x)由均值μ∈r^3和协方差矩阵∑描述:】
3d高斯投影到2d图像平面上后,用基于tile的光栅化策略进行渲染:
其中, ci是第i个高斯的颜色,n表示瓦片中的高斯数量, c(v)是在像素 v 处渲染的颜色。
这里是oi第i个高斯的不透明度,gi2d (⋅)代表投影到二维上的第 i 个高斯的函数。
在本文中,团队提出了3d语义高斯,为每个高斯增加三个语义嵌入{fs, fp, fw} 。这些嵌入源自clip特征,捕捉了sam提供的层次语义。增强后的高斯被命名为3d语义高斯。并采用基于tile的光栅化器以保持渲染效率:
其中, fl(v)代表在像素 处以语义层次l渲染的语义嵌入。通过直接将语义信息引入高斯中,团队使三维语义场能够响应基于文本的查询。
特定场景的语义自编码器
作为一种显式建模方法,表征一个复杂场景可能需要数百万个3d点。直接在高维的clip潜空间直接学习高斯的语义特征会显著增加内存消耗,容易导致“内存不足”的问题。
为降低内存消耗并提高效率,团队引入了基于场景的语义自编码器,将场景中的clip嵌入映射到低维潜在空间。clip模型是通过4亿对(图像,文本)训练的,其d维潜在空间可能非常紧凑。
然而,团队在这里训练的语义场Φ是特定于场景的,这意味着团队可以利用场景先验知识压缩clip特征。事实上,对于每个输入图像,团队将获得由sam分割的数百个掩码,这显著少于clip训练中使用的图像数量。因此,场景中的所有分割区域在clip潜在空间中稀疏分布,使团队能够通过基于场景的自编码器进一步压缩这些clip特征。
实验结果
实验设置:实验测试了该方法在开放词汇3d对象定位和语义分割任务上的性能,使用的数据集包括lerf和3d-ovs。
结果:langsplat显著优于先前的最先进方法。特别是,它在1440×1080分辨率下比lerf快199倍,显示出在速度和效率上的显著提高。
可视化和消融研究:论文包括了详细的可视化和消融研究,展示了langsplat各组成部分的有效性。
项目主页: https://langsplat.github.io/
论文: https://arxiv.org/pdf/2312.16084.pdf
视频: https://youtu.be/k_9bbs1odac?si=gfo5trlk-htywyut
开源代码: https://github.com/minghanqin/langsplat