论文阅读:SplatMAP: Online Dense Monocular SLAM with 3D Gaussian Splatting
1 Introduction
为了实现具有高保真渲染的实时三维重建,研究人员已经探索了将SLAM与可微渲染相结合的潜力。然而,单目SLAM系统,特别是在早期建图阶段,由于观测有限、三角测量基线较浅以及位姿约束较弱,容易产生不准确的点云。这些不准确性会传播到下游建图任务中,导致诸如墙壁和家具上的“重影”等伪影,尤其是从未经训练的视角观察时。传统的三维场景生成系统(3DGS)致密化管道通常依赖RGB损失来纠正这些误差,在补偿初始不准确性时会引入额外的计算开销。
为了应对这些挑战,作者提出了SLAM感知自适应致密化(SIAD),这是一种利用SLAM的动态更新来实时精化点云的新策略。通过修剪错误点、纳入新观测以及基于可靠掩码调整高斯表示,该方法确保了准确且高效的点云精化,而无需进行昂贵的事后校正。这种方法弥合了单目稠密SLAM与基于高斯的场景表示之间的差距,实现了超越传统管道的几何细节水平和鲁棒性。
此外,我们引入了几何引导优化,它结合了边缘感知法向损失和光度一致性损失,以联合优化三维场景生成系统(3DGS)表示的外观和几何形状。该框架在保留精细结构细节(特别是物体边缘和急剧过渡区域周围)的同时,增强了渲染保真度。通过将这些改进集成到一个统一的管道中,我们的SplatMap框架可从单目输入提供高保真的三维重建,适用于实时和高质量应用。
我们的SplatMap系统的贡献总结如下:
- SLAM感知自适应致密化:我们通过利用稠密SLAM输出升级了传统的高斯溅射,实现了点云的动态致密化,以获得更丰富的场景表示。
- 几何引导优化:我们引入了一种新的损失函数,在映射过程中集成了几何和光度约束,提高了视觉质量和结构准确性。
- 稠密单目重建的统一管道:通过将稠密单目SLAM与三维高斯溅射相结合,我们的框架实现了从单目输入的高保真重建。
SplatMap相较于之前的单目SOTA方法有了显著改进,在真实世界数据集上,PSNR提高了高达10.2%,SSIM提高了6.6%,LPIPS提高了34.7%,证明了其在跨不同数据集精化场景表示方面的有效性。
3 Methodology
我们方法的主要思路是使用稠密单目SLAM的输出来监督三维高斯溅射模型。稠密单目SLAM可以估计稠密深度图和相机位姿,同时还能为深度和位姿提供不确定性估计。有了这些信息,我们可以训练一个三维高斯溅射模型,该模型具有由深度的边际协方差加权的稠密深度损失。通过使用稠密SLAM和三维高斯溅射训练的实时实现,并并行运行这些过程,我们实现了实时性能。图2展示了我们管道中的信息流。现在我们来解释我们的架构,从我们的跟踪前端开始,然后是我们的建图后端。
3.1 视频流输入与因子图构建
SplatMap系统将连续的单目视频流作为输入,并增量式地构建一个因子图,该因子图捕捉帧之间的共视关系。我们首先从输入的视频帧序列构建一个因子图 G ( V , E ) G(V, E) G(V,E),其中 V V V表示帧的集合, E E E表示帧之间边的集合。如果两帧之间存在重叠的视觉特征,那么它们之间就存在一条边,从而捕捉它们的共视性。随着新帧的添加,因子图会动态更新以维持帧之间的共视关系。
3.2 跟踪
在跟踪过程中,我们通过求解在因子图上定义的优化问题来迭代精化相机位姿 T T T和深度图 d d d。受DRIOD-SLAM中所使用方法的启发,我们估计每帧相机位姿 ( Δ ξ ) (\Delta\xi) (Δξ)和深度 ( Δ d ) (\Delta d) (Δd)的增量更新。
优化过程利用帧之间的稠密光流。具体而言,预测流 f i j p r e d f_{ij}^{pred} fijpred表示将帧 i i i中的像素映射到帧 j j j中对应位置的像素位移场,如RAFT[18]所估计。基于当前相机位姿 T i j T_{ij} Tij和深度图 d i d_i di计算得到的诱导流 ω i j ( T i j , d i ) \omega_{ij}(T_{ij}, d_i) ωij(Tij,di),它表示从帧 i i i到帧 j j j的像素重投影:
ω i j ( T i j , d i ) = Π c ( T i j ∘ Π c − 1 ( p i , d i ) ) ( 1 ) \omega_{ij}(T_{ij}, d_i) = \Pi_c(T_{ij} \circ \Pi_c^{-1}(p_i, d_i)) \quad (1) ωij(Tij,di)=Πc(Tij∘Πc−1(pi,di))(1)
这里, ∘ \circ ∘表示函数复合,其中 Π c − 1 ( p i , d i ) \Pi_c^{-1}(p_i, d_i) Πc−1(pi,di)将二维像素坐标 p i ∈ R H × W × 2 p_i \in \mathbb{R}^{H\times W\times 2} pi∈RH×W×2和相应的深度图 d i ∈ R H × W d_i \in \mathbb{R}^{H\times W} di∈RH×W映射到三维点云,其中 T i j ∈ S E ( 3 ) T_{ij} \in SE(3) Tij∈SE(3)是帧 i i i和帧 j j j之间的相对位姿变换, Π c \Pi_c Πc是相机投影算子, Π c − 1 \Pi_c^{-1} Πc−1是其逆算子,将二维像素坐标 p i p_i pi和深度 d i d_i di映射到三维点云。
优化过程最小化预测流与校正后的诱导流之间的差异,由置信矩阵加权:
T , d = min T , d ∑ ( i , j ) ∈ E ∥ f i j p r e d − ( ω i j ( T i j , d i ) + r i j ) ∥ Σ i j 2 ( 2 ) T, d = \min_{T, d} \sum_{(i, j) \in E} \left\| f_{ij}^{pred} - (\omega_{ij}(T_{ij}, d_i) + r_{ij}) \right\|_{\Sigma_{ij}}^2 \quad (2) T,d=T,dmin(i,j)∈E∑ fijpred−(ωij(Tij,di)+rij) Σij2(2)
其中 r i j r_{ij} rij是由ConvGRU预测的流校正项, Σ i j = d i a g ( W i j ) \Sigma_{ij} = diag(W_{ij}) Σij=diag(Wij)是在优化过程中导出的对角置信矩阵。
为求解此优化问题,我们遵循DRIOD-SLAM中实现的高斯-牛顿算法。该算法将目标函数线性化,并使用舒尔补高效计算 Δ ξ \Delta\xi Δξ和 Δ d \Delta d Δd的更新。在每次迭代中,更新后的相机位姿 T T T和深度图 d d d逐步精化重建结果。详细推导和实现步骤在DRIOD-SLAM中描述。
3.3 建图
一旦帧数据进入系统,首先通过运动滤波器和关键帧阈值进行过滤,以确定当前帧是否符合关键帧的条件。关键帧是根据相机运动和帧特征来选择的,并存储在如3.1节所述的动态因子图 G G G中。
3.3.1 因子图的初始化
在初始化阶段,初始帧用于通过建立足够的关键帧和约束来初始化因子图,为后续优化提供稳定的基础。对于每个关键帧,我们通过SLAM的前端跟踪获得估计的相机位姿和视差图,视差图是由估计深度 d d d的倒数 1 / d 1/d 1/d 得到的。利用这些视差图,我们将二维图像点反投影到三维空间,创建一个稠密的sfm点云。这个点云构成了我们场景模型初始化的基础。
3.3.2 从稠密SLAM点云进行高斯场景建模
为了对稠密SLAM点云进行建模,我们将几何形状表示为一组三维高斯分布,通过协方差矩阵捕捉局部几何结构和不确定性。这种转换增强了场景表示的鲁棒性,解决了SLAM生成的点云的局限性,如噪声和缺乏局部连续性,并便于在3DGS(三维场景生成系统)框架内进行下游优化和渲染任务。按照3DGS方法,每个高斯分布由一个完整的三维协方差定义。
在世界空间中的矩阵
Σ
\Sigma
Σ,其均值
μ
\mu
μ位于每个点:
G
(
g
)
=
exp
(
−
1
2
(
x
−
μ
)
T
Σ
−
1
(
x
−
μ
)
)
(
3
)
\mathcal{G}(g)=\exp\left(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)\right)\quad(3)
G(g)=exp(−21(x−μ)TΣ−1(x−μ))(3)
其中高斯分布以
μ
\mu
μ为中心,
x
x
x是像素的位置。此高斯分布用于表示场景中的每个点,同时捕捉其位置和与之相关的不确定性。
3.3.3 协方差矩阵分解
三维高斯分布的协方差矩阵
Σ
\Sigma
Σ可以分解为缩放矩阵
S
S
S和旋转矩阵
R
R
R,为优化提供了一种直观而强大的表示:
Σ
=
R
S
S
T
R
T
(
4
)
\Sigma = RSS^TR^T\quad(4)
Σ=RSSTRT(4)
其中
S
S
S是对角矩阵,对椭球沿不同轴的缩放进行编码,
R
R
R是旋转矩阵,描述椭球在空间中的方向。出于实际目的,我们将
S
S
S存储为三维向量,将
R
R
R存储为四元数,允许对这两个因素进行独立优化。这种分解确保了高效的表示,并便于优化,因为在梯度下降过程中每个元素都可以单独处理。
3.3.4 SLAM感知自适应致密化
单目SLAM系统在建图的早期阶段,由于深度和位姿估计中的观测有限和不确定性,往往会生成不准确的点云。这些不准确性源于三角测量基线不足以及位姿约束较弱,在建图初始化阶段尤为明显。这种错误的估计会导致几何和拓扑不一致、不准确的深度估计以及误差传播到下游渲染任务。如图3所示,具有错误估计深度的高斯分布会在墙壁和家具上产生“重影”伪影,尤其是从未经训练的视角观察时。此外,这些问题会增加高斯建模的计算成本,因为需要额外的资源来纠正初始的不准确性。
虽然传统的三维高斯溅射(3DGS)致密化方法在致密化稀疏点云(例如Photo-SLAM)方面表现出色,但对于我们的系统来说效率低下,我们的系统为每一帧生成稠密点云。此类方法无法解决SLAM生成的点云在早期阶段的不准确性,并且会增加不必要的计算开销用于致密化。为了克服这些挑战,我们提出了SLAM感知自适应致密化(SIAD),它利用SLAM的动态更新在线精化点云。通过修剪错误点、纳入新点以及基于可靠掩码调整高斯表示,我们的方法确保了准确且高效的点云精化,而无需冗余的致密化步骤。
点可靠性掩码生成
SLAM中的可靠性掩码对于确定哪些点在稠密深度和位姿估计过程中是有效或可靠的至关重要。在DROID-SLAM中,这些掩码是在跟踪和优化过程中迭代推导和更新的。具体来说,在我们的方法中,可靠性掩码
m
i
m_i
mi是基于以下一致性度量创建的:
(1) 深度一致性检查
每一帧
i
i
i都维护一个稠密深度图
d
i
d_i
di,并生成相应的掩码
m
i
m_i
mi来指示有效深度点:
m
i
(
p
)
=
{
1
,
if
d
i
(
p
)
>
0
and
d
i
(
p
)
is consistent
0
,
otherwise
(
5
)
m_i(p)=\begin{cases}1, & \text{if } d_i(p)>0 \text{ and } d_i(p) \text{ is consistent}\\0, & \text{otherwise}\end{cases}\quad(5)
mi(p)={1,0,if di(p)>0 and di(p) is consistentotherwise(5)
这里,
p
p
p表示帧中的一个像素。有效性由网络的深度预测及其跨帧的几何一致性确定。如果深度值
d
i
(
p
)
d_i(p)
di(p)被认为是有效的,则
m
i
(
p
)
m_i(p)
mi(p)为1,否则为0。
如果它在几何上与相邻帧中其重投影的对应点对齐,并且在连续帧中保持稳定,则认为是一致的。
(2) 帧间几何一致性
我们的系统使用相机位姿
T
i
j
T_{ij}
Tij和深度图
d
i
d_i
di来建立帧
i
i
i和帧
j
j
j之间的几何对应关系。重投影和距离计算定义如下:
x
j
=
T
i
j
⋅
x
i
,
d
(
x
i
,
x
j
)
=
∥
x
j
−
x
^
j
∥
(
6
)
\mathbf{x}_j = T_{ij} \cdot \mathbf{x}_i, \quad d(\mathbf{x}_i,\mathbf{x}_j) = \|\mathbf{x}_j - \hat{\mathbf{x}}_j\| \quad (6)
xj=Tij⋅xi,d(xi,xj)=∥xj−x^j∥(6)
其中
x
i
\mathbf{x}_i
xi和
x
j
\mathbf{x}_j
xj是帧
i
i
i和帧
j
j
j中的三维点,
x
^
j
\hat{\mathbf{x}}_j
x^j是从
x
i
\mathbf{x}_i
xi重投影得到的点。如果
d
(
x
i
,
x
j
)
>
d(\mathbf{x}_i,\mathbf{x}_j) >
d(xi,xj)>阈值,该点在
m
i
m_i
mi中被标记为无效。
(3) 因子图置信权重
在优化过程中,可靠的边是那些具有较高权重
w
i
j
w_{ij}
wij的边,这表明连接的帧之间具有更强的几何一致性。这样的边在图中被保留,并且在连接帧的掩码
m
i
m_i
mi中的相关点被保留。权重
w
i
j
w_{ij}
wij反映了基于各自点的投影和匹配质量的两帧之间对应关系的置信度。
对于单个点,它们的权重
w
i
j
(
p
)
w_{ij}(p)
wij(p)由conv-GRU独立评估。置信权重低的点,即
w
i
j
(
p
)
<
ϵ
w_{ij}(p) < \epsilon
wij(p)<ϵ,被认为是不可靠的,并从图中移除。这种移除反映在相应帧的掩码
m
i
m_i
mi中,无效点标记为:
m
i
(
p
)
=
0
,
if mean
(
w
i
j
(
p
)
)
<
ϵ
(
7
)
m_i(p) = 0, \quad \text{if } \text{mean}(w_{ij}(p)) < \epsilon \quad (7)
mi(p)=0,if mean(wij(p))<ϵ(7)
- 动态掩码更新
可靠性掩码通过评估帧之间的几何距离进行动态更新,并且根据接近阈值将点标记为有效或无效。这确保了掩码在优化过程中反映场景结构和相机轨迹的变化。 - SLAM感知自适应致密化
SLAM感知自适应致密化过程利用动态更新的掩码来自适应地调整点云的密度,确保其准确反映当前场景结构。该过程由三个核心组件组成:
(1) 现有点的位置更新
对于在更新后的掩码中仍然有效的点,即 m ( k − 1 ) ( p ) = 1 m^{(k - 1)}(p) = 1 m(k−1)(p)=1且 m ( k ) ( p ) = 1 m^{(k)}(p) = 1 m(k)(p)=1,它们的位置根据SLAM的跟踪结果进行更新。给定增量相机位姿更新 Δ ξ ( k ) \Delta\xi^{(k)} Δξ(k),点 g p ( k − 1 ) g_p^{(k - 1)} gp(k−1)的更新位置 g p ( k ) g_p^{(k)} gp(k)为:
g p ( k ) = exp ( Δ ξ ( k ) ) ∘ T i j ∘ Π c − 1 ( p , d i ( k − 1 ) + Δ d i ( k ) ) ( 8 ) g_p^{(k)} = \exp(\Delta\xi^{(k)}) \circ T_{ij} \circ \Pi_c^{-1}(p, d_i^{(k - 1)} + \Delta d_i^{(k)}) \quad (8) gp(k)=exp(Δξ(k))∘Tij∘Πc−1(p,di(k−1)+Δdi(k))(8)
(2) 无效点的修剪
对于在更新后的掩码中被标记为无效的点,即 m ( k − 1 ) ( p ) = 1 m^{(k - 1)}(p) = 1 m(k−1)(p)=1且 m ( k ) ( p ) = 0 m^{(k)}(p) = 0 m(k)(p)=0,从点云中修剪:
g p ( k ) → ∅ , if m ( k ) ( p ) = 0 ( 9 ) g_p^{(k)} \to \varnothing, \quad \text{if } m^{(k)}(p) = 0 \quad (9) gp(k)→∅,if m(k)(p)=0(9)
这确保了由SLAM确定的过时或不可靠的点不会污染高斯溅射表示。
(3) 新有效点的致密化
对于新添加到掩码中的点,即 m ( k − 1 ) ( p ) = 0 m^{(k - 1)}(p) = 0 m(k−1)(p)=0且 m ( k ) ( p ) = 1 m^{(k)}(p) = 1 m(k)(p)=1,我们通过使用公式(8)初始化点的位置来生成新的高斯溅射点。
3.3.5 关键帧选择与优化策略
为了高效处理SLAM的时间序列并在建图过程中保持几何准确性,我们的系统在SLAM前端持续处理传入的视频帧。受DROID-SLAM启发,采用基于运动的滤波器来识别和选择关键帧。该滤波器评估帧之间的相对运动,优先选择具有显著位姿差异或高光流幅度的帧,同时丢弃冗余帧。所选关键帧确保SLAM系统在不过度消耗计算资源的情况下捕获足够的几何多样性以进行准确重建。
我们在前端维护一个默认大小为25的关键帧窗口。在每次迭代中,系统使用类似束调整的优化过程更新该窗口内所有关键帧的相机位姿和深度估计。这些更新随后传播到建图模块,在该模块中稠密点云被精化并重建为基于高斯的场景表示。
使用三维高斯溅射进行建图
在建图模块中,SLAM的输出(更新后的相机位姿和深度图)用于精化三维高斯场景表示。高斯分布的均值
μ
\mu
μ(表示点的位置)根据更新后的深度和位姿信息进行调整。具体而言,更新后的深度图提供了精化的三维坐标,而位姿更新确保了在全局框架内的一致对齐。与均值不同,定义每个高斯分布的形状和不确定性的协方差矩阵
Σ
\Sigma
Σ是使用下游光度和几何约束而不是直接由SLAM输出进行优化的。
我们采用与3DGS相同的渲染方法,其中每个高斯分布基于其均值 μ \mu μ和协方差矩阵 Σ \Sigma Σ作为二维椭圆足迹投影到图像平面上。渲染管道通过光栅化过程累积来自所有高斯分布的贡献,其中每个像素的不透明度和颜色通过混合重叠的高斯足迹来计算。这种方法确保了高效渲染,同时保持了高视觉保真度和几何准确性,使其特别适用于实时应用。
几何引导优化
为了实现平衡光度一致性和几何准确性的高质量渲染,我们定义了一个复合损失函数。RGB损失
L
r
g
b
L_{rgb}
Lrgb受Plyonoxels[29]和3DGS的启发,确保渲染图像与真实图像之间的一致性。与3DGS不同,我们使用
L
1
L_1
L1损失和SSIM损失的组合,并通过纳入多尺度SSIM(MS-SSIM)[23]来增强感知质量,MS-SSIM捕捉不同分辨率下的感知一致性。RGB损失定义如下:
L
r
g
b
=
(
1
−
λ
m
s
−
s
s
i
m
)
L
1
+
λ
m
s
−
s
s
i
m
L
m
s
−
s
s
i
m
(
10
)
L_{rgb} = (1 - \lambda_{ms - ssim})L_1 + \lambda_{ms - ssim}L_{ms - ssim} \quad (10)
Lrgb=(1−λms−ssim)L1+λms−ssimLms−ssim(10)
这里
L
1
L_1
L1最小化像素级差异,
L
m
s
−
s
s
i
m
L_{ms - ssim}
Lms−ssim在多个尺度上提高感知质量。具体来说,MS-SSIM在多个分辨率级别计算结构相似性,逐步缩小输入图像。这种公式确保了对局部变化的鲁棒性,并与3DGS中使用的单尺度SSIM相比具有更好的感知对齐。
为了进一步捕捉场景内的几何关系,我们将一个边缘感知法向损失
L
n
o
r
m
a
l
L_{normal}
Lnormal[7]添加到我们的系统中。该损失使用从深度图
D
D
D的梯度计算得到的法向图
N
N
N,如下所示:
N
=
∇
x
D
×
∇
y
D
∥
∇
x
D
×
∇
y
D
∥
(
11
)
N = \frac{\nabla_x D \times \nabla_y D}{\|\nabla_x D \times \nabla_y D\|} \quad (11)
N=∥∇xD×∇yD∥∇xD×∇yD(11)
并通过权重函数
ω
(
x
)
=
(
x
−
1
)
q
\omega(x) = (x - 1)^q
ω(x)=(x−1)q对
N
N
N的梯度进行惩罚,该权重函数在低梯度区域平衡平滑和在尖锐边缘处的细节保留:
L
g
e
o
=
1
H
W
∑
i
H
∑
j
W
∣
∇
N
∣
⊗
ω
(
∣
∇
I
∣
)
(
12
)
L_{geo} = \frac{1}{HW} \sum_{i}^{H} \sum_{j}^{W} |\nabla N| \otimes \omega(|\nabla I|) \quad (12)
Lgeo=HW1i∑Hj∑W∣∇N∣⊗ω(∣∇I∣)(12)
我们注意到添加边缘感知损失对于强调几何细节是有效的,但它会放大高梯度区域的梯度惩罚并抑制平坦区域的梯度。虽然这种方法对于强调几何细节是有效的,但可能会过度强调尖锐边缘,导致RGB渲染质量的改进非常有限,并降低整体场景一致性。为了解决这个问题,我们提出了一个平滑的权重函数,使用类似高斯的调制来平衡边缘强调和空间连续性:
ω
(
x
)
=
exp
(
−
∣
x
−
1
∣
2
σ
2
)
(
13
)
\omega(x) = \exp\left(-\frac{|x - 1|^2}{\sigma^2}\right) \quad (13)
ω(x)=exp(−σ2∣x−1∣2)(13)
其中
σ
\sigma
σ控制权重的平滑度,确保高梯度和低梯度区域之间的逐渐过渡。这种修改减少了对尖锐梯度的过度惩罚,并防止平坦区域的惩罚过低,在不牺牲几何准确性的情况下提高RGB渲染一致性。
最终的复合损失函数集成了RGB损失、几何引导的边缘感知法向损失,计算如下:
L
=
L
r
g
b
+
λ
g
e
o
L
g
e
o
(
14
)
L = L_{rgb} + \lambda_{geo}L_{geo} \quad (14)
L=Lrgb+λgeoLgeo(14)
原文地址:https://blog.csdn.net/m0_48319749/article/details/145133460
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!