GS-SLAM Dense Visual SLAM with 3D Gaussian Splatt 论文阅读

项目主页

2024 CVPR (highlight)
https://gs-slam.github.io/
在这里插入图片描述

摘要

本文提出了一种基于3D Gaussian Splatting方法的视觉同步定位与地图构建方法。
与最近采用神经隐式表达的SLAM方法相比,本文的方法利用实时可微分泼溅渲染管道,显著加速了地图优化和RGB-D渲染。

贡献

本文提出了一种自适应扩展策略,添加新的或删除噪声 3D 高斯,以便有效地重建新观察到的场景几何形状并改进先前观察到的区域。
此外,在姿态跟踪过程中,设计了一种有效的从粗到精的技术来选择可靠的3D高斯表示来优化相机姿态,从而减少运行时间和鲁棒估计。

简介

传统SLAM方法

  1. 同步定位与建图 (SLAM) 已成为机器人 [6]、虚拟现实 [10] 和增强现实 [25, 39] 等领域的关键技术。
  2. SLAM 的目标是构建未知环境的密集/稀疏地图,同时跟踪相机姿态。
  3. 传统的SLAM方法采用点/面元云[20,32,42,46],网格表示[26],体素散列[12,18,23]或体素网格[21]作为场景表示来构造稠密映射,并且已经在定位精度上取得了长足进步。

神经隐式表达方法

  1. 最近,神经辐射场 (NeRF) [19] 已被探索用于增强 SLAM 方法,并在生成低内存消耗的高质量、密集地图方面展现出优势 [35]。
  2. iMAP [35] 使用单个多层感知器(MLP)来表示整个场景,该场景通过体积渲染 RGB-D 图像和地面实况观测之间的损失进行全局更新。
  3. NICE-SLAM [55]利用分层神经隐式网格作为场景地图表示,以允许局部更新来重建大场景。
  4. ESLAM[11]、CoSLAM[41]和EN-SLAM[24]利用轴对齐特征平面和联合坐标参数编码来提高场景表示能力,实现高效、高质量的表面地图重建。

最近的工作[13,17,47]使用3D高斯表示和基于图块的泼溅技术在高分辨率图像渲染的效率方面表现出了巨大的优越性。它用于合成静态物体的新视角 RGB 图像,以实时速度实现 1080p 分辨率的最先进的视觉质量。受此启发,本文将3D高斯场景表示和实时可微喷射渲染管道的渲染优势扩展到密集RGB-D SLAM任务,并共同提升基于NeRF的密集SLAM的速度和精度。

相关工作

密集视觉SLAM
现有的实时密集视觉 SLAM 系统通常基于离散的手工特征或深度学习嵌入,并遵循[16]中的映射和跟踪架构。

  1. DTAM [22] 首先引入了密集 SLAM 系统,该系统使用光度一致性来跟踪手持相机并将场景表示为成本量。
  2. KinectFusion [44] 通过迭代最近点执行相机跟踪,并通过 TSDF-Fusion 更新场景。
  3. BAD-SLAM [29] 提出通过直接束调整 (BA) 技术联合优化关键帧姿势和 3D 场景几何。
  4. 相比之下,最近的工作将深度学习与传统几何框架相结合,以实现更准确、更鲁棒的相机跟踪和建图,例如 DROID-SLAM [37]、CodeSLAM [1]、SceneCode [54] 和 NodeSLAM [34],在该领域取得了重大进展,实现了更准确、更强大的相机跟踪和地图性能。

基于神经隐式辐射场的 SLAM

对于基于NeRF的SLAM,现有的方法可以分为三种主要类型:基于MLP的方法(MLP-based methods)、混合表示方法(Hybrid representation methods)和显式方法(Explicit methods)。

  1. 基于 MLP 的方法 iMAP [35] 提供了可扩展且内存高效的地图表示,但在较大场景中面临灾难性遗忘的挑战。
  2. 混合表示方法结合了隐式 MLP 和结构特征的优点,显着增强了场景的可扩展性和精度。例如,NICE-SLAM [55]将MLP与多分辨率体素网格集成,从而实现大场景重建,Vox-Fusion [48]采用八叉树扩展来实现动态地图可扩展性,而ESLAM [11]和Point-SLAM [27]则利用三叉树扩展分别使用平面和神经点云来提高建图能力。
  3. 至于[38]中提出的显式方法,它将地图特征直接存储在体素中,没有任何MLP,从而实现更快的优化。 GS-SLAM 不是用隐式特征来表示地图,而是利用 3D 高斯表示,使用基于泼溅的光栅化有效地渲染图像,并通过反向传播直接优化参数。

