目录
一、导言
二、先导知识
1、3DRegNet
2、Kabsch-Umeyama算法
3、InfoNCE损失函数
三、相关工作
1、基于对应关系的配准
2、全局配准工作
3、过滤问题
4、Transformer
四、REGTR网络
1、降采样和特征提取
2、Transformer 交叉编码器
Transformer为什么要用FFN?
3、输出解码器
4、刚性变换估计
5、损失函数
五、实验
1、对比不同模型评估性能指标
2、算法时间比较
3、位置编码问题
一、导言
该论文来自NUC大学某组的CVPR2022,其中该组的代表论文还有RPM-Net,3DFeat-Net。本文提出一种REGTR的端到端点云配准框架,该框架直接使用Transformer注意力层预测两个点云间的最终对应关系,而不需要RANSAC等后处理方法。
(1)REGTR通过Transformer取代以往的RANSAC后处理算法,输入中添加正弦编码的坐标点信息。Transformer中使用自注意力和交叉注意力机制(传统方法)
(2)输出编码器中,预测对应点变换坐标以外,还同时预测每个点重叠概率,来过滤不在重叠区域的对应关系。
(3)另外,单头注意力来预测对应点的坐标的方法,一定程度提高了配准精度,但降低了配准召回率。
二、先导知识
1、3DRegNet
3DRegNet提出一个统一的深度学习框架,首先对于点云中的内点和外点(噪声)使用交叉熵损失函数进行分类,并对内点的集合使用可微分的Procrustes方法计算姿态(回归),完成点云配准。
3DRegNet方法不需要初始化,同时解决内点分类(直接预测清晰的对应关系)和变换参数估计(回归计算姿态),来实现点云配准。
对于提到的可微分的Procrustes方法来估计姿态,其实本质就是存在内外点问题的SVD方法。该方法首先过滤外点,并将内点的质心移动到原点,再进行SVD工作,最后计算平移向量时也使用内点平均位置减旋转后内点平均位置。(保证一切姿态依据内点计算,而不考虑外点)
2、Kabsch-Umeyama算法
Kabsch-Umeyama算法和ICP算法在流程上基本相近,KU算法用于计算已经对应好的两个点云间的变换关系。ICP是使用迭代的方式,从源点云逐步对齐到目标点云。前一个是输出变换关系,后一个是通过每一轮的变换关系来逐步优化到两者点云对齐。
算法流程:
输入原点集X,目标点集Y,输出旋转矩阵R。
(1)计算内点的质心,并根据内点质心进行中心化(与质心作差)得到新的点集
(2)计算协方差矩阵
(3)对H进行SVD分解,
(4)计算旋转矩阵
(5)如果,返回R
(6)否则,
(7)计算平移矩阵
建议看这个:https://zhuanlan.zhihu.com/p/532444005
3、InfoNCE损失函数
InfoNCE(Information Noise Contrastive Estimation)损失函数是一种用于对比学习的损失函数,一般用于训练无监督学习模型,核心是通过对比正样本和负样本来学习数据的表示。
InfoNCE目的:最大化正样本与当前样本的相似度,并且最小化负样本与当前样本之间的相似度。
一般的InfoNCE损失函数如下:
其中代表当前样本,代表正样本,代表负样本,代表样本a和b之间的相似度(一般使用余弦相似度,但该论文并没有使用),代表温度参数,用于控制分布的平滑程度。
三、相关工作
1、基于对应关系的配准
这一段可以看做是更关注局部关系。
对于以往的基于对应关系的配准有,基于关键点检测和局部描述子(3DMatch)、注意力机制来聚合上下文信息(Predator),但大多数都是优化匹配点和非匹配点的特征间对比损失,并依赖后处理来选择正确的姿态。
2、全局配准工作
DCP->IDAM、PCAM->PointNetLK->OMNet
这些网络更关注全局的特征匹配上。
3、过滤问题
由于基于对应关系的方法中,一定会存在一定的异常值,所以通常使用RANSAC来过滤错误的匹配。
但同时由于RANSAC方法,是一个非差分算法,无法在训练中反向传播优化,所以在训练过程中只能进行点对特征的匹配,不能进行点对的过滤,导致一直存在错误点对。
对于这个问题,3DRegNet通过直接回归清晰的对应关系,来进行配准,而不去过滤错误点对。
4、Transformer
近期Transformer主要使用自注意力机制加交叉注意力机制来进行源点云和目标点云之间的交互和提取信息,也是达到一个全局提取特征的工作。
四、REGTR网络
1、降采样和特征提取
首先对输入的源点云和目标点云进行降采样,通过KPConv+残差结构(两侧共享权重),得到关键点(少于原来的点数量)和D维特征(一般取256维),也就是将几何空间线性投影到一个256维的低维空间。
Backbone结构对于不同的数据集的处理如下:
2、Transformer 交叉编码器
编码器部分由六层编码器块组成,每个编码器块中,位置编码由正弦函数对关键点三维坐标进行编码,且多层编码器块中位置编码不变(作为权重)。每个编码器块由三个部分组成,多头自注意力层,多头交叉注意力层、前馈神经网络。在六层编码器块中输入输出维数固定。
多头自注意力层:点云内部上下文特征交互
多头交叉注意力层:两个点云交互,用另一个点云的特征更新当前点云特征。
注意:源点云和目标点云自注意力层的输出均会加和(不是concat)分别作为两者交叉注意力层的输出(GeoTransformer也是这么做的,当时没有注意到,由于输出维度相同,所以通过加和提高点云之间的几何信息)
前馈神经网络:一共两层线性层,使用残差结构相连,第一层结束后通过dropout,激活函数(代码用的ReLU)+bn。
Transformer为什么要用FFN?
FFN结构一般来说是两层线性层,先增大维数,再转回原来维数。
提高特征提取能力:通过增大维数,升到高维空间。通过非线性变换,增强特征表达能力。
防止模型退化:引入ReLU这种激活函数,防止Transformer再多次迭代后变为线性结构,通过引入非线性变换,保持复杂的表达能力。
提高计算效率:由于线性层可以并行计算,这也使得在GPU上可以并行处理,相比于使用RNN来说,这种简单的方法更加有效的提高效率。
增加位置独立性:由于自注意力机制捕捉输入序列中不同位置关系,但不能完全消除位置间的依赖,所以通过FFN非线性映射,来进一步减少位置间的干扰,使得各个位置更加独立。
网络模型中的字母解释:
:输入点云
:backbone输出的关键点点云
:backbone输出的关键点特征
:Transformers编码器器输出的特征
:解码器输出的关键点点云(两种方法)
:没有经过解码器,通过全连接层输出的重叠分数
:最终的关键点点云和重叠分数,通过源点云和目标点云concat而来
3、输出解码器
REGTR使用了两种方法用来回归出关键点坐标。
注意:关键点坐标计算的公式的对应性。
(1)回归法:通过两层MLP直接回归出变换关键点坐标。使用backbone输出的X关键点特征回归Y的关键点,X变换后关键点回归相反。
(2)单头注意力法:
使用单头注意力层计算变换后的关键点坐标。backbone输出的关键点特征分别作为query和key,backbone输出的X关键点点云作为value。X变换后关键点回归相反。
对于单头注意力机制法,在RTE和RRE指标中较好,RR的效果较差。
另外,引入重叠分数作为后续刚性变换估计的权值,重叠分数利用带有Sigmoid激活的全连接层,输入Transformers解码器输出的特征,输出重叠分数。
4、刚性变换估计
首先concat两轮的关键点作为最终的关键点,concat两路的重叠分数作为最终的重叠分数。
姿态估计使用Kabsch-Umeyama算法,通过两个点的坐标来最小化下式:
KU算法对于该网络的优化如下:
5、损失函数
损失函数中的字母解释:
:代表原点云X中第i个点的真实重叠标签
:代表经过下采样后的真实重叠标签
:代表真实的刚体变换(论文中的花体T)
:最近邻算法
:重叠阈值
损失函数由重叠损失,对应损失,特征损失三部分构成。其中
(1)重叠损失:用二元交叉熵监督预测重叠得分,下面每一个损失函数公式只计算单边,但每个损失都是源点云和目标点云相应损失函数的和。
其中用进行下采样得到,下采样使用KPConv中的平均池化,并保证与KPConv的参数一致。关键点下采样的可视化图
真实重叠标签,值要么1,要么0,如果原始点云经过真实刚体变换后与目标点云Y中最近邻点的距离小于预定义的重叠阈值,则取1,否则取0。
(2)对应损失:加权平均的L1损失,作为权值。其实就是源点云backbone输出的关键点经过真实刚体变换后与目标点云decoder输出的关键点作差,另一条路对应损失相对。
(3) 特征损失:使用InfoNCE损失函数鼓励网络在计算对应关系时考虑几何属性。InfoNCE损失中的相似度计算使用log-bilinear模型。
对于正负样本的处理,规定为与点x匹配的目标点云中的点(正样本),为与点x不匹配的目标点云的点(负样本)。
和是由样本边界来确定,以内作为匹配点的边界,之外作为非匹配点边界,中间区域作为模糊处理。
的值设置为,的值设为,其中是backbone最后一层下采样层使用的体素距离。
特征损失公式如下:
相似性度量计算如下:
其中,表示Transformers编码器输出的特征,表示一个可学习的线性变换矩阵,被参数化为上三角矩阵和其转置之和。
为什么没有使用余弦相似度或者L2范数作为度量?
一方面是关键点稀疏,不太可能在两个点云的同样位置,几何特征也不同。另外transformer层加了点云坐标的位置编码,所以特征中包含了关于点云位置的信息,这种位置信息也有助于模型捕捉点云的刚性约束。所以我们使用这种对称结构的相似性度量来作为特征损失中的一部分,保证特征之间的相互关系。
五、实验
1、对比不同模型评估性能指标
基于3DMatch和3DLoMatch比较3DSN、FCGF、D3Feat等模型,评估RR、RTE、RRE、CD等性能指标,均达到SOTA性能。
2、算法时间比较
比较不同方法的时间比较,在保证前处理、特征提取、位姿估计三步骤的情况下算法时间最短,而OMNet方法没有前处理,时间最短。
3、位置编码问题
在没有使用位置编码,模型的RR、RRE、RTE指标均有显著下降,通过正弦位置编码,效果最好,并且参数量少,另外也使用了5层MLP网络使用深度学习的方式进行编码,但参数量多且性能略低。
下图基于3DMatch和3DLoMatch两个数据集,在Dec.(解码器方法)和Pos.(位置编码)上进行评估,Dec.有Wt.(加权方法也就是自注意力机制法)和Reg.(回归法)两种解码器方法,Pos.有None,Learned(基于深度学习),Sine(基于正弦)三种编码方法。
论文参考:https://arxiv.org/abs/2203.14517v1
代码参考:GitHub - yewzijian/RegTR: End-to-end Point Cloud Correspondences with Transformers