章国锋团队重磅开源!XRDSLAM:基于深度学习的模块化SLAM!灵活组合不同算法!(商汤&浙大)

科技   2024-11-05 22:31   上海  

点击上方“计算机视觉life”,选择“星标”

快速获得最新干货


3D高斯泼溅 为什么能一直火?有哪些应用场景?

香港大学开源的这个激光雷达惯性SLAM,太强了!

一招掌握3DGS基础视觉三维重建!深度计算+点云处理+网格重建优化+纹理贴图!

谷歌这个SLAM开源方案,造福了整个机器人行业!

以下内容来源:3D视觉工坊

0. 论文信息

标题:XRDSLAM: A Flexible and Modular Framework for Deep Learning based SLAM

作者:Xiaomeng Wang, Nan Wang, Guofeng Zhang

机构:SenseTime Research、State Key Lab of CAD&CG, Zhejiang University

原文链接:https://arxiv.org/abs/2410.23690

代码链接:https://github.com/openxrlab/xrdslam

OenXRLab:https://github.com/openxrlab

1. 导读

本文提出了一个灵活的SLAM框架XRDSLAM。它采用模块化代码设计和多进程运行机制,提供高度可重用的基础模块,如统一数据集管理、三维可视化、算法配置和度量评估。可以帮助开发者快速搭建完整的SLAM系统,灵活组合不同的算法模块,进行标准化的基准测试,进行精度和效率的比较。在这个框架中,我们集成了几种不同类型的SLAM算法,包括基于NeRF和3DGS的SLAM算法,甚至是里程计或重建算法,这展示了灵活性和可扩展性。我们还对这些集成算法进行了全面的比较和评价,分析了各自的特点。最后,我们将所有代码、配置和数据贡献给开源社区,该社区旨在促进开源生态系统内SLAM技术的广泛研究和开发。

2. 引言

SLAM (Simultaneous Localization and Mapping) 技术在自动驾驶、机器人技术以及增强现实/虚拟现实(AR/VR)等领域发挥着至关重要的作用。通过分析和融合传感器数据,SLAM技术能够实现设备的精确六自由度(6DoF)定位,并实时构建环境地图,为自动驾驶、机器人导航以及AR/VR等应用提供基础能力。在SLAM算法的设计中,地图的表示形式至关重要。传统SLAM算法通常基于稀疏或半稠密的点云来表示场景,并通过手动编写的规则来管理地图,这限制了SLAM技术的发展。

近年来,神经辐射场(NeRF)和三维高斯溅射(3DGS)等技术在新颖视角合成方面取得了显著进展。基于学习的场景表示利用了诸如可微渲染、连续建模、噪声处理和空洞填充等优势,为SLAM领域注入了新的活力。一些最新的工作尝试将NeRF和3DGS融入SLAM系统。一些方法直接使用RGB-D数据作为颜色和深度监督来训练网络参数并优化姿态。其他方法仅依赖RGB数据,通过添加正则化约束来优化网络和姿态。一些努力还将这些新技术与传统SLAM方法相结合,引入了诸如ICP和ORB-SLAM等技术。此外,一些工作还尝试整合额外的网络来提供诸如深度先验、光流和法线等先验信息,旨在提高训练速度和重建质量。

然而,随着新论文和技术的不断涌现,跟踪进展和整合代码变得越来越具有挑战性。许多研究实现分散在独立的代码仓库中,缺乏统一的开发和评估过程。这使得公平和全面的比较变得非常困难。此外,SLAM系统的复杂性为从头开始构建一个完整的SLAM系统设置了较高的技术壁垒和开发成本。受NeRF领域NeRFStudio成功的启发,我们推出了XRDSLAM,一个基于深度学习的可扩展且多功能SLAM框架。推荐课程:彻底搞懂视觉-惯性SLAM:基于VINS-Fusion

3. 效果展示

