Advertisement

论文笔记—NDT-Transformer: Large-Scale 3D Point Cloud Localization using the Normal Distribution Transfor

阅读量:

论文笔记—NDT-Transformer: Large-Scale 3D Point Cloud Localization using the Normal Distribution Transform Representation

文章摘要

~~~~~~~在 GPS 挑战的环境中,自动驾驶对基于 3D 点云的地点识别有很高的要求,并且是基于激光雷达的 SLAM 系统的重要组成部分(即闭环检测)。本文提出了一种名为 NDT-Transformer 的新方法,用于使用 3D 点云进行实时和大规模的地点识别。具体而言,采用 3D 正态分布变换 (NDT) 表示将原始、密集的 3D 点云压缩为概率分布(NDT 单元),以提供几何形状描述。然后一个新的 NDT-Transformer 网络从一组 3D NDT 单元表示中学习全局描述符。受益于 NDT 表示和 NDT-Transformer 网络,学习到的全局描述符丰富了几何和上下文信息。最后,使用用于地点识别的查询数据库来实现描述符检索。与最先进的方法相比,所提出的方法在牛津 Robotcar 基准测试中平均前 1 名召回率提高了 7.52%,平均前 1% 召回率提高了 2.73%。

导语

~~~~~~~对能够在 GPS 挑战的环境中稳健地定位机器人或自动驾驶汽车的基于点云的导航系统有很高的需求。 基于点云的全局定位也可以用作闭环检测模块,这是同时定位和建图 (SLAM) 系统的重要组成部分。 一种实用的方法是使用GPS获取粗略的全球位置和点云配准方法,例如ICP,以获得更准确的位姿估计。 然而,GPS 并不总是可用且可靠,因此需要仅使用传感数据的替代解决方案。
传统的点云配准方法和粒子滤波方法对于大规模环境是不可扩展的。 当前机器人定位系统的核心挑战是通用性和可扩展性。 例如,基于模型的方法 [1]、[2]、[3] 可以学习 6DOF (自由度)全局位姿作为回归模型并实时推断位姿。 遗憾的是,基于回归的方法不能推广到新环境。 类似 SegMatch 的方法 [4]、[5]、[6]、[7] 在中间表示(例如语义段)上配准两个点云图,这已被证明是鲁棒的,但计算效率不高。
本文将大规模定位作为一个大规模点云检索问题来解决,其中连续的机器人轨迹被离散化为连续的“位置”。 受到自然语言处理中 Transformer 模型 [8] 成功的启发,我们提出了一种新方法——NDT-Transformer——将点云转换为几何丰富的 NDT 单元的“长句”,然后转换为特定于站点的特征签名。 在推理过程中,只需要在线计算查询数据的描述符,而数据库中的其他描述符可以离线计算并存储在内存中,从而实现大规模环境中的实时拓扑定位。 因此,可以实现可扩展性和泛化性。
主要贡献可以总结如下:1)提出了一种计算效率高的方法,用于大规模基于点云的定位,其中 NDT 用作中间表示。 我们的方法将密集的点云压缩成一个轻量级的表示,最大限度地保留了几何特征; 2) 设计了一种名为 NDT-Transformer 的新型神经网络架构,用于从一组 3D NDT 单元表示中学习具有上下文线索的全局描述符; 3)所提出的方法在基于点云的位置识别方面达到了最先进的性能,可以作为基于无损检测的 SLAM 和蒙特卡洛定位方法的重要补充。

相关工作

A. 基于点云的全局定位

