文章内容来自 复旦最新提出!革命性的LiDAR SLAM统一架构
以下文章来源于3DCV ,作者荒天帝
添加的注释仅供参考,博主个人学习使用。如有侵权,请联系我删除!!
1、导读
SLAM是机器人和自动驾驶领域中的一个基本问题,旨在在探索环境的同时重建地图并估计机器人在其中的位置。激光雷达的点云数据被广泛应用于捕捉环境的复杂三维结构。然而,现有的SLAM方法要么依赖于密集的点云数据以实现高精度定位(这种方法在建立地图和定位时会收集大量的点云数据,这些数据非常密集,包含了环境中的大量细节信息。通过使用这些大量的点云数据,这种方法可以实现非常高精度的地图构建和定位,因为它们包含了大量的详细信息,有助于提高SLAM系统的精确度),要么使用通用的描述符来减小地图的大小(这种方法通过提取一些通用的特征或描述符来代表地图中的特征点。这些描述符可以是一些特定的特征,如特征点或边缘等。通过使用这些更小、更通用的描述符,地图的大小可以大幅减小。尽管地图尺寸减小了,但它们仍然可以提供足够的信息来进行定位和导航)。这两个方面似乎存在冲突。因此,我们提出了一种统一的架构,DeepPointMap(DPM),在这两个方面都具有出色的优势。
2、研究内容
我们提出了一种名为DeepPointMap的深度学习框架,用于解决LiDAR SLAM中的定位和地图构建问题。传统的LiDAR SLAM方法要么依赖于密集的点云数据以实现高精度定位,要么使用通用的描述符来减小地图的大小。然而,这两个方面似乎存在冲突(追求高精度定位会导致需要更多的数据和更大的存储空间,而追求地图的高效率则可能会降低地图的精确性)。为了解决这个问题,我们提出了一种统一的架构,即DeepPointMap,既能实现高效的内存使用的地图表示,又能实现准确的多尺度定位任务(如里程计和闭环检测)。
3、创新
本研究的创新性主要体现在以下几个方面:
-
统一的神经网络描述符:本研究提出了DeepPointMap(DPM)框架,其中包括DPM编码器和DPM解码器两个神经网络。DPM编码器能够从点云数据中提取高度代表性且稀疏的神经描述符,实现了对环境的高效编码。与传统的手工设计特征相比,这些神经描述符既能够减小地图的内存占用,又能够保持高精度的定位和重建能力。
-
多尺度匹配和注册:DPM解码器能够基于神经描述符进行多尺度的匹配和注册,包括里程计和闭环检测。与其他基于神经描述符的方法相比,DPM解码器能够在统一的框架下完成多个SLAM子任务,实现了定位精度、内存效率、地图保真度和实时处理的统一优化。
-
多智能体协作SLAM:本研究将DPM框架扩展到多智能体协作SLAM领域。每个智能体都维护自己的SLAM系统,并在本地进行里程计和闭环检测。通过将观测数据进行合并和优化,实现了全局一致性的轨迹估计和地图重建。这在通信带宽有限的多智能体系统中具有重要意义。
4、方法
该框架包括两个神经网络:DPM编码器和DPM解码器。DPM编码器从点云中提取高度代表性和稀疏的神经描述符,实现了内存高效的地图表示和准确的多尺度定位任务。DPM解码器基于这些神经描述符进行多尺度匹配和注册。与其他神经描述符方法不同的是,DPM描述符可以统一地用于SLAM任务的多个子任务,具有出色的定位精度、内存效率、地图保真度和实时处理能力。
4.1、DPM编码器
DPM编码器使用稀疏描述符来表示复杂的点云数据,这些描述符包含了压缩的语义信息。输入是一个点云P,可以表示为一组3D点 。DPM编码器实际上是一个PointNeXt的主干网络,主干网络从密集的点云P中采样稀疏的关键点
,并提取它们的邻域几何特征
,其中 C 是特征向量的维度。主干网络的最终输出是统一的描述符云
,用于表示密集的点云。我们可以通过并集操作将多个描述符云合并成一个,用于表示地图级别的描述符云(通过并集操作将多个描述符云合并成一个),而无需重新提取特征。
4.2、DPM解码器
DPM解码器用于预测两个描述符云之间的变换关系,它包括四个部分:(1)描述符级变换块,用于融合两个输入描述符云之间的深度相关特征;(这一部分有助于将两个描述符云之间的信息整合和融合,以更好地理解它们之间的关联性)(2)相似性头,用于计算两个描述符云之间的对应关系;(这部分帮助确定两个描述符云中相似或对应的特征点,有助于找到它们之间的匹配关系)(3)偏移头,用于预测描述符云之间的偏移量;(帮助识别描述符云之间的位置变换,即它们相对于彼此的平移或位移情况)(4)旋转头,用于预测描述符云之间的旋转矩阵。(这一部分有助于了解描述符云之间可能存在的旋转或转动情况,即它们相对于彼此的旋转变换)这些部分共同工作,实现了描述符云之间的匹配和配准,从而实现了定位和闭环检测等多尺度的定位任务。(这些部分共同协作,用于匹配和配准描述符云之间的特征,并预测描述符云之间的变换关系)
DPM 编码器:
- 功能: DPM 编码器用稀疏描述符表示复杂的点云数据,这些描述符压缩了语义信息。
- 工作原理: 它接收点云数据 P,表示为一组 3D 点,并使用 PointNeXt 的主干网络从密集的点云 P 中采样出稀疏的关键点。这些关键点的邻域几何特征被提取并形成描述符云,用于表达原始密集点云的特征。
- 总结: DPM 编码器的作用是将点云数据转换成包含语义信息的稀疏描述符云,用于表示原始点云的特征。
DPM 解码器:
- 功能: DPM 解码器用于预测两个描述符云之间的变换关系,用于定位和闭环检测等多尺度定位任务。
- 组成部分:
- 描述符级变换块: 融合两个输入描述符云的深度相关特征。
- 相似性头: 计算两个描述符云之间的对应关系。
- 偏移头: 预测描述符云之间的偏移量,即它们相对于彼此的平移或位移情况。
- 旋转头: 预测描述符云之间的旋转矩阵,用于了解描述符云可能的旋转或转动情况。
- 工作原理: 这些部分协作,用于匹配和配准描述符云之间的特征,实现了描述符云之间的变换预测。这有助于完成多尺度定位任务,比如定位和闭环检测。
- 总结: DPM 解码器的作用是根据两个描述符云之间的特征变换关系,实现描述符云之间的匹配、对齐和变换预测,以支持多尺度的定位任务,如定位和闭环检测。
4.3、训练
在训练DeepPointMap时,作者使用了几个不同的数据集。其中包括SemanticKITTI、KITTI-360和MulRan。作者还使用了KITTI-Carla数据集进行训练。训练集和测试集的划分是根据帧数的比例进行的,大约是6:4的比例。在训练过程中,作者使用了绝对姿态误差(APE)(绝对姿态误差是通过比较实际真实姿态(例如由传感器测量或外部标定提供)和估计的姿态(由姿态估计算法得出)来计算的)来评估预测轨迹的全局准确性。在定位准确性方面,DeepPointMap与其他6种最新的里程计和SLAM方法进行了比较,包括KISS-ICP、LeGO-LOAM、SC-LeGO-LOAM、MULLS、CT-ICP和GeoTransformer。作者还进行了转移实验,将DeepPointMap在KITTI-360和KITTI-Carla上训练,并直接在SemanticKITTI上评估其性能。在内存效率方面,DeepPointMap相对于原始点云、Voxel Hashmap和Mesh等方法能够节省大约50%至70%的内存。最后,作者还进行了多智能体合作SLAM实验,展示了DeepPointMap在多智能体场景下(这可能意味着多个智能体同时参与建图和定位的任务。这些智能体在共享环境中移动,并使用各自的传感器(例如相机、激光雷达等)获取环境信息,然后协同工作以实现对环境的建模和自身定位。在这种场景下,智能体需要考虑其他智能体的存在和行为,并可能需要进行通信和协作,以避免冲突、实现合作目标或增强整体系统的性能)的优越性能。
4.4、损失函数
训练DeepPointMap模型时使用了以下损失函数和策略:
Pairing Loss(配对损失):使用InfoNCE损失函数作为配对损失函数,用于训练DPM Encoder和Decoder(DPM编码器和DPM解码器)。配对损失函数用于衡量描述符之间的相似性,以促进正确的匹配。具体而言,对于每个描述符,根据其与描述符的距离来确定是正样本还是负样本。配对损失函数的目标是最大化正样本的相似性,同时最小化负样本的相似性。
简单来说,Pairing Loss(配对损失)的目标是确保相似的描述符之间有较小的距离,并且不相似的描述符之间有较大的距离。
在配对损失函数中,每个描述符会被视为与其他描述符进行配对。基于描述符之间的距离,算法会确定哪些是“正样本”(相似的描述符)以及哪些是“负样本”(不相似的描述符)。损失函数的目标是通过最大化正样本之间的相似性,同时最小化负样本之间的相似性,来训练模型,使得具有相似特征的描述符被更好地聚集在一起,有助于正确匹配特征点或描述符。
简而言之,配对损失函数帮助模型理解哪些描述符是相似的,哪些是不同的,并且通过调整模型参数,使得相似的描述符更接近,不相似的描述符之间有更大的差距。这有助于提高特征点或描述符的匹配准确性。
Coarse Pairing Loss(粗配对损失):为了确保DPM Encoder提取的统一描述符云能够初步区分描述符的对应关系,采用了类似于配对损失的粗配对损失。粗配对损失函数的定义与配对损失函数类似,但是将负样本分为两类:一类是距离大于阈值的负样本,另一类是中性样本,不参与损失的计算。这样做的目的是为了更好地处理那些接近但不是最接近的描述符对,因为这些描述符对在不同的时间可能会作为正样本和负样本,从而引起歧义。
"配对损失"用于衡量描述符之间的相似性,目标在于最大化正样本的相似性,同时最小化负样本的相似性,以促进正确的匹配。这个损失函数专注于描述符之间的精确匹配,目的在于确定两个描述符是否应该被视为匹配或非匹配的对。通常用于在训练期间强调描述符之间的精确匹配,以帮助模型更准确地判断描述符是否相似或匹配。
而"粗配对损失"是为了确保模型对描述符之间的对应关系有初步的、粗略的理解,它也是一种配对损失函数。"粗配对损失"的目标是为了处理那些接近但不是最接近的描述符对。它将负样本分为距离大于阈值的负样本和中性样本,让中性样本不参与损失计算。这样做是为了避免在不同的时间或场景下引起歧义,即对描述符之间的对应关系的初步理解,而不是关注匹配的精确性。更侧重于在初步阶段处理描述符对之间的对应关系,避免对于接近但不完全匹配的描述符对产生混淆。
Offset Loss(偏移损失):使用Offset Loss训练Offset Head。根据前面定义的三种配对类型,使用正样本和中性样本来训练Offset Head,以预测描述符对之间的偏移量。偏移损失函数的目标是最小化预测偏移量与真实偏移量之间的差异。
Overlap Loss(重叠损失):使用交叉熵损失函数训练Overlap Head。重叠损失函数用于预测输入的描述符对是否重叠,即它们之间的距离是否小于阈值。
Overall Loss(总损失):DeepPointMap的方向损失由总损失函数定义。总损失函数是配对损失、粗配对损失和偏移损失的加权和。通过调整权重参数、和,可以平衡不同损失函数的重要性。
此外,还使用了数据增强和课程学习策略来提高模型的性能。数据增强策略包括随机遮挡,用于模拟激光雷达扫描受到遮挡的情况。课程学习策略逐渐增加描述符云的规模,从简单到复杂的场景进行训练,以逐步学习大规模注册任务的能力。
5、实验结果
实验设置:使用了四个自动驾驶相关的数据集进行实验评估,分别是SemanticKITTI、KITTI-360、MulRan和KITTI-Carla。在训练过程中,使用AdamW优化器、初始学习率、权重衰减和余弦学习率调度器。网络在6个RTX 3090 GPU上进行训练,共训练12个epochs。
定位准确性:与六种最新的里程计和SLAM方法进行比较,包括KISS-ICP、LeGO-LOAM、SC-LeGO-LOAM、MULLS、CT-ICP和GeoTransformer。在SemanticKITTI、KITTI-360和MulRan数据集上比较了DeepPointMap与这些方法的定位准确性。结果显示,DeepPointMap在不同数据集上都能取得类似的定位准确性,并且在大规模地图上表现出更好的性能。
内存效率:评估了DeepPointMap的内存效率,并与其他常用方法进行比较,包括原始点云、Voxel Hashmap和Mesh。结果显示,DeepPointMap相比其他方法能够节省高达70%的内存空间。
多智能体合作SLAM实验:将DeepPointMap扩展到多智能体合作SLAM任务中,模拟了真实世界的多智能体合作SLAM场景。在SemanticKITTI数据集上选择了三个子序列,并将它们分配给三个独立的智能体进行重建。实验结果显示,DeepPointMap能够成功重建多智能体观测到的点云,并保持全局一致性。
通过这些实验验证了DeepPointMap在定位准确性、内存效率和多智能体合作SLAM方面的优越性能。
6、根据这项研究,后续可能的研究方向有哪些?
根据这项研究,可能的后续研究方向包括但不限于以下几个方面:
-
网络结构改进:可以进一步改进DeepPointMap的网络结构,以提高其性能和效率。例如,可以探索更复杂的神经网络架构或引入注意力机制来提取更具代表性的神经描述符。
-
多模态融合:可以将深度学习方法与其他传感器数据(如相机图像)进行融合,以提高SLAM系统的鲁棒性和准确性。通过融合多种传感器数据,可以更好地理解环境并实现更准确的定位和地图重建。
-
鲁棒性改进:可以研究如何提高DeepPointMap在复杂环境和动态场景下的鲁棒性。例如,可以探索如何处理遮挡、动态物体和不完整的点云数据,以提高系统的鲁棒性和适应性。
-
实时性优化:可以进一步优化DeepPointMap的计算效率,以实现实时的SLAM系统。可以通过模型压缩、硬件加速或并行计算等方法来减少计算复杂度,提高系统的实时性能。
-
多智能体合作SLAM:可以进一步研究如何在多智能体合作SLAM中应用DeepPointMap。可以探索如何实现智能体之间的信息共享和协作,以实现全局一致性的地图重建和定位。
这些是可能的后续研究方向,通过进一步的研究和实验,可以进一步提升DeepPointMap的性能和应用范围。
7、总结
我们提出了一种基于深度学习的LiDAR SLAM框架,称为DeepPointMap(DPM)。该框架包括两个神经网络:DPM编码器和DPM解码器。与其他神经描述符方法不同的是,DPM描述符可以统一地用于SLAM任务的多个子任务,具有出色的定位精度、内存效率、地图保真度和实时处理能力。DeepPointMap在定位精度、地图重建质量和内存消耗方面取得了新的最优结果。此外,该框架还在多智能体协作SLAM方面展示了其灵活性和潜力。因此,DeepPointMap为LiDAR SLAM领域的发展提供了一种有效的解决方案。
DeepPointMap(DPM)的运行流程可以大致描述为以下几个步骤:
数据准备:输入是LiDAR传感器获取的点云数据。
DPM编码器:
- 接收点云数据P,使用PointNeXt的主干网络从密集的点云中采样出稀疏的关键点,并提取这些关键点的邻域几何特征。
- 主干网络的输出是稀疏描述符云,这些描述符云包含压缩的语义信息,用于表示原始密集点云的特征。
描述符云合并:多个描述符云可以通过并集操作合并成一个,用于表示地图级别的描述符云,而无需重新提取特征。
DPM解码器:
- 用于预测两个描述符云之间的变换关系,包括描述符级变换块、相似性头、偏移头和旋转头。
- 描述符级变换块用于融合输入描述符云之间的深度相关特征,有助于整合和理解它们之间的关联性。
- 相似性头用于计算描述符云之间的对应关系,帮助确定匹配关系。
- 偏移头用于预测描述符云之间的平移情况。
- 旋转头用于预测描述符云之间的旋转情况。
损失函数和训练:
- 使用多种损失函数,如配对损失、粗配对损失、偏移损失和重叠损失。
- 通过InfoNCE损失函数来衡量描述符之间的相似性,以促进正确的匹配。
- 通过Offset Loss和Overlap Loss训练偏移头和重叠头,以预测描述符对之间的偏移量和是否重叠。
- 使用数据增强和课程学习策略提高模型性能。
实验评估:
- 在不同的数据集上评估DPM的性能,包括定位准确性、内存效率和多智能体合作SLAM实验。
- 与其他SLAM和里程计方法进行比较,展示DPM在定位准确性和内存效率方面的优越性。
在描述中提及的损失函数(配对损失、粗配对损失、偏移损失和重叠损失)主要用于训练DPM(DeepPointMap)编码器和解码器的组件。
配对损失(Pairing Loss)和粗配对损失(Coarse Pairing Loss):
- 这些损失函数用于衡量描述符之间的相似性,促进正确的匹配。
- 配对损失和粗配对损失被用作训练DPM编码器和解码器以提取和处理描述符对之间关系的一部分。
偏移损失(Offset Loss)和重叠损失(Overlap Loss):
- 偏移损失用于训练偏移头,它负责预测描述符对之间的偏移量。
- 重叠损失用于训练重叠头,它用于预测描述符对之间是否存在重叠。
这些损失函数作为训练深度学习模型的一部分,用于指导模型的学习过程,以便模型可以准确地捕捉和学习描述符之间的关系。它们被应用于DPM编码器和DPM解码器的训练中,以使这些组件能够学习到有助于SLAM任务的特定特征和模式。