3D高斯表示
最近的几种方法使用 3D 高斯进行形状重建,例如 Fuzzy Metaballs [14, 15]、VoGE [40]、3DGS [13]。

3DGS [13] 在高质量实时新视图合成方面表现出巨大的优势。本文工作用 3D 高斯表示场景,并开发了 NeRFstyle 快速渲染算法来支持各向异性泼溅,实现了 SOTA 视觉质量和快速高分辨率渲染性能。除了渲染优势之外,高斯泼溅还拥有明确的几何场景结构和外观,这得益于场景表示的精确建模[50]。这项有前景的技术已迅速应用于多个领域,包括 3D 生成 [3,36,51]、动态场景建模 [17][47][49] 和逼真的可驾驶化身 [56]。然而,由于主要管道[13]的固有局限性,即初始化点云或相机位姿输入的先决条件[28],目前还没有使用3D高斯模型解决相机位姿估计或实时映射的研究。相比之下,本文推导了高斯表示中姿态估计的解析导数方程,并实现了高效的 CUDA 优化。

方法

3D 高斯场景表示

与3DGS论文中的方法一样,将场景建模为一组带有不透明度和球谐函数的3D 高斯函数。
每个 3D 高斯场景表示 G i G_i Gi 由位置 X i ∈ R 3 x 3 X_i \in R^{3x3} XiR3x3 协方差矩阵 ∑ i ∈ R 3 × 3 \sum_i \in R^{3×3} iR3×3、不透明度 Λ i ∈ R Λ_i \in R ΛiR 和每个颜色通道的 1 度球谐函数 (Y ) 定义, Y i ∈ R 12 Y_i \in R^{12} YiR12 总共有 12 个系数。

然后为了便于优化,将3D高斯协方差表达为一个尺度向量和旋转矩阵的公式。

这里的一系列操作和3DGS论文的处理是一样的。

自适应的3D高斯扩展映射

为了实现稳定的映射,只在给定的关键帧上进行优化和更新。
对于给定的关键帧和对应的估计姿势,首先应用自适应扩展策略从整个场景中添加3D高斯或删除噪声3D高斯,然后用现有的3D高斯渲染一张分辨率为 H ∗ W H*W HW的RGB-D图像,通过最小化几何深度 L d L_d Ld到传感器观察深度D和光度颜色 L c L_c Lc到传感器观察颜色的损失。
自适应的3D 高斯扩展策略
初始化:用RGB-D图像序列第一帧来初始化高斯场景。均匀采样图像分辨率一半的像素,将其分别反向映射到3D空间中对应的点。每一个点除了有位置信息之外还有初始化的3D高斯函数的参数。
剩下的一半像素用于进行高斯自适应密度控制。

添加高斯点步骤:
在每个关键帧,使用历史 3D 高斯添加第一个渲染的 RGB-D 图像,并计算每个像素的累积不透明度。如果这个不透明度低于一定阈值或者,这个像素的渲染深度和观察深度差距大于一定阈值,认为这个像素是不可靠像素,标记为" x u n x^{un} xun"。这些不可靠像素大多用来捕获新的观察区域。将这些不可靠像素反投影到3D空间的对应点 P u n P^{un} Pun,并初始化这个点的高斯函数参数。

删除高斯点步骤:
用前面设计的损失函数优化的高斯场景会有很多多余的高斯点。检查当前相机视椎体中所有可见3D高斯,降低位置不在场景表面附近的3D高斯的不透明度。
具体是这样操作的,对于每个可见的 3D 高斯,从相机原点 o 及其位置 X i = ( x i , y i , z i ) X_i = (x_i, y_i, z_i) Xi=(xi,yi,zi) 绘制一条射线 r ( t ) r(t) r(t),即 r ( t ) = o + t ( X i − o ) r(t) = o + t(X_i − o) r(t)=o+t(Xio)。然后,可以找到该射线与图像平面相交的坐标为 (u, v) 的像素以及相应的观测深度 D。相当于计算一个渲染深度和观测深度的差值,根据这个差值,计算对应高斯点的透明度。

跟踪和捆绑调整

