赞
踩
研究方向为点云处理方向的,该系列笔记包括了研究生期间阅读的论文(分割方向、变化检测、配准等),本文仅包含了配准方向的论文笔记,如果有阅读量会继续更新其他方向的笔记。其中的部分内容可能由于知识短浅会带来错误的见解(仅供参考)。
多模态:对于不同的数据类型(图片、文本)来说,就是不同的一个个模态
多模态研究就是想要将这些不同模态的数据相互关联上(模态数据往往是多对多的。一张照片可以对应多个文本描述,一个文本描述可以对应多张照片)
常见的三种应用方向:生成、问答、检索
对于前两种是非常需要attention机制,比如给了一张照片,生成一句话。attention机制会给你一个侧重的地方去生成。而不是对于图片中的每一个像素点都需要生成。
第三种则更和想要研究的有关。在给定了一句话并理解了以后,在图片中找到特征和这局话特征相近的图片。
两种常见的跨模态模型
由于1无法得到清晰的embedding导致使用的时候需要计算N*M个的结构,而右侧只需要计算N+M的结果,所有主流方法还是右侧。那么就可以知道主要的难点是来自于各个模态下学习的embedding了。
在correct的基础上加入一个判别器用于判断是embedding是图片还是文本。这样就生成了对抗性的网络结构(GAN),我感觉这个GAN的网络结构就像三元组生成后一对相同的一对不相同的一样。通过相同的靠近,不相同的远离去生成在不同模态下的相似的表征空间。
最终的学习到的embedding空间应该有的性质
下游业务的微调指的是大模型学习到了很多基本的东西,但是这些东西是不具有某些特点的普遍的东西,比如学习到了基础的语法,学到了小米是食物。但是在下游业务中需要学一些特定的东西,比如小米和华为都是手机,在某些语义中可能是相似的。这就是微调。
对比学习即三元组方式的架构进行loss
增加负样本以得到更好的训练效果,负样本的构建只需要和batch中其他的不同类别的组合即可。那么如何得到大量的负样本呢?增加batch的size。但是batch的size过大的话就会导致GPU的显存不够。
在之前提过了一个方法是维护一个很大的池子,将历史的一些batch的数据存下来,然后被采样到K后更新。但是这样会导致K是过时的,且来自不同的时间,而之后Moco(Momentum Contrast)提出了基于动量更新的动态编码
将点云这个结构和图像进行多模态的学习。上面做的loss是为了消除点云的置换不变性,再后面的loss是为了消除不同模态间尽管在一个实数区域却并没有相联系的问题。经过学习可以让3D点云和2D图片在那个维度的特征空间中能够互相表示,这是多模态任务的典型做法。
在这里的零件分割中,我认为的是直接把某个点云的网络作为Crosspoint的backbone,然后进行某个数据集的training,然后再从crosspoint中把这个参数提取出来,然后再次作用即可。
在训练完成后,将上面的网络模型提取出来,然后对输出的特征利用一些分类器做下游任务(分类,语义分割等)
由于点云大多数是来源于某一个扫描仪,以扫描仪为中心建立的点云坐标,而作为一个三维物体,有很多的阴影是在某一个特定角度下无法扫描到的,因此提出点云配准用于将两个点云进行合并拼接,得到完整的3D场景,此外点云数据的采集会带有传感器的噪声值和异常值,以及由于视角的不同,点云仅有部分重叠,导致配准有很大的难度。
①基于优化的点云配准框架:通过输入两个点云,然后对应搜索和变换估计迭代,得到最小的误差,此时的T即为变换矩阵。
对应点搜索:找到源点云和目标点云对应的点,然后变换估计则是利用对应关系来估计变换矩阵。不断迭代找到最佳的变换。
②基于特征学习的点云配准框架:通过输入两个点云,利用深度学习对特征进行估计,然后再利用类似①中的方法进行迭代,得到T。
通过深度学习的网络获取点云中的特征,然后利用这些有显著区别的特征点来估计对应关系,比如利用pointNet++来各自输出了5个点,发现其中A和B的哪两个点有较为类似的点(包括周围信息)特征,可以估计这两个点分别对应。然后估计两个点云的对应关系,也可以类似语义分割,还原回所有的点,再去找。
③一个基于端到端的点云学习配准框架,也就是完全的深度学习的做法,将两个点云输入,利用深度学习直接得到T。②中算法后段和①中结合。
①
②
③
一种利用transformer的对应匹配的网络
文章选择了DGCNN提取点云各点的特征以及其附近信息的特征(initial Features),得到了各个点云中各点的特征后,就是通过这些特征点进行对应点的匹配,那就需要将两个点云中的各个点进行相互联系。因此使用attention机制,解释一下co-attention,这个共同注意力机制就是将两个序列的数据产生一个交互作用,比如在视觉问答时,通过输入的一句话,然后查看图片输出answer就是这样的一个过程。通过co-attention,将文本与图片的部分关联起来,当提问到某个词的时候,就会观察图中的某个地方。
此处想要将两个点云交互起来,就利用了co-attention结构,比如在X点云中有尖锐的部分(通过特征得到的),就会和Y点云中尖锐的部分关联起来,在之后的pointer中,就会把X的这部分点分配更大的P给这一部分的Y。
一种双分支解耦刚性变换的端到端的网络。
创新点:
①双分支结构分别解决旋转和平移矩阵。
由于旋转和平移的结果都是通过同样的特征进行回归得到的,而只用一个分支难以解决两个问题,同时旋转的结果使用四元数表示,与平移距离的解空间不相同,因此使用一个分支进行回归容易导致两个矩阵的精度难以兼顾。
为了使分别提取的特征拥有各自的性质,因此设置的损失函数为各分支对其自己的任务敏感,对彼此的任务不敏感,因此类似三元组损失提出了下图损失函数,最终达到的理想效果为各分支的特征提取网络权重不发生改变,且注重于各自的任务。
②在提取特征时插入了几个交互模块,使提取出的特征互相关联。
没有加入交互的特征提取器中,对于部分重叠的源点云和目标点云,编码器更倾向于提取相似的特征。然而,这样不仅会导致特征关注点不明确,无法有效利用点云的几何特征,还会增加后续刚体变换参数回归的难度。在加入了交互的特征提取器中,输出的特征有着显著的差异,同时,加入了交互的特征提取器中会在不同的迭代中关注输入点云的相同区域。而不像未加入的特征提取器,没有显著的关注点。
③利用转换灵敏度损失来获得注重旋转和注重平移的特征。
一种利用重构提取有力特征,利用特征对齐进行点云配准的端到端网络。
通过两个任务进行,一个任务用于训练encoder,通过decoder解码还原,然后损失函数为倒角距离损失函数以及实际变换和估计变换的差值,以通过无监督学习的方式得到一个好的encoder,在这个的基础上,通过另一个任务,计算特征的差异r,同时计算雅克比矩阵,更新变化参数θ。
实际上另一个任务也是通过梯度下降得到好的θ,不过不是利用了深度学习的框架了。而是用的优化算法的框架。
网络架构主要是两个任务,第一个任务深度学习的形式是为了无监督学习到好的一个encoder,这个encoder中要包含了刚性变化的信息,另一个任务是优化算法的形式,通过最小化特征的差异,不断迭代优化变换参数,得到最优解。
为什么另一个任务直接用优化算法就可以得到好的结果,我认为是有第二个损失函数的功劳,第二个损失函数在通过学习后,习惯了优化算法的一个解法,他发现了优化算法是什么样的解法后,将encoder的embedding尽可能的变成这种情况。实际上还是由于两个任务不是互相独立的,在不断的迭代中,任务一是能够获得每次优化算法的结果的,如果是只有一次迭代的这种相互独立的,那么一定是没有好的效果的。
一种提取特征并由深度神经网络进行配准的端到端网络
简单的特征抽取后拼接并通过全连接层得到变换。并在此基础结构上加上了多次迭代的过程。
一种利用Gumbel-softmax得到梯度的硬匹配的网络。
特征抽取后利用了transformer进行特征修正,然后是一个软匹配的过程。整体和DCP基本一样,在此基础上将软匹配Pointer改为了硬匹配,主要公式为原来的基础上onehot(argmin(现在)),现在是在原始的softmax上加上了一个学习的温度系数,组成了actor-critical机制,一方面通过价值函数学习网络参数,一方面调整价值函数中的一部分参数(温度系数)。
这里的最终的反向传播还是按照现在,因为实际的onehot(argmin(现在))是不可导的,因此无法反向传播。文中验证了使用估计的损失函数是可以贴近实际的损失函数的。因此可以这样,这样子让PRNet相对于DCP能够有尖锐的映射函数的同时,又能够进行反向传播。
得到的可以该表的温度系数,使在不同的迭代回合中能够自适应的得到最好的更新的情况。
三个子损失函数分别为①好的变换效果,②满足变换的一致性,正变换和逆变换是满足的,提高稳定性,③让两个点云的特征尽可能靠近,有利于点云的语义学习。
创新点:
在反向传播时用连续函数逼近硬匹配的函数。
在网络架构中引入了actor-critical的机制
重参数化:
重参数化我认为是采样的时候会导致参数的信息丢失,因此先将参数剥离之后采样,然后再将参数放回的一个过程,比如当前z服从N(2,4),如果直接对z进行采样得到结果是无法反向传播的,比如z=3,此时无法知道z和θ有什么关系,但是设为ε未N(0,1),然后z=a(θ)ε+b(θ)就知道采样的结果和θ的关系了。
Gumbel-softmax:
首先有Gumbel Max即 a r g m a x ( l o g p i − l o g ( − l o g ε i ) ) arg max(logp_i - log(-logεi)) argmax(logpi−log(−logεi))输出i的概率是等于pi的,其中εi是服从均匀分布U(0,1)的。此时就相当于已经把 p θ ( z ) p_θ(z) pθ(z)的θ参数去掉了,变为了从U(0,1)上采样。
而本文需要锐化的映射,也就是one hot(argmax(φxφy+gij)),但是这里在里面还加了一个softmax,我没搞懂,只能用如果没有softmax,λ就没有用处解释,无法很好的进行知识蒸馏,而onehot(arg max(pi - log(logεi)))是光滑逼近softmax(pi- log(-logεi))的,因此在回传的时候可以用softmax进行回传。
引用:https://kexue.fm/archives/6705/comment-page-1
后记:是为了在采样中保留分布的情况,留下其余点的pi用于更新网络,当采样后得到了i点,如果是随机采样的话,那么反向传播的时候就只能把z关于pi的导数变为1了,丢失了其余的所有点的梯度信息,又或者是top-K,此时如果不把pi作为权重,就看做了所有的top-K中的点的梯度都是1,不仅丧失了top-K个点的梯度差异同时也丧失了非top-K的梯度。但是如果用Gumbel-Softmax进行采样的话,就能够保留住每一个pi,并在反向传播的时候都用到,如果温度系数过小,就会得到二值化的pi,就意味着要舍弃非使用的梯度,如果温度系数过大,则会得到均匀分布的pi,就意味着非常看重非使用点的梯度。2023-08-25
引用:https://wmathor.com/index.php/archives/1595/ 、https://zhuanlan.zhihu.com/p/349933379
一种提取特征利用模拟退火得到匹配矩阵并用Sinkhorn得到最终软匹配的网络。
和DCP同样的做法,但是此时的软匹配的矩阵初始化由决定,然后对匹配进行模拟退火(参数由两个点云经过网络得到确定的β和α值,也叫确定退火),当β小时,mij趋于软分配,可以避免陷入局部最优解,当β大时,mij趋于二值,接近置换矩阵,根据选择是否更新,最终找到初始匹配矩阵,同时为了引入异常点的概念,增加了一行和一列初始值为1,这行和列称为垃圾桶,对于这个新的矩阵Sinkhorn正则化(不断进行行列归一化),如果最终去除多的行列后得到的矩阵有明显的大值,则有对应点,否则则为外点。
在损失函数时加上一个希望内点多一些的子损失函数。否则整个网络最终是倾向于较多外点的。
创新点:
利用退火算法进行软匹配跳出局部最优解。
增加了一行一列作为trash bin用于舍弃异常点
具体名称是End-to-end Learning the Partial Permutation Matrix for Robust 3D Point Cloud Registration
利用Sinkhorn后进行匈牙利算法得到硬匹配的网络。
S2H中S就是RPMNet中的处理方法,H表示从软匹配映射到硬匹配M当中,具体的映射方法,首先在处理过异常值的软匹配M进行增广,将Nx X NY的矩阵增广为(NX+NY) X (NX+NY),左下角和右上角为对角阵,右下角为0矩阵。对角阵的初始化为1/var(v),然后对这个矩阵进行匈牙利算法之后,将NX X NY再裁剪出来,作为硬匹配的M矩阵,最终计算损失函数的时候以硬匹配M计算,但是在反向传播的时候调过硬匹配M用软匹配。
为什么要这样设置对角阵1/var(vi)?
对角元素是为了起到阈值的作用,对于外点来说,各值接近均值,那么var就较小,因此值较大,最终选择该点,就达到了选择外点的目的。内点同样,如果内点,有单峰,那么var就较大,因此值较小,最终不选择该点而选择其他点,就达到了选择内点的目的。
为什么要经过一个S步骤得到软矩阵后再进行H,而不是直接H?
直接进行H的话,反向传播的时候是跳过H的,作用在相似矩阵上,那么更新的就只有相似矩阵中的某一个点,而其他的都作为不用的进行舍弃了,就类似二值损失函数,事实上那么错误的分配当中也是包含了信息的,如果加上了S步骤得到的软矩阵,在软矩阵上进行了反传后再更新到相似矩阵上就可以充分的利用错误分配的信息了。否则只想要对应的点变大,那么只需要对任意的特征,相似矩阵都是1即可。
损失函数
损失函数l1和l2貌似都想要这整个匹配矩阵朝全为1的情况发展,这样貌似会使整个矩阵失效,但是实际不然,由于H步骤是通过匈牙利算法得到的,1的个数是受限的,比如总共最多有15个10,现在只有10个,l1是为了让这10个1都匹配上正确的情况,而l2则是尽可能让10个1朝15个1发展,这是两个损失函数的目的和作用。
创新点:
设计了直接监督匹配矩阵的损失函数
设计S2H的匹配流程,在各种软匹配的算法结构上有较大的提升。
解耦的双分支结构。
考虑到平移的简单性,首先进行t矩阵的回归预测,对于源点云通过多级的特征抽取网络,每次特征抽取了以后,首先对特征做交互得到δi,然后目标点云特征+δi得到新的特征。最终将得到的多个δi拼接起来做回归得到平移矩阵。
对于另一个分支的任务,首先目标点云去除平移矩阵,然后拼接后通过多层感知机得到几何空间上的一致性。其次,将之前多级特征提取的每级特征拼接起来相减后进行最大池化得到特征空间上的一致性,将这两个进行拼接后经过M个SCA模块,这个模块有空间注意力机制和频道注意力机制,空间注意力机制从输入经过一维卷积,通过softmax得到权重应该注意哪个空间,然后和原来的进行加权得到经过空间注意力的特征,通道注意力机制通过两个群卷积之后得到所有点的特征的权重,然后加权后作为输出。经过M个SCA的结果做以为卷积后得到对应关系,然后是加权奇异值分解。
创新点:
提出PCFD模块,逐级对齐点云特征,分解学习平移t。
CEU模块构建去除平移的对应点特征。
SCA模块融合空间和通道注意力进行分类。
分解求解旋转矩阵R和平移向量t。
一种提产生新点结构用于提取特征进行软匹配的网络。
创新点:
使用了新的点结构(自身、中心点、最远点)进行局部特征提取(准确、鲁棒)
计算时间极小
放缩点云大小
一种利用patch匹配后再进行点匹配的硬匹配网络。
首先选择点,找到配准后点云的重叠区域,然后进行最远点采样得到多个采样点,对于每个采样点,在另一个点云中找到最近邻的点作为对应点,对这些采样点和对应点找到其某个半径下的所有点,作为一个块(patch),对于这些块,采样点和对应点的patch叫做正样本,采样点和其他点的对应点的patch叫做负样本,注意通常负样本不会取离该采样点的对应点近的patch,对于每一个patch,首先计算LRF用于旋转不变性,LRF的计算首先计算中心点的法线作为z轴,然后将中心点与各点连线作为向量,投影到z轴的垂直平面后根据距离等进行加权得到x轴,然后y轴为z轴和x轴的叉乘。这个变换记做L,将一个patch中的所有点做归一化后再做L变化就是处理得到的每个patch的输出了。
然后将这个输出作为输入到整个网络架构中,首先是进行T-Net对LRF进行一些修正(由于LRF知识粗略的而不够精准),然后将得到的变换矩阵A和X相乘后,经过多层感知机得到了每个点的1024维特征后经过最大池化,得到最大池化的索引α和最大池化的值γ,然后将最大池化后得到的值γ进行多层感知机后得到f。f即每个patch的全局特征。对于对应的patch,首先需要满足d(f,f’)<阈值,其次其γ的范数都需要达到某个阈值才认为是对应的patch,在每个patch内部,a[i]和a’[i]代表了i这个全局特征认为谁和谁对应,比如a[1]=3,a[1]‘=5,则3和5是对应点 ,同样只有当γ[1],γ’[1]>某个值时,才认为对应点关系成立。这样子就达到了先粗匹配点块,然后从点块中精确对应点匹配。
为什么都要设置一个阈值?
并不是当值较小时就没有对应关系,只要d(f,f’)够小,就说明是可以有对应关系的,不过考虑到并不是小就一定有对应关系,比如都是平的墙,此时的d(f,f’)就可以很小,但是并不有对应关系,因此加上了范数的约束这个patch的特征是明显的,在这种明显的特征的情况下d(f,f’)也足够小,那么就能够说明是对应的了,同样在每个对应的patch中找对应的点也是这样,并不是小的γ值就不对应,但是小的γ值不一定对应,与其从中进行筛选,不如全部舍弃。
作者考虑到PointNet只能考虑单感受野的情况,将整个架构改成了PointNet++进行特征的提取,并且利用了多尺度的信息。同时此时的T-Net得到的转换矩阵A并不是一个正交阵,意味着得到的转换后的点云是会扭曲的,这对于PointNet++需要局部信息的情况会带来影响,因此这里改为QNet,通过产生四元数的结果代表旋转矩阵,这是GeDI描述符较DIPs描述符改进的两个地方。
网络架构,损失函数,实验方法。
with modest computation cost,sota
现有异常值剔除方法的一些缺陷
①谱匹配对于大量异常点存在问题,且仅仅依赖长度一致性会存在歧义问题。
②基于学习的算法:在提取特征的时候省略了基本的3D空间关系,在对匹配点集进行分类的时候,是对每一个点对单独分类的,再次忽略了空间关系。
随机选择最小样本
利用样本估计变换
利用该变换从全部数据中寻找内点
如果当前内点数大于最优内点数,则更新。
首先通过一个SCNonlocal,在SCNonlocal中,有一个普通的特征提取模块,然后进行归一化后再经过一个Non-local特征提取模块,该模块是将原本的特征更新加上非局部的特征,同时在其中加上了长度一致性的特征β。非局部特征事实上该点加上对所有点的一个特征的加权和。其中将三个模块分别看成咨询矩阵、回答矩阵以及本身特征含义的矩阵。咨询矩阵θ和回答矩阵φ构成了权重,在这个基础上显式结合长度一致性β,然后作为权重和含义矩阵结合,通过多层感知机后和原始特征结合后作为新的特征F输出。
其次通过一个种子模块,这个种子模块时通过MLP得到对应关系的初始置信度vi,然后使用非最大值抑制:也就是将vi排序,然后从最高的开始挑选,将vi排序中在挑选点领域的点删除,重复几次挑选出分布良好的种子。
然后通过一个神经谱匹配模块,这个模块首先将每个种子利用特征空间(因为特征空间接近更可能遵循同样的变化,其次特征空姐近但是3D空间可能远,因此产生的变换结果更稳健)K近邻找到一部分子集,然后对这一部分的子集对应点进行神经谱匹配,这里的神经谱匹配在长度一致性的基础上加上了几何特征相似性用于解决模糊性问题。β为长度一致性,γ为特征空间一致性,最终得到Mij矩阵,对于Mij进行奇异值分解得到前导特征向量e,表示了内点的可能性。
最终通过验证的模块,将得到的所有变换用于测试,找到最小的关于所有点的一种变换,然后统计最终的内点情况,并重新用新的内点计算变换作为输出。
为什么能够表示内点的可能性?
因为前导特征向量对应着最大的奇异值,其表示了Mij中主要的连接模式,所以对应的前导特征向量表示了哪些匹配对这种主要连接模式的贡献度大,因此可以作为内点的判断依据。
二元交叉熵损失函数
用于监督每个匹配点对的内点概率预测,作用在形成种子的阶段,训练之前的SCNonlocal模块得到好的特征,训练MLP在之前的特征下得到良好的种子。
BCE表示二值交叉熵损失函数即:
$ \left{ \begin{matrix} w_{i}*=[||Rx_i+t-y_i||<τ]\ L_{class} =BCE(v,w^*)\end{matrix} \right.$
L c l a s s = − 1 ∣ w ∗ ∣ ∑ l o g ( w ∗ T v ) L_{class} = -\frac{1}{|w*|}\sum{log(w^{*T}v)} Lclass=−∣w∗∣1∑log(w∗Tv)
谱匹配损失
训练SCNonloca模块得到好的特征,使都是内点的特征尽可能靠近。存在不是内点的特征尽可能远,类似于三元组的情况。
$ \left{ \begin{array} γ_{ij}^=[c_i&c_j==inlier] \ L_{sm}=\frac{1}{|C|2}\sum(r_{ij}-r_{ij})\end{array} \right.$
数据集3Dmatch训练(室内),在KITTI测试(户外)、ICLNUIM数据集测试(多路配准任务),这里的训练是包括了训练和测试,得到了模型的参数,测试是为了测试泛化能力的测试。
通过消融实验讨论了每个组件的重要性。
评价指标:
①registration recall:旋转误差和平移误差低于某些阈值的成功对准的百分比
②旋转误差: a r c c o s ( t r ( R T R ∗ ) − 1 2 ) arccos(\frac{tr(R^TR^*)-1}{2}) arccos(2tr(RTR∗)−1):
③平移误差: ∣ ∣ t ^ − t ∗ ∣ ∣ 2 ||\hat{t}-t^*||_2 ∣∣t^−t∗∣∣2
异常值剔除:
①inlier Precision = 保留的内点数/保留的总数
②inlier recall = 保留的内点数/全部的内点数
③FI-score = 2 / (1/ip + 1/ir)
在FCGF下RR、RE、TE、FI最好,在FPFH描述符下除了IP都是最好的。
在RR中是最优的,权衡了IP和IR。
FCGF是基于学习的描述符,而FPFH是基于手工的描述符,FPFH所面对的异常值的情况更加高,要求更为苛刻,因此其他所有的方法都有较大的性能退化,两种不同的描述符体现了PointDSC对不同特征描述符生成的输入对应关系的鲁棒性。
由于FCGF描述符能力较强,结果可能变化不大,因此选择了FPFH描述符作为实验的描述符。
通过重新训练(KITTI中)和3Dmatch上训练的准确率做比较,差距不大且都很高证明了泛化能力和性能。
空间一致性的加入使得最终的特征的区分能力有了大幅度的提升,描述符的相似性在内外点上有了很大的不同,SCNonlocal能够将相似性分的较开。
增加了特征的NSM模块比没有增加的只是用了长度一致性的增加了1.9%左右的准确率。
input:上一次的变换,X点云,Y点云
Output:这一次的变换
如果迭代次数没到
残差 = Rx + t - y --- n x 1
wi = ||res < τ|| --- n x 1 且为二值
num = wi求和
如果num 没发生改变
break
否则:
权重 = (1+(res/τ)^2)^-1
新的变换R, t = arg min(权重*wi*||Rx + t - y||^2)
iter ++;
利用λ1是最大的特征值得到的。 设xk = A x(k-1) 因为x0 可以被 特征向量v1 v2 ... vn表示,所以x0 = a1v1 + ... + anvn 那么就有x1 = a1Av1 + ... + anAvn .... xk = a1A^kv1 + ... + anA^kvn = a1λ1^{k}v1 + ... + anλn^{k}vn 因为λ1是最大的特征值,因此后面的v2...vn可以不用看了, 有lim xk = a1λ1^{k}v1. 利用xk+1/xk = λ1 lim v1 = xk / λ1^{k} ---a1太小了可以忽略 因此通过迭代公式 xk = A x(k-1) 能够得到特征值 λ1 = x(k+1)/xk ---随便一个分量就行 v1 = xk / λ1^{k} 但是为了防止溢出,因此总是对A进行归一化 最后有前导特征向量v1 = xk
引文:https://blog.csdn.net/qq1195365047/article/details/88703128
在较低重叠率<30%的情况下,89%recall,sota
提出了一种专注于低重叠区域特征点采样的神经架构
对于点云中的某一个点
①以其为圆心确定一个球体
②找到这个球体中的核心点,核心点携带着自己的权重矩阵
③对于这个球体中的所有点,计算其对于各个核心点的权重,然后对权重矩阵进行加权求和之后作用在自身的特征上面,
其中权重矩阵 W k W_k Wk的行数=这一层特征的维度,列数=下一层特征的维度,最终就有了从m->m’的特征维度变化。
④将这个球体中的所有点求和就是这个点的新特征。
核心点的计算方式(不妨使用rigid kernel):即正多面体的形式,以中心点x在球体内做一个多面体,权重矩阵貌似是通过学习得到的。
如果需要可变的kernel,就增加一个偏移量,这个偏移量是由偏移层通过输入的点进行预测达到的。也就是说这个偏移层是可以学习的。
init(): 定义并初始化参数:卷积核点数,输入输出通道数,感受野半径等 如果是可变形卷积,还需要初始化偏移卷积层offset_conv和偏移bias 调用reset_parameters()方法初始化权重 调用init_KP()方法初始化卷积核点 reset_parameters(): 使用kaiming均匀初始化权重 如果是可变形卷积,将偏移bias初始化为0 init_KP(): 根据感受野半径和卷积核点数,采样生成卷积核点 将卷积核点作为不可训练的参数保存在self.kernel_points中 forward(): 生成偏移量offset (如果是可变形卷积) 获取相邻索引对应的相邻点 中心化相邻点,使其相对于中心查询点 将偏移量应用到卷积核点上,得到变形后的卷积核点 计算查询点、相邻点、变形卷积核点之间的欧式距离 根据距离计算核函数权重all_weights 将相邻点特征与权重矩阵相乘得到加权特征 将加权特征与卷积核权重矩阵相乘实现点卷积 求和得到卷积输出 返回卷积输出特征
P ′ : s u p e r P o i n t 中的点的空间坐标, X P ′ s u p e r P o i n t 的点特征 P':superPoint中的点的空间坐标,X^{P'}superPoint的点特征 P′:superPoint中的点的空间坐标,XP′superPoint的点特征
X G N N : 通过了多层 G N N 后得到的特征 , X C A : 通过了交互注意力机制得到的特征 X^{GNN}:通过了多层GNN后得到的特征,X^{CA}:通过了交互注意力机制得到的特征 XGNN:通过了多层GNN后得到的特征,XCA:通过了交互注意力机制得到的特征
F P ′ : 再次通过 G N N 后得到的特征 , o P ′ :通过对 F P ′ F^{P'}:再次通过GNN后得到的特征,o^{P'}:通过对F^{P'} FP′:再次通过GNN后得到的特征,oP′:通过对FP′投影到了一维空间得到的重叠得分,代表了P’中某点在重叠区域的可能性,利用特征的相似性对另一个点云中的重叠得分进行加权,得到P’中某点的对应点在重叠区域的可能性 o ^ P ′ \hat{o}^{P'} o^P′。
F P : F^P: FP:通过了decoder之后的特征, m P m^P mP:P中某点被正确匹配的可靠性, o P o^P oP:某点是重叠区域的可能性。
{
d
i
j
=
∣
∣
∣
x
i
−
x
j
∣
∣
−
∣
∣
y
i
−
y
j
∣
∣
∣
β
i
j
=
[
1
−
d
i
j
2
σ
d
2
]
+
γ
i
j
=
[
1
−
1
σ
f
2
∣
∣
f
i
ˉ
−
f
j
ˉ
∣
∣
]
+
M
i
j
=
β
i
j
∗
γ
i
j
\left\{ dij=|||xi−xj||−||yi−yj|||βij=[1−d2ijσ2d]+γij=[1−1σ2f||¯fi−¯fj||]+Mij=βij∗γij
数据中存好了每一层的情况
dict_inputs = {
'points': input_points,#列表,包含多个层的点坐标信息
'neighbors': input_neighbors,#列表,每层的查询点的KNN索引
'pools': input_pools,#列表,每层的点索引,用于下采样
'upsamples': input_upsamples,#列表,每层的上采样点索引
'features': batched_features.float(),#输入点云的特征
'stack_lengths': input_batches_len,#每个样本的点数
'rot': torch.from_numpy(rot),#变换的旋转矩阵
'trans': torch.from_numpy(trans),#变换的平移向量
'correspondences': matching_inds,#点之间的匹配索引
'src_pcd_raw': torch.from_numpy(src_pcd_raw).float(),#源点云的原始坐标
'tgt_pcd_raw': torch.from_numpy(tgt_pcd_raw).float(),#目标点云的原始坐标
'sample': sample#标志是否需要采样
}
encoder:多个KPConv聚合附近点信息然后一层一层进行下采样,最终得到superpoint
attention:利用GNN首先进行k近邻的一个强化上下文关系(对于超点x,其附近k个点xj,将x和x-xj拼接后通过线性层进行特征映射,然后做最大池化得到由附近区域形成的显著特征),共做三次,然后通过交叉注意力机制,首先对于P点云产生Q1K1V1,对于Q点云产生Q2K2V2,然后产生P中i点关于Q点的加权结果,fxi = softmax(qi K2) V2,fxi’ = fxi’ + fxi,再次进行k近邻的一个强化上下文关系,得到 F P ′ , F Q ’ F^{P'},F^{Q’} FP′,FQ’,将特征投影到Nx1作为重叠得分oP’,再利用特征相似性作为权重,作用在oQ’,作为 o ^ P ′ \hat{o}^{P'} o^P′,表示P‘的某个点的对应关系在重叠区域的可能性。将三者进行拼接后送到decoder。
decoder:根据原先encoder的各个对应层的点进行一个还原,对于新增的点,利用k近邻找到非新增点之后,利用距离加权各自特征后求和得到的特征作为新增的点的特征,同时把encoder对应层的特征和现有特征进行拼接,然后利用MLP修改特征。最终得到 F P , m P , o P F^P,m^P,o^P FP,mP,oP。
三个损失函数:
使正样本靠近,负样本远离,同时根据相似性和margin的距离进行加权,γ在3DMatch中取24。作用在特征生成上, d i j d^j_i dij为 ∣ ∣ f p i − f q j ∣ ∣ ||f_{p_i}-f_{q_j}|| ∣∣fpi−fqj∣∣
$ \left{ \begin{matrix} d_{ij}=||f_{p_i}-f_{q_j}||2\hspace{15.3cm}\ β_pj=γ(d_ij-△_p),β_nk=γ(△_n-d_ik) \hspace{10cm}\ L_cP=\frac{1}{n_p}\sum{log[1+\sum_{j∈ε_p}{e{β_pj(d_ij-△_p)}}·\sum{j∈ε_n}{e{β_nk(△_n-d_i^k)}}}]\hspace{3.3cm} \end{matrix} \right .$
作用在重叠得分的生成上。如果某点经过变换后和其最近点的距离<ro,则 o ^ p i = 1 \hat{o}_{pi}=1 o^pi=1,否则为0。使opi朝着重叠部分靠近。
$ \left{ \begin{matrix} \bar{o}{p_i}=[||\bar{T}PQ(p_i)-NN(\bar{T}_PQ(p_i),Q)||2<r_o] \hspace{1.3cm}\ L_o^P=\frac{1}{|P|}\sum{\bar{o}{p_i}log(o{p_i})+(1-\bar{o}{p_i})log(1-o_{p_i})} \end{matrix} \right .$
作用在匹配可靠性的生成上,这是一种动态生成正样本的损失函数。
如果真实变换后的pi和在特征空间中和pi最近的Q中的点的距离<rm,则说明这个点是可靠的,则 m ^ p i = 1 \hat{m}_{pi}=1 m^pi=1,否则为0。
$ \left{ \begin{matrix} \bar{m}{p_i}=[||\bar{T}P^Q(p_i)-NN_F(p_i,Q)||2<r_m] \hspace{3.2cm}\ L_m^P=\frac{1}{|P|}\sum{\bar{m}{p_i}log(m{p_i})+(1-\bar{m}{p_i})log(1-m_{p_i})} \end{matrix} \right .$
使mpi朝着生成的特征区分度高的情况靠近。
对于一些特征不是那么突出的点,比如平地,产生的特征可能就不会和Q中对应点的特征产生在一起,而对于一些特征比较明显的点就会容易和Q中对应点的特征产生在一起。
匹配可靠性的损失函数等几个时期后再添加,因为此时产生的特征更加有意义。
数据集:3DMatch、3DLoMatch(在3DMatch上产生的重叠区域低于0.3的数据集)、ModelNet40,odometryKITTI。
评价指标:
①registration Recall:
②Feature Match Recall:提取点云描述符,将匹配成功(对应点对的特征距离最近且小于阈值)的点对数/总对数。
③Iinlier Ratio
④ECDF:所有点云集合中,每对点云重叠面积占比超过x%的数量/总数量
⑤rotation Error
⑥translation Error
⑦Chamfer distance:倒角距离
丢弃了预测在重叠区域概率小于0.5的点,有71%的低重叠点云其重叠区域达到了30%的阈值,平均在3DLoMatch上重叠面积提升了133%,在3DMatch中重叠面积也提升了50%以上,这意味着本文中的PREDATOR对于非重叠区域的预测是准确的,将非重叠区域去除后,能使重叠的区域比例大幅度上升。
通过将两种采样得到的兴趣点用于评估。top-k通过将o和m乘积后的值选取最大的k个点,而prob则是按照乘积后的值作为概率进行抽样k个。两种策略都可以达到有较好程度的内点率以及配准回归率。但是通过内点率和召回率可以发现,top-k确实找到了较多的内点,但是由于内点的聚类在了一起,导致召回率反而没那么好,而prob抽样由概率得到的配准效果反而更好,此处提出了使用非最大值抑制结合(并未实现),在PointDSC中也有类似的提到了由于聚类在了一起导致效果不一定好的问题。
PREDATOR从各个方面都完成了超越。不论是在高重叠和低重叠情况,这表明了PREDATOR的机制主要是集中在重叠区域而并非挑选描述符。
针对于专门为ModelNet数据集调整后的一些方法,PREDATOR依旧能够竞争,同时在低重叠率的RRE上进行超越。图九展示了采样的重要性。
和sota比,和其性能相当。
ov:将预测的重叠区域概率上采样到原始点云密度
xov:将预测的交叉重叠区域概率上采样
cond:skip-connect
ov能在原基础上提高RR1.5/3.9%,
描述符生成网络,sota
①利用点对特征,不受旋转变换的影响。
②对于最大池化后的特征通过重构得到原始PPF的网络结构,使得产生的描述符codeword不得不含有强大的独特的特征
③无监督学习
①有监督的(需要大量标注数据)
②对于6DoF(旋转、平移)敏感
③手工干预
④描述符的性能差
在Folding中的graph layer是对每个点的邻域进行K-NN连接并进行局部最大池化作为特征,最终通过1D卷积进行特征升维。
为什么能够还原回去?
我感觉存疑,首先最大池化的时候将点的所属信息丢失了,就算最终得到的是高度抽象的特征,比如是桌子,桌子有没有腿,有什么花纹,那在还原的时候还是独立还原的,这有怎么控制每一行是什么,就算不是独立还原的,对于泛化能力来说肯定也是非常差的。
独立还原应该没啥问题了,2D网格从小到大可以表示还原各个点对应要还原的部位。不过泛化能力应该是很差的。
最终的一个patch的输入特征为N-1*4,其中4个特征分别为:
①xr法线和xr,xi连线的夹角,②xi法线和xr,xi连线的夹角,③xi法线和xr法线的夹角,④xi和xr连线的具体,这样子得到的PPF(point pair Feature)是通过相对关系得到的,对旋转、平移都是不敏感的。且PPF包含了两个点的完整的相对几何信息,没有信息损失。
证明对旋转和反射具有不变性
对于n1,n2,dn来说,正交矩阵R ( R A ) T R A = A T A = K (RA)^TRA=A^TA=K (RA)TRA=ATA=K可以用同样的PPF表示,由于总存在矩阵R可以将nr旋转到z轴正方向上,而任何关于z轴的旋转和反射都不会改变z,因此任意的旋转和反射都不会改变PPF信息。
本文通过encode得到codeword,并decode得到重构的PPF特征,逼迫encoder学习怎么样从PPF中抽取最关键和最独特的信息用于产生codeword。
encoder:对初始点云提取PPF,然后经过多层感知机后最大池化,将得到的特征和每层感知机得到的特征进行拼接(得到的特征进行广播),然后再次通过多层感知机后最大池化得到codeword。
decoder:对于codeword广播为M层然后和随机的2D网格(在Folding中是从-1,1均匀取45个)进行拼接,然后经过多层感知机得到第一次folding的结果,然后再次和codeword进行拼接后多层感知机得到最终的还原的PPF特征。
倒角损失函数:
3DMatch
参考点及其附近30cm作为一个patch,由于点密度等问题,进行了下采样,使用2048个点,计算点的法线的时候,用17点邻域进行计算表面法线。
计算点云配准的方法:
先计算每个pi的codeword,然后找pi和qj对于的最小的误差,作为对应关系,然后进行刚性变换。
评价指标
内点率大于某个比率的片段/所有片段
通过不同内点率比值、不同距离阈值、点密度、z轴下的旋转的准确率都说明了PPF-FoldNet的优越性、鲁棒性、旋转不变性等。随后在空间随机采样轴和旋转角,PPF-FoldNet的各种准确率都遥遥领先。
①我认为这个网络的架构对于一些没有见过的类别进行点云配准的准确率可能会有所降低。因为对于没有见过的类别的物体场景,不知道什么是强力的特征,要怎么提取,比如是利用椅子训练的,可能对于这类的能够识别(桌子等),但是对于章鱼,西瓜等没有和椅子相似特征的就无法提取。
②对于含有其余特征的如激光强度等无法利用
③对于完整的物体结构要求较高,如果各个段不断有遮挡的话,描述符结果可能较差。
通过找到对应关系,得到刚性变换
提出了关键点检测和CPG模块,同时考虑了全局以及局部信息,对于激光雷达的点云提出了双网络级联设计。
好的关键点的条件:
①重复性好,从不同视角能稳定检测到。
②区分度高,具有代表性的局部结构,不同物体上的关键点更易区分。
③尽量均匀分布,覆盖点云的主要部位。
④数量适中,不宜太多或太少。
⑤避开无结构区域,如地面、平坦表面等。
⑥不在动态物体上,应选择场景静态背景。
创新点:
加入了全局几何约束的损失函数,有利于拒绝动态对象的关键点
s o f t p l u s ( x ) = l n ( 1 + e x ) softplus(x)=ln(1+e^x) softplus(x)=ln(1+ex)
对于源点云和目标点云,首先通过特征提取模块产生特征,对于源点云进行权重模块用于挑选N个关键点,然后对这N个关键点通过上一次的刚性变化后,找到在目标点云附近的C个点,对于源点云的N个点以及目标点云中N个点附近的C个点通过K近邻找到K个附近的点并将点位置和特征进行拼接,对于目标点云来说就是源点云的N个关键点附近的C个点附近的K个点的特征N*C*K*36,对于源点云来说就是N个关键点附近的K个点的特征N*K*36,通过空间映射模块,将各个特征映射到32维,并对附件的K个点进行最大池化得到局部的特征,然后放到对应点生产模块,产生N*C的匹配矩阵,Nij表示源点云中第i个关键点对应目标点云附近的第j个近点的权重,然后经过加权得到xi对于的yi,对于得到的配对{xi,yi},通过weight中的权重进行加权奇异值分解得到刚性变换后,然后利用这个刚性变换剔除掉刚刚得到的配对{xi,yi}中的20%,然后直接进行奇异值分解得到最终的刚性变换。
loss1确保每个点局部相似,loss2增加了全局几何约束
局部损失函数
分别计算实际的对应点和预测的对应点的差值求和,反映了每个点自己的局部匹配情况
全局损失函数
进行了两次奇异值求解的刚性变换,对于关键点求刚性变换后的点,并计算实际点和刚性变换后的点的差值求和。使变换能够更好的对应实际变换。对应着全局的情况
数据集:odometryKITTI、apolloSouthBay(旧金山区域,包括了住宅区、城市市中心等室外场景)。
初始的姿态是在真值姿态上进行随机扰动产生的。
评价指标
①RE
②TE
在KITTI中,较强的鲁棒性(最大的误差较小),duplication的RE最大值最小,其他的排不上号。
在ApollpSouthBay中有较好的改善,推测可能是由于真实的准确度比较高。第二好的平均RE和较好的角平均(dup)。
完整:提取的特征+点坐标和激光强度+特征嵌入
①点坐标和激光强度+特征嵌入
②提取特征+特征嵌入
③提取特征
DFE的效果显著。①②情况也能展现较好的竞争力。
验证CPG的作用
将原来的softmax进行的方式改成在源点云中用特征相似度得分最高的点作为对应点得到对应关系并进行刚性变换。无法收敛。
文章中认为的无法收敛的原因是因为正负样本极度不平衡的原因,
alpha经过实验发现在0.1-0.9有着相似的效果,文章认为是网络的泛化能力(此泛化非彼泛化),最终选择0.6。
关键点可视化:
由于激光雷达在z轴方向上的点云分表较为狭窄,所以使用了级联的网络,前网络注意xy平面信息(水平的分布),而后网络(在CPG的时候为1D卷积)补充z轴信息(竖直的分布)。粉色点和灰色点分别代表前网络和后网络的关键点,这些点都是非移动物体的点,而粉色大多出现在树干和杆子,灰色大多出现在地面。
CPG分布可视化:
通过不同z值的子图可以看到概率通常集中在同样的x和y上。高度的范围也不会差太多,这说明了CPG的匹配概率集中分布。
我认为对初始的姿态要求较为严格(文中平移1m以内,选择1°以内),因为这个假定点的认定使用到了初始的姿态,而之后的情况最多只能对初始的姿态有很小范围的改动。
找到对应点关系,进行点云配准的网络,sota
①利用图匹配结点而不是单点特征进行对应点匹配
②在学习权重边的时候使用transformer既考虑了自身的结构,又考虑了另一点云的结构构建边
③AIS模块进行对应匹配生成
①在ICP中易陷入局部极小值(对初始值敏感),变种花费大量的时间
②为了解决①,引入了关键点提取进行匹配,然后在关键点对应了之后利用RANSAC等方法找到多一些的inlier进行配准,但是这种方法对于重复模式敏感。
③DCP,RPM-Net,IDAM,提取的特征的可识别能力较差,导致了存在很大的错误的对应关系,破坏了配准精度。
首先通过局部特征提取模块提取点云中每点的局部特征,通过一个transformer的边生成模块得到边的权值(这个边生成模块包括了自注意力机制以及合作注意力机制,将两个点云的局部特征变为交互过的特征后将各自特征相似度矩阵作为边权矩阵),然后通过图特征抽取和AIS模块,首先根据刚刚得到的边的权值进行自相关特征的抽取,然后根据AIS中得到的相似矩阵C(抽取了行和或者列和>0.5的)进行交叉相关特征的抽取。最终得到具有自相关特征和交叉相关特征的 F x i ‘ F_{xi}‘ Fxi‘,再次通过边权产生和图特征抽取和AIS模块,得到最终的相似矩阵,并利用匈牙利算法得到硬匹配。迭代上述过程。
仅有一个关于匹配矩阵的二值交叉熵损失函数。使得寻找对应关系的能力变强。
数据集:ModelNet40
评价指标
①R-MIE
②T-MIE
③R-MAE
④T-MAE
⑤clip chamfer distance(衡量两个点云彼此之间的距离)
⑥召回率(MAE®<1°,MAE(t)<0,1)
迭代两次的结果比较
成功率100%,大多数评价指标接近0
训练阶段采取如下策略,对应点的这样子表示,如果经过地面实况变换后的X点云中xi和yj中最小,且同样有Y点云中yj和xi最小,则视为对应的点,然后剔除,再次寻找一遍。同时要满足这些距离最小的点的距离小于0.1,将这些点用于训练后,得到的模型的召回率接近100%,
70%的重叠阈值。90%的准确率。
模型的泛化能力好
AIS和边权产生器。
①将AIS中的A换成利用l2范数计算特征距离,且用e-(dij-0.5)进行正值化,sinkhorn不变。
②使用全连接和稀疏连接产生的边替代transformer产生的边。
AIS的作用非常大,transformer也挺重要。
正确对应关系的比例(黑对红错)。
①在transformer的时候为什么要用特征相似度矩阵作为边权矩阵。缺乏理论支撑,我觉得可能需要加上一个消融实验去证明一下(我本来想试一下实际的结果,看下正确匹配的点自身相似度大的点是什么样的以及另一点云中相似度大的情况,但由于电脑没有显卡运行不了)。
②还有就是这个图匹配感觉还是有点问题,就是自注意力机制和交叉注意力机制一样,并不是用真正的图进行一个匹配。
利用掩码机制拒绝非重叠点的端到端的点云配准网络,sota
①利用掩码进行拒绝异常点。
②在迭代中掩码和刚性变换互相加强。
③提出了点云数据集的关于点云配准的新的生成方式。
①关键点提取需要具有独特的局部几何特征。
②大多数方法忽略了非重叠区域的负面影响。
对于两个点云首先提取点特征fi,然后利用点特征fi提取全局特征,在最大值池化之前加上掩码用于在全局特征中除去非重叠点的信息,将两个点云的全局特征和各自的点特征进行拼接后经过多层感知机得到特征gi,gi中含有各点云中各点的信息以及其两个点云除去了非重叠点的全局信息。通过掩码机制将gi中的非重叠点的各点信息也去除后,通过多层感知机得到各个特征空间下的包含了点云各点信息和两个点云全局信息的特征,将最终维度下的特征用于预测掩码矩阵,其余维度的特征拼接后再次通过掩码机制消除非重叠点的信息。并和原来包含了点云中各点信息和两个点云除去了非重叠点的全局信息进行拼接后(我认为这个过程是提供点云中各点信息的特征和未包含各点信息的特征,让网络自己智能选择要哪种或者组合(类似Inception网络结构)),通过最大池化和多层感知机得到刚性变换。并进行多次迭代,得到累加后的刚性变换。
用于预测当前的这个点属于重叠区域的概率
用于产生好的刚性变换
数据集:ModelNet40、Stanford 3D Scan、7Scenes。
生成方式:一次采样(重叠率较高,点云是完全一样的)、二次采样(更好的模拟真实场景)
运行细节:迭代4次。从第二次迭代开始应用掩码(第一次掩码为1),共260k次训练,220k后学习率由a=0.0001到0.1*a。
①RMSE-R,t
②MAE-R,t
③RE
④TE
无论是OS或者是TS都是最好的。
在OS的RMSE输给了PRNet排第二,其余都是第一
基于全局特征的方法在变差,但是基于对应匹配的方法由于噪声提高了局部特征描述符的鲁棒性反而变好,但是OMNet仍然是最好的。
图中清楚的显示了随着迭代过程掩码的效果逐渐完善。
TS、噪声、没见过的形状。
组合:掩码预测模块M、掩码预测损失函数ML、融合层(拼接后的MLP)F、掩码预测和回归的连接C。
如果没有掩码预测损失函数增加掩码是没有意义的。说明了掩码预测不能在无监督的情况下进行训练。
在用top-k(选取掩码中概率最高的k个作为1,其他的掩码都为0)进行刚性变换预测时,效果小于用全部点,这可能和这k个分布不均有关,可以考虑非最大值抑制。
用于大规模激光雷达点云配准的稀疏到密集匹配网络,SOTA
①从稀疏到局部稠密进行匹配
②Neightborhood Matching模块用于产生邻域共识性
③多次的点对过滤
④为了防止NN搜索的大量不匹配关系,采取了取M个进行加权得到对应点。
生成置信度用于拒绝异常点的网络。
生成置信度用于拒绝异常点的网络
首先将点对输入到网络中,然后经过5个PointCN网络后,经过一个Differentiable Pooling模块,这个模块通过 H p o o l ( X l ) H_{pool}(X_l) Hpool(Xl)(这个函数就是PointCN)产生一个权重矩阵 S p o o l S_{pool} Spool是N*M,然后对 X l X_l Xl用这个权重矩阵产生M个新点,特征由 X l X_l Xl中N个点组成的点 X l + 1 = S p o o l T X l X_{l+1}=S_{pool}^TX_l Xl+1=SpoolTXl,在pool中,是M<N的,也就是类似下采样的。
Differentiable unpooling由于在Differentiable Pooling模块对于置换是不敏感的,意思是在这个过程中丢掉了顺序这一特征,因此在上采样还原时,如果直接用一样的方法,只是M>N效果并不是最优的,因此在还原的时候,针对的矩阵是还没有发生下采样的 X l X_l Xl。最终有 S u n p o o l = H u n p o o l ( X l ) S_{unpool}=H_{unpool}(X_l) Sunpool=Hunpool(Xl), X l ′ = S u n p o o l X l + 1 ′ X_l'=S_{unpool}X_{l+1}' Xl′=SunpoolXl+1′,一步步上采样回原来的点云大小。
在这两个中间加上感知空间信息的模块Order-Aware Filtering Block,这个模块主要由PointCN组成,但是考虑到了PointCN无法很好的感知空间的复杂信息,因此加上了空间相关层,类似全连接的情况,但是为了防止过拟合,一个是在通道上共享权重,也就是同样的权重作用在所有的通道上,比如第一个点生成的特征对于所有的特征都是a1+2*a2+3*a3…+an。另一个是在空间上共享权重,简而言之,就是将一个点特征作为一个点,和将所有点的每个维度的特征作为一个点的全连接层。
①稀疏到稀疏(提取关键点):受关键点影响较大
②密集到密集:消耗的时间过大,不适合在室外使用
根据成本矩阵,将原分布映射到目标分布,所需的最小成本。
m i n < C , P > , s . t . P 1 n = a , P T 1 n = b min<C,P>,s.t.P1_n=a,P^T1_n=b min<C,P>,s.t.P1n=a,PT1n=b
IPOT解法:
Sinkhorn解法:(引自https://zhuanlan.zhihu.com/p/458312488)
增加一个熵函数 H ( P ) = ∑ P i j ( l o g P i j − 1 ) H(P)=\sum{P_{ij}(logP_{ij}-1)} H(P)=∑Pij(logPij−1),则原式 = m i n < C , P > + ε H ( P ) =min<C,P>+εH(P) =min<C,P>+εH(P),当ε趋于0时,加上了熵函数的最优解等价于原式最优解,对于现在的式子,利用拉格朗日乘子法,有
L ( P , f , g ) = < C , P > − ε H ( P ) + < f , P 1 n − a > + < g , P T 1 n − b L(P,f,g)=<C,P>-εH(P)+<f,P1_n-a>+<g,P^T1_n-b L(P,f,g)=<C,P>−εH(P)+<f,P1n−a>+<g,PT1n−b
对于Mij求导有
∂ L ( P , f , g ) ∂ M i j = C i j + ε l o g ( P i j ) − f i − g j = 0 \frac{\partial L(P,f,g)}{\partial M_{ij}}=C_{ij}+εlog(P_{ij})-f_i-g_j=0 ∂Mij∂L(P,f,g)=Cij+εlog(Pij)−fi−gj=0
因此有
P = d i a g ( u ) K d i a g ( v ) , 其中 u = e f / ε , v = e g / ε , K = e − C / ε P=diag(u)Kdiag(v),其中u=e^{f/ε},v=e^{g/ε},K=e^{-C/ε} P=diag(u)Kdiag(v),其中u=ef/ε,v=eg/ε,K=e−C/ε,
因为
d i a g ( u ) K d i a g ( v ) 1 n = a 和 d i a g ( v ) K T d i a g ( u ) 1 n = b diag(u)Kdiag(v)1_n=a和diag(v)K^Tdiag(u)1_n=b diag(u)Kdiag(v)1n=a和diag(v)KTdiag(u)1n=b,
所以有
u ⨀ ( K v ) = a 和 v ⨀ ( K T u ) = b u\bigodot(Kv)=a和v\bigodot(K^Tu)=b u⨀(Kv)=a和v⨀(KTu)=b
那么就有
u l + 1 = a K v l , v l + 1 = b K T u l + 1 u^{l+1}=\frac{a}{Kv^l},v^{l+1}=\frac{b}{K^Tu^{l+1}} ul+1=Kvla,vl+1=KTul+1b
在本文中a和b都是1/k
初始化v = 1n, K = exp(-Cij/ε)
if P = diag(u) K diag(v) 不收敛:
u = a / (K * v)
v = b / (K * u)
print(P)
首先输入两个点云,然后进行特征抽取模块得到点云中每个点的特征,对于源点云,进行FPS采样,然后对于采样后的点Si,在特征空间中找到M个T点云中的最近点作为候选对应点,对于Si最近的采样点Sj,同样找到M个候选对应点,然后计算Si和Sj的距离,然后用计算Si的M个候选点和Sj的M个候选点的距离,xim的空间一致性特征等于其与Sj的M个候选点中与dij差距最小的距离,然后将(源点云Si和其的M个候选点)的特征、点坐标和空间一致性特征进行拼接,得到(3+D+3+D+1)*M的特征(源点云Si广播成M个)。然后利用MLP、softmax的带软匹配的概率矩阵,通过这个概率矩阵加权得到虚拟的对应点。
为了防止在特征空间上的错误匹配,利用几何空间上的邻域特征进行增强对应匹配的可靠性。
①将得到的某个对应点对Si,Ti,搜索其空间的k近邻构成点集S’,T’,计算各自特征距离得到距离矩阵C,将这个矩阵作为成本矩阵,然后计算最优运输CT,T的竖行和为u,横行和为v,u=v=1/k,得到最优的运输矩阵T*,执行行归一化后,将目标点云的原点特征经过T*重新加权得到f’(可以看做是在对齐点云特征),然后再次进行拼接源点云Si的邻域特征和经过变换后的Ti的邻域特征。然后MLP、最大池化后得到1*d的代表着邻域一致性特征的fn。
②利用SCNonlocal模块加上一个PointCN模块,用于拒绝异常点对。首先将上一步得到的虚拟点对投入到SCNonlocal中,计算空间一致性,将①中得到的特征计算非局部特征。然后将得到非局部特征经过PointCN,得到每个点对的置信度。
由于此时的点对较少,可以使用一些复杂的操作达到一个较高的鲁棒性和准确性的水平。
在刚刚的基础上,对于置信度高的点对,对其相邻点组合成密集的对应集(neighborhood matching中得到的T,用于对Ti进行变换,得到Si及其邻域和Ti的对应点集)。将这些对应点集的坐标,特征(注意,坐标、特征都是需要根据T进行一个变换)和稀疏置信度拼接起来作为OA-Net的输入,得到密集匹配的对应关系的置信度。然后按照置信度点对做一个加权的奇异值分解即可。
将源点云和目标点云作为输入,抽取点云中各点的特征,对于源点云进行FPS采样,对于采样后的每一个点Si,在特征空间中找到目标点云中的最近的M个点作为候选对应点,对于Si的最近点Sj进行一样的操作,然后对于Si的M个候选对应点和Sj的M个候选对应点计算dij的长度一致性,对于Si中第k个点的空间一致性即为其离Sj的M个候选对应点中长度一致性最小的值,将源点云Si和M个候选点的特征、点坐标和空间一致性进行拼接,然后利用MLP,softmax得到权重向量,通过候选对应点的加权得到虚拟的对应点,得到稀疏的对应点对。①对于某一点对,搜索其几何空间上的K近邻构成点集S’,T’,计算对应的特征距离作为成本矩阵,然后计算最优运输矩阵T*,进行行归一化后作为权重矩阵对目标点云的特征进行加权,将Si的邻域特征和经过对齐后的目标点云的邻域特征拼接够进行MLP、最大池化后得到1*d的代表着邻域一致性特征的fn。②对于稀疏的对应点对经过SCNonlocal模块(特征使用fn),对于得到的非局部特征通过PointCN得到每个点对的置信度。对于置信度较高的点对,对其K个最近邻组成密集的对应集,具体的对应关系使用最优运输矩阵T*,将这些局部稠密的对应点集的坐标,特征和稀疏置信度 拼接作为OA-Net的输入,得到密集匹配的对应关系的置信度,然后按照置信度点对做加权的奇异值分解即可。
标准的用于得到好的变换的损失函数
二值交叉熵损失函数,用于得到可靠的置信度预测。
为了使对应点距离近的置信度高,对应点距离远的置信度低。但是第二项倾向于所有的置信度都尽可能低,因此添加第一项逼着一些置信度走向高的(实际上如果没有第一项,所有的置信度都趋于0,而加了第一项,在对应点的距离较小的时候高的置信度带来的收益大于第二项,因此会变为高置信度)。
对某个对应点求导有:
f ( x ) = l n ( a − x ) + d a − x , f ′ ( x ) = x + d − a ( x − a ) 2 f(x)=ln(a-x)+\frac{d}{a-x},f'(x)=\frac{x+d-a}{(x-a)^2} f(x)=ln(a−x)+a−xd,f′(x)=(x−a)2x+d−a
对于导数来说,当对应点距离过大时,x+d-a>0恒成立,因此x尽可能小,也就是置信度尽可能小,当对应点距离d过小时,x+d-a<0,当x=a-d时最小值。当a>1,比如为1.2时,那么当d<0.2时,x均为高置信度1。
数据集:KITTI、NuScenes、Apollp-SouthBay,室外大型激光雷达点云数据集。
FCGF特征提取器,adam梯度下降法,指数衰减因子0.99,α=2,候选对应点M=4,相邻点K=8,OA-Net为两次迭代版本。
①RRE、RTE(成功的)
②RRE*、RTE*(所有点对)
③recall Registration
传统:由于初始化的问题,局部配准方法(ICP(P2P/P2PI))无法提供合理的配准结果,FGR召回率极差,Go-ICP在KITTI上的召回率低,且性能很差。RANSAC的召回率不错,但是RTE和RRE较差,TEASER达到了不错的效果但低于SDMNet。
学习:对象级点云配准DCP、IDAM结果较差。FMR高效率但由于基于全局特征优化的方法丢掉了细节导致准确性不高。DGR的结果不错但是性能很差(dense-dense的匹配方法的通病)。HRegNet是s-s的匹配方法,达到了较好的效果。SDMNet在所有的指标(两个数据集中)达到了最好的效果,性能也不差。对比HRegNet的方法甚至性能上有所超越。和最好的PointDSC比较同样有着更好的结果,且在推理速度上比PointDSC快8倍。
500-1000的提升远大于1000-1500,同时推理速度增幅较少,因此最终选择S=1000。
将软匹配置换为最近邻匹配,RTE损失了7%,删除概率损失函数,RTE增加了7%,因此损失函数对于软匹配网络的学习较为重要。
在候选对应点时,M=4好于M=2/8,这说明候选对应点过少可能无法取样到正确的对应点,候选对应点过大会带来负面影响。通过有无软匹配网络的内点率比较,确实软匹配网络有效,且最近邻搜索和本文设想的一样会丢失对应关系。
RTE和RRE分别提高了14%和39%。
在k=8的时候RTE和RRE最好。这是由于k过大时变成了非局部,导致局部邻域匹配的可靠性降低。
删除了Neighborhood matching,将传到filtering的特征fn去掉,RTE和RRE提高了16%和4%,对于没有对齐的情况下连接 f N S 和 f N T f_N^S和f_N^T fNS和fNT同样有明显的性能下降。将这个模块替换成了transformer提取fn’,同样对于fn的性能有所下降。SDMNet*为没有软匹配网络、邻域共识网络和局部密集匹配阶段。
求解算法:Sinkhorn(效率高)和IPOT(效率低)
IPOT的收敛最优解更精确,且在此处效率与sinkHorn相似。因此选用IPOT。
IPOT不同的内外迭代次数的消融
一种多级提取特征和关键点进行对应点匹配的网络。SOTA
①分层提取关键点和描述符并考虑到各自缺点进行分级还原。
②提出了双边共识性和邻域共识性以提高对应匹配的准确率。
③在进行对应点预测时充分利用了当前的信息。
以源点云为例,将所有点的特征(坐标,显著性不确定性,描述符,第一次则为原始点云),作为输入,在特征提取模块中,利用加权最远点采样选择一部分点作为候选关键点,对于其中某点xi,在空间中找到K近邻,广播xi的输入K次进行拼接,然后利用两个多层感知机分别用于权重计算(加权近邻得到实际关键点位置)和显著性不确定性(对近邻的显著性不确定性进行均值),再经过描述符生成网络产生该关键点的描述符。将这些再次拼接传给下一层。
在最后一层后连接一个粗配准的网络用于产生初始的正确的刚性变换。
具体流程为,对于源点云中的最终关键点xi,在特征空间中找到另一点云的k个近邻作为候选对应关键点,提取三个特征FG,FD,FS,第一个几何特征FG由xi广播K次和K近邻的坐标+相对坐标+距离。第二个描述符特征由xi广播K次和K近邻的描述符+xi广播K遍和K近邻的显著性不确定性,第三个相似特征FS由双边共识性和邻域共识性构成,双边共识性——计算源点云和目标点云关键点的特征相似度矩阵对该矩阵分别进行行列归一化,对于源点云中某点xi,计算K近邻的双边共识性即为{S’ij,S’'ij},S’为行归一化的,那么就有当且仅当xi的最近邻的最近邻也是xi时为{1,1};邻域共识性——对于xi,找到空间中的k近邻,将特征(相邻关键点的描述符。相对坐标和距离)进行多层感知机并进行最大池化后得到每个点的权重,进行加权求和得到xi的邻域描述符,对于这个描述符同样进行双边共识性的操作,结果即为邻域共识性。对于FG-FD-FS进行拼接后利用多层感知机后逐点最大池化softmax得到每点的权重,①和候选的对应关键点加权得到对应关键点,②和多层感知机后得到的特征进行加权得到的特征再次通过多层感知机后得到置信度分数c。根据置信度分数(源点云中所有点的c进行正则化)和对应关系进行加权奇异值分解得到刚性变换。
然后将对上一层的关键点进行刚性变换后,再进行同样的操作(由于已经大致配准的,因此此时选择的不是特征空间的k近邻,而是几何空间中的),但是由于点的数量的上升,舍弃Fs特征。一层一层的还原最终得到精准的匹配。
仅有平移和旋转的损失函数。
数据集:KITTI、NuScenes
0.3体素、adam、0.001,每十个epoch减少50%,α=1.8/2.0,
评价指标:
①RTE,RRE(仅计算成功配准的)
②Recall
在本文中最底层的关键点数约为源点云的0.5%
经过可视化以后发现在最底层的配准中如果置信度达到了0.005以上基本就可以断定是内点了,在0.0005的基础上也仅仅只有几个不匹配点。
不同的输出层数+双边共识性+邻域共识性
通过结果的分析可以看到,三层的结构确实有效的降低了RTE的误差。
而两个共识性也是有效的。两种共识性的有效性也是类似的。同时两者是达到一个互补的效果。
之前的,忘记记录了。感觉挺简单的。就是对对应点对判断内点/异常点(貌似是单个点进行分类的,那么就是没有考虑到整体的一个信息),然后利用SVD求刚性变换或者用深度神经网络回归出刚性变换。
一种利用描述符进行对应点匹配的网络。
①不同的扫描通常具有不同的视角
②原始3D扫描是不完整的、有噪声的、显著不同点的点密度。
①旋转不变的
②具有描述性的
③不含手工特征的
手工:
①无LRF(局部参考框架)方法:SIs(自旋图像)、LSP(局部表面补丁)、FPFHs(快速点直方图),这种方法缺乏局部表面的足够的几何细节(仅依赖点的法线方向或点对等很少的几何信息),这导致了对局部几何结构表示不够丰富以及在存在噪声和采样不均匀时容易收到影响。在复杂曲面的鲁棒描述能力差。
②有LRF方法:PS(点签名)、SHOT、RoPS(旋转投影统计),这种方法目前的鲁棒性不够。
学习:
旋转可变:3DMatch、3DFeat-Net、FCGF、D3Feat,这些方法需要通过数据增强来缓解对旋转变换敏感的问题。
旋转不变:Learning Compact Geometric Features(利用定向球面直方图参数化原始点云后利用深度神经网络将高维嵌入映射到一个紧凑的描述符)、PPFNet(使用旋转不变点对特征对(PPF)局部表面进行编码)、SDV(体素化平滑密度值后将局部表面编码为紧凑且选择不变的表示),以上的方法最初都是基于手工制作的,因此会限制描述符的描述性、鲁棒性和泛化性。
首先提取点云中的一系列局部特定点,然后对这些特定点的一定半径内的相邻点作为一个点集,找到点集的估计面向视点的参考轴np,然后是np和z轴对齐,并且进行中心点偏移,此时只剩下XY平面的旋转自由度了。对于对准后的点云进行球形体素化,也就是将原始的笛卡尔坐标系改变成极坐标系(ρ,φ,θ),并均分为J,K,L份,找到每个体素的中心点,在其邻域中采样kv个点,为了消除XY平面的旋转自由度,将每个体素中心点旋转至YZ平面,得到的每个体素中的点现在都是旋转不变的了,此时将其视为在圆柱容器中,对圆柱容器进行3DCNN,和正常的3DCNN不一样的是在此时的L维度的特征是循环的,可以首尾进行padding,在3DCNN后进行最大池化得到最终的32维度的描述符。
对比损失函数:正样本靠近,负样本远离。
数据集:3DMatch、KITTI,重叠超过30%
adam,α=0.001,每5个epoch以0.5衰减,共训练20个epoch。
重叠区域随机采样固定数量(5000)的锚点,对于锚点在其附近抽取2048个点作为点集。
评价指标:
①特征匹配召回率FMR:τ1用于判断点对是否匹配,如果判断的是匹配的,且确实是匹配,则为正确的,τ2用于判断点云是否配准成功的最低匹配准确率。
本文专门测试了在高旋转变换的情况下SpinNet的出色表现。
在不同的数量采样点下始终保持最好的性能,且变化不大表现了SpinNet对于采样点数量的鲁棒性。
在不同的τ1和τ2下的性能表现,在各种情况下的τ1和τ2都有着最佳的表现,同时在内点率τ2的图中可以看得出大多数的点云的对应点中,都是有着很高的一个内点率的,充分的说明了描述符的描述性。
评价指标:
①RTE、RRE
略逊于D3Feat,本文认为是由于数据集中的点云对齐的情况是良好的原因。
3DMatch-ETH:在3DMatch中训练,FMR的阈值τ1=10cm,τ2=5%,本文的性能最佳,且远超第二好的13%。
KITTI-3DMatch:最佳的性能
3DMatch-KITTI:比第二好的方法增加了一倍,同时这两个点云之间的差异说明了SpinNet对于不同传感器(点云密度、噪声等)的鲁棒性
在3DMatch训练,在3DMatch、ETH上测试。
①删除参考Z轴对齐(直接删除)+②XY平面变换(直接删除)+③Point-based layer(用体素点密度代替)+④3DCCN(MLP代替)
①②的结果表明了这两步是学习旋转不变性的关键点。特别是①步骤
③不使用基于学习学到的特征而是简单的手工特征,描述符的泛化能力是较弱的,这表明了学习到的局部特征往往比手工制作的特征(PPF等)更强大和通用
④不使用3DCNN学习更加强大的表面结构的情况下,不管是3DMatch或者是ETH都有着非常差的性能,这表明了3DCCN是保留局部空间模式的关键,也就是常说的MLP只能提取单个的特征,会丢失空间的信息。
一种利用二十面体模拟空间中任意旋转并在此基础上建立60个旋转的旋转等变特征和旋转不变特征用于进行对应点关系和新刚性变换方法的网络。
二十面体是SO(3)群的最大离散子群,本文利用二十面体的旋转来模拟SO(3)中的任意旋转,以达到旋转等变性。
最大对称性: 二十面体是所有凸多面体中拥有最高对称性的一个,具有60个对称操作。这使得它在许多几何和结构问题中具有独特的地位。
结构简单: 二十面体的结构比较简单,旋转操作之间的关系较清晰,这使得对其进行分析和研究相对较为容易。
实际应用: 二十面体的对称性在分子化学、晶体学、材料科学等领域具有重要应用。许多分子和晶体的几何结构可以通过二十面体群的操作来描述和分析。
美学和历史: 二十面体具有美学价值,其对称性在艺术和设计中也有应用。此外,二十面体作为一个数学对象,曾在历史上引发了许多数学家的兴趣和研究。
①在检测中,关键点的定义是模糊的,这导致在学习的时候没有明确的指导。
②在描述中,描述符的生成需要不受旋转的影响,依赖于LRF或者手工制作的具有旋转不变性的特征,这就导致了在噪声以及点密度改变时不具有稳定性和区分性。
③在匹配中,重复模式和点密度变化仍然使匹配器难以找到正确的对应关系。
④在估计变换中,错误的对应关系导致产生的变换的结果不理想。
本文认为定向描述符和局部选择能够全部搞定 (•ิ_•ิ)?(黑人问号脸)
在二十面体中,存在着群G包含了60个旋转,分别为自身的3个旋转以及旋转至不同的面。
对于点云中的每一个点,以半径r为阈值,找到一块patch,对于这一个patch进行60个旋转,然后利用特征提取网络得到60*nl的旋转不变特征,60代表着60个旋转矩阵,nl代表着特征的维数,对于提取的特征进行群卷积,对于某个旋转下的特征的第j个值由这个旋转自身的特征加权以及其绕3个轴以72°选择的12个旋转特征加权得到(这13个作为邻域集当前旋转的邻域集),将群卷积进行l次后,得到最终的旋转等变特征,对旋转等变特征进行平均池化后得到旋转不变特征d。
对于得到的各点的RoReg-Descd进行关键点检测,利用群卷积层和MLP得到回归检测分数sp,利用非最大值抑制找到N个检测分数最大的点(非近邻)的作为最终的关键点。
对于关键点集P和Q,以pi为例,找到在旋转不变特征中和pi最近的Q中点qj,对于pi计算 E p i ^ = ∣ ∣ F p i − P g ○ F q j ∣ ∣ 2 \hat{E_{pi}}=||F_{pi}-P_g○F_{qj}||_2 Epi^=∣∣Fpi−Pg○Fqj∣∣2,最终对于每一个关键点都有60个数值,表示着pi对各个旋转下qi特征的差异,进行多层感知机后进行上下文归一化得到各个关键点的各种旋转的相似情况,越接近均值意味着是符合的;另一部分将两个点云的旋转不变特征进行交互注意力和自注意力,自注意力时在值矩阵加上旋转相干性让点云特征关注不同的旋转,经过M次后得到旋转不变特征细化后的特征 d ( M ) d^{(M)} d(M),对于所有的p,q关键点,计算代价矩阵后添加一行列trash bin后进行sinkorn后得到最终的得分矩阵,找到具有双边共识性(对pi来说qj最大,对qj来说pi最大)的点对,最为配对的点,同时找到得分S,最终取前50%的得分值的配对的点对认为是正确的点对。
对于某一点对,首先计算粗糙的选择,因为特征F在群G中是选择不变的,找到在G中是Fq和变换后的Fp最近的g,作为粗略的旋转矩阵,得到了旋转矩阵后,对Fq和旋转后的Fp拼接后进行群卷积后做平均池化,再进行MLP后得到四元数,最终的旋转矩阵等于粗略计算的旋转矩阵和精细计算的旋转矩阵的乘积。
对于得到的n组<R,T>,利用RANSAC进行细化,只需要进行n次即可得到全局最优的最终结果<R,T>。
batch-hard loss,用于使正样本之间靠近,负样本之间远离:
旋转等变损失函数,用于使对应旋转的正样本之间靠近。
用于在粗旋转的情况下让预测得到的精细旋转更准确
l = ∣ ∣ Q u a t ( R ε ) − Q u a t ( R ε ^ ) ∣ ∣ 2 l=||Quat(R_ε)-Quat(\hat{R_ε})||_2 l=∣∣Quat(Rε)−Quat(Rε^)∣∣2
用于关键点(此处定义关键点为正确对应关系的点,且能用于估计正确的局部选择)检测的损失函数
l s = ∑ i s p i + s q i ∑ k s p k + s q k △ ( R ( p i , q i ) , R g t , p i , q i ) l_s=\sum_i{\frac{s_{p_i}+s_{q_i}}{\sum_k{s_{p_k}+s_{q_k}}}△(R_{(p_i,q_i)},R_{gt},p_i,q_i)} ls=∑i∑kspk+sqkspi+sqi△(R(pi,qi),Rgt,pi,qi)
这个损失函数最终的最小值的形式为随着△项的大小从小到大排序,前面取能取的最大值,后面取能取的最小值,因此当为正确匹配,且能够准确的预测旋转的时候,检测分数=1,其他的任何情况,都会由于△项过大=0。
用于对正确匹配对产生高匹配分数的损失函数,同时不匹配的点流向垃圾桶的函数。
l o t = − 1 ∣ M g t ∣ ∑ ( p , q ) ∈ M g t l o g ( S ^ ( p , q ) ) − 1 ∣ I ∣ ∑ i ∈ I l o g ( S ^ ( i , − 1 ) ) − 1 ∣ J ∣ ∑ j ∈ J l o g ( S ^ ( − 1 , j ) ) l_{ot}=-\frac{1}{|M_{gt}|}\sum_{(p,q)∈M_{gt}}log(\hat{S}(p,q))-\frac{1}{|I|}\sum_{i∈I}log(\hat{S}(i,-1))-\frac{1}{|J|}\sum_{j∈J}log(\hat{S}(-1,j)) lot=−∣Mgt∣1∑(p,q)∈Mgtlog(S^(p,q))−∣I∣1∑i∈Ilog(S^(i,−1))−∣J∣1∑j∈Jlog(S^(−1,j))
数据集:3DMatch(训练、测试)、3DLoMatch(低重叠率10-30的,测试)、ETH(测试)
比较对象:描述符生成器(PerfectMatch、FCGF、LMVD、EPN、SpinNet)、关键点检测器(D3Feat)、匹配器(Predator、CoFiNet)、端到端的配准方法(DCP、PointNetLK、FGR、DGR、DHVR、PointDSC)。
配准评价指标:
①RR:配准召回率阈值0.2m/0.5m,对点云集合的
②RMSE:
③TR:对某个点云的。
④TE、RE
对应点评价指标:
①IR 0.1m/0.2m
②FMR 5%
在配准质量上:在不同采样点和不同的数据集中,RoReg始终最优且高3-6%,这表明了RoReg在点云配准的有效性和稳健性
在同样是定向描述符和局部旋转的EPN和RelativeNet,RoReg有6-37%的提升,这源自于在不同的阶段,RoReg都加入了局部选择,而EPN和RelativeNet仅在某个阶段使用了,在IR上比EPN高20-50%。
尽管在对应点的情况上,对于SOTA方法CoFiNet来说FMR有所不及,但是由于在配准的阶段使用了局部选择,这使得RoReg减少了搜索空间和采样伪解的概率,且更高的IR有着更多的正确的对应关系。尽管在一些扫描对中,RoReg有着较小的Inlier值,但是由于上述的关系,仍能够找到正确的对应关系。这也是RoReg在低重叠区域RR高于CoFiNet的原因。
对于直接配准的方法,也是具有最好的性能。
在ETH上,最好的性能充分体现了RoReg的泛化能力,尽管面对SpinNet、CoFiNet专门为了泛化能力设计的也表现的更好,特别是在较低的采样的情况下,差距从1到了16%。
Des(FCGF替换)+Det(随机采样)+Mat(最近邻)+Est(普通RANSAC)
通过RoReg中不同backbone的高性能表明了兼容性。
对于Des中的两种特殊的结构进行了消融,发现了其确实对于旋转后的3DMatch有着和原来几乎一样的结果,甚至对于选择的3DMatch有了提升。在基准的网络上使用RoReg-Desc就已经能够优于现有的基线描述符了。
对于噪音的情况,本文比较了PCA+PointNet、PerfectMatch、LMVD(LRF)进行比较,在采样点减小和噪声增加的情况下,RoReg-Desc几乎没有什么影响,这证明了池化实现的旋转不变性的鲁棒性。
对旋转引导损失函数的消融,确定了提出的新的损失函数的合理性,其能保证产生的关键点在较少的情况下的有效性,在可重复性上和D3Feat的相似,但是在可匹配性上,D3Feat中相对来说更可能保留具有模糊方向的点,如柱和墙的接缝等。而RoReg能够将高分分配给具有判别性局部几何形状的区域,忽略噪声和重复结构的区域。
对旋转相干性匹配器的两种独特的结构进行消融实验,REL(旋转估计层)、RCL(旋转相干层)。可以看到在IR和RR中通过REL分别带来了4%和1%的提升,额外添加RCL能够使真实对应的特征拉近,同时推开虚假的特征,进一步将IR和RR提升了1.4-2%和0.4-3.3%。
对于选择多少的匹配点对作为正确的匹配点对,经过100%,70%,50%,20%的消融实验,发小在50%能取得较好的结果,RR再变大的改变也几乎没有了,再变小会带来略微的下降。
OSE-RANSAC的消融实验,即使在小于1K的RANSAC迭代的情况下,OSE-RANSAC也能取得更好的结果,本文对其他的RANSAC使用50k的迭代。这就说明了RoReg的O(n)的计算数量级大幅度的降低了搜索空间,避免了采样伪解的情况发生。通过实验图表明,只需要再较少的迭代的情况下,就能够完成绝大多数的扫描对的正确匹配。对于低重叠率(低inlier)的情况,也能在100次迭代时达到一个比较好的效果,这充分的说明了RoReg的搜索空间降低的程度。越在低inlier的情况下的效果越显著,如0.05的情况下,普通的RANSAC为0.05^3=0.000125,这是OSE-RANSAC空间的400倍。极限情况下假如只有一个inlier,则普通的用于无正解,但是OSE-RANSAC在较低的概率下仍能有正解。
①对于扫描对的重叠区域主要由平面点组成是,可能无法找到正确的局部旋转。
SOTA
一种在自注意力机制中插入几何特征并从超点稀疏对应到局部点对应,且从局部生成多个刚性变换用于挑选全局最优刚性变换的网络。
①关键点检测在低重叠率下的使用不理想。
②点匹配需要严格的可重复性要求,而补丁匹配放宽了这个要求。
③patch的重叠对于基于距离的点匹配的约束是更加强的,比如在3D空间靠近的点,可能在沿着表面行走的距离是很远的。
④普通的transformer进行上下文信息学习的时候是依赖点特征点,并没有利用几何结构信息,导致了学习的特征不具有稳健性,在低重叠情况下容易产生大量误匹配,在结构较弱的区域不能提供有效匹配。
①不使用关键点而是利用下采样得到的稀疏超点,避免了关键点在低重叠率下的不理想效果。
②重叠感知圆损失。
③共享几何自注意力的投影矩阵,减少计算的时间。
④放松超点对应的选择(一对一变一对多),使得在非刚性的变换中发挥作用。
⑤以前的旋转不变描述符总是基于邻域中的一些点进行构建的(不知道全局结构),而本文构建的特征是非局部的,它是利用了附近超点的信息进行构建的,同时还是旋转不变的(只用了相对距离和相对角度)。
⑥在transformer的时候显著的加上了点云内特征的几何结构和点云间的几何一致性,相比于普通的transformer中加入位置编码获得几何特征的方法,GeoTransformer由于加入的特征具有变换不变性,因此在旋转上较普通的更具有旋转的鲁棒性。
transformer的位置编码:
[sin(t/10000^1/d),cos(t/10000^1/d),sin(t/10000^2/d).cos(t/10000^2/d)…],这是一维的位置信息编码,通过不同的频率用于分辨位置。
引用:https://zhuanlan.zhihu.com/p/352233973
对于给定的两个超点pi,pj,几何特征具体表示为【成对距离嵌入;三元组角度嵌入】
成对距离嵌入是利用ρij应用正弦函数来计算的,这是参考transformer中的位置编码进行的,利用频率来进行绝对位置的刻画。
三重角嵌入:选择pi的k(这里测试后选择3)近邻,然后会产生k个由近邻和pi,pj形成的夹角,rijk,进行转换矩阵之后进行最大池化得到rij。
自注意力机制中加上了几何结构特征,具体的表达式如下,此时的rij可以看做是对于i提出的询问,j位置根据彼此的位置关系进行一个回答,而不是以往呆板的不管哪个i提出的询问都采取同样的回答。
双向规范化能够有效的降低误匹配的概率,类似于双边一致性。
首先利用KPConv-FPN一边提取附近点的信息一边进行下采样最终得到超点以及每个点的局部特征,然后进入超点匹配的阶段,首先进行自注意力机制,在自注意力机制的时候显著的加上提取的旋转不变几何特征,然后进行交叉注意力机制,进行多层后得到混合特征,对两个点云超点进行规范化后,计算特征相似性,并进行双向规范化(类似双边一致性,用于平衡查询点和匹配点的作用,抑制模糊匹配),取前K个作为对应超点,对于每对对应超点的patch,计算特征相似度矩阵,然后利用sinkhorn进行不断归一化进行异常点去除,最终找到每行中topk个和每列中topk个,如果有同为行列topk中的,就作为对应点对,最终为每一个对应patch利用其中的对应点对计算一个刚性变换,然后将挑选一个全局最优的作为最终变换。
在原来的圆损失函数的基础上,将重叠的比率也加入到了样本的权重当中,使得正确的匹配patch能够得到相似的特征和较高的重叠率。
λ是重叠率项,贝塔是距离项。具体可以参考predator。
注意不仅需要P点云的还有Q点云的。
和RoReg一样,正确的匹配对尽可能大,错误的尽可能流向trash bin。
数据集:3DMatch、3DLoMatch、KITTI、合成的modelNet40、多路增强的ICLNUIIM
KPConv+FPN在KITTI使用了5次,其余4次,几何自注意力机制和交叉共3次,4个头,σd为体素大小,σa=15°,k=3.
3DMatch和3DLoMatch:
评价指标
①IR、FMR
②RR
在不同采样点下的几乎不变的配准结果说明了GeoTransformer的鲁棒性。
能够在不进行RANSAC,只采样250个对应点关系,使用加权SVD的情况下将近达到了RANSAC-50k的采样5000个对应关系的效果。
KITTI:
评价指标
①RTE、RRE
②RR
带有几何特征嵌入的自注意力机制+重叠感知的圆损失函数+两个温度系数的超参数+角度计算中近邻数量和池化方式+双规范化
对于KNN的图神经网络,其实可以看做是较远距离的位置均为权重0且没有进行变换矩阵的自注意力机制,也能够有良好效果。
对于PPF特征来说,由于采样的超点势必会导致较差的法线情况,因此会导致较差的性能。
可以看到RDF能够得到一个较好的优化结果,而加上几何角度后能够在此基础上具有更好的性能。
双向规范化主要在低重叠区域的点云对中发挥作用,他提高了PIR,但是貌似对于RR没什么提升。
在后期细化中,迭代5次能够达到饱和。
SOTA
一种通过点云中的上下文信息进行可微采样提取重叠区域点用于对应点生成的网络。
SLAM:同步定位和映射
①较低的重叠区域
②去除非重叠对配准性能的影响
①利用Gumbel-Softmax进行分布的可微下采样进行重叠点预测。
②在EdgeConv时使用了密集连接的操作,
Gumble-softmax是为了保持原有的分布的同时,在采样之后还能够进行反向传播而设计的。
通过多次的EdgeConv提取具有邻域信息的点特征(较大的视觉野,因为多层),经过一次transformer提取非局部特征,同时结合另一点云的结构信息,通过Overlap Prediction结构,提取认为是重叠区域的k个点,再次通过Transformer进行结构的交互和特征的细化,对于点特征计算特征相似度矩阵,然后根据该矩阵找到点对关系后进行加权(相似度矩阵行中最大值)SVD。
在分布处的二值交叉熵损失函数用于得到好的重叠点预测结果。
相似度匹配矩阵处的多分类交叉熵损失函数,用于得到好的对应关系。
KNN建图,K=20,5个密集连接的EdgeConv层,Transformer输出的特征维数为512,adam,α=0.0001,150个epoch,迭代次数为2。
数据集:ModelNet40,KITTI。
重叠率:0.69、0.58、0.47、0.40、0.32。
ModelNet40
评价指标:
①MSE、RMSE、MAE 都是包括(R,t)的
KITTI
评价指标:
①RR
②RMSE(R,t)
③RE、TE
场景:①0.69干净点云、②噪声的0.69、③噪声和异常值的0.69、④噪声和不同重叠率、⑤在RPMNet和OMNet论文中生成的部分点云。
在①中最佳性能:本文认为由于结合了图的方法的特征提取和细化模块能够提取长期依赖关系以生成有区别的逐点特征,重叠预测模块可以检测点云重叠和促进精确的对应生成。
②最佳性能,③性能最佳
④
重叠预测模块:
STORM在重叠预测中,在0.3之前的任意重叠率都有几乎100%的准确率和40%以上的召回率。
特征提取方法+重叠预测模块+采样点数量+损失函数的有效性。
特征提取模块:DGCNN就是没有密集连接的EdgeConv,性能有轻微程度的下降。
重叠预测模块:采用特征的长度提取前K个作为关键点,无法找到重叠点,而重叠预测找到的几乎都是重叠点。能生成好的变换。
点数:在256时性能较差,采样在384以上就能取得满意的性能。
损失函数:直接作用在对应矩阵上的没有作用在刚性变换的好,但是在分布处的和在对应矩阵上的貌似有互补的功效,比分布处的和刚性变换的好。
SOTA
一种利用transformer生成彼此信息的特征并以此直接预测对应点位置的网络。
①直接生成点的对应点,而不是学习好的特征然后进行最近邻匹配等找到对应点(这种没有考虑到后处理的阶段,可能会导致对后处理敏感的问题)。
②所用的Transformer用于产生一组一致的最终对应点,而不是聚合特征上下文的信息。
利用KPConv进行特征抽取同时进行下采样得到关键点和特征,将关键点和特征(关键点坐标进行位置编码)分别投入到多层的Transformer当中,最终得到各点云中关键点的包含了另一点云关键点信息的特征,并对这个特征进行两层的全连接层或者是以另一点云的关键点为值矩阵的交叉注意力层。得到每个关键点的对应点,共M‘+N’个,同时对这些关键点的特征进行全连接层,使用sigmoid激活函数得到重叠置信度。并以此作为权重和之前得到的M’+N’个点对进行加权奇异值分解得到刚性变换。
①二值交叉熵损失函数用于产生好的重叠分数
其中真实重叠分数当变换后的最近邻<某个阈值时为1,否则为0
②相关点损失函数用于使找到的对应点时符合刚性变换的。
③作用在特征上的NT-Xent损失函数,用于使匹配的点的特征信息相似度最大化,不匹配的最小化。
adamW,α=0.0001,权值衰减=0.0001。3DMatch,60个epoch,batch size=2,每20个epoch将学习率减半。ModelNet40,400个epoch,batch size=4,100个epoch减半。
评价指标:
①RR、②RRE、③RTE
直接预测对应点的误差均中值为0.028远小于关键点之间的中值距离,说明了直接预测能够克服下采样的分辨率问题。
在重叠区域的预测的变换位置是高度准确的,就算是不明显特征的重叠区域的情况,而且对于非重叠区域,预测的对应点都是在重叠边界附近。同时在经过了多层的Corss层后,对另一点云中权重集中在了该点附近(重叠点的话),同时自注意力也是集中在了自己点云中该点附近。
交叉编码器层数+RANSAC+解码方案+损失函数
交叉编码器层数:在6层左右达到了饱和。
与RANSAC比较:将decode替换为RANSAC,最终得到的结果较差,同时将REGTR得到的对应点预测的结果再使用RANSAC进行修正,发现结果反而较差,因此说明了RANSAC对已经与刚性变换一致性的预测对应关系不再有利。
解码方案:将全连接层换成权重求和,得到的结果中RR略低,但是RRE和RTE更高了,我认为可能是全连接层由于是共享的参数,所以是具有刚性约束的,但是如果是权重求和,就会导致不那么具有刚性约束,导致一些退化的问题产生,RR下降。
损失函数:确实Featur loss或者使用Circle loss进行替换,都会有一些下降,如果在cross的每一层都进行损失函数,则会导致大幅度下降,因此只在最后一层使用。
一种用于在得到对应点对后进行异常值去除的方法
①由于在真实点云中,超过95%的异常值比率是十分常见的,导致了RANSAC在找最大匹配子集时需要耗费大量的时间(随异常比率的增加呈指数上升)。
②通常RANSAC不会提供最优解,且产生的解的性能是没有保障的(具有随机性),另外的提供最优解的一些方法(分支定界随N大小呈指数增加,随异常值比率增加)、子集问题(N^d,d为问题的未知数)的时间复杂度较高。
一种在其他具有Transformer结构利用重叠先验得到锚点后进行单向transform的显著提高配准质量的网络结构。
①自注意力机制模块会导致低重叠区域配准时使非重叠点区域的影响扩大。
①将重叠先验知识显性的引入Transformer,促进低重叠点云配准。
②提出了单向注意力机制,显著的缓解了自注意力产生的特征歧义。
③利用了图像数据配准产生2D先验帮助重叠先验的产生。
利用KPConv+FPN进行点特征提取和下采样,然后对于提取后的超点,根据重叠先验(2D和3D的,3D的第一次的由GeoTransformer得到,2D的由图像数据的找到对应点,然后box后投影到3D点云中的一块区域当中(2D的只做第一次))找到锚超点和非锚超点,加入在GeoTransformer中的几何特征后进行自注意力机制,得到包含全局特征的信息,然后进行类似交叉注意力机制的操作(对象变为非锚点云和锚点云),非锚点云做出询问,锚点云进行回答和值。然后在两个点云之间进行交叉注意力机制,之后的操作和GeoTransformer中一样,并迭代进行。
数据集:3DMatch、3DLoMatch(50个连续的深度帧融合)均提供了图像数据。
3D重叠先验:估计变换下通过最近邻搜索0.0375阈值下生成的。
2D重叠先验:3帧图像作为源点云和目标点云,使用Superglue提取9对图像的对应关系,将点云的XYZ投影到图像平面中,获得深度阈值为0.2的像素点对应关系
评价指标:FMR、RR、IR、RRE、RTE
利用RANSAC进行估计,得到了最佳性能,且与GeoTransformer相比,FMR提升了1.1%和3.4%,IR提升了0.5-8.1%和1.5-11.2%,在采样对应较少的情况下,改进更为显著,RR方面提升了1.1(Lepard)和6.7%(GeoTransformer)。
不使用RANSAC,根据使用不同的先验都达到了最佳性能,且对比和进行了RANSAC的情况相比,相差不大,说明了不同先验的引入使RANSAC估计器更加突出。
在RRE中是第二好的,在RTE中是第一好的。
锚超点和非锚超点的各种单向注意策略+嵌入先验的显/隐式注意力学习方法+先验区域的搜索和扩充(3D先验的基础区域的比例以及最近超点的增加,2D先验的图像数量从1-4)+迭代次数
①可以看到在anchor to non-achor时,会对锚点的特征引入大量的非锚点的污染,导致最终进行配准的时候,导致锚点区域的大量有效点失效。
②在注意力机制外将非锚点初始化为常量进行全局注意力机制,但是这样和GeoTransformer的差别不大,这意味着提出的单向注意力的优越性。
③在选择40%的时候,性能有所下降,这意味着在随机化重叠先验的情况下表现不佳,但是当区域为80%或者选择16个最近的锚点只会使性能有略有下降,这表明了基本锚区域的变化对重叠率的影响有限,不会显著影响最终性能。从2D先验选择的图像来看,随着数量的增加,能够找到更多重叠的点云,特别是在大视角和光照变化的低重叠场景中,
④在迭代6次之后基本达到了饱和。
通过可视化可以看到在低重叠率的情况下,PEAL能够通过显式注意力学习方式显著提高特征表示,通过2D的强大重叠先验,使PEAL能够在没有结构的地板和几何模糊的橱柜上推断出靠谱的补丁匹配,在极端低重叠场景中推断正确的超点匹配。
将网络结构用于predator,使最终得到的结果随着采样的点的数量有了大幅度的提高,我认为是随着数量的增加,重叠得到的锚点的数量增加,有利于让非锚点从锚点中得到良好的特征。
一种利用等变旋转网络产生关键点和学习方向并利用mini-SpinNet进行描述符提取得到初始对应关系并进行剔除异常值得到最终对应关系的网络。
①对于patch-wise的方法,通常需要复杂的网络和复杂的步骤(LRF等)来获得良好的泛化能力,但效率较低,对于point-wise的方法,由于多层级的结构用于连续采样原始点云(倾向于捕捉全局上下文,而不是局部),导致点特征容易同质化。
②没有通用和有效的对应搜索机制,大多使用RANSAC或者从粗略到精细匹配来搜索可靠的对应关系。
①利用了旋转等变的框架进行关键点预测和方向学习。
②各个部件之间连接紧密,前一部件产生两个产物,一个用于衔接部件,一个用于后一部件保证了连贯性。
③改进了SpinNet方法并从圆柱特征图中提出了新的对应搜索的方法。
①逐块:通过关键点或者超点为中心,提取局部patch,并对这个patch生成描述符,具体的工作有:3DMatch(开创)、PPFNet、3DSmoothNet、RSKDD-Net、LEAD(发展)、SpinNet、Gedi(泛化)
②逐点:对点云中的每一个点生成密集的描述,具体工作有:FCGF(开创)、D3Feat(有代表性的框架)、DH3D、PREDATOR(发展)、CoFiNet(新的框架(从粗到细),没有明确的关键点检测组件)、GeoTransformer(发展),对于看不见的场景的泛化能力低。
从对应级别进行配准性能提高的方法有(对应搜索):RANSAC(寻找最大对应集合)、DGR、3DRegNet(二分类内外点找内点集)、PointDSC、Deep Hough Voting(在找内外点的时候将一些传统算法融入(几何一致性、霍夫投票)),以上的方法只使用了输入的点坐标,而忽略了局部集合图形的基本特征,本文同时考虑了全局信息和局部嵌入,显著提高了嵌入率。
直接估计一对片段之间的刚性变换,包括基于软对应和基于直接回归的。
软对应:RGM、HregNet、DeepVCP、DCP、RPM-Net找到软对应关系然后进行SVD的到刚性变换,难以推广到不同传感器获得看不见的场景。
直接回归:PointNetLK(开创)、FMR、DeepGMR(发展)
旋转等变特征的构建,利用3D矢量代替原先的标量结果,如在本文中的
v 0 j = [ p j i ; n j ; n j × p j i ; c i ] T , ∈ R 4 x 3 v_0^j=[p_{ji};n_j;n_j×p_{ji};c_i]^T,∈R^{4x3} v0j=[pji;nj;nj×pji;ci]T,∈R4x3,由于 v 0 j v_0^j v0j是旋转等变和平移不变的,所以在通过矢量构建的神经元的时候,实际上就是对C(d)进行加权求和,对于空间的情况保持不变,因此有 V ′ = f l i n ( V , W ) V'=f_{lin}(V,W) V′=flin(V,W)= W V WV WV而对于旋转R则是 F l i n ( V R , W ) = W V R = V ′ R F_{lin}(VR,W)=WVR=V'R Flin(VR,W)=WVR=V′R是旋转等变的。而在RELU激活层同样有这样类似的性质。
①在开始提取点特征的时候,mini-SpinNet只有一层的(1,1)卷积,而SpinNet中是两层。
②在mini-SpinNet中没有法向量预测模块,直接使用了学习向量。
③圆柱特征生成的时候少了三个三维卷积层。kernelsize=[3,3,3]。
④相比于SpinNet增加了一个对patch随机变换角度的模块,增强了网络的泛化能力和描述子的区分力。
首先将点云利用旋转等变的框架下的DGCNN平均池化和下采样得到超点及旋转等变特征后再进行上采样还原得到所有点的旋转等变特征,一个分支用于得到旋转不变特征后进行多层感知机得到每个点的关键程度,另一个分支得到每个点的一个学习方向,取top-k个点作为关键点,并对这些点进行mini-SpinNet,得到每个关键点所在patch的圆柱形特征和描述符,利用描述符提取初始的对应点对,对于每一个对应点对利用其圆柱形特征图进行特征相似度的计算,得到pi的某一块特征和pj的各处特征的差异度矩阵W属于H*W*W*H,对此差异度矩阵聚合pi竖直维度上的和pj各处特征的差异,得到绕Z轴旋转的得分矩阵d,其表示了旋转2πdi/W时的权重,最终进行加权后得到绕Z轴旋转的旋转矩阵,由于认为一开始的学习方向已经把Z轴调整到位了,因此得到的每一个点对得到的最终的旋转为先利用学习方向调整Z轴,然后利用得到的SO(2)平面的旋转调整,在得到的多个旋转中找到匹配数量最多的,并舍弃错误的对应关系得到最终的对应关系。
整个架构的一些细节:
首先是旋转等变的框架,是将原先在神经网络中一个单元是一个标量改成了一个三维矢量,这样子的三维矢量自然是在三维中旋转等变的,因为在线性层的时候从C(d)->C(d+1),C(d+1)中的一个元素(3维矢量)就是由C(d)中的所有元素进行线性组合得到的,那么显然有先进行旋转和线性层之后进行旋转是一样的。在非线性层通过两个矩阵W,U得到1*3的矩阵q,k,如果q和k同向,则为q,否则为q截取和k平行的分量,这也是保持着旋转等变的,W,U矩阵可以看做是对这C*3的C个3维进行线性变化,显然也是旋转等边的,对于其他的一些层有同样的变化,如果想要得到一个旋转不变层,显然得到的特征T和自己的内积就是满足这个要求的,因为进行旋转后,旋转的内积为1,但是由于数量过大和一些其他的原因,选择了产生一个旋转等变的3*3的矩阵去得到旋转不变特征。首先将求V的均值后,和每一个Vn拼接,并进行多层感知机,最后一个输出层为3,就能得到Tn=3*3的矩阵了。由于有n个所以T为n*3*3。
其次是本文具体的是利用了平均池化的操作从R领域进行特征提取。
然后就是mini-SpinNet和SpinNet的区别
最终就是使用最近邻初始匹配,然后repeat W就是圆柱特征循环padding的意思。得到圆柱特征相似度矩阵的时候,本文貌似有一个维度出了问题,我觉得是H*W*W*H,而不是把最后H换成D。
VN是指直接由原始点云作为起始特征,而EFCN是由 [ p j i ; n j ; n j × p j i ; c i ] T [p_{ji};n_j;n_j×p_{ji};c_i]^T [pji;nj;nj×pji;ci]T作为初始特征的。保证了整个网络的期望性质,而VN则需要依赖网络隐含的学习这些性质。
①用于学习方向的损失函数,使得对应点的学习方向只相差实际的旋转。
②用于描述符的对比损失函数,使对应点的描述符靠近,非 远离。
L k = 1 N c ∑ i [ m a x ( 0 , d p o s ( i ) − α ) + m a x ( 0 , β − d n e g ( i ) ) ] L_k=\frac{1}{N_c}\sum_i[max(0,d_{pos}(i)-α)+max(0,β-d_{neg}(i))] Lk=Nc1∑i[max(0,dpos(i)−α)+max(0,β−dneg(i))]
③用于关键点检测的损失函数,使能够有效区分的点的关键点得分增加。
④用于真值变换的损失函数,用于监控圆柱特征,使其特征差异矩阵能够被3DCCN很好的聚合得到最终的变换矩阵。
数据集:3DMatch、3DLoMatch(RR)、KITTI、ETH(RTE、RRE、成功率)
3DMatch、3DLoMatch:都是第二好的RR,同时使用时间第二少(对比第一少的准确率高了很多),且参数量最少。
KITTI:最高的成功率,最轻量和高效
①从内到外(3DMatch->ETH、KITTI):所有逐点特征的方法都变现出了较低的成功率,就如前言中提到的分层网络架构学习特征描述符,对于泛化是不利的。而逐片的方法耗时,BUFFER将其进行了结合,在看不见的领域实现了最高的成功率的同时有着较高的效率。
②从外到内(KITTI->3DMatch):都达到了最佳的RR,和最快的速度,同时超过了SpinNet 3.6/11.7%的RR。这是由于Inliers Generator的差异所导致的,可以看见该部件能够显著提高Inlier速率和配准率。
③从外到外(KITTI->ETH):在这种情况下,逐点的方法的性能有了显著提高(认为是KITTI和ETH的域的差距不大),BUFFER仍然获得了最佳的成功率。
①手工制作的方向取代学习的方向
②KPConv代替提出的等变卷积
③用VN提到等变卷积
和手工技术相比,会更加鲁棒和更具有可重复性,这也是深度学习得到的特征均有的性质。对于普通的不具有旋转等变性的网络来说,由于网络只能暴力记忆方向,而不能学会判断方向,因此对于新的数据的泛化能力是极差的。
①学习方向LO、②预测关键点PK、③内部生成器IG
从5可以看出IG确实能够从初始对应中剔除较多的异常值,
而从6可以看到,各个部件是互补的,说明了本文提出的架构的合理性和巧妙性。
这是单使用IG剔除的异常值的效果。可以看到是十分显著的。
一种完全解耦几何空间和特征空间并利用旋转位置编码(相对位置编码)的网络。
①现有方法大多是具有平移不变性的,无法处理具有重复模式的点云场景。
①将特征空间和位置空间完全解耦(每一步的都是会把位置信息重新和特征进行结合用于各个部件)。
②利用一种相对位置编码(旋转位置编码)的方式进行位置嵌入,这种方法在NLP上相对于绝对位置编码以及普通的相对位置编码有着更好的效果。
③利用双向规范化进行对应点对的选择(类似双边共识性)。
一种相对位置编码的方式,通过发现xi变成 x i e i m θ x_ie^{imθ} xieimθ,此时对于新的特征进行自注意力机制,发现xi的回答向量和xj的询问向量的内积可以表达为只由xi的回答向量和xj的询问向量以及m-n(相对位置)作为输入得到。因此此时这种变换了初始特征的方法就认为是相对位置编码的一种方式,同时发现只需要对原先特征的变换下图即可。对于每一个分块是一种旋转,因此又称这种相对位置编码的方式为旋转位置编码,下图是对一维顺序的,那么对于点云的位置的变换矩阵就是下下图。
引用:https://zhuanlan.zhihu.com/p/642884818
语言序列
三维点云
对于正弦编码来说:①旋转位置编码是正交的,也就意味着其只会改变原始特征的方向而不会改变特征长度,意味着这种编码是稳定的;②就是我之前提到的这是一个相对位置编码的方式。
这是由于第一次时在交叉注意力和配准的时候,相对位置是没有意义的,因为还是混乱的,只能起一定的约束能力,所以在第一次TMP的时候并没有发挥所有的潜力,只是一个粗培准,因此进行第二次TMP,此时的相对位置的意义更加明显,能够得到一个更加精细的配准结果。
通过KPFCN进行encode和decode(UNet结构),最后一层的解码器舍弃,因此是一个下采样的结果,对于得到的特征和点坐标分离,点坐标用于产生位置编码,而特征则进行一系列的细化,只有在每个需要用到位置编码进行特征约束的地方进行使用,首先融入位置信息进行自注意力机制,得到的特征再次融入位置信息进行交叉注意力机制,得到的特征再次融入位置信息进行特征匹配,对于融入位置信息的特征计算相似度矩阵后进行双向规范化,取前n个且不在彼此邻域范围内的匹配点对,进行加权SVD,对于点位置进行刚性变换后,重复一遍得到细化后的刚性变换结果。
①用于匹配矩阵的损失函数:
②用于刚性变换的损失函数:
数据集:3DMatch、3DLoMatch
评价指标:IR、FMR、RR、RRE、RTE
①解耦位置和特征
②相对位置编码和绝对位置编码
③重定位(细化)
④在匹配中,Sinkhorn vs 双向规范化
①在未解耦的情况下较解耦的情况有小幅度的下降,但都比PREDATOR高。
②相对位置编码较绝对正弦编码有1.4/2.3%的提升。
③重定位带来了0.9/1%的提升,同时随机旋转的情况有显著的下降。
④双向规范化由于Sinkhorn,且有较大的提升。
对于PREDATOR来说,最终的RR +1.7/6.6,取得了一个较好的结果,且参数方面小于PREDATOR。
一种直接生成点云在另一点云坐标系下的网络(将SVD替换成了深度神经网络结构,在训练时再变回去进行损失函数)
①在合成数据集中进行的训练由于在真实点云中的阻挡、物体材料和传感器噪声等导致不能很好的泛化。
②对于一些小物体,关键点的提取比较困难,因为其并不总包含那么多可区分的关键点的局部结构,其次是一些①中提到的性质会导致关键点的可靠性不确定。
③对于小基线(实时的,变化不大的)有效即可。
①直接预测一个点云在另一点云坐标系的位置,避免了关键点的提取的困难。
②在寻找对应关系的时候考虑到了SVD的敏感性,选择使用神经网络进行四元数的预测。
将点云进行随机旋转后进行点云归一化,将点云编码为局部特征和全局特征,将各自点云的局部特征和全局特征拼接后再拼接上另一点云的全局特征并利用MLP生成在另一点云坐标系下的对应坐标,去归一化和去旋转化,将预测到的另一点云坐标系下的坐标和原始点云坐标进行拼接后再次利用MLP并配上池化操作用于得到四元数。并计算平移矩阵,将两个点云分别得到的旋转矩阵通过作用顺序的不同相当于从一个点云坐标系旋转至另一点云坐标后再旋转回来得到原来点云坐标系下的坐标。
在本文的损失函数中,我考虑了是否能够设置为无监督的学习,就是把L12和L21换掉,得到了R12和R21是不是用一个损失函数约束两者的R12R21=E,然后同时鼓励单个矩阵尽可能进行旋转,也就是-|R12-E|。这样子是否能够约束点生成网络得到一个好的对应点P12和P21。我想了想首先R12R21=E应该是可以的,但是还得有一个保证在中间状态确实是转移到了一个好的另一个坐标系中,我想着能不能设置尽可能让中间态达到一个较多重叠点的情况。因为貌似其他的没啥能够描述中间态是较好的。除非使用真实变换。
①用于得到良好旋转和中间点的损失函数。
其中 L R , t L_{R,t} LR,t就是,范数为Ls范数, L s = l 2 1 + e a ( c − l ) L_s=\frac{l^2}{1+e^{a(c-l)}} Ls=1+ea(c−l)l2。
L 3 D = L_{3D}= L3D=
②两次坐标系变换后能够重回的损失函数。
数据集:Linemod(包含15个物体,多视角的RGB-D图像和3D模型)、PRO1k(选取了1000个真实物体,RGB-D)、ModelNet40
评价指标:TE、RE、ADD(ground truth 姿势和预测姿势转换的 3D 模型点之间的平均距离)、MSE、RMSE、MAE(R,t)
可以看到传统的算法比大多数的基于学习的方法要好,本文认为现有的基于学习的要么具有不符合实际观测的假设,要么在对象尺度的局部和噪声点云上具有较低的泛化能力。
在PRO1k上进行实验得到结果。
在modelnet上进行实验得到结果
①点云生成器+②变换估计器+③随机旋转层+④双向训练+⑤ADD损失+⑥encoder编码骨架+⑦掩码预测+⑧从点云中采样的点的数量
从旋转和平移误差来看,点云生成块、SVD的替换以及随机选择的提升是较大的,而双向训练到预测掩码会有略微的提升,随着选点的减少,准确度也会略有降低。
一种投影2D图像深层颜色特征到点云坐标中的网络。
①在2D的领域配准等工作的先进性
②对应关系不仅本身就跟图像(颜色、纹理)等有关,包括对应关系存在的区域(重叠区域),图像等颜色信号对于找到点云的重叠区域来说直观的就能感受到其重要性。
①利用图像数据提取深层颜色特征用于3D点云配准中。
本文利用50帧的RGB-D数据构建一个大的点云,上色的时候仅用第一帧和最后一帧,提取每一个像素点的周围一块区域的区域特征,然后投入到对应3D点云当中,如果是第一帧和最后一帧重复区域的点,则在两个图片得到的区域特征进行均值即可。将颜色的深层特征和点坐标拼接后作为PREDATOR的输入。
PREDATOR的损失函数以及ResUNet-50的损失函数。对于PREDATOR的网络架构的权重重新训练,对于ResUNet-50的训练权重进行微调。
数据集:3DMatch、3DLoMatch
0.005的SGD优化器,batch size=1,以每个epoch 0.95的倍率衰减。
评价指标:RR、FMR、RRE、RTE
从3DLoMatch中可以看到,本文将2D-3D特征进行显性结合的方法能够在原来的结构上带来显著的改变,特别是在采样点数较低的情况下。
相比较3DLoMatch,3DMatch更容易饱和。尽管比较不同的方法仍然能够得到第一、第二的成绩,但是相差并不是很大。
①上色的帧数+②深度颜色特征和普通的RGB+③2D预训练网络+④2D区域大小+⑤显隐式投影+⑥不同基线网络架构
①考虑到需要尽可能多的上色点云中的点,显然在第一帧和最后一帧能够尽可能多的得到点云中的点的颜色,而经过实验发现增加一帧对上色的增幅不大,最终选用两帧。
②深度颜色特征和RGB颜色
对比用SIFT得到的手工特征,可以看到这里的准确率是极低的,也是证明了深度颜色特征的有效性。
③不同数据集的预训练
越强大的预训练模型能够实现更好的RR。
④窗体大小
11x11是最好的。
⑤显隐式投影
显示投影:只将2D和3D重叠的点进行深度颜色特征的投影(一对一)。
隐式投影:将所有的像素的特征投影到3D上(一对多或者多对多或者什么线性组合的关系)。
可以看到,显式的投影均优于隐式的投影。同时深度颜色特征优于RGB特征。
⑥不同的基线
提升了3.5%的RR。
①来自3D点的几何特征仍然不那么具有鉴别性,因此尝试利用视觉特征进行强化。
①并非利用简单的级联、求和、乘积的操作将视觉特征和几何特征进行组合,而是在几何线索指导下得到视觉特征。
②利用图像边缘和内容结构作为指导图对提取的几何特征的线性系数进行双边滤波,得到感知到边缘信息的几何特征线性系数。
③对视觉特征分块进行局部线性变换,使产生的视觉特征考虑局部信息。
在高斯滤波的基础上考虑到像素点之间的差值的滤波方法,能够让边缘呈现断裂状,但是由于每次需要计算差值大小,导致得到的高斯核不是固定的因此难以并行处理。
而双向网格则是将原有的数据升维,在高维度的数据上用高斯滤波,得到一个固定的权重值,便于进行并行化操作。
用一维的图片举例,如果是高斯滤波的话,权重是固定的,相当于一个0.3 0.8 1 0.8 0.3从左往右走,加上了边缘滤波变成双边滤波后,此时每次从左往右走的时候权重的大小不固定了,需要经过计算才能得到,此时不利于并行处理,且每次都需要经过计算,因此双边网格将原来的一维图片变换成了二维,将像素值也扩展出来了,那么现在的高斯核完全可以变成二维的
0.1 0.3 0.4 0.3 0.1
0.3 0.6 0.8 0.6 0.3
0.4 0.8 1.0 0.8 0.4
0.3 0.6 0.8 0.6 0.3
0.1 0.3 0.4 0.3 0.1
此时每个位置的权重再次固定,此时完全可以进行并行等操作,我的理解是将原来需要计算距离并进行判断的操作变成了只要在这个范围,超出这个范围就不进行计算的操作。同理三维图片这是如此操作。进行下采样后得到特征后再上采样的操作。
首先根据RGB图提取视觉特征,进行padding和扩展卷积,使得到的视觉特征有着较大的视觉野以及和原图大小不变的尺寸;根据深度图经过下采样卷积得到尺寸缩小的几何特征,并在最后两个卷积层进行双边网格的操作,同时根据深度图产生尺寸不变的内容结构的指导图G,利用指导图G对尺寸缩小的几何特征进行上采样得到尺寸正常的几何特征(这个指导图可以看做是一个滤波器,对于得到的线性变换的系数做双边滤波平滑),将其作为线性变换的系数作用在视觉特征上,然后得到最终的视觉特征输出。其大小为原图尺寸,其通道数为几何特征经过了双边网格操作后的ngrid。
为什么要用深度图作为线性系数指导视觉特征和几何特征融合
由于在双边网格当中,如果是深度图,最终的运算是三维的,宽高和range,如果是RGB图像,最终的运算是五维的,宽高和RBG三个range,这样子的运算成本是恐怖的,因此选择深度图进行双边网格作为线性系数。
为什么不用原始深度图作为指导图
原始深度图各点是包含噪声和不连续性的,因此需要对局部范围的点进行使用,因此进行了两次小核卷积。
为什么要存在一个指导图进行指导。
指导图其实可以看做是一个高斯过滤的核,它可以帮助生成的线性系数感知到深度图的内容,在插值上采样的时候能够让插值感受到深度的变化得到更加合适的原分辨率下的线性系数。
和UR&R一样,但我暂时没有看过UR&R,所以先空着。
数据集:ScanNet(大型室内RGB-D数据集)、3DMatch
评价指标:RE、TE、倒角距离、FMR
3DMatch:14epoch、ScanNet:1epoch
adam,动量0.9,Epsilon=1e-4
从一图中可以看到与最新的无监督电晕配准的方法比较,减少了21.1%的平均旋转误差、24.7%的平均平移误差和18.5%的平均倒角距离。我们还将FMR性能提高了约11.54%。在严格的阈值下也有着显著的进步,充分说明了RGB图像对于点云配准的显著性以及本文提出的这种融合结构的有效性。
①LLT模块+②进行多尺度融合策略MS+③规则卷积代替扩展卷积DC+④不同的融合策略
①LLT模块带来的提升最为显著,②而MS仅仅带了一点点的提升,③带来了较大提升。
④对于不同的融合策略来说
对于不进行融合有着较差的性能,直接使用原始深度图相对来说有一部分的提高,使用仿射变换代替线性变换有一部分提高,但是仍然没有线性变换的提升大。本文给出的解释是偏移项指示几何特征和视觉特征之间的一个求和运算,如果模态完全不同,会恶化特征表示,所以最终采取了线性变换的快速多头交叉注意机制。
可以看到利用引导图进行插值后对视觉特征进行线性变换后的影响。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。