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

news2024/11/15 18:41:06

目录

一、导言

二、相关工作

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.coloradmin.cn/o/2053326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何搞定聊天记录找回?三款数据恢复工具分享

聊天记录丢了怎么办&#xff1f;别急&#xff0c;我这就带大家看看市面上比较火的三款数据恢复软件在恢复聊天记录方面的表现如何。首先&#xff0c;我们得知道&#xff0c;聊天记录这东西&#xff0c;一旦误删&#xff0c;那可是心急如焚啊。所以&#xff0c;选择一款靠谱的数…

场外个股期权可以分批建仓吗?

场外个股期权的优势是可以进行风险的精细化管理&#xff0c;但由于期权价格变化的非线性特性&#xff0c;盈利与标的行情走势的相关性不断变化&#xff0c;场外个股期权最便宜的可以用2-5万买到100万市值的股票持仓一个月&#xff0c;下面是整理得出的场外个股期权可以分批建仓…

SwiftUI 6.0(iOS 18)监听滚动视图视口中子视图可见性的极简方法

概览 在 SwiftUI 的应用开发中,我们有时需要监听滚动视图中子视图当前的显示状态:它们现在是被滚动到可见视口(Viewport)?或仍然是隐藏在“未知的黑暗”中呢? 在 SwiftUI 早期版本中为了得偿所愿,我们需要借助一些“取巧”的手段。不过,从 SwiftUI 6.0(iOS 18)开始情…

echarts柱状图使用自定义图片填充柱体

这是我的柱状图图片纹理的实现过程的流水账式记录 方法一&#xff1a; 在option.series里面&#xff0c;给每一项配置上图片路径 let Image2 new Image() Image2.src src/assets/image/BarChart-line.pngcolor: {image: Image,repeat: repeat } 出来的效果比较适合整体纹样…

[Linux]如何在Ubuntu中安装Docker,并且学习基本操作?

一、我们为什么需要Docker&#xff1f; 相信大家都遇到过部署一个应用时缺少依赖的情况&#xff0c;往往我们需要手动解决依赖问题&#xff0c;在解决了依赖问题以后&#xff0c;好不容易安装了这个应用&#xff0c;但是我们更换了计算机以后又需要重复上面步骤将这个软件再安装…

Unity(2022.3.38LTS) - Project Settings详细介绍不看你就亏大了(一)

目录 一. 简介 二. 详细介绍 1. Adaptive Performance(自适应性能) 2.音频 3. 编辑器 4. 图形 5. 输入管理器 6.包管理器 7.物理 8.2D物理 9.玩家 10.预设管理器 一. 简介 在 Unity 中&#xff0c;Project Settings&#xff08;项目设置&#xff09;页面是一个非常…

企业组网中MPLS和SD-WAN方案各有什么特点?

MPLS&#xff08;多协议标签交换&#xff09;和SD-WAN&#xff08;软件定义广域网&#xff09;是企业组网的两大关键技术方案&#xff0c;各自具备独特的特点和优势。 MPLS作为一种传统的专线技术&#xff0c;通过给数据包附加标签&#xff0c;实现了网络流量的高效转发。这种方…

教你如何安装并使用小熊猫c++

目录 前言 一、获取安装包 二、安装 1.打开安装包 2.选择语言 3.接受协议 4.安装场景 5.选择组件 6.选择位置 7.完成安装 三、如何使用 1.打开软件并选择主题 2.创建项目 3.新建空项目 4.创建源文件 5.测试C语言代码 6.编译 7.运行 总结 前言 已有的C/…

地震采集的观测系统

这张图表明&#xff0c;为什么在速度分析论文中&#xff0c;与CMP有关的数据都有CDP序号的影子——因为CDP序号是对一条测线上布置的观测系统对地下反射点的信号记录。换句话说&#xff0c;不同的CDP序号&#xff08;类似测井位置&#xff09;意味着不同的CMP道集。 几种论文中…

【Python快速入门和实践013】Python常用脚本-目标检测之按照类别数量划分数据集

一、功能介绍 这段代码实现了从给定的图像和标签文件夹中分割数据集为训练集、验证集和测试集的功能。以下是代码功能的总结&#xff1a; 创建目标文件夹结构&#xff1a; 在指定的根目录&#xff08;dataset_root&#xff09;下创建images和labels两个文件夹。在这两个文件夹下…

