0. 简介

本文介绍了一种基于高斯喷洒的密集视觉同时定位与地图构建(VSLAM)新框架。最近基于高斯喷洒的SLAM取得了有希望的结果,但依赖于RGB-D输入且在跟踪方面较弱。为了解决这些局限性,《MGS-SLAM: Monocular Sparse Tracking and Gaussian Mapping with Depth Smooth Regularization》首次独特地将先进的稀疏视觉里程计与密集高斯喷洒场景表示相结合,从而消除了基于高斯喷洒的SLAM系统对深度图的依赖并增强了跟踪的鲁棒性。在这里,稀疏视觉里程计在RGB流中跟踪相机姿态,而高斯喷洒负责地图重建。这些组件通过多视图立体(MVS)深度估计网络相互连接。我们提出了一种深度平滑损失,以减少估计深度图的负面影响。此外,稀疏视觉里程计和密集高斯地图之间的尺度一致性通过稀疏-密集调整环(SDAR)得以保持。相关代码已经在Github开源了

1. 主要贡献

所提出系统的关键贡献总结如下:

  • 首次引入结合稀疏视觉里程计和三维高斯喷洒的SLAM系统,实现仅使用RGB图像作为输入构建密集高斯地图。
  • 开发了一种预训练的多视图立体(MVS)深度估计网络,该网络利用稀疏里程计关键帧及其姿态来估计先验深度图,从而为高斯地图重建提供关键的几何约束。
  • 提出了一种几何深度平滑损失方法,以最小化估计的先验深度图不准确性对高斯地图的不利影响,并指导其对准到正确的几何位置。
  • 提出了一种稀疏-密集调整环(SDAR)策略,以统一稀疏视觉里程计和密集高斯地图的尺度一致性。

2. 方法

我们的方法使用RGB图像作为输入,并行执行相机姿态估计和逼真的密集地图构建。正如图2所示,该方法的核心思想是使用预训练的多视图立体(MVS)网络将单目稀疏视觉里程计与密集高斯喷洒地图相结合,并通过稀疏-密集调整环(SDAR)保持稀疏点云地图与密集高斯地图之间的尺度一致性。

图2. 系统流程。系统以RGB视频流作为输入,并行运行前端和后端处理。在前端,稀疏视觉里程计从图像中提取特征块以估计姿态。这些估计的姿态和图像作为输入被传递到预训练的多视图立体(MVS)网络,该网络估计先验深度图。在后端,估计的先验深度图和图像结合前端提供的姿态被用作监督信息来构建高斯地图。前端和后端通过稀疏-密集调整环(SDAR)策略保持尺度一致性。

具体来说,在前端部分,通过跟踪RGB图像为后端提供粗略的相机姿态和先验深度图(参见III-A节)。在后端部分,使用高斯表示密集地图,并联合优化地图和前端提供的粗略姿态(参见III-B节)。在系统组件部分,报告系统初始化、系统关键帧选择以及通过SDAR策略校正稀疏点云地图与密集高斯地图之间的尺度(参见III-C节)。

3. 稀疏视觉里程计前端

为了实现更精确的相机姿态跟踪并在后端映射之前提供密集深度几何信息,我们的框架前端基于深度特征块视觉里程计(Deep Patch Visual Odometry, DPVO)算法【25】构建。DPVO是一种基于学习的稀疏单目视觉里程计方法,通过在特征块图上构建和优化误差来估计相机姿态并构建稀疏点云地图

给定输入的RGB视频流,场景表示为一组相机姿态 T \in SE(3)^N 和一系列从图像中提取的方形图像特征块 P,并将它们添加到双向特征块图中,该图将特征块与帧连接起来。方形特征块 k 从帧i 在帧 j 中的重投影可以表示为:

\mathbf{p}_j = \mathbf{K} \mathbf{T}_{ij} \mathbf{p}_i

其中,\mathbf{K} 是相机内参矩阵,\mathbf{T}_{ij} 是从帧 i 到帧 j 的变换矩阵,\mathbf{p}_i\mathbf{p}_j 分别是特征块在帧 i 和帧j 中的坐标。

