Splat-SLAM:使用 3D 高斯函数的全局优化 RGB SLAM

24年5月来自谷歌和ETH的论文“Splat-SLAM: Globally Optimized RGB-only SLAM with 3D Gaussians”。

3D 高斯 splatting 已成为仅 RGB 密集 SLAM 的几何和外观的强大表示,因为它提供紧凑的密集地图表示,同时实现高效和高质量的地图渲染。然而,现有方法的重建质量明显差于使用其他 3D 表示(例如神经点云)的竞争方法,因为它们要么不采用全局地图和姿势优化,要么利用单目深度。为此,提出一个具有密集 3D 高斯地图表示的仅 RGB SLAM 系统,该系统通过主动变形 3D 高斯地图来动态适应关键帧姿势和深度更新,从而充分利用全局优化跟踪的所有优点。此外,用单目深度估计器细化不准确区域的深度更新,可进一步提高 3D 重建的准确性。

源代码:GitHub - eriksandstroem/Splat-SLAM

密集 SLAM 近期趋势中的一个共同因素是,大多数工作通过优化场景的神经隐式编码来重建密集地图,这些编码要么作为 MLP 的权重 [1, 57, 39, 45],要么作为锚定在密集网格中的特征 [82, 42, 66, 67, 58, 3, 29, 83, 51],要么使用分层八叉树 [72],要么通过体素哈希 [79, 78, 8, 49, 40]、点云 [18, 50, 30, 75] 或轴对齐特征平面 [33, 47]。3D 高斯 splatting (3DGS) 已经被引入到密集 SLAM 领域 [74, 24, 69, 38, 21]。
然而,在这场 3D 表示竞赛中,还没有一个明显的赢家。在密集 SLAM 的背景下,需要谨慎地选择建模,以实现准确的表面重建以及较低的跟踪误差。神经隐式点云表示实现了最先进的重建精度 [30, 75, 50],尤其是在 RGBD 输入的情况下。同时,3D 高斯 splatting 方法可产生最高保真度的渲染 [38, 74, 24, 21, 69],并且由于其在优化表面位置方面的灵活性而显示出在仅 RGB 方面的前景 [21, 38]。然而,它们没有利用任何多视图深度或几何先验,导致仅 RGB 设置中的几何形状较差。

上述大多数工作仅部署所谓的帧-到-模型跟踪,并且不实现全局轨迹和地图优化,导致过度漂移,尤其是在现实世界条件下。相反,到目前为止,帧-到-帧跟踪方法与回环和全局集束调整 (BA) 相结合,实现了最先进的跟踪精度 [79, 78, 75]。然而,它们要么使用分层特征网格 [79, 78],不适合地图变形,​​例如回环,因为它们需要昂贵的重积分策略,要么使用神经点云,如 GlORIE-SLAM [75]。虽然神经点云很容易变形,但当深度含噪声且表面估计只能局部调整时,深度引导渲染(depth-guided rendering)会导致伪影,因为点云位置没有被直接优化。
如图所示Splat-SLAM 架构。给定一个 RGB 输入流,跟踪和建图每个关键帧,最初使用 DSPO(视差、比例和姿势优化)层通过局部集束调整 (BA) 估计姿势。该层集成了姿势和深度估计,通过单目深度增强深度。它通过在线闭环和全局 BA 进一步全局细化姿势。这个代理(proxy)单深度图将跟踪中的关键帧深度 D ̃ 与单目深度 D 合并以填补空白。地图采用可变形的 3D 高斯地图,通过重渲染损失优化其参数。值得注意的是,3D 地图在每个制图阶段之前都会调整全局姿势和深度更新。

请添加图片描述

具体说:

为了减轻尺度和姿势漂移,除了局部窗口帧跟踪之外,还结合回环检测和在线全局集束调整 (BA)。回环检测是计算当前活动关键帧(局部窗口内)和所有先前关键帧之间的平均光流幅度来实现的。每个关键帧对都会评估两个标准:首先,光流必须低于指定的阈值 τloop,以确保视图之间具有足够的共视性。其次,帧之间的时间间隔必须超过预定义的阈值 τt,以防止在图中引入冗余的边。当满足这两个标准时,会向图中添加单向边。在回环检测优化过程中,仅优化活动关键帧及其连接的回环节点,以保持计算负载可控。

对于在线全局 BA,构建一个包含迄今为止所有关键帧的单独图。根据关键帧之间的时间和空间关系引入边缘,如 [79] 中所述。按照 [75] 中详述的方法,每 20 个关键帧执行一次在线全局 BA。为了保持数值稳定性,在每次全局 BA 优化之前,对视差和姿势的比例进行归一化。此归一化涉及计算所有关键帧的平均视差 d ̄,然后将视差调整为 dnorm = d / d ̄,将姿势平移调整为 tnorm = d ̄ * t。

采用 3D 高斯 Splatting 的表示 [26],该表示在 DSPO 或循环闭环优化下变形以实现全局一致性。因此,场景由 3D 高斯集合 G = {gi} 表示。每个高斯基元 gi 都由协方差矩阵 Σi、均值 μi、不透明度 oi ∈ [0, 1] 和颜色 ci 参数化。每个高斯的所有属性都通过反向传播进行优化。单个高斯的密度函数描述为

请添加图片描述

给定相机姿势,从 G 渲染颜色和深度,首先将 3D 高斯投影(称为“splatting”)到 2D 图像平面上。就是将协方差矩阵 Σ 和均值 μ 投影为 Σ′ = JRΣRTJT 和 μ′ = Kω^−1μ,其中 R 是世界到相机外参数 ω^−1 的旋转分量,J 是射影变换仿射近似的雅可比矩阵 [84]。像素 x′ 处的最终像素颜色 C 和深度 D^r,计算为混合在给定一个像素处重叠的 3D 高斯splats,并按其深度排序为

请添加图片描述

其中

请添加图片描述

对于每个新关键帧,采用 MonoGS [38] 的 RGB-D 策略,将新的高斯函数添加到未探索的场景空间中。由于无法使用深度传感器,将内点多视图深度 D 和单目深度 Dmono 组合在一起,构建一个代理(proxy)深度图 D,如下所示

请添加图片描述

除了基于平均光流阈值 τ 的关键帧选择外,还采用了 [38] 中的关键帧选择策略,避免映射冗余帧。

为了优化 3D 高斯参数,将参数更新批次处理到类似于 [38] 的局部窗口,并对这个代理深度应用光度和几何损失以及尺度正则化器,避免拉长高斯所造成的伪影。受 [38] 的启发,进一步通过优化每个关键帧的仿射变换来使用曝光补偿。最终损失为

请添加图片描述

由于跟踪框架具有全局一致性,因此需要通过非刚体变形在 3D 高斯图中考虑关键帧姿势和代理深度图的变化。虽然高斯均值是直接优化的,但理论上可以让优化器在提供精细姿势和代理深度图时对地图变形。然而,主动变形 3D 高斯地图有助于特定渲染。将变形应用于所有高斯,其在地图之前接收更新姿势和深度。

对于代理深度,用η = 0.01 来过滤点,并使用条件 nc ≥ 2 来确保多视图一致性。对于地图损失函数,用 λ = 0.8、λreg = 10.0。在制图期间使用 60 次迭代。对于跟踪,用 α1 = 0.01 和 α2 = 0.1 作为 DSPO 层的权重。在 ScanNet 上使用光流阈值 τ = 4.0,在 TUM-RGBD 上使用 τ = 3.0,在 Replica 上使用 τ = 2.25。回环检测的阈值为 τloop = 25.0。时间间隔阈值为 τt = 20。在具有 NVIDIA A100 GPU 的集群上进行实验。

  • 15
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值