田钰杰,管有庆,龚 锐
(南京邮电大学 物联网学院,南京 210023)
点云是一种常用的三维图形表示方式,许多场景都是基于点云进行三维环境感知和交互的,对点云进行分类和分割是目前深度学习领域的研究热点。点云数据是传感器最原始的数据形式,主要采用深度学习处理点云。点云具有无序性,可利用深度神经网络强大的学习能力解决点云数据的排序问题。PointNet[1]和Deep Set[2]利用对称函数处理无序的点云,从而对其进行优化。PointNet++[3]对PointNet 方法进行扩展,通过多尺度优化局部特征提取性能。DGCNN[4]深度神经网络根据绝对坐标计算空间中的局部区域,通过计算点的边缘特征学习边缘特征与其他特征之间的关系。VoxNet[5]将采样三维的点送入32×32×32 的三维网格,进而由三维卷积神经网络(Convolutional Neural Network,CNN)进行处理,但该网络计算量较大。曾碧等[6]提出一种聚类算法融合特征的方法,通过聚类算法对学习到的特征进行融合,用于解决点云室内场景分割。MVCNN[7]从点云中采样80 个视图,将它们投影到二维空间并进行二维的CNN 处理。杨晓文等[8]提出一种基于八叉树的CNN,构造高效的八叉树结构化来表示三维点云,将卷积计算限制在八叉树节点上,不需要投影到二维空间且能减少一定的计算量。SO-Net[9]网络结构使用自组织映射(Self-Organization Map,SOM)进行分层特征提取。
研究者利用多层感知机(Multilayer Perceptron,MLP)提取每个点的语义特征以处理点云数据,但这类方法不能很好地学习点的局部特征且鲁棒性较差。在点云分类分割中,既要考虑输入点的全局特征,也要考虑点与点之间的局部关系。杨军等[10]提出一种基于上下文注意力的CNN 方法,通过上下文循环神经网络编码机制捕捉多尺度局部区域之间的上下文特征,增强了模型的泛化能力。白静等[11]提出多尺度点云分类网络(Multi-Scale Point Cloud Classification Network,MSP-Net),使用多尺度特征对点云进行分类,表明多尺度具有更好的感受野,与单尺度分类相比,其精度更高,但是没有深入研究局部特征。文献[12-13]在自然语言处理(Natural Language Processing,NLP)领域中引入注意力的概念。注意力方法主要有分组注意变换(GSA)[14]和多头注意(Multi-Head Attention,MHA)[15],都是通过注意力来找到点云的局部联系。
本文提出用于多特征点云分类分割的深度神经网络RMFP-DNN。利用自注意力模块提取点与点之间的局部特征,通过残差结构结合GSA 与MLP 以加强对局部特征的学习。在此基础上,采用特征融合方法将局部特征的特征向量和每个点的特征向量相互连接,从而得到整体特征。
本文主要介绍RMFP-DNN 深度神经网络、RMFP-DNN 的自注意力模块和特征融合处理过程,自注意力模块通过残差连接[16]结合GSA 和MLP,特征融合处理将MLP 提取的特征和自注意力模块提取的特征连接得到整体特征。
点云的个数设为N,输入点云为P∈RN×3。初始输入为N×3(每个点的维度为3),由2 个分支结构构成特征提取,一个分支首先经过空间变换结构[1],将N×3 的输入通过K 近邻(K-Nearest Neighbor,KNN)算法[17]学习点云本身的位置信息,并学习到有利于分类分割的D×D的矩阵(PointNet采用3×3的矩阵),N×3和3×3经过矩阵相乘得到N×3的输出。空间变换结构如图1所示。空间变换结构对点云进行调整,从而保证点云旋转不变。
图1 空间变换结构Fig.1 Spatial transformer structure
图2 RMFP-DNN 深度神经网络结构Fig.2 Structure of RMFP-DNN deep neural network
自注意力模块在GSA 基础上进行残差连接,引入MLP 来保证原始点信息的完整性,残差的深层次结构能加深对局部特征的学习。
1.2.1 自注意力模块结构
自注意力模块由MLP 和GSA 组成。PointNet中,MLP 学习每个点单独的特征,忽略了点和点之间的局部特征。针对这个问题,自注意力模块通过GSA 来学习相邻点的特征。自注意力模块结构如图3 所示。首先将N×3 的输入通过绝对和相对位置嵌入(Absolute and Relative Position Embedding,ARPE)[10]输入特征集合X∈RN×c,c为特征通道数。然后通过残差连接将输入特征和GSA 分组变换后的特征连接起来送到MLP 中,将其结果与GSA 再做一次残差连接送到MLP 中,最后得到输出特征N×c。
图3 自注意力模块结构Fig.3 Structure of self-attention module
GSA 通过挖掘输入点和点之间的关系来进行局部特征的学习,能准确地表示每个点的语义特征。但是原有的GSA 不能保留原始的输入信息,所以为了保留原始信息,在RMFP-DNN 的自注意力模块引入MLP。
1.2.2 分组注意变换
GSA 是自注意力模块的重要组成部分。神经网络通过GSA 在训练时能学习点和点之间的局部特征。首先使用注意层[18]捕捉点之间的关系。将非线性变换σ加到注意层中,得到非线性注意层,如式(1)所示:
其中:X为输入点的特征集合;Q为查询参数,用于关注输入的X,且X,Q∈RN×c;c为通道数;s为按比例缩小的点积运算[8]。损失函数σ使用的是指数线性单元(Exponential Linear Unit,ELU)[19]。
PC机上还可以提供比智能手机丰富的控制功能和更人性化的人机界面,通过Internet访问农产品服务器上的视频信息:一方面可以实时监控农产品长势与营养需求,提供及时决策;另一方面可供农业专家系统对自然灾害防御,农作物病虫害分析,农产品后期可视化溯源提供依据。
在此基础上,引入通道变换[20]和分组变换[21],设g是分组数,c是通道数,c被g整除,每组的通道数cg=c/g,分组注意(GAttn)的定义如式(2)所示:
其中:X按通道分成g组,Xi∈RN×cg,Wi为每组i的 可学习变换权重,所以每组的特征Xi=X(i)Wi|i=0,1,…,g-1。自注意力是使输入特征注意到每个输入本身,令式(1)中的Q等于X,即Atσ(Q,X)变为Atσ(X,X)。再通过concat 连接,将每组的Atσ(Xi,Xi)连接成GAttn(X)。但这样得到的GAttn阻止了组与组之间信息交流,引入一个无参数通道转变算子ψ[22],在分组的基础上进行有效的分组变换。元素x∈Rc,重新定义分组x,每个x是不同通道的特征,x定义如式(3)所示:
其中:(xicg+j|j=1,2,…,cg)为通道分组中的第(i+1)组,因为i是从0 开始的。这样通道转变算子ψ定义如式(4)所示:
式(4)通过无参数通道转变算子ψ(x)将式(3)进行了分组变换,将式(2)中的GAttn代入式(4)中,最后通过分组归一化(GN)[23]得到GSA,GSA如式(5)所示:
通过以上分组变换,GSA 能够很好地提取点与点之间的特征。
特征融合处理主要将MLP 提取每个点的特征和自注意力模块提取点之间的局部特征进行concat连接。concat连接是一个更为通用的特征融合方法。设MLP提取每个点的特征得到特征向量v1∈Rn,设自注意力模块提取局部特征得到特征向量v2∈Rc,通过concat连接得到融合的特征向量v=[v1,v2]∈Rn+c,concat连接是通道数的合并,也就是特征维度的增加,而每一维度下的特征不变。如特征向量[1,2]和特征向量[3,4]经过concat 连接后变为特征向量[1,2,3,4]。RMFP-DNN通过MLP提取每个点的特征得到N×1 024的输出特征,2 个自注意力模块提取点之间的局部特征得到N×1 024的输出特征,经过concat 连接后得到N×(1 024+1 024)的输出特征,这样通道数的增加使得点云有了更多的特征表示。
融合不同尺度的特征可以提高点云的分类分割准确率,MLP 提取每个点的特征,但丢失了很多局部信息,包括点与点之间的关系,导致点的语义特征不够准确。自注意力模块学习点之间的局部特征,具有更强的语义信息,但对每个点的学习没有MLP 准确。因此,RMFP-DNN 采用特征融合方法,将两者进行融合,从而提升点云分类分割的准确率。因为融合了多个特征,在点云的稀疏性实验上,RMFPDNN 展现了较好的鲁棒性。
使用分类数据集ModelNet40[24]和部件分割数据集ShapeNet[25]验证RMFP-DNN 的鲁棒性和准确率。
ModelNet40 数据集包含40 个三维对象的类别,共有12 311 个计算机辅助设计(Computer Aided Design,CAD)模型。采用9 840 个训练样本,2 471 个测试样本。为比较RMFP-DNN 和其他方法,使用与PointNet 等方法相同的数据预处理。对于每个3D 模型,从网格面上均匀采样1 024 个点,只考虑点云的坐标。用三维坐标(x,y,z)作为每个点的原始属性。在训练过程中,随机旋转并扰乱点的位置。所有实验均使用Tensorflow 框架[26]。
在分类任务中,使用与SpiderCNN[27]中相同的训练设置。模型关键参数设置对性能有一定的影响。RMFP-DNN 的批处理大小设为16,批处理大小是每次训练时送入神经网络的样本数量,数值设置较大可以使网络收敛得更快,但是要根据GPU 设备的性能来选择数值。本次实验的GPU 为Nvidia GTX 1080 Ti,所以批处理设置为16 可以使网络收敛更快。采用交叉熵损失函数进行训练,使用Adam[28]优化算法,Adam 能够更快速地找到最优解,网络收敛后有较好的分类准确率。学习率设为0.001,学习率是指在优化过程中更新网络权重的幅度,需要根据不同的优化算法选择不同的学习率大小,学习率过大导致网络不收敛,学习率过小导致网络训练时间长。所以自适应地调整学习率,每隔20 个训练周期后学习率减半。批处理归一化的衰减率为0.7。RMFP-DNN 模型共训练250 个训练周期,训练周期又称迭代次数,指数据集输入到网络需要训练的次数。训练错误率和测试错误率相差较小说明训练周期的值较合适,如果测试错误率先小后大则说明训练周期的值设置偏大,出现过拟合现象,需要调小再训练。训练时,对点云的坐标进行随机变换用作对点的干扰,在训练时可以提高RMFP-DNN 的抗干扰能力。
在ModelNet 40 的数据集上RMFP-DNN 和其他方法的分类准确率对比如表1 所示,所有方法在1 024 个点上进行训练。
表1 在ModelNet 40数据集上不同方法的分类准确率对比Table 1 Classification accuracy comparison among different methods on ModelNet 40 data set %
整体分类准确率是模型在所有测试集上预测正确的数量与总体数量的比值;平均分类准确率是每个类别预测正确的数量与每个类别总体数量的比值。从表1可以看出,RMFP-DNN 的平均分类准确率为88.9%,整体分类准确率为92.6%,均优于其他方法。
此外,对预测结果进行更细致分析,ModelNet 40 数据集易错模型分类的对比如表2 所示。在同一个易错模型下,比较RMFP-DNN 与其他方法的差别。从 表2 可以看出,PointNet 与SpiderCNN 方法均不能很好地识别出相似模型桌子和凳子,对易混淆模型的识别准确率不高,而RMFP-DNN 方法学习了局部特征,能较好地识别这类相似性较大的模型。RMFP-DNN 可以准确识别出易混淆的灯和桌子模型,其他方法却不能。
表2 不同方法的易错模型分类对比Table 2 Error-prone models classification comparison among different methods
本文通过稀疏性实验比较各方法的鲁棒性,将点云从1 024 个点逐渐降到128 个点进行训练,通过对输入稀疏点地学习比较RMFP-DNN 和其他方法的鲁棒性。不同方法的准确率对比如图4 所示。从图4 可以看出,当点的数量从1 000 降到200 时,RMFP-DNN 方法的准确率降得不明显,表现出较好的鲁棒性,因PointNet++方法采用多尺度分组,其鲁棒性与RMFP-DNN 方法相差不大,而其他方法呈明显下降的趋势。
图4 不同方法的准确率对比Fig.4 Accuracy comparison among different methods
三维场景的点云语义分割分为部件分割和场景分割。部件分割是采用ShapeNet 数据集验证RMFP-DNN 的鲁棒性和准确性。ShapeNet 是评估三维部件分割的数据集,包含16个类别,共有16 681个模型和50 个分割的实例。每个对象有2~6 个部件标签(如桌子的桌脚、飞机的机翼等)。对2 048 个点进行训练,数据集采用13 807 个模型用于训练,2 874 个模型用于测试。使用交并比(Mean Intersection over Union,MIoU)作为所有实例的平均评估指标,MIoU用来计算真实值和预测值这两个集合的交集和并集之比,语义分割中常用MIoU 作为评价方法的指标。通过50 个部件分割的实例来对比各个方法。
随机丢弃率(droupout)的数值设置为0.6,dropout 是在训练过程中,对神经网络单元有一定概率将其从网络中丢弃,dropout 是为了防止训练时出现过拟合的现象。RMFP-DNN 的训练设置与分类类似,因根据GPU 的性能来合理选择批处理大小,批处理大小为8,与分类时批处理大小设置不同。学习率、优化算法和损失函数设置如同分类实验,训练周期设置为200。不同方法的部件分割准确率对比如表3 所示。
表3 不同方法的部件分割准确率对比Table 3 Component segmentation accuracy comparison among different methods %
在ShapeNet 数据集上,RMFP-DNN 的交并比为85.2%,与最优MVCNN 方法的交并比相比,降低了3 个百分点,但其帽子、汽车、吉他、电脑和浴缸5 个部件的交并比最高。由于RMFP-DNN 引入自注意力模块,并且结合每个点的特征,所以能够较好地学习局部特征和全局特征。
本文统一使用交叉熵损失函数,RMFP-DNN 与其他方法在分割训练损失上的比较如图5 所示。可以看出,RMFP-DNN 的损失下降为较快且稳定的。当网络收敛时,RMFP-DNN 的损失值是最小的,表明RMFP-DNN 在数据集的拟合能力上优于其他方法。
图5 不同方法分割数据的训练损失对比Fig.5 Training loss of segmentation data comparison among different methods
将分割结果做了可视化,RMFP-DNN 分割的部分可视化结果如图6 所示。从图6 可以看出,RMFPDNN 总体上具有较好的分割效果,但在部件细节部分的分割还有待提高。
图6 RMFP-DNN 方法的分割可视化结果Fig.6 Segmentation visualization results of RMFP-DNN method
本文对部件分割进行稀疏性实验,将点的个数尽可能降低,观察RMFP-DNN 是否具有鲁棒性,并且与PointNet 进行比较。RMFP-DNN 与PointNet 的分割情况如图7 所示(彩色效果见《计算机工程》官网HTML 版)。将分割有误差的点用红色的点标出,蓝色点即为与真实标签没有误差的点。飞机模型中,PointNet 在细节部分没有RMFP-DNN 分割的效果好,在飞机的机身和引擎部件中,PointNet 与真实的标签误差较大。椅子和手枪模型中,PointNet 在部件与部件连接地方的分割有较大误差,尤其是椅子和椅子脚的连接处存在分割误差。在摩托车模型中,RMFP-DNN 能保持和真实分割相近的分割结果,而PointNet 在摩托车车轮部分分割存在误差。消融下的分割实验可以表明RMFP-DNN 具有一定的鲁棒性。
图7 消融下不同方法的分割可视化结果对比Fig.7 Segmentation visualization results comparison among different methods under ablation
本文对部分残缺点云进行分割实验,并与PointNet 进行对比。残缺点云的分割可视化结果对比如图8 所示(彩色效果见《计算机工程》官网HTML 版),对所有数据集进行截取,每个模型只取256 个点进行测试,实验比较了4 组模型,从图8 可以看出,相比PointNet,RMFP-DNN 分割效果具有一定的鲁棒性。综合消融下分割实验和残缺的分割实验结果可知,RMFP-DNN 具有较好的鲁棒性。
图8 残缺点云的分割可视化结果对比Fig.8 Segmentation visualization results comparison of imperfect point cloud
本文提出一种鲁棒的多特征点云分类分割深度神经网络RMFP-DNN。采用残差网络结构对GSA改进得到自注意力模块,通过自注意力模块学习点与点之间的局部特征,并利用多层感知机提取点云全局特征。在此基础上,利用特征融合方法,在全连接层将所有特征进行融合得到分类和分割的结果。实验结果表明,RMFP-DNN 能够有效提高分类和分割精度,且在点云稀疏的情况下具有较好的鲁棒性。由于自动驾驶、VR 等真实的点云数据通常具有大量噪声,因此后续将对神经网络进行优化,进一步提高点云的抗噪声能力并降低神经网络的复杂度。