GeoTransformer:Geometric Transformer for Fast and Robust Point Cloud Registration 论文解读

目录

一、导言

二、先导知识

1、超点匹配

2、KPConv

三、相关工作

1、基于对应的方法

2、直接配准方法

3、深度鲁棒估计

四、GeoTransformer模型

1、特征提取

2、超点匹配

几何自注意力模块

特征交叉注意力

计算高斯相关性

对应点采样

3、点匹配

4、局部到全局的配准        


一、导言

        该论文提出了一种Geometric Transformer的快速且鲁棒的点云配准方法。

(1)GeoTransformer 采用几何自注意力和特征交叉注意力模块,来学习点云的几何不变性。

(2)GeoTransformer 在建立全局与局部关系时采用超点匹配,并在超点匹配时使用了overlap-aware circle loss,而不是传统的Crossentropy损失,这种方法可以避免交叉熵损失带来的高置信度匹配的抑制问题。

(3)GeoTransformer 是一种无需关键点检测和RANSAC的方法,能够提取准确的对应关系来进行点云配准。

二、先导知识

1、超点匹配

        超点匹配来自于图像匹配的启发,先使用特定网络(本文使用KPConv-FPN)将输入点云进行分层下采样,获得超点,然后提取超点之间的对应方法,即检查局部邻域是否重叠来进行匹配,最后将这种匹配关系传播到单点,产生密集点对。此时密集点对的精度也就会极大依赖于超点匹配的精度。

        超点匹配的特点,超点之间是稀疏松散的,减少了严格的点匹配和patch overlap,放宽了重复性的要求。另外基于patch overlap的方法要比基于距离的point match有更为可靠、信息丰富的约束,也可以获得更为全局context的特征。

2、KPConv

       简述KPConv的思路:

(1)以点x为球心确定一个球体

(2)在球体中确定若干核心点,核心点不是点云的点,具体的取点规则在后文

(3)对于落在球体范围的点云中的点x_i,用核函数计算该点的权重矩阵系数,并用矩阵对该点的特征进行变换

(4)最后将落在球体范围内点云中的所有点逐一进行(3)变换,并将变换后的特征叠加,得到该点x的特征。

       核心点取点规则:

(1)球心点作为第一个核心点 

(2)看需要多少点,其余点保证相互斥力关系稳定情况下逐个选点(类似万有引力,其实就是正n-1面体,理论上应该都是球面点)

具体公式见:https://zhuanlan.zhihu.com/p/92244933

论文指南:https://arxiv.org/pdf/1904.08889

三、相关工作

1、基于对应的方法

       相较于之前做的EGST论文解读基于无对应的方法,而该论文遵循基于对应的方法,依赖于显式的位置编码。

       近期的基于对应的方法中一般有两大类:

第一类:检测更多可重复的关键点并学习更鲁棒的关键点描述子

第二类:无需关键点检测,而是考虑所有可能的匹配(本文属于后者)

2、直接配准方法

        直接配准工作在单一合成形状中效果较好,但在大规模场景中会造成失败,原因在于过分依赖全局特征,在复杂场景中更要兼容局部与全局性。

        直接配准工作一般两类:

第一类:ICP思想,通过建立软分配关系,使用可微分加权的SVD计算变换(在本文点云匹配后也是用可微分加权的SVD来提取局部特征)

第二类:提取点云全局特征向量进行回归变换       

3、深度鲁棒估计

        本文提到在高离群值比情况下,RANSAC方法收敛缓慢且不稳定,所以前人设计了一个深度鲁棒估计量,来摆脱异常值的干扰,而该论文GeoTransformer使用了一个无参数的LGR算法(局部到全局配准方案),实现高效准确配准。

四、GeoTransformer模型

        GeoTransformer的步骤分为特征提取,超点匹配,点云匹配,局部全局配准四个过程。

