【计算机视觉】四篇基于Gaussian Splatting的SLAM论文对比

本文对比了四篇高斯SLAM相关论文,包括Gaussian Splatting SLAM、SplaTAM、Gaussian - SLAM和GS - SLAM。介绍了各论文方法的具体步骤,分析了它们的异同点,如整体框架有相同之处,但在关键帧选取、Gaussian增删策略等方面存在差异,还对比了相机追踪精度、重渲染精度和训练渲染FPS等性能。

本文对比四篇论文:

[1] Gaussian Splatting SLAM
[2] SplaTAM: Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM
[3] Gaussian-SLAM: Photo-realistic Dense SLAM with Gaussian Splatting
[4] GS-SLAM: Dense Visual SLAM with 3D Gaussian Splatting

一、文章概括

[1] Gaussian Splatting SLAM

这篇论文主要解决的是RGB-D或单目相机的三维重建问题。

1. 相机追踪(Tracking)

在估计相机外参时,该方法最小化以下目标函数:
其中 λ p h o \lambda_{pho} λpho是权重超参数,
I ( G , T C W ) I(\mathcal{G},\boldsymbol{T}_{CW}) I(G,TCW)表示从外参为 T C W \boldsymbol{T}_{CW} TCW的相机渲染高斯集合 G \mathcal{G} G所得的图片, I ˉ \bar{I} Iˉ是真实图片; E p h o E_{pho} Epho为图片误差。
E g e o E_{geo} Egeo为深度误差,仅在深度信息可用时引入, D ( G , T C W ) D(\mathcal{G},\boldsymbol{T}_{CW}) D(G,TCW)是渲染出来的深度(渲染方式和RGB值类似,均为按不透明度和透光率加权平均), D ˉ \bar{D} Dˉ是深度数据。

2. 关键帧选取(Keyframing)

该方法选取关键帧窗口 W k \mathcal{W}_k Wk,选取依据是两帧之间共同可见Gaussians的比例(判断Gaussian是否可见的方法就是判断到该Gaussian的透光率是否达到0.5)。定义共同可见度(covisibility)为当前帧 i i i与上一个关键帧 j j j之间可见Gaussians集合的IoU。若共同可见度低于某个阈值,或相对平移 t i j t_{ij} tij相对于深度中位数较大,则帧 i i i被视为关键帧。

同时,在当前帧 i i i被加入关键帧窗口时,也要移除 W k \mathcal{W}_k Wk中已经陈旧的关键帧。当帧 j ∈ W k j\in\mathcal{W}_k jWk与当前帧 i i i可见Gaussians的重叠系数(OC, Overlapping Coefficient)小于某个阈值时,就将其移除。OC的定义如下:

3. Gaussian的新增和删除

每个关键帧都会添加新Gaussians。该方法用关键帧中每个像素点的深度 D D D(在单目相机的情形该方法会渲染深度来估计 D D D的值)作为新增Gaussians的参考位置。由于 D D D不一定准确,新Gaussians的深度服从一个均值为 D D D、方差较小的正态分布;对于没有深度估计的像素,新Gaussians的深度服从均值为渲染图像深度中位数、方差较大的正态分布。在一开始还没有Gaussian时,新增Gaussian的位置是随机的。

当关键帧窗口 W k \mathcal{W}_k Wk已满,该方法执行删除操作。如果最近三个关键帧内新增的Gaussians没有在其他至少三帧内观察到,那就将它们移除。不透明度小于 0.7 0.7 0.7的Gaussians也会被移除。

4. 三维重建

这部分的目的是维持一个协调的3D结构并优化新插入的Gaussians。参与优化的帧集合为 W = W k ∪ W r \mathcal{W}=\mathcal{W}_k\cup \mathcal{W}_r W=WkWr,其中 W r \mathcal{W}_r Wr是随机选取的两个以往的帧。3D Gaussians的渲染过程没有对沿光线方向的Gaussian进行约束,这可能会导致SLAM过程中出现伪影。因此,该方法惩罚“拉得太长”的Gaussians,方法是引入各向同性约束(isotropic regularization):
其中 s i \mathbf{s}_i si是第 i i i个Gaussian的缩放参数, s ~ i \tilde{\mathbf{s}}_i s~i是其在各个方向的均值。

对于三维重建部分,该方法求解以下最优化问题: min ⁡ T C W k ∈ S E ( 3 ) ∀ k ∈ W , G ∑ ∀ k ∈ W E p h o k + λ i s o E i s o \min\limits_{\underset{\forall k\in\mathcal{W}}{\boldsymbol{T}_{CW}^k\in\mathbf{SE}(3)},\mathcal{G}} \sum\limits_{\forall k\in\mathcal{W}}E_{pho}^k+\lambda_{iso}E_{iso} kWTCWkSE(3),GminkWEphok+λ

### 配置环境 为了在Ubuntu上成功复现Gaussian Splatting SLAM(MonoGS)项目,需先确保操作系统的更新至最新状态并安装必要的依赖库[^2]。 #### 更新系统软件包列表和升级已安装的软件包 ```bash sudo apt-y ``` #### 安装基础构建工具和其他必要组件 ```bash sudo apt install build-essential cmake git libgl1-mesa-dev libgles2-mesa-dev \ libsdl2-dev libopenal-dev nvidia-driver-470 ocl-icd-opencl-dev libglm-dev \ python3-pip python3-setuptools wget unzip curl -y ``` ### 准备工作空间与克隆仓库 创建一个新的目录用于存放源码,并从中下载目标项目的GitHub仓库: ```bash mkdir -p ~/workspace/monogs_slam && cd ~/workspace/monogs_slam git clone https://github.com/YOUR_GITHUB_USERNAME/MonoGS.git . ``` 注意替换`YOUR_GITHUB_USERNAME`为实际拥有该项目副本的用户名或组织名。 ### 编译OpenCV自定义版本(如果默认版不满足需求) 某些情况下可能需要编译特定版本的OpenCV来适配此SLAM实现的要求。这一步骤并非总是必需,取决于具体应用场景和个人偏好。 ```bash cd .. wget -O opencv.zip https://github.com/opencv/opencv/archive/refs/tags/4.5.5.zip unzip opencv.zip mv opencv-4.5.5 opencv cd opencv mkdir build && cd build cmake .. make -j$(nproc) sudo make install ``` ### 安装Python依赖项 进入之前克隆下来的MonoGS文件夹内执行pip命令以安装所需的Python模块: ```bash cd ~/workspace/monogs_slam pip3 install --user -r requirements.txt ``` ### OpenGL驱动优化建议 对于图形渲染性能有较高要求的应用场景下,可以考虑通过PPA方式获取更稳定的MESA驱动支持[^1]: ```bash sudo add-apt-repository ppa:kisak/kisak-mesa sudo apt update && sudo apt upgrade -y ``` 完成上述步骤之后重启计算机使更改生效。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值