通过这种方式,DPVO 在特征块图上优化重投影误差,从而精确估计相机的姿态,并为后端的密集映射提供稀疏的几何深度信息。

\begin{equation}
\mathbf{P}_k^{ij} \sim \mathbf{K} \mathbf{T}_j \mathbf{T}_i^{-1} \mathbf{K}^{-1} \mathbf{P}_k^i
\end{equation}

其中,\mathbf{K} 是相机内参矩阵,\mathbf{P}^i_k = [u, v, 1, d]^T 表示帧 i 中的特征块 k,[u, v] 表示图像中的像素坐标,(d) 表示逆深度。

DPVO 的核心是一个更新算子,用于计算每条边 (k, i, j) \in \epsilon 的隐藏状态。它通过优化特征块图上的重投影误差来预测一个二维校正向量\delta_{ij}^k \in \mathbb{R}^2 和置信权重 \psi_{ij}^k \in \mathbb{R}^2。通过光流校正作为约束执行捆绑调整(Bundle Adjustment,BA),使用非线性最小二乘法进行迭代更新和相机姿态以及特征块深度的细化。捆绑调整的代价函数如下:

\begin{equation}
\sum_{(k,i,j) \in \epsilon} \left| \mathbf{K} \mathbf{T}_j \mathbf{T}_i^{-1} \mathbf{K}^{-1} \mathbf{P}_k^i - \left[ \mathbf{\bar{P}}_k^{ij} + \delta_k^{ij} \right] \right|^2_{\psi_k^{ij}}
\end{equation}

其中,| \cdot |_{\psi} 表示马氏距离,\mathbf{\bar{P}} 表示特征块的中心。

3.1 多视图先验深度估计

后端的密集高斯映射需要几何深度图的监督。不同于之前的方法【26】,我们使用预训练的多视图立体(MVS)网络在DPVO的关键帧窗口上估计先验深度图,如图3所示。受单目深度估计方法【27】的启发,我们的MVS网络完全由二维卷积组成,采用由粗到细的结构逐步细化估计的先验深度图,以减少MVS网络的运行时间。

图3. 先验深度估计网络。网络的输入是来自稀疏视觉里程计的图像及其相机姿态。通过特征金字塔网络(Feature Pyramid Network, FPN)提取图像特征,并通过变形操作转换为二维代价体积。最后,采用由粗到细的策略对特征进行编码和解码,生成深度图。

具体来说,当前由稀疏视觉里程计跟踪的帧被用作参考图像 I^0。此外,我们使用之前的 N 个关键帧作为一系列原始图像 I^{n \in 1, \ldots, N}。这些图像及其相应的相机姿态作为MVS网络的输入。利用特征金字塔网络(FPN)模块,我们为每个图像提取三层图像特征 F^s_i,其中 s 表示层索引,i 表示图像索引。每一层包含的图像特征是上一层长度和宽度的两倍。在每一层中,原始图像的图像特征通过可微分的变形操作与参考图像的图像特征点对点相乘,得到维度为 D \times H^s \times W^s 的代价体积,并通过二维卷积编码和解码获得每一层的先验深度图。上一层估计的深度图被上采样作为下一层的参考深度图,以减少下一层的深度样本数量。每一层都进行类似的编码和解码操作,最终深度图在三层之后估计完成,以实现由粗到细的效果。我们的MVS深度估计网络在ScanNet数据集【28】上进行训练,采用尺度不变的损失函数以适应稀疏视觉里程计的相对姿态:

\begin{equation}
\mathcal{L}^{s}_{si} = \sqrt{\frac{1}{H^s W^s} \sum_{i,j} \left(g^{s}_{i,j}\right)^2 - \frac{\lambda}{\left(H^s W^s\right)^2} \left(\sum_{i,j} g^{s}_{i,j}\right)^2}
\end{equation}

