基于深度学习的点云匹配
2020-06-12梁振斌熊风光
梁振斌,熊风光,韩 燮,陶 谦
(中北大学 计算机科学与技术学院,山西 太原 030051)
0 引 言
点云匹配在计算图形学和视觉具有重要的意义,例如,在三维目标姿态估计[1]、三维重建[2,3]、目标检测[4]等方面。但由于采集的三维数据可能存在噪声、有遮挡、不完整,目前存在的一些点云匹配方法,使用的描述子大多是基于从静态几何特性的直方图得到,这些方法在对这种数据集进行点云匹配时,准确性比较低。因此,针对这类数据集,如何使点云匹配的准确性更高、计算运行时间更短,已成为重要的研究热点。
但传统的点云匹配方法一般都是人为定义的一个描述子,因此可能会存在有一定的误差。与此同时,深度学习近年来大火,并取得了一系列的成功,可以利用深度学习来进行分类[5],也有人利用深度学习进行图像处理[6],对于如今的点云匹配,有人利用纹理和曲率特征进行匹配[7],也有人对激光扫描和图像匹配生成的点云进行匹配[8],或者对点云进行分割和三维建模[9],或者将匹配运用到了手术之中[10],或者利用三维重建来获取描述子[11]。虽然,如今的点云匹配技术有很多优点,但仍存在很多不足,本文在现有的点云匹配方法基础上,针对现今存在的问题,利用深度神经网络训练得出一种有高精度和高准确性的描述子,来解决点云匹配过程中存在的问题:在低分辨率、噪声和部分三维数据中,匹配局部几何特征仍然是一个具有挑战性的任务,虽然可以用大量低级手工几何特征描述子来解决该任务,这些描述子大多基于静态几何特性的直方图得到[12]。它们适用于具有完整曲面的三维模型,但在三维扫描数据的实际局部曲面中往往不稳定或不一致,难以适应新的数据集。因此,使用这些描述子来进行几何匹配的现有三维重构方法需要大量的算法来处理异常值,并需要建立全局对应关系。为了应对这些困难,受到最近神经网络成功的启发,拟通过神经网络训练得出能解决这些问题的描述子,优化点云匹配。
1 点云匹配过程
1.1 关键点获取
点云匹配一般是基于两片点云的对应关键点来进行匹配,因此需要先找到两片点云的对应关键点,由于人工设计关键点匹配比较费时费力,并且精度不够高,所以本文采用深度学习的方法,通过训练生成3D描述子,然后通过生成的3D描述子获取匹配的关键点来进行点云匹配,因此需要先获取深度学习训练所需要的数据集,具体步骤如下:
首先,将RGB-D图片重建为三维点云,从重建中随机采样获取关键点p1,先随机选择一张图片上的一个像素,这样就有了关键点p1的两个坐标,再从深度图中读出它的深度,作为第三个坐标,就得到相机坐标系中p1的3个坐标,然后结合相机参数与帧参数将3个坐标对应到世界坐标系下的x,y,z坐标,将该点与周围的邻域记为p1。然后获取p1在其它帧中的对应点p2,将关键点p1在重建中的3D位置映射到其位于摄像机视锥体内且未被遮挡的所有的RGB-D帧中,直接得出关键点在另一帧中的位置,提取该点与其邻域记为p2,将p1与p2用作匹配对。最后获取p1在其它帧中的最不对应点p3,从其它帧中随机获取距离p1对应点至少间隔0.1米的点,记为p3,将p1与p3用作不匹配对。
但由于点云是无序的、无规则的,而深度学习神经网络训练的数据需要是规则的、有序的数据,因此要先将点云进行体素化:将每个3D块从它的原始表示转换为截断距离函数(TDF)值的体积为30×30×30的体素网格。每个体素的TDF值表示该体素的中心与最近的3D表面之间的距离。这些TDF值被截断、归一化,然后翻转到1(在表面上)和0(远离表面)之间。TDF的灵感来源于TSDF,而TSDF来源于SDF。公式如式(1)和(2)所示
sdfi(x)=depthipic(x)-cami(x)
(1)
(2)
其中,pic(x)是体素中心x在深度图像上的投影,因此depthi(pic(x))是摄像机与观察光线交叉x上最近的物体表面点p之间的测量深度,因此cami(x)是体素和相机之间沿光轴的距离。因此sdfi(x)也是沿光轴的距离。sdfi(x)的阶段变体由tsdfi(x)表示,SDF被截断为±t,这是有益的,因为大的距离值与表面重建无关,并且可以利用值范围的限制来占用内存。TDF表示与TSDF相比具有若干优点,TSDF除了表面(接近0的值)和自由空间(接近1的值)之外还编码被遮挡的空间(值接近-1)。通过删除符号,TDF失去了自由空间和被遮挡空间之间的区别,但在部分数据上获得了一个对描述子的鲁棒性至关重要的新属性:体素值之间的最大梯度集中在表面周围,而不是自由空间和遮挡空间之间的阴影边界。此外,TDF表示减少了确定摄像机视图不可用的3D数据上的遮挡空间是什么的模糊性。因此,将这种TDF体素网格作为深度学习训练的数据集。
1.2 关键点的描述
从1.1节可以得到深度学习训练所需的数据集,在本节将使用该数据集训练得出3D描述子,来对关键点进行描述,具体步骤如下:
首先,进行训练时需要用到深度学习的框架,经过对比最近流行的框架,结合本文的需求,本文最终使用了Marvin深度学习框架,Marvin是普林斯顿大学视觉工作组新推出的C++框架,它只支持GPU下运行使用,它的优点是使用简单、内存消耗小,并且运算速度快。具体过程为:将一个关键点的30×30×30的TDF体素网格,以及它的对应点和非对应点的TDF体素网格同时输入到网络中进行训练,有3个输入是因为这里用到了一种网络模型Sia-mese network(孪生神经网络)[13],如图1所示。
图1 孪生神经网络结构
其中,X1和X2是匹配对,X1和X′2是非匹配对,W是模型参数,GW是将输入的数据转换成特征向量,EW是来衡量两个转换成的向量之间的距离。它的原理是:一个网络输入两片点云中的两个对应点的TDF体素网格,通过训练让它们的输出越来越像,而另一个网络则输入两个非对应点的TDF体素网格,通过训练让它们的输出差距越来越大。最后输出的描述子,使匹配对的描述子的损失变小,使非匹配对的损失变大,从而得出网络的权重。
在训练过程中,为了优化产生的描述子,使用了Contrastive Loss[14]来保证得出的描述子更加精确,Contrastive Loss公式如式(3)所示
(3)
图2 损失函数
1.3 用描述子进行匹配
从1.2节可以获得训练得出的权重,将需要匹配的两片点云选取关键点输入其中,便能得出精准的关键点的描述子向量,使用描述子向量便能得出两片点云中配对的关键点,通过配对的关键点来完成点云匹配。具体步骤如下:
首先,加载两片需要匹配的3D点云A和B,随机选取关键点,计算其TDF体素网格,并将其输入到1.2节训练好的模型中,便能分别得到关键点的描述子向量,通过计算得到A中所有关键点的描述子向量与B中所有关键点的描述子向量之间的L2距离,本文直接使用了K-D树进行计算,因为它是比较优的解决方式。此时对A中的关键点,求出在B中L2距离与之最小的点,作为它的对应点,通过这种方式找到了对应的关键点,再通过RANSAC算法估计A,B两片点云之间的刚性变换,通过变换矩阵完成点云匹配。
2 实验结果及分析
实验采用与利用SHOT描述子进行关键点匹配、利用ICP算法进行点云匹配在匹配运行时间、旋转平移鲁棒性和点云匹配准确性方面进行对比分析。三维模型使用的是斯坦福大学的Bunny模型与普林斯顿大学的Cap模型和Chair模型。
本文所用的环境为:Ubuntu16.04,CUDA7.5,cuDNN5.1,Matlab2015b,Windows7,Visual Studio 2015+PCL 1.8,开发使用的语言为C++。
2.1 匹配关系评价标准
点云匹配最重要的衡量标准就是点云匹配的准确性,准确性越高,则代表匹配方法越好。首先,需要定义模型的匹配准确性标准,本文使用了Wu M使用的评价标准[15]。其中真实的旋转矩阵为RiGT,每次计算得到的旋转矩阵为Ri,真实的平移矩阵为tiGT,每次计算得到的平移矩阵为ti,旋转矩阵的误差如式(4)、式(5)所示
(4)
(5)
在式(4)中,Rid代表了Ri和RiGT之间的差异,若二者差异为0,则Rid为单位矩阵。在式(5)中,θie代表了Ri中存在的旋转误差量。类似的,平移矩阵误差如式(6)所示
(6)
式中:tie代表了平移误差量,dres代表网格的分辨率,平移向量之间的差异相对于进行归一化,以使其与尺度无关。
2.2 运行时间分析
本文在实验中测试了用本文方法进行点云匹配,并记录运行时间,然后与利用SHOT描述子进行点云匹配、ICP进行点云匹配所消耗的时间进行比较,结果见表1。
表1 不同方法点云匹配运行时间
从表1中可以看出,使用本文方法进行点云匹配在运行时间上,明显优于SHOT描述子进行点云匹配和ICP点云匹配的方法,说明本文方法计算效率更高、运行时间更快。
2.3 匹配准确性分析
在点云匹配中,最重要的便是匹配的准确性,故在实验中对点云匹配的准确性进行了实验并计算。本次实验过程为:先利用本文方法对0度和45度的Bunny模型进行点云匹配,同样使用本文方法对Cap模型和Chair模型进行匹配,匹配结果分别如图3(a)、图4(a)、图5(a)所示,然后使用SHOT描述子对两片点云进行匹配,匹配结果分别如图3(b)、图4(b)、图5(b)所示,最后使用ICP算法对两片点云进行匹配,匹配结果分别如图3(c)、图4(c)、图5(c)所示。其中,红色点云表示经过变换的源点云,蓝色点云表示目标点云。
图3 不同方法点云Bunny匹配结果
图4 不同方法点云Cap匹配结果
图5 不同方法点云Chair匹配结果
从图3、图4、图5中可以直观比较出,使用本文方法进行点云匹配,在重合率和准确性方面都极大优于另外两种方法对点云进行匹配。采用2.1节的匹配关系评价标准,计算得出不同方法点云匹配的旋转误差与平移误差,匹配准确性见表2。
从表2中可以看出,本文方法在匹配时在旋转误差方面极大的优于别的方法,在平移误差方面略微优于别的方法,结合实验匹配图片与准确性表来看,本文方法很大程度上优于其它两种方法。
表2 不同方法点云匹配准确性
3 结束语
本文提出了一种基于深度学习的点云匹配方法,通过卷积神经网络深度学习训练得出3D描述子,该描述子的权重经过大量数据集训练得出,使用该方法进行点云匹配,更有效解决了在低分辨率、噪声和三维数据被遮挡时匹配效果不好的问题。实验结果表明:该匹配方法得出的描述子具有良好的鲁棒性,并且利用该方法进行点云匹配时,运行时间和计算速度更快,匹配时的误差更小,使点云匹配结果更加准确。