GS-SLAM论文阅读--GSORB-SLAM

前言

在这里插入图片描述


文章目录

  • 前言
  • 1.背景介绍
  • 2.关键内容
    • 2.1 建图
    • 2.2跟踪
    • 2.3总体流程
  • 3.文章贡献
  • 4.个人思考


1.背景介绍

  1. 3D高斯飞溅(3DGS)的出现最近引发了密集视觉SLAM研究的新浪潮。然而当前的方法面临着诸如对伪影和噪声的敏感性、训练视点的次优选择以及缺乏全局优化等挑战。
  2. 目前迫切的问题仍然需要解决,例如Bundle Adjustment (BA)问题和对工件的敏感性,这会导致跟踪精度的降低。此外,缺乏多视图约束和强各向异性导致高斯函数对当前视点过拟合。
  3. 虽然Photo-SLAM和TAMBRIDGE都利用了ORB特征点,但它们并没有充分利用特征点的潜在性能优势。通过对3DGS的分析,我们发现特征点可以在多个方面显著增强3DGS- SLAM。

2.关键内容

2.1 建图

初始化:在SLAM中,大规模高斯原语可能会占用空间区域,影响未重构中新初始化高斯的添加。为了解决这个问题,建议将高斯尺度初始化为单个像素的大小。对于𝑖-th 高斯初始化,由相机坐标系中的三维点 𝑋 i 𝑐 𝑋^𝑐_i Xic、外部矩阵 𝑊 𝑤 𝑐 𝑊_{𝑤𝑐} Wwc(表示摄像机到世界的变换)确定位置 𝑋 i 𝑤 𝑋^𝑤_i Xiw。从RGB图像中提取颜色 c i c_i ci,将透明度初始化为1,将 𝑅 i 𝑅_i Ri旋转矩阵初始化为单位四元数𝑞∈𝑆E(3)。将尺度初始化为三维向量 s i s_i si∈R3,如下所示:
在这里插入图片描述
( ) z ()_z ()z对应取第三维,它对应深度。𝑓为相机焦距。

自适应致密化:为了提高可微高斯的收敛速度并获得高保真的结果,对于生成新的高斯来模拟新观测区域的几何形状和外观是非常重要的。我们设计了一个基于重新渲染图像灰度值生成的外观掩模𝑀𝑐,以及一个重构的几何掩模𝑀𝑑=(𝐷−𝐷≈< 0.05)(𝐷> 0)。

由于渲染的几何精度受到可微高斯函数收敛性的影响,我们设计了一个自适应深度误差阈值(φ𝑑)来防止冗余添加:
在这里插入图片描述
u{}为均值运算,𝜂{·}为中位数运算。生成新的高斯需要满足以下要求:
(1)根据累积透过率:T(x, y)< 0.8。
通过重新初始化,这有助于改善由于缺乏监督而导致梯度下降缓慢的区域。在SLAM中,为训练设置足够的迭代次数是不可行的。另一个原因是为了保证跟踪精度,如果累计透射率没有达到全透射率的80%,则需要衍生一个新的高斯函数。
(2)基于几何:(𝑀𝑐< 50)(𝐸𝑑<𝜎𝑑)(˜𝑇(𝑥𝑦)< 0.99)。
(𝑀𝑐< 50)(𝐸𝑑<𝜎𝑑)是利用几何误差和外观误差来识别重建不足的区域。而( ˜𝑇 (𝑥, 𝑦) < 0.99)是为了防止由于边缘的几何误差而连续添加高斯函数。累积透射率对边缘误差具有较强的鲁棒性。

新的高斯将被生成到至少满足上述条件之一的区域:
在这里插入图片描述
关键帧的生成。基于特征的SLAM只关注特征点的个数,不考虑特征点的分布,如图2所示。因此,设计了一种基于重叠程度生成关键帧的重叠图方法:
在这里插入图片描述
在这里插入图片描述
渲染帧选择策略:RF从关键帧中选择,一个好的选择策略可以大大提高渲染质量。TAMBRIDGE通过基于共可见性图选择关键帧,获得了很好的重建效果。然而,我们发现,仅仅依赖于从共可见性图中选择的渲染帧集可能会导致训练视角的局限性,可能只覆盖主要对象的一小部分。这些因素会导致重建质量下降。为了解决这个问题,我们提出了一种新的基于混合图的渲染帧选择策略。

