RegFormer:用于大规模点云配准的高效投影感知Transformer网络

embedded/2024/9/24 6:32:30/

目录

一、导言

二、相关工作

1、点云配准工作

2、大规模点云配准

3、Transformer引入配准工作

三、RegFormer

1、柱面投影 

2、特征提取Transformer

3、双射关联Transformer(BAT)

4、刚性变换估计

5、损失函数

四、实验


一、导言

        该论文来自于ICCV2023(上交和我矿联合写的?),本论文提出一个RegFormer的点云配准网络,用于大规模场景的配准,该网络不需要关键点提取和RANSAC或SVD的后处理,直接处理原始点云,完全基于Transformer的网络进行全局提取点特征和离群点过滤。

(1)提出了一个大规模端到端的点云配准网络,无需关键点匹配或RANSAC后处理。

(2)设计了一种投影感知层次化的Transformer,能够全局建模捕捉长距离依赖关系,来有效过滤离群点

(3)提出了双向关联Transformer结构(Bijective Association Transformer,BAT),有效减少错误匹配。

二、相关工作

        当前的配准工作围绕三个大的改进点发展:

(1)特征提取:传统的方法,CNN,Transformer

(2)配准工作:ICP(SVD),关键点+局部描述子+RANSAC,无对应方法

(3)数据集:室内数据,大规模场景,对象数据

1、点云配准工作

(1)关键点检测学习局部描述子:PPFNet及无监督版本的PPF-FoldNet(提取局部PPF特征)

(2)端到端配准网络:PointLK(全局描述符,LK算法估计变换)和FMR(最小化特征度量投影误差)

2、大规模点云配准

        DeepVcp通过搜索局部相似性来搜索局部性质,但关键点匹配在局部空间中受限。HRegNet考虑到需要较大的关键点检测范围,所以将源点云与目标点云之间的关系,以及关键点的邻域关系都引入关键点特征。

        受到近期的Transformer和场景流工作可以考虑不需要用关键点或者显式的点对点对应关系。

3、Transformer引入配准工作

        DCP(DGCNN+Transformer+SVD)第一个深度学习框架的类ICP架构,处理点云规模有限。

        COFINet(基于CNN的使用交叉注意力和自注意力进行对应关系提取+SVD或RANSAC的二阶段框架),由于CNN的使用导致提取特征时感受野受限,且计算复杂度较高。

        GeoTransformer(传统CNN+几何特征描述子+Transformer+可微加权的SVD),由于CNN局限性,加几何特征描述子导致更高的复杂度。

        RegFormer通过本身的Transformer提取特征实现保持使用Transformer来进行全局提取特征,且保证不适用描述子以及对应关系等复杂信息实现低复杂度的情况下来实现更精准更快速的配准工作。

三、RegFormer

        RegFormer网络结构由特征提取Transformer结构,双射关联Transformer(BAT),柱面投影,刚性变换估计四个部分组成。输入源点云和目标点云经过双分支的投影与三层Point Swin Transformer层分别提取特征,并通过BAT避免错误匹配和估计变换参数之后得到位姿估计,与三层Transformer层前的位姿估计进行三次调整后得到准确的位姿估计。

1、柱面投影 

        柱面投影看下面的图(十分形象),就是将一个圆柱围住这个点云,然后将点云以放射方式投影到圆柱面上。这样每一个点就由一个三维点云坐标,转换为一个圆柱面上的二维坐标(伪图像)。

        对于一个3D坐标点(x,y,z),LiDAR相机水平分辨率为\Delta \theta,垂直分辨率\Delta \phi,情况下投影圆柱面上的2D坐标点(u,v)

        u=arctan2(y/x)/ \Delta \theta ,\quad v=arcsin(z/ \sqrt{x^2+y^2+z^2})/ \Delta\phi

2、特征提取Transformer

        特征提取Transformer用的就是Point Swin Transformer网络,由于点云数量巨大如果使用Transformer会生成巨大数量的tokens,所以通过Swin Tranformer中滑动窗口引入到点云领域,来避免原始transformer产生二次复杂度的时间成本巨大的问题。

        Point Swin Transformer网络结构由投影掩码、Point W-MSA、多层MLP、Point SW-MSA、多层MLP组成。