~~~~~~~最先进的基于点云的定位方法可以分为三个主要流派:基于回归的 [1]、[2]、[3]、基于中间表示的 [4]、[5]、[ 6] 和基于全局特征的 [9]、[10]、[11]、[12]、[13]、[14]、[15]。
继深度位姿估计在基于图像的全局定位中取得成功之后,一些方法 [1]、[2]、[3] 建议使用深度回归网络来学习 6 DOF 全局位姿。 这些基于模型的方法非常有效,但不具有普遍性。 换句话说,需要针对新环境训练新模型。
基于中间表示的方法 [4]、[5]、[6]、[7] 首先将地图分割成中间表示(即语义段),然后配准分割的部分,而不是直接配准点云。 中间部分可以描述为独特的特征 [4] 或深度学习的特征 [5]、[6]、[7] 可用于消除误报。 虽然通过使用中间表示可以提高匹配效率,但是在云分割上花费了大量的运行时间,因此无法保证实时性。
基于点云的定位的主流方法是基于全局特征,其中设计或学习通用特征提取器以获取用于检索的位置签名。 在深度学习开始主导机器学习社区之前,已经对 M2DP [9]、扫描上下文 [10] 和 DELIGHT [11] 等手工制作的特征进行了充分研究,以表示用于定位的 3D 点云。 在基于学习的方法方面,Scan Context Image-based network [12] 和 OverlapNet [13] 根据几何知识将 3D 激光雷达扫描转换为 2D 图像,然后部署类似 2D 卷积的网络来学习表示。
Point-NetVLAD [16] 没有使用手工制作的特征,而是结合 PointNet [17] 和 NetVLAD [14] 来学习基于度量学习的全局描述符。然而,类似 PointNet 的架构忽略了3D点云中的空间分布和上下文线索。从不规则的 3D 点云中提取有效的上下文信息是 3D 闭环检测的另一个挑战。以下工作 LPD-Net [15] 采用经典的 DGCNN [18] 类网络,通过基于 KNN 的聚合在特征空间和笛卡尔空间中增强特征描述符。他们还引入了10种不同的几何局部特征来在训练期间为网络提供信息,从而实现最先进的 (SOTA) 性能。由于 GPU 内存的限制,这些基于点云的方法大多需要对原始 3D 密集点云进行下采样操作。然而,这种下采样操作会导致局部几何信息的退化。最后,作为实时 SLAM 系统的一部分,3D 回环检测的运行时性能需要实时运行,这意味着需要轻量级网络。

B. 基于NDT的定位

~~~~~~~正态分布变换 (NDT) 是将 2D 或 3D 点云表示为 2D 激光 [19] 和 3D 激光雷达地图 [20]、[21] 的差分多变量高斯分布的经典方法。与基于点云或网格图的表示相比,基于 NDT 的重定位,即 NDT-MCL [22],展示了先进的定位精度和可重复性,因为 NDT 是一种固有的概率和几何表示来模拟可能性。换句话说,地图的结构和几何信息由NDT单元参数隐式解释。受益于这一特性,基于 NDT 的定位可以将庞大的点云图压缩到内存高效的 NDT 单元中,从而使定位具有可扩展性。基于子图的NDT[23]可以消除机器人视角不同带来的不确定性,进一步提高大规模和长期应用中的定位精度和可扩展性[2]。此外,NDT可用于为回环检测提供位置签名,例如使用无损检测直方图 [24] 和语义无损检测直方图 [25]、半监督位置分类 [26],并创建兴趣点描述符 [27] 以进行有效的配准或定位。

方法

A. 问题制定