首先,我们选择邻接帧 𝑛 𝑎 𝑛_𝑎 na和优化的 𝑛 𝑏 𝑛_𝑏 nb帧添加到 RF 集 R 中。邻接帧增加了当前视点被选择的概率,因为当前视点需要更多的优化来跟踪。此外,由于后端姿态优化线程的存在,包含了优化的帧。

其次,用当前帧𝑓1初始化窗口 𝑊 。为了提高选择的效率和质量,从共可见性图中优先考虑候选帧 F c F_c Fc的优先级。如果𝑂𝐺( 𝑓 𝑡 𝑜 𝑝 ( 𝑊 ) 𝑓 𝑗 𝑓_{𝑡𝑜𝑝(𝑊)}𝑓_𝑗 ftop(W)fj)< 𝛽1,然后𝑓𝑗(𝑗∈𝐹𝑐)将被添加到窗口和R,直到 𝐹 𝑐 𝐹_𝑐 Fc已经完全遍历。𝑡𝑜𝑝(·)是新添加帧的索引。窗口𝑊可以防止重复添加共同可见性图中近似相同的视点,因为弱跟踪会不断生成新的关键帧。此外,由于一些关键帧不存在于共视图中,候选帧 F k F_k Fk将基于关键帧的时间戳进行排序选择。然后根据重叠图𝑂𝐺(𝑓1,𝑓𝑗)𝑗∈Fk>𝛽2,将这些 F k F_k Fk添加到R中。值得注意的是,这部分添加的帧数不超过 n 𝑠 n_𝑠 ns

最后,随机选择 n r n_r nr帧并添加到R中。这样做是为了防止由于持续学习而对全球地图造成灾难性的遗忘。

地图的优化:在帧到模型的跟踪模式中,地图优化是至关重要的。在连续SLAM中,我们设计了一个各向同性正则化损失来克服各向异性影响(条形高斯基元):
在这里插入图片描述
标量正则化:
在这里插入图片描述
为了使介质高斯拟合曲面更好,我们设计了一个表面深度损失:
在这里插入图片描述
同时,表面深度需要几何深度进行维护,所以我们增加了几何监督:
在这里插入图片描述
对于颜色监督,我们将L1和SSIM损失结合起来:
在这里插入图片描述
最终的地图优化损失:
在这里插入图片描述

2.2跟踪

Frame-to-model跟踪:我们共同优化了基于3DGS重渲染和ground truth的光度误差,以及基于feature points的重投影误差,以获得准确的姿态。重投影损失:
在这里插入图片描述
式中,M为局部关键帧集合,P表示匹配的特征, p i p_i pi为图像中的像素观测值, 𝑊 𝑐 𝑗 𝑊_{𝑐𝑗} Wcj为𝑗-th摄像机相对于当前摄像机的姿态, P i j P^j_i Pij为𝑗-th摄像机的𝑖-th三维点,其中,变量𝜑表达式为信息矩阵。

在优化过程中,为了防止不正确的特征点匹配影响总损失的减少,我们会提前去除异常值,让重新渲染的损失项成为主要成分。
在这里插入图片描述
由于重新渲染的深度依赖于通过高斯分布的光线的积累,它可能会表现出不稳定性。当光线通过具有特殊不透明度的高斯时,如上图所示,这一贡献也将被添加到最终的渲染结果中。因此,我们提出用表面深度代替重新渲染深度来增强跟踪的鲁棒性。此外,我们只采用接近全透过率的高斯曲面作为几何特征。进一步,利用Adam优化器对综合损失进行优化:
在这里插入图片描述
BA优化:在后端线程中,我们使用图优化,基于稀疏特征点联合优化地图点和相机姿态,类似于。后端作为一个独立的线程运行,不受训练影响。因此,一旦对相机姿态进行优化,就可以及时提供更准确的相机姿态进行重建,提高重建质量。

2.3总体流程

在这里插入图片描述