XRDSLAM自动保存SLAM系统的结果,并使用Evaluation模块来评估轨迹和重建结果。表I展示了在3D可视化器中运行的各种算法的截图,包括5种SLAM方法、一种里程计方法和一种增量重建方法,它们都被集成到了XRDSLAM中。

此外,XRDSLAM可以灵活地支持各种场景编码格式和建图方法,如NICE-SLAM的多分辨率特征网格、Co-SLAM的哈希网格、Vox-Fusion的稀疏体素八叉树、Point-SLAM的神经点云以及SplaTAM的3DGS。

我们使用Python的tqdm库来计算每帧的运行时间,并计算每个算法的每秒帧数(FPS)。表I总结了我们在下采样的Replica/office0数据集(分辨率为600×340)上运行XRDSLAM的基准测试结果。测试是在NVIDIA GTX 1080Ti显卡(具有12GB内存)上进行的。由于NeuralRecon仅支持640x480的分辨率,因此将原始图像裁剪并调整大小到该分辨率进行测试。

从表I中可以看出,在集成到XRDSLAM中的算法中,NeuralRecon的效率最高。在SLAM算法中,使用哈希网格的Co-SLAM在效率方面表现最佳,而Point-SLAM和SplatTAM相对效率较低。尽管SplatTAM在图像渲染方面更高效,但由于需要处理每帧和更多的迭代次数,整体系统效率并不理想。

此外,XRDSLAM中的NICE-SLAM的FPS与论文中的结果有很大不同,这主要是因为原始的NICE-SLAM默认在运行过程中提取网格,导致耗时更长。XRDSLAM标准化了数据保存过程,使得算法性能的比较更加公平。影响算法效率的因素不仅包括数据保存和算法自身的处理过程,还包括迭代次数、采样点数量和数据处理间隔帧。为确保与原始算法的准确性一致,在评估阶段使用了原始算法的默认配置。

表I还提供了XRDSLAM在Replica/office0数据集(下采样分辨率为600x340)上运行时的GPU内存峰值使用量(以GB为单位)。在测试期间,Vox-Fusion的GPU内存最初飙升到大约10GB,然后下降并稳定在4-6GB之间。SplaTAM的内存使用量与分辨率密切相关,主要是因为它使用RGB-D点云进行GS初始化。基于神经点云的Point-SLAM随着点云地图的扩展,内存消耗不断增加。基于固定分辨率体素网格和每帧恒定数量样本的CoSLAM和NICE-SLAM具有相对稳定的内存使用量。作为增量重建方法的NeuralRecon,随着地图的增长,内存消耗也在不断增加。

4. 主要贡献

本文的主要贡献如下:

模块化设计:XRDSLAM采用多进程机制和模块化代码设计,将跟踪、映射和可视化过程解耦。该框架提供了模块化的数据输入/输出、配置解析、可视化和结果导出功能模块,使用户能够灵活组合和替换不同的算法模块,以实现快速迭代和优化。

统一流程:框架提供了一个统一的SLAM开发流程,包含可重用的组件,使开发者能够轻松创建完整的SLAM算法。它还标准化了数据处理和评估,使不同SLAM算法之间能够进行公平有效的评估。具体来说,我们设计了一个专用的Model类来管理深度学习模型的所有操作,从而使开发者更容易构建基于学习的算法。

集成SOTA算法:我们集成了最先进的(SOTA)SLAM算法,这验证了框架的灵活性和可扩展性,同时也促进了开源社区对不同算法的学习和比较。

开源代码:所有代码、配置和数据均公开可用,旨在促进社区驱动的开发和这些技术的广泛应用。这项工作属于OpenXRLab的一部分。

5. 方法

XRDSLAM提供了一个高度可配置、高效且易于扩展的框架。受NeRFStudio启发,XRDSLAM采用了模块化代码设计,通过继承和多态性组织SLAM(即时定位与地图构建)组件。它通过一个集中管理的配置类处理参数,并利用多进程并行处理加速跟踪、建图和可视化任务,从而显著提升系统性能。XRDSLAM结合了灵活的配置、资源共享和多进程机制,打造了一个多功能且高效的开发平台。