~~~~~~~给定机器人汽车的 6 DOF 轨迹和同步激光雷达扫描,子图 M = \{ m_1,····,m_N \} 可以通过将轨迹划分为固定范围间隔并将点云映射到本地参考系来构建。然后得到的子图可以进一步表示为NDT单元。具体来说,将子图的空间均匀划分为网格单元,并使用单元内的 3D 点来估计NDT参数。实际上,由于每个子图的密度不同,单元格的数量差异很大。应用空间分布采样滤波器 \mathcal{G} 来保证所有子图中的单元格数量相同,即 |\mathcal{G}(m_1)| = · · ·= |\mathcal{G}(m_N)|。提出了一种称为 NDT-Transformer 的深度模型来学习函数f(.),该函数将输入 NDT 单元表示表示为固定大小的全局描述符 f(\mathcal{F}),其中\mathcal{F} = \mathcal{G}(m)。那么可以采用欧氏距离函数d(.)来衡量相似度,即d(f(\mathcal{F}), f(\mathcal{F}_{pos})) < d(f(\mathcal{F}), f(\mathcal{F}_{neg})),其中\mathcal{F}\mathcal{F}_{pos}相似,与\mathcal{F}_{neg}不同。
因此,3D 回环检测的问题被公式化如下。 将查询子图表示为m_q,该任务旨在在数据库M中搜索最相似的子图m_*。 该问题可以通过在特征空间中搜索子图 m_∗∈M 的最近邻居来解决,即 f(\mathcal{F}_{m_∗}),它与查询点云(特征)f(\mathcal{F}_{m_q}) 的欧几里德距离最小。 即d(f(\mathcal{F}_{m_q}), f(\mathcal{F}_{m_∗})) < d(f(\mathcal{F}_{m_q}), f(\mathcal{F}_{m_i})), ∀m_i∈ M, i \not =∗
3D 地点识别的一个例子如图 1 所示。地图上的红线显示了英国牛津市中心一辆自动驾驶汽车导航的整个路线。 可以通过将扫描与全局位姿相结合来构建此运行的一组点云。 目标是从另一次运行中识别出与查询点云最近的匹配。 本文将所有点云表示为固定数量的 3D NDT 单元(如图 2 所示),并利用 NDT-Transformer 将它们转换为特定于站点的全局描述符。而且,只需要在线计算查询描述符,而数据库中的其他描述符离线计算并存储在内存中,以保证实时性。
图片1

B. 3D NDT 表示

~~~~~~~与大多数现有工作相比,我们使用 3D 正态分布变换 (NDT) [21] 表示点云子图,而不是将 3D 点云下采样到固定数量的点。 如图 2 所示,3D-NDT 表示是一种紧凑的“球形”结构,它不仅可以保留一组局部 3D 点的几何形状,还可以显著降低内存复杂度。 换句话说,我们可以使用内存高效的分辨率,例如 (1m × 1m × 1m),而不会丢失重要的几何细节。 每个NDT单元的正态分布 N(µ,C) 由平均向量 µ 和定义为的协方差矩阵 C 组成,
公式1
其中x_{k=1,...,n} 是每个单元格中的 3D 点。
我们采用空间分布的采样方法\mathcal{G} 来生成均匀分布的NDT单元, 公式2
其中 m^s 指的是大小为s的子图,\mathcal{G} 指的是大小为k单元的NDT表示。
空间分布采样可以将点密度从任意输入大小s减少到固定数量的点 k,同时保留来自原始子图的结构信息。此操作包括三个步骤。首先,我们将原始子图:大小为 sm^s 下采样到m^{k∗c±t\%}(在某个容差因子t 内),其中 c >1.0 +t 是一个过采样因子,可确保产生过多的点。下采样是通过执行二分搜索来找到产生 k ∗ c ± t 点的体素大小来实现的。其次,我们用下采样点作为质心来估计 NDT 分布 \mathcal{F}。也就是说,对于下采样子图 q_i∈ m^{k∗c±t\%} 中的每个点,从原始子图 m^sq_i 半径 r 内的所有点计算NDT单元(μ_i,C_i)。最后一步删除具有最高互信息的单元格,直到剩余 k个单元格。这确保了结构信息得到维护。互信息由对称 Kullback-Leibler 散度1/2 ∗ (D_{KL}(P||Q)+D_{KL}(Q||P))计算。 KL 散度最低的邻居具有最高的互信息。
图片2

C. NDT-Transformer网络