其中,g^s_{i,j} = \uparrow_{\text{gt}}(\log \hat{D}^s_{i,j} - \log D^{\text{gt}}_{i,j}) D^{\text{gt}}_{i,j} 表示一个真实的深度图,通过上采样操作 \uparrow_{\text{gt}} 对齐到预测深度 \hat{D}^s_{i,j} 的大小。常数 \lambda 为 0.85。

此外,损失函数中还添加了多视图损失和法线损失,以保持深度估计的几何一致性:

\mathcal{L}_{mv}^{s}=\frac{1}{NH^{s}W^{s}}\sum_{n,i,j}\left|\uparrow_{gt}\log\mathbf{T}_{0n}(\hat{D}_{i,j}^{s})-\log D_{n,i,j}^{gt}\right|\text{(4)}\\mathcal{L}_{normal}^{s}=\frac{1}{2H^{s}W^{s}}\sum_{i,j}(1-\hat{N}_{i,j}^{s}\cdot N_{i,j}^{s})\text{(5)}

其中,T_{0n} 表示从参考图像到原始图像 n 的变换矩阵。\hat{N}^s_{i,j}N^s_{i,j} 分别表示预测的法向量和真实的法向量。最终的多视图立体(MVS)深度估计网络损失函数如下:

\mathcal{L}=\sum_{s=0}^l\frac1{2^s}(\lambda_{si}\mathcal{L}_{si}^s+\lambda_{mv}\mathcal{L}_{mv}^s+\lambda_{normal}\mathcal{L}_{normal}^s)\quad(6)

其中 l 为2,我们将损失权重 \lambda_{si}\lambda_{mv}\lambda_{normal} 分别设置为1.0、0.2和1.0。

4. 三维高斯喷洒映射后端(核心)

后端的主要职责是进一步优化前端提供的粗略姿态并映射高斯场景。这个部分的关键在于可微渲染和深度平滑正则化损失,通过计算渲染结果与真实值之间的损失,并通过反向梯度传播调整粗略姿态和高斯地图。

4.1 可微高斯地图表示

我们使用三维高斯喷洒作为场景的密集表示。三维高斯喷洒是一种高效的三维空间表示方法,它以类似点云的方式映射场景,避免了像NeRF那样在空间的空白区域进行采样,并且能够实时渲染。单个三维高斯 p_i \in \mathbb{R}^3 在三维场景中的影响如下:

f(p_i)=\sigma(o_i)\cdot\exp(-\frac{1}{2}(p_i-\mu_i)^T\Sigma^{-1}(p_i-\mu_i))\quad(7)

其中,o_i \in \mathbb{R} 表示高斯分布的透明度,\mu_i \in \mathbb{R}^3 是高斯分布的中心,\Sigma = RSS^TT^T \in \mathbb{R}^{3,3} 是协方差矩阵,由 S \in \mathbb{R}^3 缩放分量和 R \in \mathbb{R}^{3,3} 旋转分量计算得出。三维高斯分布投影到图像平面的表达式如下:

\begin{align}
\mu_I &= \pi (\mathbf{T}_{CW} \cdot \mu_W) \tag{8} \ \Sigma_I &= J W \Sigma_W W^T J^T \tag{9}
\end{align}

其中,\pi(\cdot) 表示三维高斯中心的投影,T_{CW} \in SE(3) 是从世界坐标到相机坐标的三维空间变换矩阵,J 是投影变换的雅可比矩阵的线性近似,WT_{CW} 的旋转分量。方程 (8) 和 (9) 是可微分的,这确保了高斯地图可以使用一阶梯度下降来连续优化地图的几何和光度,使地图能够渲染为逼真的图像。一个像素颜色 C_p 是通过喷洒和混合来自 N 个高斯的结果:

\begin{equation}
C_p = \sum_{i \in N} c_i o_i \prod_{j=1}^{i-1} (1 - o_j) \tag{10}
\end{equation}

其中,c_i 是高斯 i 的颜色,o_i 是高斯 i 的透明度。

4.2 映射优化损失

我们修改了原始三维高斯喷洒的损失函数,并添加了更多几何约束,使其更适合像 SLAM 这样的在线映射系统。具体来说,我们的损失函数由四个部分组成:光度损失、深度几何损失、深度平滑正则化损失和各向同性损失。

