0. 简介

3D GS在NeRF领域已经掀起了一股浪潮,然后又很快席卷到了SLAM领域,最近已经看到很多3D GS和SLAM结合的开源工作了。将为大家分享帝国理工学院戴森机器人实验最新开源的方案《Gaussian Splatting SLAM》,这也是第一个将3D GS应用到增量3D重建的工作,速度为3 FPS。要想实时从摄像头连续重建出高保真度的三维场景,需要多项创新。首先,为了超越原始的3D高斯溅射(3DGS)算法——该算法需要来自离线结构运动(SfM)系统的精确位置信息——我们为3DGS构建了相机跟踪功能,直接针对3D高斯函数进行优化,并证明这样可以实现快速、稳健的跟踪,具有广泛的收敛范围。其次,通过利用高斯函数的显式特性,我们引入了几何验证和规则化处理,以处理增量式三维密集重建中出现的歧义。最后,我们引入了一个完整的SLAM系统,不仅在新视图合成和轨迹估计方面取得了最先进的结果,而且还能重建微小甚至透明的物体。这个代码暂时还没开源,预计2月会开源,感兴趣的可以关注一下对应的网站

1. 主要贡献

我们进一步展示了基于高斯的SLAM方法的独特性,如极大的相机姿态收敛盆地,这对于基于地图的相机定位也有用。我们的方法仅适用于单目输入,这是SLAM中最具挑战性的场景之一,但我们展示了它也可以在可用时结合深度测量。总而言之,我们的贡献如下:

  1. 第一个接近实时的SLAM系统,仅使用3DGS作为唯一的场景表示。
  2. SLAM框架内的新颖技术,包括相机姿态估计的解析雅可比,高斯形状规范化和几何验证。
  3. 在各种数据集上进行了广泛评估,包括单目和RGB-D设置,特别是在实际场景中展示了竞争性能。

2. 高斯飞溅

我们的SLAM表示法是3DGS,它通过一组各向异性的高斯函数G来映射场景。每个高斯函数G^i包含光学特性:颜色c^i和不透明度α^i。为了连续的3D表示,均值µ^i_W和协方差Σ^i_W,在世界坐标中定义,代表了高斯函数的位置和其椭球形状。为了简化和提速,在我们的工作中,我们省略了表示视角依赖辐射的球谐函数。由于3DGS使用体积渲染,因此不需要显式提取表面。相反,通过对N个高斯函数进行打点和混合,合成了像素颜色C_p

3DGS执行光栅化时,是遍历高斯函数,而不是沿着相机射线前进,因此,在渲染过程中忽略了空闲空间。在光栅化过程中,基于通过打点3D高斯形成的2D高斯,通过高斯函数衰减α的贡献。在世界坐标中的3D高斯N(µ_W, Σ_W)与图像平面上的2D高斯N(µ_I, Σ_I)通过投影变换联系在一起:

其中π代表投影操作T_{CW} ∈ SE(3) 是视点的相机姿态J投影变换线性近似的雅可比矩阵WT_{CW}旋转组成部分。这种公式化使得3D高斯变得可微分,而混合操作为高斯提供了梯度流。通过使用一阶梯度下降法[12],高斯函数逐渐细化其光学和几何参数,以高保真度表示捕获的场景。

3. 相机姿态优化

为了实现精确的追踪,我们通常需要每帧至少进行50次梯度下降迭代。这一要求强调了具有计算效率高的视图合成和梯度计算表示的必要性,使得3D表示的选择成为设计SLAM系统的关键部分。

为了避免自动微分的开销,3DGS使用CUDA实现光栅化,所有参数的导数都是显式计算的。由于光栅化在性能上至关重要,我们同样显式地推导出相机雅可比矩阵。

据我们所知,我们提供了SE(3)相机姿态相对于在EWA喷溅[48]和3DGS中使用的3D高斯的第一个解析雅可比矩阵。这为3DGS在SLAM之外的新应用开辟了新途径。

我们使用李代数推导最小雅可比矩阵,确保雅可比矩阵的维数与自由度相匹配,消除任何冗余计算。方程(2)的各项相对于相机姿态T_{CW} 是可微分的;使用链式法则:

我们在流形上取导数以推导出最小参数化。借用[30]中的符号,令 ( T \in SE(3) )( \tau \in se(3) )。我们定义流形上的偏导数如下:

其中 ◦ 是群合成操作,而 Exp, Log 分别是从 Lie 代数到 Lie 群的指数映射和对数映射。基于此,我们推导出如下公式:

其中 × 表示一个 3D 向量的斜对称矩阵,而 W_{:,i} 指的是矩阵的第 i 列。

4. SLAM

在本节中,我们将详细介绍完整的SLAM框架。系统概览总结在图2中。有关更多参数详情,请参考补充材料。

图 2. SLAM 系统概览:我们的 SLAM 系统仅使用 3D 高斯表示法,统一了 SLAM 的所有组件,包括追踪、地图构建、关键帧管理以及新视角合成。