3.文章贡献

  1. 为了实现高保真和紧凑的场景表示,设计了一种基于混合图的自适应扩展可微高斯方法和渲染帧选择策略。
  2. 在跟踪方面,我们提出了一种基于表面高斯和稀疏特征点的联合优化方法,以确保准确和鲁棒的帧到模型跟踪。

4.个人思考

  1. 本文令我惊讶的地方在于,他是一个紧耦合系统,因为之前深受Photo-SLAM之类解耦的方法影响,很难把ORB特征与高斯建图紧耦合联系到一起。但是这样的话实时性不知还能否保证。
  2. 总的来说本文做了很多系统性的工作,包括致密化策略,以及渲染帧的选择,还有损失函数的设计。其中有很多值得参考的部分,是一篇不错的工作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(小白教程)MPV.NET 播放器安装和添加Bilibili弹幕

MPV.NET安装和添加脚本 MPV跨平台播放器&#xff1a;该播放器基于流行的mpv媒体播放器。mpv.net 设计为与 mpv 兼容&#xff0c;几乎所有 mpv 功能都可用&#xff0c;这意味着官方mpv 手册适用于 mpv.net&#xff0c;差异记录在mpv.net 手册中。 主要差异是mpv.net为MPV添加了现…

c语言经典100例

1.字符串转为数字 #include <stdio.h>int strToInt(char *s) {int num0;int sign1;int step1;if (*s -){sign -1;s;}while (*s > 0&&*s < 9){num num*10(*s-0);step 10;s;}return num*sign; }int main() {char a[10] "-1234";char *s a ;pr…

Spring Boot技术栈的电影评论网站构建

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

Linux中修改和查看Redis的内存大小

目录 一&#xff1a;修改redis内存大小1. 编辑配置文件2. 在命令行修改 二&#xff1a;查看redis内存大小1. get maxmemory2. info memory 一&#xff1a;修改redis内存大小 1. 编辑配置文件 sudo vim /etc/redis/redis.conf maxmemory 300MB1、Redis可用内存大小只能是整数&…

【nlp】知识蒸馏Distilling

一、知识蒸馏介绍 1. 什么是知识蒸馏&#xff1f; 知识蒸馏&#xff08;Knowledge Distillation&#xff09; 是一种用于模型压缩的技术&#xff0c;通过让小模型&#xff08;称为学生模型&#xff0c;student model&#xff09;从大模型&#xff08;称为教师模型&#xff0c;…

无人机初识及应用概览

随着科技的飞速发展&#xff0c;无人机作为一种新兴技术产品&#xff0c;逐渐走进了我们的日常生活和学习中。以下是对该文内容的全面总结&#xff0c;旨在帮助读者更好地理解和认识无人机的基本概念、分类、应用领域、国产标杆品牌以及四旋翼无人机的具体组成。 一、无人机的概…

联邦学习实验复现—MNISIT IID实验 pytorch

联邦学习论文复现&#x1f680; 在精度的联邦学习的论文之后打算进一步开展写一个联邦学习的基础代码&#xff0c;用于开展之后的相关研究&#xff0c;首先就是复现一下论文中最基础也是最经典的MNIST IID(独立同分布划分) 数据集。然后由于这个联邦学习的论文是谷歌发的&#…

html基础小练习

需求&#xff1a;实现如上图网页 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>注册界面</title></head><body><div><form action""><table width"400"><t…

Java21虚拟线程:我的锁去哪儿了?

0 前言 最近的文章中&#xff0c;我们详细介绍了当我们迁移到 Java 21 并将代际 ZGC 作为默认垃圾收集器时&#xff0c;我们的工作负载是如何受益的。虚拟线程是我们在这次迁移中兴奋采用的另一个特性。 对虚拟线程新手&#xff0c;它们被描述为“轻量级线程&#xff0c;大大…

推荐10 个令人惊叹的 Python 自动化脚本!

/01/ 剪贴板管理器 你是否曾发现自己忙于处理多个文本片段&#xff0c;而忘记了自己复制了什么&#xff1f;有没有想过有一个工具可以记录你一天中复制的所有内容&#xff1f; 这个自动化脚本可以监控你复制的所有内容&#xff0c;将复制的每个文本无缝地存储在一个时尚的图形…

