基于深度学习方法的点云算法1——PointNetLK(点云配准)
请点点赞,会持续更新!!!
基于深度学习方法的点云算法2——PointNet(点云分类分割)
基于深度学习方法的点云算法3——PointNet++(点云分类分割)
基于深度学习方法的点云算法4——PCT: Point Cloud Transformer(点云分类分割)
摘要
作者将PointNet看成一个可学习的成像函数(learnable “imaging” function),然后就可以将用于图像对齐的LK算法应用于点云配准。作者主要贡献如下:
(1)修改LK算法,使其适用于PointNet;
(2)将LK与PointNet相结合得到PoinNetLK。
本文为深度学习在点云配准中的应用开辟了新的途径。
源码: PointNetLK源码
论文:PointNetLK论文
一、Introduction
点云本质上是非结构化的,具有样本和顺序排列的模糊性。 这种结构的缺乏使得现代深度学习体系结构在点云任务上的使用存在问题。从这个角度来看,PointNet的提出是革命性的,因为它为点云提供了可学习的结构化表示。可以将这一过程视为一种“成像”(“imaging”)——无论样本数量或点的顺序如何,都能产生固定尺寸的输出。
但是,PointNet在点云配准任务中的应用仍然有待探索(这其实就是作者要解决的问题)。作者将进一步探索将PointNet视为成像函数这一概念,这一概念的好处是可以将图像对齐方法应用于点云配准问题,作者将应用经典的LK(Lucas&Kanade)算法,因为近期有研究者将LK算法重新解释为了循环神经网络(recurrent neural network),实现了最先进的2D目标跟踪(object tracking)性能。
然而,LK算法不能简单地应用于PointNet(这其实就是作者要解决的第二个问题)。这是由于LK算法依赖于梯度估计,而梯度估计实际上是通过卷积来估计的。在二维光学图像或三维体积图像中,每个元素(即像素或体素)与其相邻元素之间具有已知的局部相关性,可以分别表示为二维和三维网格,从中可以定义卷积。PointNet没有这种局部依赖性,因此通过卷积估计空间梯度是不合适的。
贡献:
(1)修改LK算法,使其适用于PointNet;
(2)将LK与PointNet相结合得到PoinNetLK。
PointNetLK不像ICP及其变种算法一样需要计算代价高昂的对应点计算。具有准确率、初始化鲁棒性(ICP对初始化是敏感的)和计算效率优势。
PointNetLK对于未见过的对象具有显著的泛化性能,如图1所示,这种泛化性能可归因于网络体系结构中对齐过程的显式编码(explicit encoding )。 因此,网络只需要学习点网表示,而不需要学习对齐任务。
图1
本文所提出的方法是完全可微的,因此可以与更大的深度神经网络系统结合。
PointNetLK可以在GPU上运行,而ICP及其大多数变种方法只能在CPU上运行。
二、Related Work
PointNet: PointNet是第一个以原始点云为输入,使用DNN进行分类和分割的模型。其结构简单,但实现了最先进的性能(state of the art),并为处理点云数据提供了创新性的理论见解。PointNet++是PointNet的改进版,它在局部点集中分层聚合特征。
ICP and variants: Besl 和 McKay 提出了ICP(iterative closest point)算法,通过迭代估计点的对应关系并执行最小二乘法来进行配准,这是一种经典且广泛应用的方法。并且衍生出多种ICP变种算法。然而,ICP及其变种算法有一些基本的缺点:(1)明确估计最近点的对应关系,导致计算复杂度与点的数量成二次指数关系;(2)对初始化敏感;(3)因为可微性问题,无法将其集成到深度学习框架中。
Globally optimal registration: 因为ICP及其变种对初始扰动(initial perturbation)敏感,只能产生局部最优估计。Yang等人开发了Go-ICP,可以获取全局最优解。最近,凸松弛(convex relaxation)被用于全局姿态估计(global pose estimation),如黎曼优化、半定规划和混合整数规划。但是上述方法的一个主要缺点是计算时间长,不适合实时应用。
Interest point methods: 一些研究通过估计特征点(interest point)来进行配准。文献中有一些作品估计了兴趣点以帮助注册。例如,尺度不变曲率描述符、定向描述符、扩展高斯图像、快速点特征直方图、基于颜色强度的描述符、全局点签名、热核等,特征点有可能提高配准方法的计算速度,它们并不能推广到所有应用程序。
Hand-crafted representations: Vongkulbhisal等人提出的discriminative optimization (DO)方法采用手工设计特征向量的方式学习一系列特征图,来估计良好的初始对齐。随后使用ICP对配准进行细化。缺点(drawback)是特征和特征图是特定于每个对象的,不具有泛化能力。最近,他们开发了逆合成判别优化(inverse composition discriminative optimization,ICDO),可以泛化到未知对象上。不幸的是,ICDO的计算复杂度和点数上是二次指数关系,因此很难在几个真实场景中使用。ICDO的另一个问题是,特征和路线图都已学习,这可能会对方法的泛化能力造成影响。
Alternate representations: 体素化是一种将空间离散化并将点云转换为结构化网格的方法。几种在体素上使用DNN的方法已经得到了开发。这些方法的主要缺点包括计算时间和内存需求。另一种流行的表示是深度图像(depth image)或范围图像(range image),它将点云表示为2D视图的集合,这些视图很容易通过商业结构光传感器获得。通常在每个视图上执行卷积运算,并聚合得到的特征。一些作品还将体素数据与多视图数据相结合。有几项工作可以直接从光学图像估计3D姿势。例如,直接回归裁剪对象图像中对象方向的欧拉角。另一方面,在机器人操纵等应用中,姿势通常被解耦为旋转和平移分量,并且每个分量都是独立推断的。
三、PointNetLK
图2 PointNetLK
3.1 Overview
Φ表示PointNet函数, Φ使用的是多层感知机(Multi-Layer Perceptron,MLP),MLP将形状是N×3的数据转换为形状是N×K的特征,其中N为点的个数,3包含了x,y,z。然后应用对称池函数(symmetric pooling function, sym. func.),如最大池化或者平均池化,生成一个K维(形状是1×K,我习惯称之为长度为K)全局描述符。 在伤处过程中,作者利用MIP和symmetric pooling function将点云数据进行特征提取,得到了一个长度为K的点云全局特征,如图3所示。注意,
P
T
P_T
PT 表示模板点云,
P
S
P_S
PS 表示源点云,提取两者特征的MLP是共享参数(shared)的。
图3
优化方案如下:
G 属于李群,是刚体变换,表示源点云向模板点云的变换矩阵,G 如上式所示,可由指数形式表示,其中
T
i
T_i
Ti表示扭转参数(twist parameters)(李代数) ξ 的指数映射的生成器。则3D点云配准问题可以转换为求取G ,使得Φ(
P
T
P_T
PT )=Φ(
G
⋅
P
S
G·P_S
G⋅PS )。该方程类似于二维图像的经典LK算法中优化的数量,其中源图像被变换,从而使变换的源和模板之间的像素强度差最小化。
有关李群李代数,刚体变换的知识点可参考 SE(3)和se(3)
值得注意的是,本文剔除了PointNet体系结构中T-net,因为它的目的是转换输入点云,解决点云数据的旋转不变性问题,以提高分类精度。然而,本文的任务是点云配准,计算的正是两组点云之间的旋转关系和平移关系,如果引入T-Net,会使得提取到的点云特征中的旋转特征消失,进而无法完成配准工作。
注意: 将变换矩阵映射成指数形式的G 是为了在模型训练中可以求梯度。
应用逆合成(Inverse Compositional,IC) 公式改进LK算法,由于传统的LK算法在每次迭代优化时都有很高的计算成本,因此有必要使用IC公式。此成本来自在优化的每个步骤中,在变换的源图像上重新计算图像雅可比矩阵。IC公式的精髓在于逆转模板点云和源点云的作用:在每次迭代中,将解决模板点云而不是源点云的增量变换更新,然后将此增量变换的逆运算应用于源点云。通过这样做,将对模板点云而不是源点云执行雅可比计算,并且在优化开始之前只执行一次。如图4所示,
J
i
J_i
Ji为模板点云的雅可比矩阵,
J
+
J^+
J+为
J
i
J_i
Ji的逆,因为模板点云是固定的,不发生变化的,因此其雅可比矩阵也是不变的,因此只需要计算一次。
图4
3.2 Derivation
本节主要描述迭代优化方案,迭代优化的目的是求取G。
应用上一节提到的IC公式,得到:
然后将上述公式的右端线性化,得到:
对
G
−
G^-
G−定义如下:
Canonical LK: 定义雅各比矩阵:
雅各比矩阵J的形状是K×6。基于上述公式,计算雅各比矩阵需要计算PointNet函数Φ相对于G的扭转参数(twist parameters)(李代数) ξ的梯度的解析表示,这存在困难并且计算代价高昂。
Modified LK: 采用随机梯度法(stochastic gradient)计算J,具体而言,雅可比矩阵的每一列
J
i
J_i
Ji可以通过有限差分梯度来近似,计算如下 :
其中,
t
i
t_i
ti是扭转参数ξ的无穷小扰动。这种计算J的方法允许将计算效率高的逆合成LK算法应用于使用PointNet提取特征的点云配准问题。注意:J只需要计算一次,因为模板点云是不发生变化的。对于雅可比矩阵的每列
J
i
J_i
Ji,只有第i个扭曲参数具有非零值
t
i
t_i
ti。理论上,
t
i
t_i
ti应该是无穷小的,此时,J等于解析导数。在实践中,根据经验发现,在所有迭代中,将
t
i
t_i
ti设置为某个较小的固定值会产生最佳结果。
然后可计算 ξ:
其中,
J
+
J^+
J+是J的摩尔-彭罗斯逆(Moore-Penrose inverse)。
总之,整个迭代算法包括通过上式计算扭转参数,以及通过下式更新源点云:
最终估算
G
e
s
t
G_est
Gest是迭代循环期间计算的所有增量估算的组成:
迭代的终止条件是ΔG小于设定的阈值。
3.3 Training
**Loss function:**训练的损失函数应该以最小化估计变换
G
e
s
t
G_{est}
Gest和真实变换
G
g
t
G_{gt}
Ggt之间的差异为目标。文中并没有使用
ξ
e
s
t
ξ_{est}
ξest和
ξ
g
t
ξ_{gt}
ξgt的均方误差(MSE),而是使用了如下损失函数:
它的计算效率更高,因为它在训练期间不需要矩阵对数运算。
Symmetric pooling operator: 在PointNet中,MLP操作之后是对称池化函数(symmetric pooling function),如最大池化或平均池化,以实现点的顺序排列不变性。在第4节中,展示了使用最大池化或平均池化的结果,并观察了在不同情况下哪个操作符可能更合适。 特别是,假设在噪声点云数据的情况下,平均池化比最大池化更有优势,这在实验中得到了证实。
四、Experiments
使用ModelNet40数据集,在测试时以ICP为baseline。
4.1 Train and test on same object categories
首先在ModelNet40数据集中的20各类别中训练,然后也在这20个类别中测试。首先使用PointNet分类模型在数据集上进行训练,然后用训练得到的分类模型初始化PointNetLK的特征提取网络,并用文中提出的损失函数进一步训练微调PointNetLK。源点云是模板点云的刚性变换,模板点云在通过扭转产生源点云之前线归一化到
[
0
,
1
]
3
[0,1]^3
[0,1]3之间。真是标签旋转角度在[0,45]度之间,平移距离为[0,0.8]之间。
实验结果如图5所示,在测试时,ICP和PointNetLK均迭代了10次。结果显示,PointNetLK能够以比ICP少得多的迭代次数收敛到正确的解。确保对ICP和PointNetLK用相同点云和相同的初始变换进行测试。测试的初始平移在[0,0.3]范围内,初始旋转在[0,90]度范围内。
图5
4.2 Train and test on different object categories
用ModelNet40中另外的20类训练模型,然后用训练时未使用的20类来测试PointNetLK,实验结果如图5绿色的曲线所示。实验结果表明PointNetLK具有很好的泛化性能。还在斯坦福数据集中的兔子点云上做了测试,效果很不错,如图6所示。
图6
4.3. Gaussian noise
研究了PointNetLK对高斯噪声的鲁棒性。从ModelNet40数据集中的每个形状随机采样1000个点得到模板点云,对模板点云加入高斯噪声得到源点云。作者认为在本实验中,对称池化算子的选择对PointNetLK的性能变得更加关键。正如在最初的PointNet工作中所指出的,使用最大池化操作符可以得到一组关键的形状点,这些形状点定义了全局特征向量。对于有噪声的数据,该临界集在不同的随机噪声样本中会发生较大的变化。因此,作者认为平均池更适合于学习噪声数据的全局特征。图7所示的结果证实了这一假设。我们重复第4.2节的程序,测试在训练期间看不到的对象类别。图8中显示了一些示例对齐对。
图7
图8
4.4. Partially visible data
作者探讨了PointNetLK在对齐2.5D数据的常见配准场景中的使用。在现实世界中,通常模板点云是一个完整的3D模型,源是一个2.5D扫描(2.5D的意思是从一个固定的视角获取到的点云信息,既不完整的点云信息)。这种情况下的一种方法是将2.5D源和3D模板直接输入到对齐算法中,并估计对应关系和对齐。第二种方法是从某一个视角相对于3D模型的初始估计来采样模型上的可见点,这可以类比为2.5D扫描。然后迭代更新视角,直到3D模型上的可见点与2.5D数据匹配。
作者采用第二种方法测试PointNetLK,因为如果采用第一种方法,代价函数
Φ
(
P
T
)
−
Φ
(
G
⋅
P
S
)
Φ(P_T)-Φ(G·P_S)
Φ(PT)−Φ(G⋅PS)可能会很大。相反,先根据初始姿势估计从3D模型中采样可见点更有意义,这样PointNetLK的输入都是2.5D。这样,正确的最终匹配更有可能使得代价函数
Φ
(
P
T
)
−
Φ
(
G
⋅
P
S
)
Φ(P_T)-Φ(G·P_S)
Φ(PT)−Φ(G⋅PS)接近于零。
整个过程可总结为:
扭转模板点云得到源点云,对模板点云和源点云在某一视角下进行采样得到2.5D数据,然后将2.5D的模板点云和源点云输入模型,完成一次迭代,得到变换矩阵,然后根据变换矩阵更新源点云,然后在对源点云在某一视角下进行采样得到新的2.5D数据,然后将模板点云和更新后的源点云输入模型,一直重复这个过程。
实验结果如图8所示:
图8
4.5. Same category, different object
作者假设PointNetLK特征可以用于配准不同的但属于同一类别的对象的点云。
实验结果如图9所示:
图9
4.6. Computational efficiency
图10文章来源:https://www.toymoban.com/news/detail-496319.html
五、References
PointNetLK: Robust & Efficient Point Cloud Registration using PointNet文章来源地址https://www.toymoban.com/news/detail-496319.html
到了这里,关于基于深度学习方法的点云算法1——PointNetLK(点云配准)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!