4.1 跟踪

在跟踪过程中,仅优化当前相机姿态,而不更新地图表示。在单目情况下,我们最小化以下光度残差:

其中 I(G, T_{CW} )T_{CW} 渲染高斯函数 G,而 \bar{I} 是观测到的图像。
我们进一步优化仿射亮度参数,以适应不同的曝光条件。当深度观测数据可用时,我们定义如下的几何残差:

其中 D(G, T_{CW} ) 是深度光栅化,\bar{D} 是观测到的深度。我们不仅仅使用深度测量数据来初始化高斯函数,而是通过最小化光度和几何残差的组合来进行优化λ_{pho}E_{pho} + (1 − λ_{pho})E_{geo}
其中 λ_{pho} 是一个超参数。
如公式 (1) 所示,通过 alpha 混合方法光栅化逐像素深度:

z_i表示相机射线上高斯 i 的平均值 µ_W 到摄像头的距离。我们以类似于方程 (3), (4) 的方式,为摄像头姿态优化推导出解析雅可比矩阵。

4.2 关键帧处理

由于在线同时优化视频流中所有图像的高斯和摄像头姿态是不可行的,我们维护了一个由精心挑选的关键帧组成的小窗口 W_k,这些关键帧基于帧间可视性共享选取。理想的关键帧管理将选择观测相同区域且非冗余的关键帧,并跨越宽阔的基线以提供更好的多视角约束。

4.2.1 选择与管理

每个追踪的帧都根据我们简单而有效的标准进行关键帧注册检查。我们通过测量当前帧 i 与上一个关键帧 j 之间观测到的高斯的交并比来衡量可视性。如果可视性低于阈值,或者相对平移 t_{ij} 相对于中值深度较大,则将帧 i 注册为关键帧。为了效率,我们仅在当前窗口 W_k 中保持少量关键帧,遵循 DSO [4] 的关键帧管理启发式规则。
主要区别在于,如果一个关键帧与最新关键帧的重叠系数低于阈值,则将其从当前窗口中移除。具体参数详见补充资料 7.1.2。

4.2.2 高斯可视性

对可视性的准确估计简化了关键帧的选择和管理。由于 3DGS 沿摄像头射线对 3D 高斯进行排序,因此遵循可视性排序。这对可视性估计是有益的,因为它可以通过设计处理遮挡问题。
如果一个高斯在光栅化中被使用,并且射线的累积 α 尚未达到 0.5,则将其标记为从视图中可见。这使我们的估计可视性能够处理遮挡,而无需额外的启发式规则。

4.2.3 高斯插入与剪枝

在每个关键帧,新的高斯被插入到场景中,以捕捉新可见的场景元素并细化细节。当有深度测量时,高斯的均值 µ_W 通过反投影深度初始化。在单目情况下,我们在当前帧渲染深度。对于有深度估计的像素,µ_W 在这些深度附近初始化,并具有低方差;对于没有深度估计的像素,我们在渲染图像的中值深度附近初始化 µ_W,并具有高方差(参数见补充资料 7.1.2)。

在单目情况下,许多新插入的高斯的位置是不正确的。尽管大多数将在优化过程中快速消失,因为它们违反了多视角一致性,我们还通过检查当前窗口 W_k 中的可视性来进一步剪枝多余的高斯。如果在过去3个关键帧内插入的高斯至少被其他3个帧观察到,我们就将其剪枝,因为它们在几何上不稳定。

4.3 映射

映射的目的是保持一致的 3D 结构,并优化新插入的高斯。在映射过程中,使用 W_k 中的关键帧来重建当前可见区域。此外,每次迭代会随机选择两个过去的关键帧 W_r,以避免忘记全局地图。3DGS 的光栅化对观察射线方向上的高斯没有限制,即使有深度观测也是如此。在提供足够仔细选择的视角时(例如在新视角合成情况下),这不是问题;然而,在连续的 SLAM 中,这会导致许多失真,使追踪变得具有挑战性。因此,我们引入了各向同性正则化:

为了惩罚高斯椭球体拉伸参数 ( s_i ) 与其平均值 ( \tilde{s}_i ) 的差异。如图 3 所示,这鼓励了球形性,并避免了沿观测方向高度拉长的高斯造成失真的问题。让当前窗口中的关键帧与随机选择的关键帧的并集为 ( W = W_k \cup W_r )。对于映射,我们解决以下问题:

如果有深度观测数据可用,如同在追踪过程中一样,几何残差公式 (8) 被添加到优化问题中

图 3. 各向同性正则化的效果:上图:从靠近训练视角的位置渲染(观察键盘)。下图:从训练视角较远的位置渲染 3D 高斯(从键盘一侧观看),未使用各向同性损失(左图)和使用各向同性损失(右图)。当光度约束不足时,高斯倾向于沿观察方向拉伸,从而在新视角中产生视觉误差,并影响相机追踪。

5. 参考链接

https://www.sohu.com/a/745533126_121124366