RTG-SLAM 论文阅读

关键词:: #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 论文理论内容

image.png

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} δα=e0.5 的部分; 基于置信度高斯被分为可靠的和不可靠的
有一个向量来统一保存高斯所有的id

图像渲染:
从像素点发出的射线
image.png
θ \theta θ是长度变量image.pngu为像素点
对颜色进行alpha渲染:
image.png
c i \mathbf{c_i} ci 和观看的角度和球谐函数有关, f(i)是通过椭球中心 u i \mathbf{u_i} ui 和关于2D高斯的 协方差 Σ 2 D \Sigma_{2D} Σ2D (如何计算)
image.png
image.png
其中, T ( u ) \mathbf{T(u)} T(u) 代表了能见性

深度渲染是文章的重点,因为本文只需要单一GS就可以实现深度和颜色渲染(不同于其他需要多个GS)
其他工作:采用和颜色渲染一样的思路,进行alpha渲染
本文工作:计算从像素点发射的射线和椭圆盘的交点,当作深度
image.png
基于alpha渲染的方式,一个椭球不同位置深度不同,不适用于单一椭球,会造成不稳定的情况
深度值与圆盘上的交点有关

不需要显示的将3DGS转为2DGS计算:相当于内部同时存储了3DGS和2DGS

计算交点位置:
image.png
p J , n j p_J ,n_j pJnj 是相交圆盘的位置和法向量

当椭球的不透明度小于阈值 δ α \delta_{\alpha} δα 深度值被设置为-1
当射线和圆盘法线近似为90度,交点可能会存在歧义,认为交点在椭球中心 p j p_j pj
深度的总方程为:
image.png

还保留了法线图 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 ,然后检测是否需要添加新的高斯
image.png
总结为: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帧
image.png
不透明度学习率lr α被设置为0以固定不透明度,并且我们不计算与高斯没有交集的像素上的深度损失。
对于透明度高的高斯,只希望用它们来修正颜色,不要影响其他区域,因此使用一个 L r e g L_{reg} Lreg去限制它的位置 尺度 旋转和初值一样不改变
image.png
实际运行时,wc=1, wd=1, wreg =1000,因为在优化时,很难为不同的高斯分配不同的学习率,因此使用正则项来替代

我们注意到,经过优化后,高斯可以很好地拟合当前时间窗口,但之前视图的渲染质量会下降(遗忘问题),使得在所有视图下获得高真实感渲染具有挑战性。本文采用平均当前结果与之前权重的方式
image.png
认为 image.png是稳定的高斯,为了保证实时性,只优化不稳定的高斯

高斯的状态管理:包括稳定高斯和不稳定高斯的相互转换,和错误高斯的删除
对于稳定的高斯,如果深度误差和颜色误差超过一定阈值,错误数 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 kti>δt,会被删除
注意,高斯必须在某些视图中被观察到才能被标记为稳定。即使他们以后一直被遮挡,也不是多余的(稳定的高斯会一直被存储,这样跑出来的效果最好)

相机追踪:使用多级ICP作为前端
image.png
image.png

同时为了减少漂移,跑了一个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 在线重建结果评价

时间和内存消耗
image.png
追踪准确度
image.png
新视角生成 3DGS的方法渲染质量会比nerf好,nerf渲染需要深度值
image.png
重建质量:Accuracy, Completion, Accuracy Ratio[<3cm] and Completion Ratio[<3cm] 我们去除未见过的区域,这些区域不在任何相机的视锥体内,使用真实的相机位姿进行重建
image.png
image.png
渲染质量
Pasted image 20240921142354
消融实验
1.透明高斯的作用
image.png
纯不透明的高斯会遮蔽现有的高斯,从而导致新视点下显著的色彩误差。
2.验证新深度渲染的(与alpha混合渲染对比)
image.png
如图7左所示,为了达到相同的深度精度,我们的紧致高斯表示比原始高斯表示所需的高斯数要少得多。此外,我们的紧致高斯表示可以更好地拟合具有相同数量的高斯(图7右)的表面。

5 后续改进方面

1.渲染质量不可避免地降低:为实时的大规模重建,仅使用不透明的高斯和透明的高斯来表示场景
2.颜色突变区域优化效果不佳:反射或透明材料可能会导致在不同视角下表面颜色大幅变化,使一些高斯经常在两种状态之间切换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lhy_6668

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值