如图1所示,XRDSLAM框架主要处理四个部分的交互:

数据集输入:框架需要从一个或多个传感器接收数据,如RGB图像、深度图像、IMU(惯性测量单元)数据等。XRDSLAM通过多个Dataset类处理不同格式的数据集,提供了一个统一的数据加载接口和预处理功能。

核心SLAM算法:XRDSLAM通过Algorithm和Model类组织核心SLAM算法。用户可以通过继承和替换这些类中的组件来快速实现和优化SLAM算法。Model类由Algorithm类调用。开发者可以通过Model类设计和管理深度学习算法。

可视化:XRDSLAM提供了在线和离线可视化工具。在线可视化工具实时显示SLAM系统的状态,包括2D图像渲染和3D场景表示,帮助用户进行调试和优化。离线可视化工具用于渲染和显示SLAM算法的结果,支持保存为视频文件以供后续分析。

6. 实验结果

表II展示了在8个Replica数据集上,多个原始算法及其在XRDSLAM中集成版本(带’∗’)的平均评估指标结果。原始版本和XRDSLAM集成版本中更好的结果以粗体突出显示。完整的评估表可在我们的GitHub存储库中查看。

从表II中可以明显看出,集成到XRDSLAM中的算法在准确性方面与原始版本相当。在3D重建质量方面,Point-SLAM在准确性指标上表现最佳。在图像渲染质量方面,Point-SLAM和SplaTAM均表现出色。在定位指标方面,DPVO具有最高的准确性,而SplaTAM的定位准确性优于其他基于神经网络的建图方法。

图3展示了在Replica/room0数据集上进行网格重建时,几个集成到XRDSLAM中的SLAM方法的定性结果,性能从NICE-SLAM逐步提高到Co-SLAM、Vox-Fusion,最后到Point-SLAM。

7. 总结 & 未来工作

本文介绍了一种新的通用SLAM框架——XRDSLAM。该框架提供了一个通用的接口和工具,使得平台易于使用。其模块化设计便于不同算法的集成与迁移,同时提供统一的结果导出与评估功能,实现了对不同SLAM算法的公平便捷比较。XRDSLAM显著降低了代码开发成本,提高了开发效率,推动了SLAM技术的发展。

在此平台上,我们整合了最前沿的SLAM算法(如Vox-Fusion、NICE-SLAM、SplaTAM等),并在统一框架下进行了客观评估,科学分析了不同算法的准确性特征和计算效率。

未来,我们将继续整合更多最先进的SLAM算法,进一步完善深度学习SLAM生态系统,并欢迎社区更多力量在此平台上进行开发,贡献高质量的算法和代码。

推荐教程

2025秋招,上来就问3D Gaussian Splatting。。。

香港大学开源的这个激光雷达惯性SLAM,太强了!

一招掌握3DGS基础视觉三维重建!深度计算+点云处理+网格重建优化+纹理贴图!

谷歌这个SLAM开源方案,造福了整个机器人行业!

重大变革!NeRF和3D高斯喷溅如何重塑SLAM?

发顶会顶刊不再难!多传感器融合SLAM、生成式AI、3DGS、NeRF、标定等方向

这个开源框架,造福了无数卫星定位研究者和初创公司!

BOSS:用了机器人仿真,立省几十万

自动驾驶中的GNSS、RTK到底多重要?

太强了!世界第一款开源的自动驾驶一体化框架Autoware!(附交流群)

如何从零开始搭一套自己的SLAM系统?

17讲全部上线!全网首个详解深度学习特征开源算法SuperPoint和SuperGlue(附交流群)

最炸裂的机器人AI技术教程都在这了!

计算机视觉life
聚焦计算机视觉、机器人SLAM、自动驾驶、AR领域核心技术。系统学习教程官网cvlife.net
 最新文章