MIT&CMU实现高速SLAM与实时3D渲染的全新方法——注释版

以下文章来源于3DCV,作者韩立,读者根据文章内容以及相应论文添加自己的理解进行注释。 

以下文章来源于3DCV,作者韩立,读者根据文章内容以及相应论文添加自己的理解进行注释。 

以下文章来源于3DCV,作者韩立,读者根据文章内容以及相应论文添加自己的理解进行注释。

1、导读

        SLAM是一种同时进行定位和地图构建的技术,可以在没有先验地图的情况下,通过使用传感器数据(如RGB和深度图像)来实时估计相机的位置,并构建环境的三维地图。稠密SLAM是指在地图构建过程中,对环境的细节进行高精度的建模,包括对每个像素点的深度信息进行估计。该研究提出了一种名为 SplaTAM 的新型SLAM系统,它利用 3D高斯光滑函数 作为地图的表示方法,实现了更快的渲染和优化速度,对地图的空间范围有明确的了解,并简化了地图的稠密化过程。

SplaTAM相对于传统的视觉SLAM具有几个不同之处:

  1. 地图表示方法:SplaTAM采用3D高斯光滑函数作为地图的表示方法。传统的视觉SLAM通常使用稀疏或半稠密的特征地图,如特征点或关键帧。而SplaTAM的地图表示更加连续和光滑,使用高斯函数对地图进行参数化,这种表示可以更好地描述场景的连续性和光滑性。

  2. 渲染和优化速度:由于使用了高斯光滑函数作为地图表示方法,SplaTAM在渲染和优化地图时可能具有更快的速度。传统的SLAM系统可能需要在稀疏特征上进行优化和渲染,而SplaTAM使用高斯函数可能具有更高效的优化和渲染方法。

  3. 地图空间范围的了解:SplaTAM可能更容易对地图的空间范围有明确的了解。由于其地图表示方法的连续性和光滑性,可能更容易获取关于地图空间范围的信息,这对于一些应用场景可能非常重要。

  4. 简化地图稠密化过程:传统的SLAM系统可能需要在后期对地图进行稠密化处理,以获得更高精度的地图信息。SplaTAM可能会简化这个过程,因为它的地图表示方法可能已经相对连续且更接近实际场景,减少了对地图的后期处理需求。

2、研究思路

        探索如何使用显式的体积表示(“显式的体积表示”指的是对物体或场景的体积进行直接的、清晰的表示方法)来设计一种SLAM解决方案。具体而言,本研究使用基于3D高斯函数的辐射场3D高斯函数的辐射场指的是利用高斯函数来描述三维空间内辐射或能量的分布情况)来进行Splat(渲染)、Track(跟踪)和Map(建图)操作。

3、研究内容

        SplaTAM是一种用于稠密RGB-D SLAM的新型系统、它利用3D高斯光滑函数作为底层地图表示,实现了更快的渲染和优化、对地图空间范围的明确知识以及简化的地图密度化。同时SplaTAM在相机姿态估计、场景重建和新视角合成方面取得了最先进的结果。该方法通过将3D高斯光滑函数与SLAM相结合,不仅在SLAM和新视角合成领域树立了新的基准,还为进一步的探索和创新提供了一个稳健的框架。

  1. 地图表示方式: SplaTAM使用了3D高斯光滑函数作为底层地图的表示方法。这种方法相对于传统的离散地图表示,提供了更平滑、连续的地图表达,有利于更快的渲染和优化。

  2. 渲染和优化速度: 由于采用了3D高斯光滑函数,SplaTAM能够更快地进行地图渲染和优化,这意味着在SLAM系统中对地图的更新和重建可以更加高效。

  3. 空间范围的明确知识: 与离散化的地图不同,使用高斯光滑函数表示的地图能够提供对地图空间范围的更为清晰的认识,这对于姿态估计、场景重建和新视角合成等任务具有帮助。

  4. 场景合成和姿态估计的性能: SplaTAM在相机姿态估计、场景重建以及生成新视角方面取得了先进的结果,这表明它在处理视觉重建和场景合成方面具有优越性能。