(1)投影掩码

        投影掩码:由于室外场景中点云是稀疏的,而投影的伪图像无对应原始3D点云位置的点会填充到一些无效的像素,投影掩码通过过滤掉伪图像中无效的像素位置,避免在注意力计算中考虑这些错误信息,影响配准精度。

        投影掩膜定义如下:

                                           M_i^S=\left\{\begin{matrix} - \infty , \quad x=0,y=0,z=0\\ 0, \qquad \qquad otherwise \end{matrix}\right.

        对于无效的像素的投影掩码会分配给一个大的负数,在Point W-MSA的注意力机制计算中使注意力无效,有效的像素掩码为0,表示无影响。

(2)Point W-MSA

        Point W-MSA是为了处理稀疏点云数据设计的多头自注意力机制,通过引入投影掩码来消除无效像素位置,通过transformer结构来提取全局点云特征。

对于一些字母解释:

        Z^{l-1}:代表当前的输入点特征,Z^{l}表示上一Stage(上一个transformer层)的输出点特征。

        Head_h:第h个注意力头,一共有1到H个注意力头。

对于Point W-MSA与传统自注意力机制的区别只在于多了投影掩码、bias、多头结构,其他相同。

                    W-MSA(Z^{l-1})=(Head_1 \bigoplus ... \bigoplus Head_H) W^O \\

                    Head_h=Attention(Q^h,K^h,V^h)=softmax(\frac{Q^hK^h}{\sqrt{d_{head}}}+M_l^S+Bias)V^h

(3)Point SW-MSA

        Point SW-MSA在Point W-MSA的基础上添加了滑动窗口,通过对特征进行空间位移增加窗口之间的信息交互。

(4)组成Point Swin Tranformer结构

        下面公式中LN表示Layer Norm,每一层都是经过残差相连。MLP的结构在代码中没找到下次再找:(

3、双射关联Transformer(BAT)

        在RegFormer网络结构图我们注意到双分支下的每一层的Transformer输出一个掩码M和特征F,下角标代表第几层输出,上角标区分源点云和目标点云。

        其中特征F由两部分组成x和f,x是点云坐标(3维向量),f是点云特征(C维向量,角标为Transformer层数),每个点云由n个点构成,所以源点云第三层Transformer输出的特征F_3^S的维度为n \times (3+C_3)

(1)CrossAttention

        首先BAT的输入为第三层Tranformer的输出F_3^S,F_3^T。经过CrossAttention层输出为\bar{F}_3^S,\bar{F}_3^T

        CrossAttention计算:\bar{F}_3^S=Attention(F_3^SW^Q,F_3^TW^K,F^T_3W^V)(注意交叉注意力的计算方式,Attention的计算满足上面的含投影掩码的结构)

(2)All-to-all point gathering(后面所有结构统称)

        All-to-all点聚集策略将交叉注意力的输出\bar{F}_3^S,\bar{F}_3^T作为输入。

        对每个源点云和目标点云的点做关联,形成关联簇,获得每个源点和目标点的相对3D欧氏距离和特征相似度信息,来生成更可靠的运动Embedding特征,减少匹配错误。

图中字母表示:

        x_i,y_i^k:源点云和目标点云坐标

        f_i,f_i^k:源点云和目标点云特征向量

        \bigoplus:通道数相加

逐部分解释:

        关联簇(图中的All-to-all):我的理解是,他做了一个点对点的集合,目的是后续的计算距离差和相似度。

        复制(图中的replicate):将源点云和目标点云的特征\bar{F}_3^S,\bar{F}_3^T作了m通道的重复复制,每个通道都是一样的。

        几何特征r_i^k:输入m个通道的源点云和目标点云特征,输出一个m个通道的n*10维几何特征。包括源点云坐标(3维),目标点云坐标(3维),相对坐标(3维),距离(1维)共10维。

                               r_i^k=x_i\bigoplus y_i^k \bigoplus (x_i-y_i^k) \bigoplus ||x_i-y_i^k||_2

        余弦相似度s_i^k:计算源点云和目标点云特征之间余弦相似度(n*m*2张量)。

                               s_i^k=\frac{<cf_i,cf_i^k>}{||cf_i||_2||cf_i^k||_2}

        特征结合:考虑到源点云和目标点云间的几何和外观特征融合,包含两个点云之间的相对位置和姿态信息,为后续变换提供可靠初始值(n \times m \times (12+2C_3))。

                               L_i^k=MLP(f_i \bigoplus cf_i^k \bigoplus r_i^k \bigoplus s_i^k)

        初始运动嵌入:

                                f_{e_i}=\sum_{k=1}^m L_i^k \odot softmax_{k=1,...,m}(L_i^k)

4、刚性变换估计

        刚性变换估计通过将运动嵌入来估计第三层的姿态,但由于变换估计不够准确,所以进行三层迭代细化,得到准确的姿态。

        初始运动嵌入的集合FE:FE=\left \{f_{e_i},i=1,...,n \right \}

        刚性变换估计注意力权重W:W=softmax(MLP(FE\bigoplus F_3^S ))

        计算旋转姿态q和平移姿态t:通过不同的全连接层来计算。

        q_3=\frac{FC_1(\sum_{i=1}^n f_{e_i}\odot w_i)}{ |FC_1(\sum_{i=1}^n f_{e_i}\odot w_i)| } , \qquad t_3=FC_2(\sum_{i=1}^n f_{e_i}\odot w_i)

        细化过程如下:类似于反向传播

        如第二层旋转姿态和平移姿态计算公式([0,\cdot ]代表max):

                                     q^2=\Delta q^2 q^3, \qquad t^2=\Delta q^2[0,t^3](\Delta q^2)^{-1}+[0,\Delta t^2]

5、损失函数

        总损失函数L等于每一层损失函数L^l的加权求和:L= \alpha^l L^l

        每一层损失函数L^lL^l=L_{trans}^lexp(-k_t)+k_t+L_{rot}^l exp(-k_r)+k_r,其中k_t,k_r代表两个可学习的参数。

        平移损失:L_{trans}^l=||t^l-\hat{t}^l||

        旋转损失:L_{rot}^l=||\frac{q^l}{||q^l||}-\hat{q}^l||_2

        总的来说,该网络的损失函数就是每一层旋转偏差和平移偏差的加权表示。

四、实验

        在后续的实验中,针对的是KITTI和Nuscenes两个室外场景数据集进行测试。

1、对比不同网络

        在RTE、RRE、RR上大幅优于DCP、IDAM、FMR,而在最为近似的HRegNet网络,在速度上占有优势,但RTE上略低于HRegNet网络。

2、对比RANSAC方法

        与基于RANSAC的GeoTransformer相比,精度上略有提高,但效率提高极为明显,在保证对异常值的鲁棒性的情况下,通过学习全局特征取得更短的时间。

3、对于低重叠的可视化

        该实验考虑了低重叠的点云场景,对于点云存在大旋转低重叠情况下,仍然达到99.9%的召回率,时间上保持最快的速度。

        但对于高重叠的点云场景没有证明

4、消融实验

        对于层次结构、投影掩码、全局建模、BAT进行消融实验。

        影响最大的是Transformer的出现,在特征提取中,如果不引入Transformer或减少一层到两层的Tranformer的影响是最大的,而掩码的引入改变的很小。这也说明了特征提取是对精度变化最大的一部分。

5、讨论

        后面的讨论关注到动态的对象一般产生较小的注意权重W,而静态的对象产生较高的权重。

        另外,交叉注意力可以学习到运动嵌入,来有效缩短两帧之间的距离。

         

参考代码:https://github.com/IRMVLab/RegFormer

参考文献:https://arxiv.org/pdf/2303.12384v3


http://www.ppmy.cn/embedded/97776.html

相关文章

WPF篇(20)- Menu菜单+ContextMenu上下文菜单+StatusBar状态栏

Menu菜单 Menu控件继承于MenuBase&#xff0c;而MenuBase继承于ItemsControl。所以学习Menu之前&#xff0c;要先了解一下MenuBase基类。它是一个抽象类&#xff0c;拥有一个ItemContainerTemplateSelector模板选择器&#xff0c;并重写了一些关于键盘和鼠标的方法。 Menu的子…

算法:LRU(Least Recently Used)

LRU&#xff08;Least Recently Used&#xff0c;最近最少使用&#xff09;是一种经典的缓存替换算法&#xff0c;用于在缓存满时决定哪一个缓存项应该被替换。LRU算法基于这样的假设&#xff1a;最近使用过的数据在未来也更有可能被再次使用&#xff0c;而很久没有使用的数据在…

微服务中的Sidecar模式

微服务中的Sidecar模式 什么是sidecarsidecar如何工作Sidecar 代理服务注册发现Sidecar 代理异构服务发起服务调用异构服务如何被调用 常见应用以MOSN流量接管为例使用 sidecar 模式的优势sidecar和面向切片编程AOP的关系参考 什么是sidecar sidecar是服务网络架构的产物。 S…

npm 使用淘宝镜像,安装pnpm

&#xff08;安装nodejs时&#xff0c;会自动安装npm&#xff09;使用 npm 安装包时&#xff0c;需要去 npm 仓库获取&#xff0c;而 npm 仓库在国外&#xff0c;很不稳定&#xff0c;有时获取会失败。淘宝搭建了一个国内npm服务器&#xff0c;会定时拉取国外npm仓库内容&#…

UDP/TCP --- Socket编程

本篇将使用 Linux 中的系统调用来实现模拟 TCP 和 UDP 的通信过程&#xff0c;其中只对 UDP 和 TCP 进行了简单的介绍&#xff0c;本篇主要实现的是代码&#xff0c;至于 UDP 和 TCP 的详细讲解将会在之后的文章中给出。 本篇给出的 tcp 和 udp 的代码中的 echo 都是测试连接是…

发那科机器人常见的异常解决方案

第一类错误&#xff1a;示教板空白、机器人死机 判断方法&#xff1a;1、PSU 上红色LED 亮代表电源供给报警&#xff0c;可能保险F4熔断、查看CP2、CP3线路&#xff08;200ACV输出&#xff09;、更换PSU&#xff1b;绿色PIN熄灭代表电源供给单元未获得200V 的交流电源输入&…

科创中心“核”动力|趋动科技:AI算力界的领跑者

近日&#xff0c;趋动科技与深信服正式推出联合解决方案。联合解决方案将深信服EDS的高性能存储与趋动科技OrionX AI算力资源池化软件、以及GeminiAI训练平台有机结合&#xff0c;整合存力与算力资源的同时&#xff0c;帮助用户建好AI平台、管好AI资源、用好AI服务。 双方已完成…

游戏管理系统

目录 Java程序设计课程设计 游戏管理系统 1系统简介 1.1需求分析 1.2 编程环境与工具 2系统总体设计 2.1 系统的功能模块图。 2.2 各功能模块简介。 3主要业务流程 &#xff08;1&#xff09;用户及管理员登录流程图 &#xff08;2&#xff09;信息添加流程 &#x…