在光度损失中,计算当前相机姿态 T_{CW} 下渲染的彩色图像与真实彩色图像之间的 L1 损失:

\begin{equation}
\mathcal{L}_{pho} = \left| I(\mathcal{G}, \mathbf{T}_{CW}) - I^{gt} \right|_1 \tag{11}
\end{equation}

其中,I(\mathcal{G}, T_{CW})是从高斯分布 \mathcal{G} 渲染的彩色图像,I_{gt} 是真实的彩色图像。

\begin{equation}
D_p = \sum_{i \in N} z_i o_i \prod_{j=1}^{i-1} (1 - o_j) \tag{12}
\end{equation}

为了提高高斯地图的几何精度,我们同样渲染了深度图,类似于方程 (10):

\begin{equation}
\mathcal{L}_{geo} = \left| D(\mathcal{G}, \mathbf{T}_{CW}) - \bar{D}_d \right|_1 \tag{13}
\end{equation}

其中,D(G, T_{CW}) 是从高斯分布 \mathcal{G} 渲染的深度图,\overline{D}_d 是通过 SDAR 策略优化的先验深度图。优化过程见第 III-C 节。

从 MVS 网络获得的先验深度图可能并不完全准确。如图 4 所示,直接使用这些深度图会在高斯地图的几何重建中导致错误的引导。因此,我们引入了深度平滑正则化损失:

\begin{equation}
\mathcal{L}_{smooth} = \left| d_{i,j-1} - d_{i,j} \right|_2 + \left| d_{i+1,j} - d_{i,j} \right|_2 \tag{14}
\end{equation}

其中,d_{i,j} 表示渲染深度图中像素坐标 (i, j) 的深度值。通过对渲染深度图中相邻像素进行正则化,它减少了先验深度图误差的影响。

图4. 深度平滑正则化损失。与没有深度平滑损失的效果相比,左侧有深度平滑损失的图像在光度和几何方面表现更好,而右侧没有深度平滑损失的图像在光度和几何方面表现较差。

原始的三维高斯喷洒算法在视点的射线方向上对高斯分布没有约束。这对固定视点的三维重建没有影响。然而,SLAM 是一个在线映射系统,这会导致高斯分布沿视点射线方向拉长,出现伪影。为了解决这个问题,我们引入了各向同性损失,如同文献 [23] 所述:

\begin{equation}
\mathcal{L}_{iso} = \sum_{i=1}^{|\mathcal{G}|} \left| s_i - \bar{s}_i \cdot \mathbf{1} \right|_1 \tag{15}
\end{equation}

其中,s_i是高斯分布的缩放因子,通过对缩放因子和均值 \overline{s}_i进行正则化来抑制高斯分布的拉伸。最终的映射优化损失函数如下:
\begin{equation}
\mathcal{L} = \lambda_p \mathcal{L}_{pho} + \lambda_g \mathcal{L}_{geo} + \lambda_s \mathcal{L}_{smooth} + \lambda_i \mathcal{L}_{iso} \tag{16}
\end{equation}

我们将损失权重 \lambda_p\lambda_g\lambda_s\lambda_i 分别设定为 0.99、0.01、1.0 和 1.0。

4.3 从高斯图优化相机姿态

我们使用前端稀疏视觉里程计跟踪获得的相机姿态 T^S_{CW} 作为后端高斯映射的初始姿态。如公式 (10) 和公式 (12) 所示,我们从当前初始姿态的视点渲染高斯图的彩色图像和深度图,并计算渲染结果和真实值之间的损失。由于这个过程是可微分的,损失梯度在反向传播过程中会传递到高斯图和初始姿态。初始姿态优化更新的方程如下:
\arg \min_{\mathbf{T}^S_{CW}, \mathcal{G}} \mathcal{L}_{mapping}(\mathcal{G}, \mathbf{T}^S_{CW}, I^{gt}, \overline{D}_d) \tag{17}