1、特征提取

        特征提取利用KPConv+FPN的结构提取多层次特征,输入源点云和目标点云,输出KPConv的output的两个点云特征,以及输出FPN后的output的两个点云特征。

        特殊符号:

P,Q:源点云和目标点云

\widehat{P},\widehat{Q}:KPConv的输出,点云特征

\widehat{p}_{x_i},\widehat{q}_{x_i}:将\widehat{P},\widehat{Q}进行超点匹配后的若干点

\tilde{P},\tilde{Q}:FPN的输出,密集点点云特征,一般是input分辨率的二分之一

\mathit{G}_i^P:密集点及密集点特征分配到最近的超点,计算平均最小均方误差

          G_i^P=\left \{ {\tilde{p} \in \tilde{P}|\ i=argmin_j(||\tilde{p}-\widehat{p}_j||_2,\widehat{p}_j \in \widehat{P})}\right \}

2、超点匹配

       对于KPConv输出的点对关系输入到超点匹配模块,输出全局密集的点对应关系。超点匹配模块包括:几何自注意力模块,特征交叉注意力模块,计算高斯相关性,对应点采样。

几何自注意力模块

       使用几何自注意力模块和特征交叉注意力模块的目的是:学习不受变换影响且表达几何一致性的超点特征表示。

       下面为几何自注意力模块(这个图简直深似结构自注意力机制),但是他的计算注意力得分公式并不一样:,几何自注意力机制中更多考虑了几何关系,比如引入超点特征向量x_i,x_j,几何结构嵌入向量r_{i,j},通过作为注意力机制中的Q、K、R的权重系数,通过几何关系来影响注意力机制。

        特殊符号:

 x_i,x_j:表示输入特征矩阵x的第i个和第j个超点特征向量

r_{i,j}:表示第i个和第j个超点之间的几何结构嵌入向量,由两个部分构成包括:r^D_{i,j}(编码超点之间的距离信息),r^A_{i,j,x}(编码超点之间的角度信息)。嵌入向量构成关系及数学表达式:

特征交叉注意力

        给定两个自注意力模块输出的特征矩阵,输入到交叉注意力机制,计算各自的特征矩阵Z_i^Q,Z_i^P,并且计算注意力得分e_{i,j},公式如下:

        为什么要进行这两个注意力模块?

        几何自注意力模块用于对点云变换不变几何结构进行编码,特征交叉注意力模块用于对点云几何一致性进行建模,保证得到的混合特征对变换是不变的,不受变换影响。

计算高斯相关性

        计算高斯相关性的目的:找互相重合的点云块(一块区域的点)

        首先对超点特征向量归一化到单位超球面上,计算两个点云超点特征向量之间的高斯相关性得分,用来找到最相似的超点对,以得到高质量的超点对应关系(因为本文无需关键点匹配,所以只能优化匹配关系)。归一化公式如下,这个公式不太理解为什么放了个指数结构,估计是球面影响,不懂!

        

        另外为了避免有一些与多个点都高度匹配的点,抑制歧义匹配,还会进行双向归一化操作。

对应点采样

        top-k选择是用来对应点采样的一种方法,相较于随机采样,可以得到更确定性的点对应,用于后续的配准计算。

3、点匹配

        对于上一环节已经找到相互重合的两个点云块,要继续找到里面的点云匹配对(化区域为个体)

        思路:计算一个点云块中一个点与另一个点云块中所有点的相似性,相似性最高的为匹配对。

        首先计算相似关系矩阵,并使用Sinkhorn算法设计分配矩阵Z来选择匹配对,为了使得整体匹配置信度达到最优,使用选择置信度最高的K个作为匹配对。

4、局部到全局的配准        

        在局部阶段,使用超点对应关系计算匹配矩阵后,根据上一步取匹配对后作为本轮结果,并将上一轮的匹配矩阵与本轮的匹配对进行比较,若不满足则去除,多次进行迭代,计算新的变换矩阵。

