基于PointNet的三维点云部件分割的抗干扰研究
2023-09-01穆莉莉单卓佳
穆莉莉 单卓佳
(安徽理工大学机械工程学院 安徽淮南 232001)
近年来,随着人工智能、机器视觉、神经网络等信息科学技术的快速发展,3D传感技术在自主驾驶、医疗、建筑和工业设计等行业越来越重要。由于神经网络、卷积网络在2D 图像上的应用,将卷积网络、神经网络应用到3D数据引起了许多研究者的关注[1]。物体的三维表达方式有点云、网格、体素、多视觉图像。点云数据是一种常用的三维数据,是由物体表面上很多点构成,具有xyz 坐标信息以及法向量等信息。相比体素网格数据,能够将原始的几何信息更好的保留在几何空间中[2]。
在3D 数据进行深度学习时有多视角投影法、栅格化法等方法,多视角投影法是将三维数据经过多视角投影到二维图像,通过2D卷积网络处理数据,但在转化过程中会导致三维空间信息的大量丢失。用栅格化法把三维空间划分为栅格并转化为体素,此方法能够解决点云无序性问题,但会大大增加模型学习的难度[3−4]。为了避免三维数据作为神经网络输入层出现点云数据转换问题,斯坦福大学Charles[5]等提出以原始点云数据为神经网络输入层的深度学习模型PointNet,PointNet 是3D 点云处理的开山之作,是直接输入点云数据进行训练的模型,其模型通过对称函数解决点云无序性问题,通过多层感知机(MLP)获取全局特征,获得较好的识别效果及分割精度[6]。同时,卷积神经网络中选择合适的优化器与激活函数对三维点云部件分割精度至关重要。针对深度神经网络设置不同的参数对分割精度的影响,文章提出在PointNet模型的基础上,考虑影响三维点云分割精度的各种因素,其因素包括卷积网络的构建、激活函数与优化器的选取等,通过权衡各种因素对分割精确的影响从而达到最佳精确度[7]。
一、影响点云分割精确度的因素
(一)卷积网络激活函数的选择。激活函数是神经网络中的重要部分,在神经网络中,每一层的输出承接上一层输入的线性变换,激活函数可以使神经网络加入非线性因素,提高网络对模型的表达能力,使得神经网络能够解决更加复杂的问题。神经网络中经常使用的激活函数有Sigmoid、ReLU、Tanh等函数。
(二)优化器的选择。在深度学习中,是以损失函数作为神经网络性能评判指标。神经网络中每一层有许多权重,其权重决定损失的大小和网络的输出,可以通过减小损失的方式更新权重,提高神经网络的性能。优化器可以修改权重和学习率来最小化网络损失,从而优化网络。常用的优化器有Adam、SGD、SGD+Momentum、Nadam、Adadelta 等。选择不同的优化器对点云分割优化效果极其重要[8]。
二、卷积神经网络模型
(一)PointNet 模型。采用PointNet 神经网络模型对ShapeNet 数据集的飞机模型进行三维点云部件分割。该模型的输入是由n个(n×3)三维点云数据构成,首先通过T−Net(3×3)网络模型对输入的点云数据进行规范化处理,解决三维点云数据的平移不变性、旋转不变性、放缩不变性问题。通过点云变化矩阵操作,多层感知机MLP(3,64,128)进行升维操作提取数据的空间特征,上升为128维的特征向量。再通过T−Net(128×128)网络模型对输入特征进行规范化处理。然后利用多层感知机MLP(128,512,2048)进行升维处理,同时使用对称函数进行最大池化获得全局特征,使得多层感知机中的64、128、128、512 维特征向量与全局特征向量完成拼接,构成n×2880 矩阵。最后通过多层感知机MLP(2880,128)和MLP(128,5)进行降维处理得到n×5 的特征矩阵,完成5 个部分特征分类[9]。PointNet神经网络模型的框图如图1所示。
图1 PointNet神经网络模型
(二)多层感知机。MLP多层感知机是由输入层、隐藏层、输出层三层组成的多层结构,其隐藏层也是多层结构,每一层中有很多的节点,该节点可以实现给定输入的激活函数。在做多层结构中,层与层之间的节点是密集连接,可以相互通信[10]。感知机的目的是对输入进行加权处理,突出输入数据的特征,其数学模型设为输入层为{x1,x2,⋅⋅⋅,xn} ,隐藏层的输出公式如下:
其中W1为权重值,b1为偏置值,三层感知机的数学模型如下:
其中函数G为激励函数,激励函数可以克服梯度消失的问题和加快训练速度。在PointNet 模型中通过采用MLP 进行特征提取和特征转换,解决点云无序性问题。
(三)T−net 网络模型。为了解决点云数据旋转不变性、平移不变性、放缩不变性,PiontNet模型引入了T−Net网络模型[11]。点云数据的旋转不变性、平移不变性、放缩不变性是指点云数据代表的物体通过旋转、平移、放缩导致所有的(x,y,z)坐标发生变化,但还能代表同一物体,在PointNet模型中使用了T−Net(3×3)和T−Ne(t128×128)网络模型。T−Ne(t3×3)网络模型的作用是对输入点云数据处理,该网络模型通过三次卷积操作,其三次卷积中的filter(过滤器)分别采用64、128、1024,将3 维输入升到1024维,再进行最大池化操作,防止过拟合,提高计算效率,最后通过MLP(512,256,3)降回3 维数据。而T−Net(128×128)网络模型作用是对输入的特征进行处理,其卷积操作中的filter 分别采用128,512,2048,同样使用最大池化,之后再通过MLP降维到64维[12]。T−Net网络模型的框图如图2、图3所示。
图2 T-Net(3×3)网络模型
图3 T-Net(6×6)网络模型
(四)三维点云最大池化。最大池化可以保留数据的特征,减少神经网络训练的参数,从而使得训练时间减小。在本文使用的PointNet模型中,输入的点云数据从3维到2048维后,需要通过最大池化层对n个点进行融合处理得到全局特征。最大池化操作会有效地对输入数据进行下采样,提高机选效率。最大池化满足梯度之和不变的原则,把patch 中的最大值传递给接下来的一层[13]。虽然丢失一部分数据信息,但减小了训练与测试的计算量,防止数据参数量过大出现过拟合情况,提高了训练效率。三维点云最大池化操作如图4所示。
图4 三维点云最大池化操作图
三、分割实验结果与分析
(一)点云分割实验配置。分割实验采用ShapeNet数据集,该数据集包含4045个飞机模型,每一个飞机模型都是由三维点云数据组成。实验将数据集中百分之八十的飞机模型作为训练集,剩余百分之二十的飞机模型作为测试集,然后对训练结果进行测试。在训练时,从每个飞机模型中随机抽取1024个点进行训练与测试。实验结果将每个飞机模型分割为“wing”,“bady”,“tail”,“engine”与“空白”5个部分,分割实验步骤为:
1)启动Python,下载ShapeNet数据集;
2)构建好PointNet 模型,设置模型参数,学习率设置为0.001,batchsize设置为32,设置不同的激活函数和优化器,开始训练模型对ShapeNet进行分割;
3)评估分割的精确率,查看分割实验结果。
(二)模型参数分析。
1.激活函数的选择。在PointNet 模型的卷积网络中,选择Sigmoid 激活函数和ReLU 激活函数做对比实验。Sigmiod 函数用于隐藏层的输出,输出在(0,1)之间,其函数公式为:
其中x为输入值,∂(x)为输出值。
ReLU函数在输入小于或等于0时,输出为0;当输入大于0时,输出等于输入,ReLU函数公式为:
其中,x为函数的输入,h(x)为函数的输出。
ReLU函数具有很好的稀疏性,有一半的值未被激活,可以很好地避免过拟合,而Sigmiod函数不具有稀疏性。此外,相对于Sigmiod 函数的两端饱和,ReLU 函数只有一端饱和,缓解梯度消失问题,加速了梯度下降的收敛速度[14]。选择ReLU 函数与Sigmiod函数两种不同的激活函数进行不同轮数的训练与测试,由表1所知,ReLU函数相对于Sigmiod函数能够达到较高的精确度。
表1 激活函数测试精确度对比
2.优化器的选择。选择Adam优化器、SGD优化器与SGD+Momentum 优化器做对比实验,Momentum 参数选择0.9。SGD(随机梯度下降)的表达式如下:
其中W为更新的权重,μ为学习率,为损失函数关于权重的梯度。SGD+Momentum 动量梯度下降法基本迭代表达式如下:
其中ε> 0 为每次迭代的学习率,μ∈[ 0,1 ],∇f(θt)是目标函数,为θt的梯度曲线,v为矢量速度。
Adam优化器结合了Momentum和AdaGrad的方法,对梯度的一阶矩估计和二阶矩估计进行综合考虑,计算出步长。使用三种不同的优化器进行点云分割,结果对比如表2所示。由表2可知,SGD优化器相较于Adam优化器和SGD+Momentum优化器能够快速稳定地达到更高的精确度。在选择SGD优化器与RuLU激活函数下进行60轮训练与测试,其训练测试精确度、损失率随训练轮数的折线图如图5、图6所示,三维点云部件分割效果如图7所示。
表2 优化器对比
图5 准确率和验证准确率
图6 损失率和验证损失率
图7 三维点云部件分割效果图
四、结语
为了进一步提高三维点云物体部件分割的精度,本文通过对PointNet神经网络模型构建的调整,激活函数的选择以及优化器的选择,并在ShapeNet 数据集上进行多轮次的训练与测试,得出结果并进行对比。由对比结果可以得出,该模型在选择Relu激活函数和SGD优化器时会得到较高的精确度,训练精确度最高可达89.09%,测试精确度最高可达88.39%。