C++ 在项目中使用GDB

一&#xff1a;GDB 的 TUI 模式使用 GDB的 TUI &#xff08;Text User Interface&#xff09;模式提供了一种图形化的调试体验&#xff0c;允许在终端中同时显示源代码&#xff0c;寄存器和汇编代码等信息&#xff0c;下面是GDB TUI的基本操作和快捷键 1. 显示源代码窗口&…

【C++】类的默认成员函数:深入剖析与应用(上)

&#x1f600;在上一篇文章中我们初步了解了C的基础概念&#xff0c;现在我们进行对C类的默认成员函数进行更加深入的理解&#xff01; &#x1f449;【C新手入门指南&#xff1a;从基础概念到实践之路】 目录 &#x1f4af;前言 &#x1f4af;构造函数 一、构造函数的定义…

常见TCP/IP协议基础——计算机网络

目录 前言常见协议基础常见协议-基于TCP的应用层协议常见协议-基于UDP的应用层协议常见协议-网络层协议习题自测1.邮件发送协议2.接收邮件协议端口3.建立连接4.层次对应关系5.FTP服务器端口 前言 本笔记为备考软件设计师时的重点知识点笔记&#xff0c;关于常见TCP/IP协议基础…

【飞腾加固服务器】全国产化解决方案:飞腾FT2000+/64核,赋能关键任务保驾护航

在信息安全和自主可控的时代背景下&#xff0c;国产化设备的需求与日俱增&#xff0c;尤其是在国防、航空航天、能源和其他关键行业。高可靠性和极端环境设计的国产加固服务器&#xff0c;搭载强大的飞腾FT2000/64核处理器&#xff0c;全面满足国产自主可控的严苛要求。 性能强…

Python案例小练习——小计算器

文章目录 前言一、代码展示二、运行展示 前言 这是用python实现一个简单的计器。 一、代码展示 def calculate(num1, op, num2):if op "":return float(num1) float(num2)elif op "-":return float(num1) - float(num2)elif op "*":return…

stable diffusion安装ai绘画真人动漫win中文版软件

前言 所有的AI设计工具&#xff0c;安装包、模型和插件&#xff0c;都已经整理好了&#xff0c;&#x1f447;获取~ Stable Diffusion&#xff08;简称SD&#xff09;&#xff0c;是通过数学算法实现文本输入&#xff0c;图像输出的开源软件&#xff01; 引用维基百科&#x…

expect工具

一.expect工具介绍 在写脚本的过程当中不可避免的需要去写交互式命令 那么如何让交互式命令在脚本中自动执行&#xff1f; 使用expect工具 作用&#xff1a;捕获交互式的输出&#xff0c;自动执行交互式命令 如上图所示&#xff0c;可以使用expect工具去捕获交互式命令的提…

什么是大数据分析:定义、优缺点、应用、机遇和风险

大数据分析的概念已经成为我们社会不可或缺的一部分。众多公司和机构已经开发了大数据应用程序&#xff0c;取得了不同程度的成功。社交媒体平台和传感器等技术正在以前所未有的速度生成数据&#xff0c;就像一条装配线。如今&#xff0c;几乎所有东西都是物联网的一部分&#…

[Xshell] Xshell的下载安装使用及连接linux过程 详解(附下载链接)

前言 Xshell.zip 链接&#xff1a;https://pan.quark.cn/s/5d9d1836fafc 提取码&#xff1a;SPn7 安装 下载后解压得到文件 安装路径不要有中文 打开文件 注意&#xff01;360等软件会拦截创建注册表的行为&#xff0c;需要全部允许、同意。或者退出360以后再安装。 在“绿化…

vscode pylance怎么识别通过sys.path.append引入的库

问题 假如我有一个Python项目 - root_path -- moduleA ---- fileA.py -- moduleB ---- fileB.py# fileAimport sys sys.path.append(moduleB)import fileB # vscode pylance找不到&#xff0c;因为sys.path.append(moduleB)是动态添加的print(fileB)结果 代码正常运行但是vs…