5、损失函数 

         计算局部点对应关系损失L_{oc}(overlap-aware circle loss)和全局点对损失L_p两部分相加。

        L_{oc}关注点对间的重叠关系,给重叠较高的点对以更大权重,同时关注正负样本的重叠。

        L_p采用负对数似然损失,对稀疏的全局点对关系进行监督,分别考虑点对关系和两个点云的内部点间关系

五、实验 

1、比较不同数据集下中RANSAC为基础的方法

        在不同数据集中,相较于RANSAC方法为基础的如3DFeat-Net方法性能相当,略有优势。

2、比较无RANSAC的方法

        该方法在RANSAC-free下优于其他诸如FMR的方法。

3、几何自注意力模块

        相较于传统自注意力模块,几何自注意力在低重叠场景下更为鲁棒。

 论文参考:https://arxiv.org/abs/2202.06688

### 关于 GeoTransformer 的 PyTorch 实现 GeoTransformer 是一种基于 Transformer 架构的快速鲁棒点云方法,其核心在于利用几何一致性约束来增强局部特征和全局结构信息的学习能力[^3]。以下是复现该模型的关键步骤以及代码实现的相关指导。 #### 1. 安装依赖项 为了运行 GeoTransformer 的代码,需安装必要的 Python 库。通常情况下,这些库可以通过 `requirements.txt` 文件指定并自动安装。如果未提供此文件,则可以手动安装以下常用库: ```bash pip install torch torchvision torchaudio numpy scipy matplotlib open3d ``` 上述命令涵盖了训练过程中可能使用的深度学习框架(PyTorch)、科学计算工具包(NumPy 和 SciPy),以及用于可视化点云数据的 Open3D 工具[^2]。 #### 2. 数据GeoTransformer 支持多种类型的点云数据集,例如 KITTI、ModelNet40 或自定义 LiDAR 扫描数据。对于大规模点云处理任务,建议下载官方推荐的数据集,并按照文档中的说明完成预处理操作。具体而言,这一步骤涉及提取关键点、估计法向量以及构建描述符等过程[^1]。 #### 3. 模型架构设计 GeoTransformer 结合了几何先验知识与注意力机制,在编码器部分引入了多尺度上下文建模模块;而在解码阶段则采用了交叉注意层以促进源目标间的信息交互。完整的网络结构如下所示: ```python import torch.nn as nn class GeoTransformer(nn.Module): def __init__(self, config): super(GeoTransformer, self).__init__() # Encoder layers with multi-scale context modeling self.encoder = MultiScaleContextEncoder(config) # Decoder layers incorporating cross-attention mechanism self.decoder = CrossAttentionDecoder(config) def forward(self, src_points, tgt_points): """ Forward pass of the GeoTransformer model. Args: src_points (Tensor): Source point cloud tensor [B, N, C]. tgt_points (Tensor): Target point cloud tensor [B, M, C]. Returns: Tensor: Predicted transformation parameters or correspondences. """ encoded_src = self.encoder(src_points) # Encode source points encoded_tgt = self.encoder(tgt_points) # Encode target points output = self.decoder(encoded_src, encoded_tgt) # Decode using cross attention return output ``` 以上代码片段展示了如何定义一个基本版本的 GeoTransformer 类及其前向传播逻辑。 #### 4. 训练流程置 在实际应用中,还需要设置超参数优化策略、损失函数形式等内容。例如,采用 AdamW 作为默认优化算法,并结合平滑 L1 Loss 来衡量预测变换矩阵的质量差异程度。此外,考虑到不同硬件环境下的性能表现差异较大,因此最好提前测试单次迭代所需时间以便合理分资源。 #### 5. 测试评估指标 最后,在验证集上比较实验结果时可选用 RMSE(均方根误差)、RRE(旋转角度偏差)等多种定量评价标来进行综合考量。同时也可以借助三维渲染技术直观展示效果的好坏情况。 --- ###
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值