4、方法

图片

        Gaussian Map Representation是一种用于表示场景的显式体素化地图表示方法。它使用一组3D高斯函数来表示场景的空间分布。每个高斯函数由其在三维空间中的位置、颜色和大小参数化。通过将这些高斯函数渲染成高保真度的颜色和深度图像,我们可以直接使用可微分渲染和基于梯度的优化来同时优化每个帧的相机姿态和场景的体素化地图。(每个高斯函数都代表了场景中的一个体素(三维像素)。它们描述了场景的局部信息,比如物体的位置、颜色和大小等。通过将这些高斯函数渲染成高保真度的颜色和深度图像,就可以直接使用可微分的渲染技术和基于梯度的优化方法,同时优化每个帧的相机姿态和场景的体素化地图)具体而言,Gaussian Map Representation的数学公式如下:

4.1、相机跟踪

图片

        其中,E_{t} 表示当前帧的相机姿态,sil 表示相机姿态的损失函数,\lambda是权衡参数,𝑅𝑒𝑛𝑑𝑒𝑟表示渲染操作,G_{t-1} 表示上一帧的高斯地图,E' 表示上一帧的相机姿态。(我的理解中E'不应该是上一帧的相机姿态,应该是所要求的当前帧的相机姿态,要在这一系列的相机姿态里面找到使得误差最小的E',这个E'就是Et

  • Render(Gt-1,E')表示对上一帧的高斯地图Gt-1应用相机姿态变换E'之后的渲染结果。
  • Ft是当前帧观察到的真实高斯地图。
  • (Sil>λ)意味着只有当Sil超过了某个设定的阈值λ时,才会考虑到这个误差,否则将不计算或对优化过程产生较小的影响。
  • 对于整个公式,是一个优化问题。它的目标是找到当前帧的相机姿态( E_{t} ),使得通过上一帧地图和姿态转换后的预测地图(Render(Gt-1,E')),与当前帧观察到的真实地图(F_{t})之间的误差最小化。

4.2、高斯密度化

图片

        其中,G_{t}表示当前帧的高斯地图,𝐷𝑒𝑛𝑠𝑖𝑓𝑦表示高斯地图的密度化操作,𝑆𝑖𝑙表示密度化的损失函数。

4.3、地图更新

图片

        其中,表示更新后的高斯地图,G' 表示上一帧的高斯地图,E_{k} 表示第 k 帧的相机姿态,F_{k}表示第 k 帧的输入图像。

        这个方程的目标是找到一个 G',它在给定每个帧的相机姿态 Ek 下,用来渲染得到的图像与实际输入图像 Fk 之间的差异最小。通过比较渲染的图像和实际输入图像,我们可以计算误差的总和。通过不断地优化 G',以使这些误差总和最小化,最终得到的 Gt 就是一个更准确、更符合实际的高斯地图,能更好地代表整个场景。

        要找到一个 G',使得对于每个帧的相机位姿 Ek,G' 渲染的图像与该帧实际观测到的图像之间的差异总和最小化。这样的话,这个更新后的 G' 在各个帧的位姿下都能更好地匹配实际观测到的图像,从而提高整体地图的准确性。

        这些公式描述了SplaTAM方法中的关键步骤,包括相机跟踪、高斯密度化和地图更新。通过迭代优化这些步骤,我们可以同时估计相机姿态和优化场景的高斯地图,从而实现稠密的RGB-D SLAM。

5、相比于现有的地图表示方法,SplaTAM有何优势

  • 快速渲染和优化:高斯函数的渲染速度可以达到每秒400帧,比隐式方法更快速地进行可视化和优化。快速优化的关键在于对3D基元进行光栅化。

  • 具有明确的空间范围的地图:通过仅在过去观察到的场景部分中添加高斯函数,可以轻松控制现有地图的空间边界。(SplaTAM利用多个3D高斯函数来表示场景。这些高斯函数构成了地图的基本元素,每个函数代表了地图中的一个局部区域或体素。每个高斯函数在地图中代表了一个局部的空间范围,并且通过添加或移除高斯函数,你可以调整地图的空间范围和精度

  • 显式地图:我们可以通过简单地添加更多的高斯函数来任意增加地图容量。

  • 参数的直接梯度流动:因为相机运动可以被视为保持相机静止并移动场景,所以我们还可以直接将梯度传递到相机参数中,从而实现快速优化。而基于神经网络的表示方法则无法做到这一点,因为梯度需要通过(可能是多个)非线性神经网络层传递。(当使用某些优化方法时,参数的直接梯度流动意味着可以通过相机位姿参数直接传递梯度,这种传递方式可以快速地进行优化。相机的位姿可以直接更新,而不需要通过复杂的非线性神经网络层传递梯度

6、实验结果

以下是对实验结果的概述

相机姿态估计实验
  • 使用四个数据集(ScanNet++、Replica、TUM-RGBD和Orig-ScanNet)进行相机姿态估计的实验评估。

  • 与多个基线方法(包括Point-SLAM、ORB-SLAM3等)进行比较。

  • 使用平均绝对轨迹误差(ATE RMSE)作为评估指标。

  • 结果表明,SplaTAM在所有数据集上都表现出色,相对于其他基线方法具有更好的性能。

图片

图片

图片

图片

渲染质量实验
  • 使用ScanNet++数据集进行渲染质量的实验评估。

  • 评估训练视图和新视图的渲染效果。

  • 使用PSNR、SSIM、LPIPS和深度L1损失等指标来评估渲染质量。

  • 结果表明,SplaTAM在训练视图和新视图的渲染中都能提供高保真度的性能,相对于其他方法具有竞争力。

图片

图片

图片

7、结论

        Spla TAM是一种用于稠密RGB-D SLAM的新型系统。它使用3D高斯散列表示法(3D高斯散列表示法是一种用于地图建模的方法,它使用高斯混合模型来表示三维空间中的数据。这种方法基于高斯函数,每个高斯函数代表了三维空间中的一个区域或体素,并包括位置、方向、大小等参数。通过将多个高斯函数组合在一起,以此来描述环境的结构,这种表示法可以用于建立稠密的环境地图,同时对环境的细节进行建模。通过这种方法,可以更准确地对环境进行建模和重建,尤其适用于需要高精度和细节的场景)实现密集的SLAM系统。

        该方法通过在线优化明确体积表示,使用可微分的渲染实现快速优化和优化,并具有确定哪些区域以前被映射以及具有结构化的地图扩展功能(这种方法指的是一种通过在线的优化方式,对环境的体积表示进行建模。这种体积表示方法可以通过渲染技术进行快速优化,并且它具有可追踪哪些区域曾经被映射以及如何扩展地图的结构化功能。在这种方法中,通过渲染地图来进行实时的优化,以便更好地了解先前的映射情况,并且能够有机地扩展地图的结构,使其更加准确和结构化。这种方式能够使地图的构建更为高效,并且提供更多的可追溯性和结构化特性)。

        同时实验结果表明,SplaTAM在相机姿态估计、地图构建和新视角合成方面取得了最先进的性能,超过了以往的方法。此外,SplaTAM还允许实时渲染高分辨率密集的3D地图。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CSAPP Proxy Lab是CMU计算机科学系的一门课程实验,旨在让学生通过编写一个多线程的程序实现HTTP代理服务器,了解网络编程、socket编程、多线程编程等方面的知识。在该实验中,学生需要使用C语言编写一个Proxy程序,实现从一个客户端接收HTTP请求,并将该请求转发到服务器,最后将服务器的响应发送回客户端。 通过完成该实验,学生可以掌握HTTP协议的基本概念、熟练运用UNIX内核级网络编程接口、理解并实现多线程并发编程等方面的知识。同时,学生还需熟练掌握TCP/IP协议栈、socket编程,以及Linux系统环境下的工具使用和系统调用等知识。 除了理论知识,该实验还要求学生具备良好的程序设计能力和代码调试能力,以及较强的独立完成实验的能力。在完成实验过程中,学生需要仔细阅读实验指导书,结合相关知识,理解实验流程,并在不断的调试实验程序过程中,逐渐提升自己的编程水平。 总之,CSAPP Proxy Lab是一门非常有挑战性和价值的实验课程,不仅可以提高学生的编程技能,也可以为学生未来从事相关领域的工作打下坚实的基础。 ### 回答2: CSAPP Proxy Lab是一项由卡内基梅隆大学的计算机科学课程所提供的一个实验项目。这个项目的主要目的是给学生提供一个机会来深入理解计算机网络中的各种主题。当学生完成这个项目后,他们应该能够理解各种网络协议,包括域名系统(DNS)协议、超文本传输协议(HTTP)协议以及传输控制协议(TCP)协议。此外,他们还应该能够使用Linux系统、C语言和套接字编程。 在这个项目中,学生要实现一个基于客户端/服务器模型的代理服务器程序。这个服务器程序应该能够同时处理多个客户端并显著降低网络传输延迟。具体地,服务器程序应该拦截所有的客户端请求,并将其发送到相应的目标服务器。在服务器返回响应之前,代理服务器应该能够添加各种处理、过滤和监视功能。 在实现这个代理服务器程序的过程中,学生需要解决许多有趣的挑战。例如,他们需要学习如何正确地解析HTTP请求,并且需要安全地处理来自任意来源的数据。此外,他们需要学习如何优化网络性能,并且需要扩展服务器以处理大量的同时请求。 总之,CSAPP Proxy Lab是一项非常有趣的计算机科学项目,它要求学生深入学习计算机网络的知识并通过设计、实现和优化代理服务器来应用这些知识。这个项目应该能够使学生更好地理解计算机系统的工作原理,并训练他们成为出色的系统程序员。 ### 回答3: 本文将先简单介绍CSAPP Proxy Lab,然后从代码实现和功能实现两个方面来回答这个问题。 CSAPP Proxy Lab是CMU计算机系统课程中的编程实验之一,旨在让学生实现一个简单的Web Proxy服务器。要求学生从底层实现HTTP/1.0协议,支持并行连接,实现虚假DNS Caching等多项功能。最终将HTTP请求转发到真正的服务器,将响应返回给客户端。 代码实现 Proxy Lab的代码主要分为读取配置文件,接收请求,处理响应三个部分。首先在读取配置文件的时候需要读取Proxy运行的端口号和 Cache主目录等信息。然后需要开启一个监听端口,接收客户端的HTTP请求。当一个请求到达,需要解析请求类型和源服务器地址,并构造HTTP请求,把这个请求转发给远端服务器。当远端服务器响应时,需要处理响应返回给客户端。 在请求发送和响应接收的过程中,需要进行异常处理。例如,当连接到远端服务器发生错误时,需要重试连接;当客户端请求的并发数达到Proxy处理的上限时,需要拒绝加入新的连接请求,直到有空闲并发连接。 还需要考虑HTTP响应的缓存。这个项目中要求实现虚假DNS Caching,也就是缓存响应。当读取缓存时,需要从缓存中读取响应,而不是真正的服务器。缓存还需要考虑淘汰算法,例如Least Recently Used (LRU)。 功能实现 除了基本的HTTP代理之外,CSAPP Proxy Lab还包括以下几个功能实现: - 并行连接:Proxy对于多个客户端请求,需要并行处理。 - IPv6延伸:支持IPv6地址的请求。 - 超时:当对于某个请求未能得到服务器响应时,Proxy需要在一定时间内处理等待,不能无限制地等待响应。 - DNS缓存:缓存响应,避免重复对真正的服务器请求。 - 组播插头:支持单播和组播两种插头类型。 - 支持禁用缓存和禁用并行连接两个命令行参数。 综上所述,CSAPP Proxy Lab是一道充满挑战性的编程实验,学生不仅需要具备对于HTTP协议的深刻理解和应用,同时还需要掌握Linux套接字编程、多线程调度等多项技术。只有有耐心,善于思考和实践,才能够完成这个项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值