赞
踩
神经隐式表示近年来在SLAM中,特别是在稠密视觉SLAM中,成为一种流行的表示方法。然而,此前在这一方向上的工作要么依赖于RGB-D传感器,要么需要单独的单目SLAM方法进行相机跟踪,并且不能产生高精度、高密度3D场景重建。在本文中,我们提出了NICER-SLAM,这是一个稠密的RGB SLAM系统,同时优化相机位姿和分层神经隐式地图表示,这也允许高质量的新视图合成。
为了促进地图的优化过程,我们集成了额外的监督信号,包括易于获取的单目几何线索和光流,并引入了一个简单的变形损失来进一步强制几何一致性。此外,为了在复杂的室内场景中进一步提高性能,我们还提出了从符号距离函数(SDF)到体积渲染方程中的密度的局部自适应转换。在合成和实际数据集上,我们展示了在密集映射、跟踪和新视角合成方面的强大性能,甚至与最近的RGB-D SLAM系统竞争。这部分代码目前还没开源,可以期待一波。
本文贡献如下:
1、我们提出了NICER-SLAM,这是第一个稠密的RGB SLAM之一,它可以对跟踪和建图进行端到端优化,还可以实现高质量的新视图合成。
2、我们为SDF,不同的几何和运动正则化,以及局部自适应的SDF体积密度转换引入了层次神经隐式编码。
3、我们在合成数据集和真实数据集上展示了强大的建图、跟踪和新颖的视图合成性能,甚至可以与最近的RGBD SLAM方法竞争。
我们在图2中提供了NICER-SLAM流程的概述。给定RGB视频作为输入,我们通过端到端优化同时估计准确的三维场景几何形状和颜色,以及相机跟踪。图二显示了NICER-SLAM的系统概述。我们的方法仅采用RGB流作为输入,并输出相机姿态以及用于几何和颜色的学习分层场景表示。为了实现端到端的联合映射和跟踪,我们渲染预测的颜色、深度、法线,并根据输入RGB和单目线索进行优化。此外,我们进一步通过RGB变形损失和光流损失强化几何一致性。我们使用分层神经隐式表示来表示场景的几何形状和外观(第3节)。通过类似NeRF的可微体积渲染,我们可以呈现每个像素的颜色、深度和法向量值(第4节),这将用于相机姿态、场景几何形状和颜色的端到端联合优化(第5节)。最后,我们讨论了系统中的一些设计选择(第6节)
我们首先介绍我们可优化的分层场景表示方法,它将多级网格特征与MLP解码器相结合,用于SDF和颜色预测。
粗层几何表示:粗层几何表示的目标是有效地建模粗略的场景几何(捕获几何细节的对象)和场景布局(例如墙壁,地板),即使只有部分观察数据也能做到。 为此,我们使用分辨率为
32
×
32
×
32
32×32×32
32×32×32的密集体素网格表示归一化场景,并在每个体素中保留32个特征。 对于空间中的任何点
x
∈
R
3
x∈\mathbb{R}^3
x∈R3,我们使用一个小的MLP
f
c
o
a
r
s
e
f ^{coarse}
fcoarse,带有一个64维隐藏层,以获得其基本SDF值
s
c
o
a
r
s
e
∈
R
scoarse∈\mathbb{R}
scoarse∈R和几何特征
z
c
o
a
r
s
e
∈
R
32
z^{coarse}∈\mathbb{R}^{32}
zcoarse∈R32,如下式所示:
其中
γ
γ
γ对应于一个固定的位置编码 [29, 54],将坐标映射到更高的维度。根据[71, 69, 68]的方法,我们将位置编码的级别设置为6。
Φ
c
o
a
r
s
e
(
x
)
Φ^{coarse}(x)
Φcoarse(x)表示特征网格
Φ
c
o
a
r
s
e
Φ^{coarse}
Φcoarse在点
x
x
x处进行三线性插值。
Fine-level几何表征:虽然粗略的几何形状可以通过我们的粗略级别形状表示获得,但捕捉场景中的高频几何细节很重要。 为了实现这一目标,我们使用多分辨率特征网格和MLP解码器[5, 31, 76, 53]来将高频几何细节建模为残差SDF值。 具体而言,我们使用多分辨率稠密特征网格
Φ
{
f
i
n
e
l
}
1
L
{Φ^\{fine}_l \}^L_1
Φ{finel}1L ,分辨率为
R
l
R_l
Rl。 这些分辨率在几何空间中采样[31],以合并不同频率的特征:
其中,
R
m
i
n
R_{min}
Rmin和
R
m
a
x
R_{max}
Rmax分别对应最低和最高分辨率。这里我们设置
R
m
i
n
=
32
R_{min}=32
Rmin=32,
R
m
a
x
=
128
R_{max}=128
Rmax=128,总共有
L
=
8
L=8
L=8个级别。每个级别的特征维度为4。
现在,为了对一个点
x
x
x建模残差SDF值,我们提取并串联每个级别的三线性插值特征,并将它们输入到一个3个隐藏层大小为64的MLP
f
f
i
n
e
f^{fine}
ffine 中:
其中
z
f
i
n
e
∈
R
32
z^{fine} ∈ \mathbb{R}^{32}
zfine∈R32是
x
x
x在细级别上的几何特征。通过粗层基础SDF值
s
c
o
a
r
s
e
s^{coarse}
scoarse和细层残差SDF
∆
s
∆s
∆s,
x
x
x的最终预测SDF值
s
^
\hat{s}
s^简单地是两者之和:
颜色表示:除了3D几何信息之外,我们还预测颜色值,以便我们的映射和相机跟踪也可以通过颜色损失进行优化。此外,作为另一个应用,我们还可以即时从新视角渲染图像。受[31]的启发,我们使用另一个多分辨率特征网格
{
Φ
l
c
o
l
o
r
}
1
L
\{Φ^{color}_l\}^L_1
{Φlcolor}1L和一个由大小为64的2层MLP参数化的解码器
f
c
o
l
o
r
f^{color}
fcolor来编码颜色。特征网格的层数现在为
L
=
16
L = 16
L=16,每个层的特征维数为2。最小和最大分辨率现在分别为
R
m
i
n
=
16
R_{min} = 16
Rmin=16和
R
m
a
x
=
2048
R_{max} = 2048
Rmax=2048。我们预测每个点的颜色值为:
其中,
n
^
\hat{n}
n^ 对应于从方程(4)中的
s
^
\hat{s}
s^计算出的点
x
x
x处的法线,
γ
(
v
)
γ(v)
γ(v)是观察方向,其具有4级的位置编码,遵循[68,71]。
跟随最近基于隐式方法的3D重建 [38,68,71,59] 和密集视觉SLAM [51,76] 的工作,我们使用可微分的体积渲染从第3.1节中优化的场景表示。具体而言,为了渲染一个像素,我们从相机中心
o
o
o沿着其规范化视线方向
v
v
v,将射线
r
r
r投射到像素上。然后沿着该射线采样N个点,表示为
x
i
=
o
+
t
i
v
x_i = o + t_iv
xi=o+tiv,它们的预测SDF和颜色值分别为
s
^
i
\hat{s}_i
s^i和
c
^
i
\hat{c}_i
c^i。为了进行体积渲染,我们遵循[68],将SDF
s
^
i
\hat{s}_i
s^i 转换为密度值
σ
i
σ_i
σi:
其中,
β
∈
R
β ∈ R
β∈R 是控制从 SDF 到体密度的转换的参数。如同 [29],当前光线
r
r
r 的颜色
C
^
\hat{C}
C^ 被计算为:
其中,
T
i
T_i
Ti 和
α
i
α_i
αi 分别对应沿着光线
r
r
r 的采样点
i
i
i 的透射率和 alpha 值,
δ
i
\delta_i
δi 是相邻采样点之间的距离。类似地,我们也可以计算与当前光线
r
r
r 相交的表面的深度
D
^
\hat{D}
D^ 和法线
N
^
\hat{N}
N^,如下所示:
本文提出了一种本地自适应转换的方法。公式(6)中的**
β
β
β参数模拟了物体表面附近的平滑程度**。随着网络对物体表面更加确定,
β
β
β的值逐渐减小。因此,这种优化方案能够实现更快、更锐利的重建。在VolSDF [68]中,他们将
β
β
β建模为单个全局参数。这种建模方式本质上假定在不同场景区域中优化的程度相同,对于小型场景是足够的。然而,在复杂的室内场景中,全局优化的
β
β
β值是次优的(请参见4.2节的消融研究)。因此,我们提出了一种本地自适应的方法,将
β
β
β值本地化,以使公式(6)中的SDF-density 转换也是本地自适应的。具体来说,我们在整个场景中维护一个体素计数器,并在映射过程中计算每个体素内的点样本数。我们经验性地选择了体素大小为643(请参见4.2节的消融研究)。接下来,我们启发式地设计了一种从局部点样本计数
T
p
T_p
Tp到
β
β
β值的转换:
我们通过在全局输入设置下绘制
β
β
β随体素计数递减的曲线并对曲线进行拟合得到了该变换。我们经验性地发现指数曲线最适合。
仅从 RGB 时序输入,很难同时优化 3D 场景几何和颜色以及相机姿态,由于高度的歧义,特别是对于具有许多无纹理和稀疏覆盖区域的大型复杂场景。因此,为了在我们的神经场景表示下实现端到端联合映射和跟踪,我们建议使用以下损失函数,包括几何和先验约束、单视角和多视角约束,以及全局和局部约束。
RGB渲染损失:式(7)将3D神经场景表示与2D观察结果相连,因此我们可以使用简单的RGB重建损失来优化场景表示:
其中,
R
R
R 表示每次迭代中随机采样的像素/光线,
C
C
C 是输入像素颜色值。
RGB变形损失:为了进一步从仅有的颜色输入中强制执行几何一致性,我们还添加了一个简单的每像素变形损失。对于第 m m m帧中的像素,表示为 r m r_m rm,我们首先使用公式(8)渲染其深度值并将其投影到3D空间中,然后使用第 n n n帧的内部和外部参数将其投影到另一个帧中。附近的关键帧 n n n中的投影像素 r m → n 表示为 r_{m→n}表示为 rm→n表示为r_{m→n}$。然后定义变形损失为:
其中
K
m
K_m
Km表示当前帧
m
m
m的关键帧列表,不包括帧
m
m
m本身。我们将在帧
n
n
n的图像边界外投影的像素屏蔽掉。需要注意的是,与[11]不同的是,我们观察到,对于随机采样的像素来说,简单地执行像素变形比使用路径变形更有效,并且没有性能下降。
光流损失:RGB渲染和变形损失都是基于点的项,易受局部最小值的影响。因此,我们添加了一种基于光流估计的损失,它遵循区域平滑性先验,并有助于解决歧义。假设帧
m
m
m中的采样像素为
r
m
r_m
rm,相应的投影像素在帧
n
n
n中为
r
n
r_n
rn,则可以添加光流损失如下:
其中
G
M
(
r
m
→
n
)
GM(r_{m→n})
GM(rm→n)表示从GMFlow [66]中估计的光流。
单目深度损失:给定RGB输入,可以通过现成的单目深度估计器[12]获得几何线索(如深度或法线)。受[71]启发,我们还将此信息包含在优化中,以指导神经隐式表面重建。
更具体地说,为了在我们的渲染预期深度
D
^
\hat{D}
D^和单目深度
D
ˉ
\bar{D}
Dˉ之间强制执行深度一致性,我们使用以下损失[43, 71]:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。