~~~~~~~在将 3D 子图 m 转换为 3D NDT 表示 \mathcal{F} 之后,该表示被馈送到 NDT-Transformer 网络 f 中以获得 3D 子图的描述符 ξ。 即,ξ =f(\mathcal{F}) 其中 \mathcal{F} =\mathcal{G}(m)。 如图 3 所示,NDT-Transformer 网络主要由三个部分组成:1) NDT 表示模块,由点变换和不确定性反向传播组成,2) 残差变换器编码器,以及 3) 局部聚合描述符的网络向量 (NetVLAD)。
为了实现描述符的旋转不变性,将点变换和不确定性反向传播应用于每个原始 NDT 表示 \mathcal{F} =(μ,C)。 首先,转换矩阵 T_{3×3} 通过转换网络(T-Net)[17] 从NDT均值向量 μ 中学习。 然后可以通过组装变换点和传播的不确定性来获得新的 NDT 表示 \mathcal{F}_T =(μ_T,C_T)
公式3
其中 T_{3×3}=\mathcal{T} (µ)\mathcal{T} 指的是 T-Net。 对不规则数据(如NDT单元)的特征聚合仍然是一个具有挑战性的问题。 PointNetVLAD [16] 利用 Point-Net [17] 将点的位置信息转换为高维特征表示。 然而,由于缺乏上下文线索,每个点的这种表示都存在歧义。 尽管可以通过每个 NDT 单元内的均值和协方差计算来实现局部特征聚合,但各个 NDT 表示之间没有聚合。 我们的直觉是采用注意力机制来学习地标(无损检测单元)之间的潜在背景。 与大多数现有方法 [15]、[18] 相比,这些方法利用 kNN 分组进行上下文信息建模,我们使用残差转换器编码器将一个 NDT 单元的上下文线索与其他 NDT 单元聚合在一起,以增加表示的独特性 .
如图 3 的中间面板所示,该网络包括三个串联的变压器编码器堆栈,以及位于头部和底部的两个共享线性堆栈,具有快捷跳过连接。 每个 Transformer 编码器由一系列模块组成,即多头自注意力 (MHSA)、前馈网络 (FFN) 和层归一化 (LN),它们可以多次堆叠在一起。 转换器编码器可以学习由自注意力机制捕获的共上下文信息/消息 Attn
公式4
其中 d_k 表示查询的维度,Q_i、K_i、V_i分别代表 NDT 单元表示的第 i 个查询头、键、值。 在我们的实现中,四头注意力(即 i = 1,2,3,4)用于增强特征属性的辨别力。 自注意力机制可以自动在当前 NDT 单元和其他显着的有趣 NDT 单元之间建立连接。 注意力表示 Φ 可以得到如下:
公式5,6
通过这种方式,每个 NDT 单元的局部表示 \mathcal{F}_T 升级为注意表示 Φ
在 PointNetVLAD [16] 之后,我们选择 NetVLAD [14] 而不是最大池化层,以提高 3D 点云描述符的排列不变性。 NetVLAD 旨在聚合一组局部描述符并生成一个全局描述符向量。 它记录有关本地签名的统计信息,并总结这些签名与其各自集群之间的差异。 与传统的 VLAD 相比,NetVLAD 的参数,尤其是分配分数,是在训练期间以端到端的方式学习的。 在经过 NetVLAD 和多层感知器 (MLP) 之后,可以融合一组 NDT 单元表示/描述符 Φ 以获得固定大小的全局描述符向量 ξ 来描述 3D 点云, 公式7
其中 指的是串联。
图片3

D. 度量学习

~~~~~~~继 PointNetVLAD [16] 之后,Lazy Quadruplet 损失用于实现查询全局描述符 ξ_q 与正 ξ_{pos}、负 ξ_{neg} 和硬负 ξ_{neg∗} 示例之间的度量学习,这些示例是在训练期间从不同位置随机选取的 ξ_q。 Lazy Quadruplet 损失为:
公式8
其中 α、β 是恒定的边距值,d(·,·)是欧几里得距离。 Quadruplet loss 的核心思想是最小化查询和正全局描述符之间的距离,最大化查询和负全局描述符之间的距离,同时保持所有负描述符之间的适当距离(即 ξ_{neg}ξ_{neg∗})。

全部评论 (0)

还没有任何评论哟~