关键词:: #3DGS-SLAM #大场景 #高效 #新深度渲染
0 论文总概述
0.1 问题的背景
intro
传统的三维重建侧重于几何精度,忽视了渲染质量
基于nerf的三维重建方法要求很高的算力,难以实现是实时性
GS速度虽然快,但大多数还是离线运行。如何减少内存和计算消耗,是实现3DGS能够在先运行的重要问题
related work
NERF-SLAM
iMap: first, single MLP as the scene representation
NICESLAM: epresents scenes as hierarchical feature grids, utilizing pre-trained MLPs for decoding
Vox-fusion:represents scenes as voxel-based neural implicit surfaces and stores them using octrees
ESLAM:representing scenes as multi-resolution feature grids
Co-SLAM:representing scenes as multi-resolution hash grids.
Point-SLAM:employs neural point clouds and performs volumetric rendering with feature interpolation
内存占用比较高(体绘制)
GS-SLAM
To extend Gaussians to online reconstruction, [Yan et al. 2023] proposes an adaptive expansion strategy to add new or delete noisy 3D Gaussian and a coarse-to-fine technique to select reliable Gaussians for tracking.
SplaTAM : tailors an online reconstruction pipeline to use an underlying Gaussian representation and silhouette-guided optimization via differentiable rendering.
保留多分辨率特征提高渲染质量
0.2 创新点
1.引入了一种紧致的高斯表示来减少拟合曲面所需的高斯数,从而大大降低了内存和计算成本(将高斯分为近似透明和近似不透明,使用单一不透明的高斯实现深度和颜色估计,减少高斯的数量和重叠)
2.基于单一高斯的新型深度渲染策略(不同于颜色渲染),通过射线和椭圆盘的交点计算深度
3.显式地在每帧中为三种类型的像素添加高斯:新观察到的、具有较大颜色误差的和具有较大深度误差的
4.将高斯分为稳定和不稳定两种,并且只对不稳定的高斯进行优化,只渲染稳定高斯所占的像素。稳定和不稳定高斯转换机制
5.ICP+ORB-SLAM2的
6.有实际运行测试
2 背景知识
3 论文理论内容
3.1 紧凑的高斯表示
场景表示:
S
\mathbf{S}
S
3D 高斯{
G
i
G_i
Gi}:位置
p
i
\mathbf{p_i}
pi , 协方差
Σ
\Sigma
Σ(可以拆成尺度向量
s
i
\mathbf{s_i}
si 四元数
q
i
\mathbf{q_i}
qi) ,不透明度
α
\alpha
α ,球谐函数
S
H
\mathbf{SH}
SH 每一个高斯分为不透明的
α
=
0.99
\alpha = 0.99
α=0.99 (拟合3d曲面和主要颜色) 和 近乎透明的
α
=
0.1
\alpha = 0.1
α=0.1 (补充颜色细节)
2D高斯表示(椭圆盘): 法向量
n
i
\mathbf{n_i}
ni (最小特征法向量的方向) 置信度
η
i
\eta _i
ηi (被优化了多少次),
t
i
t_i
ti 被初始化的时间 2D高斯椭圆盘的形状是密度大于
δ
α
=
e
−
0.5
\delta_{\alpha} = e ^{-0.5}
δα=e−0.5 的部分; 基于置信度高斯被分为可靠的和不可靠的
有一个向量来统一保存高斯所有的id
图像渲染:
从像素点发出的射线
θ
\theta
θ是长度变量u为像素点
对颜色进行alpha渲染:
c
i
\mathbf{c_i}
ci 和观看的角度和球谐函数有关, f(i)是通过椭球中心
u
i
\mathbf{u_i}
ui 和关于2D高斯的 协方差
Σ
2
D
\Sigma_{2D}
Σ2D (如何计算)
其中,
T
(
u
)
\mathbf{T(u)}
T(u) 代表了能见性
深度渲染是文章的重点,因为本文只需要单一GS就可以实现深度和颜色渲染(不同于其他需要多个GS)
其他工作:采用和颜色渲染一样的思路,进行alpha渲染
本文工作:计算从像素点发射的射线和椭圆盘的交点,当作深度
基于alpha渲染的方式,一个椭球不同位置深度不同,不适用于单一椭球,会造成不稳定的情况
深度值与圆盘上的交点有关
不需要显示的将3DGS转为2DGS计算:相当于内部同时存储了3DGS和2DGS
计算交点位置:
p
J
,
n
j
p_J ,n_j
pJ,nj 是相交圆盘的位置和法向量
当椭球的不透明度小于阈值
δ
α
\delta_{\alpha}
δα 深度值被设置为-1
当射线和圆盘法线近似为90度,交点可能会存在歧义,认为交点在椭球中心
p
j
p_j
pj
深度的总方程为:
还保留了法线图 N ( u ) \mathbf{N(u)} N(u) 和 高斯索引图 I ( u ) \mathbf{I(u)} I(u) ,法线图 N ( u ) \mathbf{N(u)} N(u) 在追踪线程用来进行ICP,高斯索引图 I ( u ) \mathbf{I(u)} I(u)用来快速查找高斯
3.2 在线重构过程
输入预处理: 计算局部顶点映射 V k l V^l_k Vkl 和法向量地图 N k l N_k^l Nkl ;全局地图 V k g V^g_k Vkg N k g N_k^g Nkg
添加高斯: 基于视图-空间位置梯度的高斯自适应控制对于在线是低效的,因此本文采用了基于几何和外表的高效高斯添加策略
方法:通过给定的相机位姿
T
g
,
k
T_{g,k}
Tg,k ,通过已有的高斯渲染颜色图
C
\mathbf{C}
C 和深度图
D
\mathbf{D}
D,可见度
T
\mathbf{T}
T 和高斯的索引图
i
i
i ,然后检测是否需要添加新的高斯
总结为:1.观察到新的场景(T代表,阈值为0.5) 2.表面还不是很精准(D代表,阈值为0.1) 3. 几何准确但是颜色不准确(C代表,阈值为0.1)
对全局的所有高斯优化会影响实时性,因此只均匀选取Ms Mc中的5% 考虑添加高斯
对于Ms情况,添加不透明度低的GS(
α
=
0.99
\alpha = 0.99
α=0.99 ),用来拟合几何形状;
对于Mc情况,因为几何精度较高,因此只需要微调颜色。先检查置信度,置信度低进一步优化GS;置信度高添加不透明度高的GS(
α
=
0.1
\alpha = 0.1
α=0.1 )用来修正颜色,同时不影响其他视角和深度渲染(会被阈值筛选掉)
所有添加的高斯被初始化为包含像素颜色、位置和法线的薄圆盘,置信度η = 0,时间戳t = k。
对于不透明高斯,初始化为大小尽可能充满未覆盖场景,同时可能少的重叠覆盖场景;而透明高斯的半径被限制在0.01 m以下,以消除渲染结果对其他像素的干扰。
保存的高斯到底是3D 2D
高斯优化: 使用颜色和深度误差,在滑窗里随机选K帧
不透明度学习率lr α被设置为0以固定不透明度,并且我们不计算与高斯没有交集的像素上的深度损失。
对于透明度高的高斯,只希望用它们来修正颜色,不要影响其他区域,因此使用一个
L
r
e
g
L_{reg}
Lreg去限制它的位置 尺度 旋转和初值一样不改变
实际运行时,wc=1, wd=1, wreg =1000,因为在优化时,很难为不同的高斯分配不同的学习率,因此使用正则项来替代
我们注意到,经过优化后,高斯可以很好地拟合当前时间窗口,但之前视图的渲染质量会下降(遗忘问题),使得在所有视图下获得高真实感渲染具有挑战性。本文采用平均当前结果与之前权重的方式
认为 是稳定的高斯,为了保证实时性,只优化不稳定的高斯
高斯的状态管理:包括稳定高斯和不稳定高斯的相互转换,和错误高斯的删除
对于稳定的高斯,如果深度误差和颜色误差超过一定阈值,错误数
e
i
e_i
ei会+1,当
e
i
>
δ
e
e_i>\delta_e
ei>δe,稳定的高斯会转成不稳定; 当不稳定的高斯优化次数
η
i
>
δ
n
\eta_i > \delta_n
ηi>δn,会转成稳定的高斯;不稳定的高斯存在时间过长,
k
−
t
i
>
δ
t
k - t_i > \delta_t
k−ti>δt,会被删除
注意,高斯必须在某些视图中被观察到才能被标记为稳定。即使他们以后一直被遮挡,也不是多余的(稳定的高斯会一直被存储,这样跑出来的效果最好)
相机追踪:使用多级ICP作为前端
同时为了减少漂移,跑了一个ORB的后端进行优化,更新位姿和3D路标,路标被用于图优化(高斯是否同时进行优化)
关键帧选择和全局优化: 两帧之间旋转或者平移超过阈值(30度和0.3m)
使用最新的关键帧和随机选取的过去的关键帧进行优化,为了保证实时性,只优化每个关键帧前40%误差的像素
为了避免出现过拟合,全局优化时不改变GS的位置,使用0.1倍的局部学习率进行全局更新。当局部更新结束,采用局部更新的十倍次数进行全局更新。
4 实验部分
4.1 实验准备
实现细节: intel i9 13900KF CPU,4090 GPU,Pytorch,wrote custom CUDA kernels for rasterization and back propagation, Azure Kinect RGBD相机
数据集: Replica, TUM-RGBD, ScanNet++, self-scanned Azure dataset(including corridor, storeroom, hotel room, home, office, ranging from 43𝑚2∼100𝑚2)
Baselines: NeRF RGBD SLAM(NICE-SLAM Point-SLAM Co-SLAM ESLAM) Gaussian SLAM(SplaTAM)
4.2 在线重建结果评价
时间和内存消耗
追踪准确度:
新视角生成 3DGS的方法渲染质量会比nerf好,nerf渲染需要深度值
重建质量:Accuracy, Completion, Accuracy Ratio[<3cm] and Completion Ratio[<3cm] 我们去除未见过的区域,这些区域不在任何相机的视锥体内,使用真实的相机位姿进行重建
渲染质量
消融实验:
1.透明高斯的作用
纯不透明的高斯会遮蔽现有的高斯,从而导致新视点下显著的色彩误差。
2.验证新深度渲染的(与alpha混合渲染对比)
如图7左所示,为了达到相同的深度精度,我们的紧致高斯表示比原始高斯表示所需的高斯数要少得多。此外,我们的紧致高斯表示可以更好地拟合具有相同数量的高斯(图7右)的表面。
5 后续改进方面
1.渲染质量不可避免地降低:为实时的大规模重建,仅使用不透明的高斯和透明的高斯来表示场景
2.颜色突变区域优化效果不佳:反射或透明材料可能会导致在不同视角下表面颜色大幅变化,使一些高斯经常在两种状态之间切换