首先采用常见的简单的恒定速度假设来初始化新的姿势。该假设基于倒数第二个姿势和最后一个姿势之间的相对变换来变换最后一个已知姿势。然后,通过最小化渲染颜色损失来优化准确的相机位姿 P。
可微的姿态估计
这里推导了相机位姿的解析式,简化了结果,便于进行对相机位姿进行优化。
由粗到细的相机追踪
不能用所有图像像素对相机姿势进行优化,因为图像中可能存在伪影(我理解是像素的颜色或者深度不准确)。本文首先用图像规律性仅渲染系数像素集并优化跟踪损失获得粗略的相机姿态,这样能减轻细节伪影的影响。然后用粗略的相机姿态和深度观察来选择可靠的3D高斯,通过进一步优化新渲染像素上的跟踪损失来细化粗略的相机姿态。
捆绑调整
在捆绑调整(BA)阶段,联合优化相机位姿 P 和 3D 高斯场景表示 S。本文从关键帧数据库中随机选择K个关键帧进行优化,使用与映射部分类似的损失函数。为了姿势优化稳定性,仅在迭代的前半部分优化场景表示 S。在迭代的另一半中,同时优化地图和姿势。然后,通过最小化渲染颜色损失来优化准确的相机位姿P。
在这里插入图片描述

实验部分

数据集
用得是Replica和TUM-RGBD
基线
将本文的方法与现有的基于 SOTA NeRF 的密集视觉 SLAM:NICE-SLAM [55]、VoxFusion [48]、CoSLAM [41]、ESLAM [11] 和 PointSLAM [27] 进行比较。
CoSLAM [41]和ESLAM [11]的渲染性能是根据[27]文章中具有相同配置的开源代码进行的。
指标
网格重建:
2D Depth L1
Precision 精确度
Recall 召回率
F-score F分数以 1 厘米为阈值来测量场景几何形状。
对于定位:
absolute trajectory (ATE, cm) error [33] 绝对轨迹误差
对于渲染性能:
peak signal-to-noise ratio (PSNR) 峰值信噪比
SSIM 结构衡量指标
LPIPS 可学习感知图像块相似度
实验结果和细节
参考论文即可,不再赘述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/455707.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django学习- ORM基础操作_创建数据

