点击下方卡片,关注「3D视觉工坊」公众号
选择星标,干货第一时间送达
来源:3D视觉工坊
添加小助理:cv3d001,备注:方向+学校/公司+昵称,拉你入群。文末附3D视觉行业细分群。
扫描下方二维码,加入「3D视觉从入门到精通」知识星球,星球内凝聚了众多3D视觉实战问题,以及各个模块的学习资料:近20门秘制视频课程、最新顶会论文、计算机视觉书籍、优质3D视觉算法源码等。想要入门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生态系统,并欢迎社区更多力量在此平台上进行开发,贡献高质量的算法和代码。
对更多实验结果和文章细节感兴趣的读者,可以阅读一下论文原文~
本文仅做学术分享,如有侵权,请联系删文。
3D视觉交流群,成立啦!
目前我们已经建立了3D视觉方向多个社群,包括2D计算机视觉、最前沿、工业3D视觉、SLAM、自动驾驶、三维重建、无人机等方向,细分群包括:
工业3D视觉:相机标定、立体匹配、三维点云、结构光、机械臂抓取、缺陷检测、6D位姿估计、相位偏折术、Halcon、摄影测量、阵列相机、光度立体视觉等。
SLAM:视觉SLAM、激光SLAM、语义SLAM、滤波算法、多传感器融合、多传感器标定、动态SLAM、MOT SLAM、NeRF SLAM、机器人导航等。
自动驾驶:深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器、多传感器标定、多传感器融合、自动驾驶综合群等、3D目标检测、路径规划、轨迹预测、3D点云分割、模型部署、车道线检测、Occupancy、目标跟踪等。
三维重建:3DGS、NeRF、多视图几何、OpenMVS、MVSNet、colmap、纹理贴图等
无人机:四旋翼建模、无人机飞控等
2D计算机视觉:图像分类/分割、目标/检测、医学影像、GAN、OCR、2D缺陷检测、遥感测绘、超分辨率、人脸检测、行为识别、模型量化剪枝、迁移学习、人体姿态估计等
最前沿:具身智能、大模型、Mamba、扩散模型等
除了这些,还有求职、硬件选型、视觉产品落地、产品、行业新闻等交流群
添加小助理: cv3d001,备注:研究方向+学校/公司+昵称(如3D点云+清华+小草莓), 拉你入群。
3D视觉工坊知识星球
「3D视觉从入门到精通」知识星球,已沉淀6年,星球内资料包括:秘制视频课程近20门(包括结构光三维重建、相机标定、SLAM、深度估计、3D目标检测、3DGS顶会带读课程、三维点云等)、项目对接、3D视觉学习路线总结、最新顶会论文&代码、3D视觉行业最新模组、3D视觉优质源码汇总、书籍推荐、编程基础&学习工具、实战项目&作业、求职招聘&面经&面试题等等。欢迎加入3D视觉从入门到精通知识星球,一起学习进步。
3D视觉工坊官网:www.3dcver.com具身智能、3DGS、NeRF、结构光、相位偏折术、机械臂抓取、点云实战、Open3D、缺陷检测、BEV感知、Occupancy、Transformer、模型部署、3D目标检测、深度估计、多传感器标定、规划与控制、无人机仿真、C++、三维视觉python、dToF、相机标定、ROS2、机器人控制规划、LeGo-LAOM、多模态融合SLAM、LOAM-SLAM、室内室外SLAM、VINS-Fusion、ORB-SLAM3、MVSNet三维重建、colmap、线面结构光、硬件结构光扫描仪等。
3D视觉模组选型:www.3dcver.com
点这里👇关注我,记得标星哦~