scoket通信 -- 网络字节序

include <arpa/inet.h> 考虑到不同语言不同库函数的参数可能不同&#xff0c;我这里以c语言的arpa/inet.h库中的函数为例. 网络字节序是什么 网络字节序&#xff08;Network Byte Order&#xff09;是指在网络通信中用于数据交换时所采用的字节序&#xff0c;它是大端…

log4j日志配置%X{TransId}

log4j日志配置文件中的%X{TransId}是怎么动态获取值的 在Log4j中&#xff0c;%X{TransId} 是用来从MDC&#xff08;Mapped Diagnostic Context&#xff09;中获取值的占位符。MDC 是 Log4j 提供的一种机制&#xff0c;用于在同一个线程的不同日志记录中传递上下文信息。通过 M…

centos ssh免密登录配置

ssh免密登录 centos 系统中&#xff0c;配置免密需要确保ssh配置文件免密登录权限打开了 sudo vim /etc/ssh/sshd_config 查看PubkeyAuthentication值为yes 修改之后&#xff0c;重启sshd sudo systemctl restart sshd免密配置 &#xff08;1&#xff09;生成秘钥文件 ssh-…

Linux 下 RocketMQ 安装、配置与运维(详细讲解)

一 RocketMQ 下载安装 1 下载 RocketMQ&#xff1a; 下载当前最新版本RocketMQ 官网下载&#xff1a; https://dist.apache.org/repos/dist/release/rocketmq/5.3.0/rocketmq-all-5.3.0-bin-release.zip wget https://dist.apache.org/repos/dist/release/rocket…

安装搭建MongoDB及配置副本集

目录 一、什么是MongoDB的副本集 简介 &#xff08;1&#xff09;冗余和数据可用性 &#xff08;2&#xff09;MongoDB中的复制 &#xff08;3&#xff09;主从复制和副本集区别 二、副本集的架构 三、副本集的成员 四、部署副本集 1、节点划分 2、安装MongoDB 2.1、…

数据结构与算法——平衡二叉树

1、基本介绍 1&#xff09;平衡二叉树又叫平衡二叉搜索树(Self-balanceing binary search tree)&#xff0c;又被称为AVL树&#xff0c;可以保证查询效率较高。 2&#xff09;具有以下特点&#xff1a;它是一颗空树或它的左右两颗子树的高度差绝对值不超过1&#xff0c;并且左…

网络热门编程项目导学:尚医通

本文作者&#xff1a;程序员鱼皮 免费编程学习 - 编程导航网&#xff1a;https://www.code-nav.cn 现在网上有很多播放量巨高的免费编程项目教程&#xff0c;很多学编程的同学可能都看过&#xff0c;就导致大家可能写在简历上的内容都差不多。 于是就有了下面这张图&#xff1…

python之matplotlib (3 坐标轴设置)

写在前面 在说明坐标轴设置之前&#xff0c;我有必要和大家说清楚图像设置的一些方法&#xff0c;避免陷入困扰模糊的地步。前面我们说过&#xff0c;画图的三种方法&#xff08;python之matplotlib &#xff08;1 介绍及基本用法&#xff09;-CSDN博客&#xff09;。而设置也…

2024年证券从业资格考试题型特点及答题技巧

考试题型、题量、分值 证券从业科目题型题量&#xff1a; 一、单选题(每题0.5分&#xff0c;共40题&#xff0c;共20分) 下列每小题的四个选项中&#xff0c;只有一项是最符合题意的正确答案&#xff0c;多选、错选或不选均不得分。 二、多选题(每题1分&#xff0c;共40题&…

我的Vue2/Vue3知识框架汇总

文章目录 一、前言二、Vue3篇Vue3 相对于 Vue2 做了哪些更新&#xff1f;​Vue3响应式Vue3响应式特点​Object.defineProperty 与 Proxy 的区别​什么是Proxy&#xff1f;​为什么需要 Reflect&#xff1f;(目标对象内部的this指向问题)​Vue3 惰性响应式​Proxy 只会代理对象的…