ORM操作: 管理器对象: 创建数据: Django shell 想要操作模型对象,首先我们需要把它引进Django shell中 >>> from bookstore.models import Book >>> b1 Book.objects.create(titleAI, pub清华大学出版社, pr…

开挖 Domain - 前奏

WPF App 主机配置 Microsot.Extension.Hosting 一键启动(配置文件、依赖注入,日志) // App.xaml.cs 中定义 IHost private readonly IHost _host Host.CreateDefaultBuilder().ConfigureAppConfiguration(c > {_ c.SetBasePath(Envi…

电脑必备快捷键大全

#1024程序员节|征文# 小伙伴们!想要提高学习效率,成为电脑高手吗?今天,我为大家整理了一份超实用的电脑快捷键清单!无论是写论文、做PPT还是数据录入,这些快捷键都能帮你事半功倍!快收藏起来吧&…

PDF.js的使用及其跨域问题解决

目录 一、PDF.js 简介 二、使用配置和步骤 1.引入PDF.js 2.加载PDF文件 3.渲染PDF页面 三、在Vue中使用PDF.js示例 1.安装PDF.js 2.在Vue组件中使用 四、在原生js中使用PDF.js示例 1.加载PDF文件并渲染页面 五、解决跨域问题 1.服务器配置 2.使用代理服务器 下面介…

编辑器、节点树、基础设置

目录 节点 查看当前节点拥有的属性 Position( 父节点) 保存 主场景 运行 编辑器操作 添加子节点 收藏节点 Sprite2D节点 控制节点是否可见 当父节点不可见,它的子节点也会不可见 基础编辑工具(场景浏览器左上角&#x…

052_python基于Python高校岗位招聘和分析平台

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…

Lesson10---list

Lesson10—list 第10章 c的list的使用和实现 文章目录 Lesson10---list前言一、list的初始化二、list的遍历1.迭代器2.范围for 三、list常用的内置函数1.sort(慎用)2.unique3.reverse4.merge5.splice 四、模拟实现1.基本框架2.构造函数3.push_back4. 遍…

PON架构(全光网络)

目前组网架构 世界上有一种最快的速度又是光,以前传统以太网络规划满足不了现在的需求。 有线网 无线网 全光网络方案 场景 全光网络分类 以太全光网络 PON(Pas-sive-Optical Network 无源光网络) 再典型的中大型高校网络中 推荐万兆入…

Java项目-基于springboot框架的原创歌曲分享系统项目实战(附源码+文档)

作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 开发运行环境 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/…

【功能安全】系统架构设计

目录 01 系统架构介绍 02 投票逻辑架构介绍 03 SIS架构 04 ADS域控制器架构设计 01 系统架构介绍 法规GBT 34590 Part4 part10定义的软件要求、设计和测试子阶段之间的关系(其中的3-7个人建议翻译为初始架构设计更合理 ) 系统架构的作用&#xf…

工具:Typora自定义高效率主题

1 分享主题 工欲善其事必先利其器。分享一个文档编辑器主题。 1.1 特点 (1)大纲放在右侧、目录放在左侧,互不干扰 (2)标题颜色特殊处理 1.2 使用方式 打开Typora --> 文件 --> 偏好设置 --> 外观 -->…

给已经写好的裸机程序移植freeRTOS操作系统

接了公司一个项目,这是一个采用Dante模块把I2S数据通过网络交换机转发的音频控制器。包含两个串口配置。一开始以为使用裸机即可满足项目要求,实际上如果只有一个串口确实能满足要求了,现在发现Dante模块也需要串口通讯,2个串口同…

《Windows PE》6.4.2 远程注入DLL

实验四十七:远程注入DLL 写一个窗口程序,将一个dll通过远程注入的方法,注入到第三章的示例程序PEHeader.exe中,支持32位和64位PE。 ●dll.c /*------------------------------------------------------------------------FileNam…

记一次js泄露pass获取核心业务

文章目录 一、漏洞原因二、漏洞成果三、漏洞利用过程1.js泄露口令信息2、进入系统后台,管理数据库权限(22个)3、执行命令获取服务器权限4、通过添加扫描脚本,获取存活的内网信息四、免责声明一、漏洞原因 系统存在js泄露口令信息,获取系统超级管理员权限。系统为核心数据研…

ZYNQ AXI_GPIO_INT

REVIEW 软核AXI_GPIO之前已经简单学习过: AXI_GPIO_axi-gpio-CSDN博客 PS侧中断也简单调试过: ZYNQ PS_GPIO中断-CSDN博客 1. 今日摸鱼任务 简单实现AXI_GPIO中断: ps_key控制pl_led闪烁(MIO中断) pl_key控制ps_led闪烁(AXI_GPIO中断) …

js(深浅拷贝,节流防抖,this指向,改变this指向的方法)

一、深浅拷贝 1.基本数据类型和引用数据类型的区别: 1. 基本数据类型的变量存储的是值 引用数据类型的变量存储的是地址值 2. 基本数据类型的变量存储的值在栈内存 引用数据类型的变量存储的值在堆内存 3. 基本数据类型的变量存储的是值和值之间相互不影响 引用数据…

矩阵基础知识

矩阵定义 矩阵的定义 1.矩阵是由一组数按照矩形排列而成的数表。矩阵通常用大写字母表示,例如 AA、BB 等。矩阵中的每个数称为矩阵的元素或元。 一个 mn的矩阵 AA 可以表示为: 其中 aij表示矩阵 A中第i行第j列的元素。 矩阵的维度 1.矩阵的维度由它…

【多线程和高并发】多线程和高并发提纲

文章目录 多线程(多线程问题的)三大源头两个主要问题两大解决方案 高并发问题解决方案 对多线程和高并发相关问题整理了一个简单的提纲。 通过这个提纲,足够引出对并发编程中大部分问题的讨论~ 多线程 (多线程问题的)三大源头 线程并发执行带来的原子性问题。这是…

去梯之言:招聘行业运作的秘密——之找到一份工作

一、前言 招聘行业是一个水很深的行当。不过,尽管它很复杂,了解该行业的工作方式还是很重要的,这样你就可以在这片波涛汹涌的水域中平安航行,获得自己心仪的软件开发职位。反过来,如果你对这个波谲云诡的行业一无所知&…

接口测试(四)jmeter——文件上传

一、文件上传(注:示例仅供参考模仿) 1. 添加【HTTP信息头管理器】,配置【HTTP信息头管理器】如下: 2. 添加【HTTP请求默认值】,配置【HTTP请求默认值】如下: 3. 添加【HTTP请求】&#xff0…