梁昊天,邬义杰
(浙江大学工程师学院,杭州 310027)
随着激光雷达、RGBD相机等高精度传感器的快速发展,点云数据变得更易获取、成本得到控制[1]。相较于二维图片,点云能提供丰富的几何、形状和尺度信息,使机器人对周围环境的理解更加深刻,因而其已成为计算机表示三维世界的主要数据格式之一[2]。 由于传感器只能在其有限的视野范围内捕获扫描,因此需要配准算法来生成大型三维场景。 点云配准是估计两点云之间的变换矩阵的问题。 应用变换矩阵,我们可以将关于同一三维场景或对象的部分扫描合并成一个完整的三维点云[3]。点云配准在众多计算机视觉应用中起着关键而不可替代的作用,如三维重建、三维定位、位姿估计、自动驾驶等[4]。
点云配准按点云来源分类可分为同源配准和跨源配准,按配准策略分类可分为基于优化的配准方法、基于特征对应的配准方法和端到端学习的配准方法[5]。
基于优化的配准方法借助优化的策略估计刚体变换矩阵。大部分基于优化的配准方法包含两个步骤:对应点搜索和变换估计,两个步骤迭代进行。其中,BESL等[6]提出的迭代最近点(iterative closest point,ICP)算法,该算法基于奇异值分解(singular value decomposition,SVD),思想简单、精度高,然而其计算开销大,且使用需要满足两个前提条件,即两个点云间存在包含关系且两个点云初始位置不能相差太大。YANG、BRENNER等[7-9]对其提出了改进。
不同于经典的基于优化的配准算法,基于特征对应的配准方法分为三步:对点云中的点进行特征提取、在特征空间中搜索点对、无需迭代的一步估计(如随机抽样一致性算法(random sample consencus,RANSAC)[10]、TEASER++算法[11]等)获得刚体变换矩阵。点的特征描述是其中关键的一环,传统的特征描述子有FPFH[12]、PPF[13]等。使用深度神经网络学习的特征描述子如3DMatch[14]、PPFNet[15]、FCGF[16]等及将注意力机制应用于点云处理的Point Transformer[17],希望通过深度学习的方法得到具有更强的特征表达能力和更高的鲁棒性的特征描述子。其劣势在于:①深度学习需要大量的训练数据;②当训练数据与测试数据存在尺度、精度差异时,配准效果会大幅下降;③通过独立的训练过程学习的特征提取网络确定的是点的配对关系而非配准结果。
端到端学习的配准方法使用端到端的深度神经网络解决配准问题,如DGR[18]、DeepGMR[19]、FMR[20]等。网络的输入是两个原始点云,输出是对齐两个点云的刚体变换矩阵。
渲染技术通常用于计算机生成场景与模型的可视化,在众多计算机图形领域起着不可或缺的作用,如工业设计、医学影像等[21]。在深度学习领域,也有使用渲染技术生成训练集的案例,如HODAN等[22]提出一种使用三维模型合成拟真度较高的图像的方法,并利用这些生成的PBR(physically-based rendering)图像训练卷积神经网络在真实照片中目标检测的能力。这种物理渲染方法获得的训练集由于2D目标检测框、实例分割掩膜、6D位姿数据都可以自动生成,相较于时间、人工成本极高的人工标注真实数据集,具有极大的优势。
本文提出了一套点云配准实现及评价的算法流程,其核心是改造的将自注意力机制应用于点云处理的Point Transformer点云特征提取网络模型,InfoNCE[23]作为其损失函数,通过应用渲染技术,将ShapeNet[24]数据集模型在不同视角下投影成外参已知的深度图,生成其训练集。在点云的特征空间内KDTree的方式互相寻找其最近邻点,构成点对关系。使用RANSAC算法由点对估计点云刚体变换矩阵,作为粗配准结果。在ICP算法的基础上开发了Rendering-ICP算法作为精配准环节,优化得出最终的刚体变换矩阵,即位姿估计结果。最后,在Linemod数据集上与FPFH、PPF、FCGF的点云描述子进行对比测试,使用基于渲染的可见表面差异(visible surface discrepancy,VSD)的回归作为6D位姿估计评价指标进行评价,验证了本文算法的优势。
物体的6D位姿是指物体坐标系到相机参考坐标系的几何映射。最常见的,该映射是由三维旋转(物体方向)和三维平移(物体位置)定义的。推断物体的6D位姿是机器人与外界环境交互的一个关键性问题。
在实际应用中,物体的6D位姿估计通常包含两个阶段:①将目标物体从实际场景中识别并分离出来;②根据分离后的物体信息判断其6D位姿。第一步由基于卷积神经网络的实例分割方法完成(如Mask-RCNN[25]等),本文不再赘述,本文给出第二个阶段使用点云配准方法的解决思路。
本文选用Linemod[26]数据集作为本文算法的应用场景,Linemod数据集包含了15个物体,提供了这15个物体的模型文件和真实采集的每个模型200张用于测试的RGBD图像,及采集所用深度相机的内参、用于评估6D位姿估计结果的真值变换矩阵等。已知相机内参如表1所示。
表1 Linemod数据集采集所用Kinect相机内参
由相机内参,对一张深度图,已知其上坐标为(u,v)的某个像素点的深度值有效(非零),值为d,则可以计算得该像素点对应的点云点空间坐标(x,y,z),如式(1)~式(3)所示:
(1)
(2)
(3)
图1a、图1b分别为Linemod数据集的测试集的一张RGB图像与深度图像样例,及这两张图像合成的点云图。
(a) Linemod数据集测试集RGB图(左)、深度图(右)
目标物体的实例分割结果由前置的Mask-RCNN算法获得,将实例分割获得的RGB图像二值掩膜与深度图点乘获得滤除了背景的目标物体深度图,由相机内参计算得独立的待估计6D位姿的目标物体点云。从而,将6D位姿估计问题转换为计算目标物体模型点云到实际采集点云中目标物体局部点云的空间变换矩阵,即模型点云和局部点云之间的配准问题。为此,本文设计了一套基于深度学习的点云配准流程。
基于优化的配准算法不适用于初始位姿相差大的配准场景,而端到端学习的配准算法则存在解释性差、对模态不同的输入点云配准效果差等问题,因而本文选用基于特征对应的配准方法。传统的特征描述子对模型特征的描述注重局部几何特征,对全局信息的把握较弱,对抗噪声的鲁棒性差,而基于深度学习的特征描述子则可以通过合理的网络结构和大量充分的训练解决上述问题。
Transformer和自注意力机制对自然语言处理和机器视觉领域都产生了革命性的影响。自注意力算子可以分为两种类型:标量注意力和向量注意力。本文使用向量注意力作为基础,设X={xi}i作为特征向量的集合。通常,注意力权重是可针对单个特征通道进行调节的向量,其计算如下:
(4)
式中:yi表示输出的特征,φ、ψ和α表示逐点特征变换(如线性投影或MLP),δ表示位置编码函数,β表示关系函数(如差),γ表示为特征聚合生成注意力向量的映射函数(如MLP),ρ表示归一化函数(如softmax),⊙表示Hadamard乘积,即对应位置元素相乘。
自注意力机制对点云对象具有天然的适配性,这是由于点云是不规则地嵌入在三维空间中。本文使用的Point Transformer层基于向量的自注意力机制,其使用差作为关系函数,并对每个注意力向量γ和特征变换α添加一个位置编码,如下:
(5)
本文基于Point Transformer改进了一套点云的特征描述学习网络。Point Transformer原本被设计用于点云的语义分割与点云分类任务,通过改造其输出头的全局池化层和多层感知器,使得网络的输入是一个点云对象,输出则是该点云中逐点的特征描述。网络包含5个下采样阶段和5个上采样阶段,对逐步下采样的点云进行特征编码操作,其中各个阶段的下采样率分别为[1,4,4,4,4],因此每个阶段产生的点云的点数分别为[N,N/4,N/16,N/64,N/256],其中N为输入点云的点数。而后对逐步上采样的点云进行特征解码操作,之前解码器阶段的特征与相应编码器阶段的特征进行插值汇总,通过解码器后作为当前层的解码后的特征。通过五层编码器和解码器之后的逐点特征作为最后的网络输出。这样的网络结构设计保证了点云中每个点的特征都包含了5个不同采样率下对全局信息的把握。
(6)
式中:f是对数双线性模型。
(7)
Transformer架构解决了卷积神经网络需要深层次的卷积网络对相距较远的元素进行交互的限制,然而其训练的难度也更大。点云配准的数据集如3DMatch等,多为室内场景点云,与本文算法对中小型物体6D姿态估计的应用场景存在尺度差异,适用性较差。因而,本文设计了一套利用渲染技术生成点云特征对比学习数据集的算法。
2.2.1 渲染技术生成点云特征对比学习数据集
ShapeNet数据集包含了约300万个模型,其子集ShapeNetCore包含了来自55类的约5万个模型,根据模型类型和大小筛选后保留了其中约2万个模型,作为原始模型。对每一个原始模型,以其中心点为空间零点与视点球面球心,其随机2~5倍直径作为视点球面半径,生成16个同心视点球面,在每个视点球面上随机取1个点,作为模拟的相机位置,相机朝向模型中心点并适当扰动,将观察到的原始模型渲染成RGB图像和深度图像,称为一个视图,如图2所示。
图2 渲染生成的ShapeNet模型的16个视图
对这样一个渲染的视图,其相机内参是自定义的,外参是由相机在空间确定的,因而可以通过相机内参重建视图的点云,通过相机外参获取视图点云与模型点云间,视图点云与视图点云间的真值配准结果。这样的一组初始点云对和其真值配准结果构成了训练数据集中的一条原始数据。
2.2.2 渲染生成数据集的数据增强
与渲染生成的视图点云数据相比,由于深度相机分辨率、自然噪声等影响,真实采集的视图点云数据具有深度分层,噪声干扰,深度信息缺失等特点,如图3所示。因此,对渲染数据集中的视图点云须进行数据增强操作,使网络对模型和视图间不同模态特征一致性的学习达到更加鲁棒的效果。
图3 深度相机采集的真实点云的分层现象
针对以上的真实采集点云数据的特点,本文分别设计了对深度图进行深度分层、添加柏林噪声和生成随机多边形孔洞的数据增强操作,图4b~图4d分别是图4a的原始点云经上述操作处理后的效果。
(a) 原始点云 (b) 深度分层 (c) 柏林噪声 (d) 随机多边形孔洞
本文所用的实验平台为NVIDIA DGX系统,软件平台为Python 3.8.10,PyTorch 1.10.0,CUDA 11.3。使用8个NVIDIA GeForce RTX 3090 GPU对网络进行多卡训练。网络训练的优化器使用Adam,各参数设置如表2所示,训练30个epoch。
表2 Point Transformer训练参数设置表
通过训练好的Point Transformer网络对点云的特征提取,点云中的每一个点获得了一个独特的64维的特征表达。将64维的特征使用主成分分析(principal component analysis,PCA)方法降维至3维,并标准化至RGB通道,作为颜色表示,可视化效果如图5所示。
(a) 台钳(左:模型、右:视图) (b) 茶杯(左:模型、右:视图)
一个视图的目标物体的点云与目标物体完整模型的点云在相同位置应具有相似的特征表达。对物体模型的每个点的64维特征表达建立一个KDTree搜索空间,欧式距离作为距离的度量指标。设x(x1,x2,…,xn)和y=(y1,y2,…,yn)是n维空间中的两点,其欧氏距离计算如下:
(8)
对于一个视图点云中的每个点,在特征空间中寻找其在模型点云中的最近邻点(与其具有最小欧式距离的点)。将模型与视图互换进行同样的操作。如果分别来自模型点云和视图点云的两个点在特征空间中互为最近邻,则认为它们构成一个点对。
在特征空间搜索到的互相最近邻点对,由于模型点云和视图点云间存在模态差异,并非完全正确,错误点对的存在是不可忽略的。因而本文使用RANSAC(随机抽样一致性)算法由点对估计点云刚体变换矩阵。RANSAC算法的思想在于假设与验证,即:①从所有互相最近邻点对中随机选取3组,假定它们是正确的,并基于其求解刚体变换矩阵;②计算剩余的点对在该刚体变换矩阵下的误差,如果误差值小于预定误差阈值,则被认为是样本内点,否则为样本外点。统计内点的数量;③重复上述步骤,直到达到设定的最大迭代次数;④统计不同刚体变换矩阵下的样本内点数,内点数最多的矩阵即为最佳数学模型。使用最小二乘法对该模型的所有内点重新估计刚体变换矩阵,作为最终的粗配准结果。
RANSAC算法获得的粗配准结果在精度上仍不可避免的存在一定误差,因而一般需要使用精配准算法(如ICP算法)优化配准精度,而在实际测试中发现局部视图点云对完整模型点云的配准受不重合部分的影响较大,如图6a和图6b所示,钻孔机的上半部分近似于圆柱体,当视图点云的上半部分被包裹于模型点云之中时,受模型视图不重合部分无关点的影响,迭代最近点的优化策略失效,进而导致ICP算法失效。因此,开发了Rendering-ICP算法,即根据粗配准结果,从待估计位姿的视图点云的相机观测点观测渲染的模型点云,保留可见点,剔除不可见点,将模型点云投影成局部视图,以排除模型不重合部分对配准的干扰。ICP算法与Rendering-ICP算法的配准效果对比如图6c和图6d所示。
(a) 粗配准结果(轴测图) (b) 粗配准结果(正视图) (c) ICP精配准结果 (d) Rendering-ICP精配准结果
(9)
对每个单独目标的6D位姿估计结果,其eVSD若小于设定的错误阈值,则视为正确的结果,否则视为错误,在实验中,选取阈值为0.3。则VSD的回归RecallVSD计算如下:
(10)
式中:TP为正确的结果数,FN为错误的结果数。
FPFH、PPF、FCGF算法与Point Transformer算法在Linemod数据集上6D位姿估计结果的评价指标如表3所示。
表3 点云描述子在Linemod数据集上的VSD回归评价结果
对Linemod数据集中15个物体的VSD回归结果单独分析,结果如图7所示。
图7 点云描述子在Linemod数据集上逐物体的VSD回归评价结果
通过表3和图7可以看出Point Transformer点云描述网络模型在设计的训练集训练后的性能显著优于其他算法。
本文针对点云的特征描述子在深度学习训练中训练集构造困难的问题,创新性地提出了应用渲染技术将点云模型在不同视角投影后重建,构建成点云配准训练集的方法。立足于6D位姿估计应用场景,改造了被设计用于点云语义分割的Point Transformer作为点云的特征描述子,设计了局部视图点云到整体模型点云的配准训练集,并结合真实采集点云的特征,设计了深度分层、柏林噪音、随机多边形孔洞等数据增强方法,增强了学习的点云特征的鲁棒性。使用训练好的模型处理点云对象,推理每个点的64维特征,并做了可视化呈现。在特征空间中搜索互相最近邻点构建点对,RANSAC方法获取粗配准结果,在ICP算法基础上创新的Rendering-ICP算法作为精配准算法获得最后的配准结果,即6D位姿估计结果。最后与FPFH、PPF、FCGF等算法进行了对比实验,VSD的回归作为评价指标,证明了本文算法的优势。
点云配准的应用场景很多,由于着眼于6D位姿估计场景,渲染的训练集均为直径不超过1米的物体局部视图到全局点云的配准,因而本文训练出的Point Transformer点云特征描述子是针对小型物体特化的。在后续研究中,可以着眼于训练集的扩充和泛化性的增强,将本文的算法应用于室内场景、室外大型场景三维点云重建等。