由于点云传统配准(ICP:迭代最近点算法)效果不佳,于是考虑使用深度学习的方法。
这里采用NgeNet。
Neighborhood-aware Geometric Encoding Network
邻域感知几何编码网络
论文链接:https://arxiv.org/abs/2201.12094
Introduction
点云配准深度学习方法的分类
作者将其分为了两种
-
end-to-end:将feature learning 和 transformation estimation 融合到了一个模型
- 其中有一些方法依赖相关性的建立来进行后续的Procrustes分析
- 而其他方法则更关注点云之间的全局特征
-
feature-learning:更加关注learning of discriminative point feature(学习辨别性的点的特征),而transformation则是由pose estimators来估计的
提出网络
NgeNet利用多尺度结构明确地生成具有多种邻域大小的点状特征,并利用几何指导的编码模块来最大限度地利用几何信息。具体来说,设计了一个投票机制,为每个点选择一个合适的邻域大小,并拒绝在无法区分的表面上出现虚假的特征。
主要贡献
- 多尺度结构与几何引导编码相结合,产生多层次的几何和语义信息编码的特征。
- 多层次的一致性投票,为每个点选择适当的邻域并拒绝虚假的邻域。
- 我们的方法中所提出的技术是与模型无关的,能够很容易地移植到其他骨干结构上并提高性能。
Preliminaries (引言)
点云配准问题的数学表达
arg Tmin∣σ∣1(i,j)∈σ∑∣∣T(xi)−yj∣∣2
Cardinal Number(基数):集合论中刻画集合大小的数
邻域分析
在特征学习中常常用到encoder-decoder网络来提取特征;
模型的输入为X∈R3
维数从N×3 -> N×C意思是每个点输出C维的特征
有两种方式去影响领域的范围一个是依靠连续的卷积层,隐形的增加了领域的范围;另一个是在encoder-decoder网络中常常使用两倍大小的分层卷积层来模拟点云的down sample。
方法
网络

可以很清楚的看到NgeNet是一个encoder-decoder网络
-
encoder模块由:residual-style KPConv/strided KPConv层、instance norm层和Leaky ReLU层(k=0.1)组成
KPConv 是用于三维点云中的一种卷积方式
-
decoder模块由:decoder中的上采样块采用最近搜索来进行特征插值。 unary block由一个线性(MLP)层、一个实例范数层和一个 Leaky ReLU 层 (k=0.1) 组成,而last unary block仅由一个线性层(MLP)组成
Input为the source point cloud X and its initial descriptor FX , the target point cloud Y and its initial descriptor FY
- 其中FX and FY 都被init为全部为1的矩阵
组成部分
SIAMESE MULTI - SCALE BACKBONE
连体式多级骨干(什么鬼翻译
**用途:**用于处理输入的点云
如何工作?
-
Shared Encoder:可以在绿色的Encoder部分看到一共做了四次卷积;这样做是为了拓展领域特征。此时一共有四个输出,最后的输出得到Super points X′ (X′集合会在下文经常提到其中包括他的点xi′∈X′)和它的feature FX′en(我理解上标的en意思是end;最后一个输出);前三步输出的feature作为中间变量也被保存了下来,为了decoder去生成multi-scale的feature。这三个中间变量被记为FX1,FX2,FX3。这里需要注意的是,每个点特征的邻接点的感知范围从FX1延伸到FX3 (最后一句话是KPConv的知识)
- 最后Shared Encoder输出的是X′∈RN′×3 和FX′en∈RN′×Den ,加起来是应该是(X′,FX′en)∈RN′×(3+Den)(有待考证)
-
Parallel Decoder:上面说在decoder的时候需要用到我们刚才保存的FX1,FX2,FX3,同时还有之后会介绍的FX′inter,一共这四个输入。最后得到的output是关于X′的高、中、低级别的feature
-
现在我们定义一个函数(后面要用)
ϕ(F1,F2,g)=cat[Up(g(F2)),F1]
其中F1和F2是输入的feature,g是一个代表MLP或者Identity Layer的函数, cat表示concatenation(拼接矩阵),Up是nearest upsampling
-
现在可以表示 FXl,FXm 和 FXh 的计算方式
FXlFXmFXh=MLP2(ϕ(FX1,FX2,MLP1),=MLP5(ϕ(FX1,ϕ(FX2,FX3,MLP3),MLP4),=MLP8(ϕ(FX1,ϕ(FX2,ϕ(FX3,FXinter,Identity),MLP6),MLP7).
- 同时给出overlap(重复性)分数OX和saliency(显著性)分数SX
GEOMETRIC - GUIDED ENCODING
几何学引导式编码
GGE模块是一个 一个输入一个输出的模块

**用途:**GGE将super points和潜在的feature(也就是Shared Encoder输出的(X′,FX′en)∈RN′×(3+Den))作为输入;然后输出几何增强后的feature
如何工作?
- Normal vectors smoothing:这里计算Normal vector的方式比较特别。这一步的目的是去获得super points的Normal vector,但是他没有直接去用open3d的库直接计算。而是将super points的点映射回原来的全部点集中。再通过全部点集中,super points周围点的normal vectors去平均得到super points的normal vector。
NXi′=∣JiN∣1xj∈JiN∑NXj
公式里面JiN={xj∣∣∣xj−xi′∣∣<rN} 其中xj∈X,rN是xi′的邻域。
PPF(xi′,xj′)Gxj′Gxi′=(∠(xj′−xi′,Nxi′),∠(xj′−xi′,Nxj′),∠(Nxi′,Nxj′),∣xi′−xj′∣2),=f1(xi′,xj′−xi′,PPF(xi′,xj′)),=max{Gxj′∣xj′∈JiG}.
公式里面∠(⋅,⋅)∈(0,π) 代表两个向量之间的夹角, f1是pointnet里的一个函数, JiG={xj′∣xj′−xi′∣<rG},rG是xi′邻域的半径,max(⋅)意思是channel-wise max-pooling
损失函数
这里我们将损失函数从两个方面来看:特征损失 和 重叠与显着性损失
特征损失
这里说的特征损失,就是我们之前提到的FXh,FXm,FXl,FYh,FYm,FYl 两个点云三个类别的特征。
重叠与显着性损失
投票机制
为什么要投票

在Parallel Decoder我们强调了,在每一次计算特征的时候,我们都保存下来了那些中间变量;他们是FXl 和FXm ,最后的输出是FXh 。
此时它们三个分别可以决定哪些source的特征点和target的特征点可以一一对应。那么每一个特征点都会存在三种方案。所以需要通过投票决定使用哪一种。
如何投票

评论