其中 \mathcal{L}_{mapping} 是公式 (16),I^{gt}\overline{D}_d分别是真实的彩色图像和从 \mathbf{T}^S_{CW}视点优化的先验深度图。通过最小化映射损失来同时优化高斯分布 \mathcal{G} 和初始姿态 \mathbf{T}^S_{CW}

5. 系统组件

5.1 系统初始化

类似于 DPVO,系统使用 8 帧进行初始化。新帧的姿态使用恒定速度运动模型初始化。添加新补丁和帧,直到累计 8 帧,然后运行 12 次更新操作。在初始化过程中,8 帧被用作 MVS 网络的输入,以估计第一帧的先验深度。后端使用第一个先验深度作为基础来初始化高斯图。

5.2 关键帧选择

在前端跟踪过程中,我们总是将最近的 3 帧视为关键帧,以满足恒定速度运动模型的要求。然而,这 3 帧不用于高斯映射。相反,我们评估第 4 帧是否满足高斯共视性标准。如果满足,我们将其添加到后端的映射过程中;否则,我们丢弃该帧。在两个关键帧 (i) 和 (j) 之间,我们使用交并比(Intersection of Union, IOU)来定义共视性:
IOU_{cov}(i, j) = \frac{|\mathcal{G}_i \cap \mathcal{G}_j|}{|\mathcal{G}_i \cup \mathcal{G}_j|} \tag{18}

其中,\mathcal{G}_i\mathcal{G}_j 是在帧 i 和帧 j 视点中可见的高斯分布。

5.3 稀疏-密集调整环

我们提出了稀疏-密集调整环(Sparse-Dense Adjustment Ring,SDAR)策略,以实现系统的尺度统一。该方法由以下三个部分组成:

首先,我们使用几何精度更高的稀疏点云地图来校正 MVS 网络估计的先验深度图。具体而言,将稀疏点云变换到先验深度图所在的相机坐标系,然后将稀疏点云投影到稀疏深度图上。先验深度图和稀疏深度图符合正态分布 \hat{D}_d \sim N (\mu_d, \sigma_d^2)D_s \sim N (\mu_s, \sigma_s^2)。使用以下公式将先验深度图与稀疏深度图对齐:
\overline{D}_d = \frac{\sigma_s}{\hat{\sigma}_d} \hat{D}_d + \mu_d \left( \frac{\mu_s}{\hat{\mu}_d} - \frac{\sigma_s}{\hat{\sigma}_d} \right) \tag{19}

其中 \hat{\sigma}_d\hat{\mu}_d 是从 \hat{D}_dD_s 的像素坐标中提取的稀疏化先验深度图的均值和标准差统计量。这一策略校正了先验深度误差并保持尺度一致性,如图 5 所示。

图 5. 先验深度优化。SDAR 中的这一优化策略是校正来自 MVS 网络的先验深度图的几何形状,并使其与稀疏点云图的尺度对齐。

其次,我们将优化后的先验深度图与 RGB 颜色反投影到空间中,生成一个新的点云。随后,对这个新点云进行下采样。然后,以下采样后的点云为中心初始化新的高斯分布,并将其添加到高斯图中。这一操作确保了高斯图与稀疏点云图之间的一致尺度,同时下采样有助于减小先验深度图中的误差。

最后,为了实现尺度闭合,我们利用高斯图的实时渲染能力生成前端被跟踪帧的深度图。然后,我们使用这个深度图初始化跟踪帧的点云深度。这一策略确保了前端跟踪与后端高斯图的尺度一致性,促进了尺度一致性从后端向前端的传递。

6. 结论

本文介绍了 MGS-SLAM,一种新型的基于高斯点绘的 SLAM 框架。我们的框架首次将稀疏视觉里程计与高斯映射相结合,解决了高斯点绘 SLAM 在更大场景中遇到的跟踪丢失问题,并消除了对深度图输入的需求。我们开发了一种轻量级的 MVS 深度估计网络来促进这种集成。此外,我们提出了稀疏-密集调整环(SDAR)策略,以调整稀疏图和高斯图之间的尺度。比较评估表明,与以前的方法相比,我们的方法实现了最先进的精度。