加工面点云数据深度学习的加工特征自动识别①

2022-05-10 02:28高玉龙张应中
计算机系统应用 2022年2期
关键词:卷积神经网络样本

高玉龙,张应中

(大连理工大学 机械工程学院,大连 116024)

1 引言

加工特征是零件上具备加工语义的一组抽象完备的基础形状集合,例如:孔、盲孔、键槽等.一般的机械结构可以看作是毛坯与一系列加工特征的组合.加工特征是计算机辅助制造的依据和基础,是联系CAD/CAM的纽带[1].从20世纪80年代以来,加工特征识别一直是工业界和学术界的热点研究方向.目前已经存在多种特征识别方法[2,3],如:基于逻辑规则的方法、基于属性面邻接图的方法及混合图与规则的方法等.这些方法都是针对CAD 实体模型且借助逻辑的思想.虽然也有部分基于机器学习的方法,但其特征的构造仍未能摆脱逻辑规则的设计.目前,加工特征识仍存在很多问题和挑战,包括识别效率问题、识别结果的鲁棒性问题及交叉特征的识别问题.其中,交叉特征识别是业界公认的难点.例如:一个凹槽特征与其他特征相交后,其凹槽面就有可能被分割或者被延伸,特征边界与相邻边界拓扑关系就会发生变化,采用符号推理的方法识别就很可能失效.

近年来,深度学习在计算机视觉领域取得了巨大的成功.其中卷积神经网络(CNN)具有强大的特征提取能力而得到广泛应用[4].与此同时,三维CNN 方法在特征识别方面也得到了初步的发展[5,6],为解决加工特征识别问题提供了新的方向.典型的卷积网络的输入为二维、三维乃至多维矩阵数据,例如:图像格式和3D 体素(Voxels).Zhang 等[7]基于3D 体素网格数据,提出了一个采用3D 卷积神经网络模型的加工特征的识别方法—FeatureNet.该方法首先将CAD 边界拓扑结构网格化为3D 体素结构,再经由训练的卷积神经网络进行分类,识别预先指定的加工特征.但网格化的3D 数据存在大量的数据冗余,并且受到分解体元分辨率影响,计算成本过高.Shi 等[8]利用多视图的方法,构建了特征识别器MsvNet.该方法神经网络参数量巨大,训练和识别效率不高.三维点云是一种特殊的CAD 模型编码方式.斯坦福大学Qi 等[9]基于对点云的研究,提出一个针对三维点云数据的卷积神经网络模型—PointNet.该网络模型克服了输入点云的无序性、几何变换不变性等缺点,直接将点云作为数据输入,提取其中的数据特征.马耀龙[10]基于PointNet 提出了用于加工特征识别的卷积神经网络结构,但主要面向具有单个特征的方体模型,与实际应用有较大差距.

本文提出基于加工面3D 点云数据的深度学习方式,能够自动识别加工特征.主要贡献如下:(1) 提出一个生成特征加工面并适应CNN 网络学习的三维点云数据样本的方法;(2)基于PointNet,设计并优化了加工特征识别卷积神经网络模型的网络结构,通过大量数据训练实验,实现对给定的一组加工面集的加工特征鲁棒性识别.

2 相关工作与识别系统框架

2.1 点云的数据特征

点云是构成目标表面的大量点集合,由一组三维点向量构成.以下是点云数据主要特性:一是无序性,点云是一组点数据的集合,其中点的排列顺序并不影响其表达的几何形状.这意味着这些点以任意顺序进行组合,都仍表示原来的三维模型;二是点之间的相互关系,一个零件模型的点云来自于同一个距离空间,点不是孤立的,只是彼此之间的距离、位置有所不同,意味着相邻点之间能够形成一个有意义的子集,即局部结构;三是在几何变换下的点集拓扑不变性,空间旋转和平移点云都不能改变点云的分类和点集的分割.

2.2 PointNet

PointNet[9]是一个直接将点集作为输入的CNN 模型.在PointNet 中,通过权值共享的MLP,其输入的每一个点xi∈RD(i=1,…,N),都被提取出一个特征向量;通过最大池化操作模拟的对称函数,所有的特征向量被聚合为了一个对输入点排列不变的全局特征向量,解决了点云的无序性问题.为了解决点云的几何变换不变性问题,PointNet 在输入点云时引入了Tnet 数据对齐网络.该网络现根据点云预测出一个3×3的线性变换矩阵,将输入点云先变换到恰当的线性空间后,再进行点云特征的提取与分类操作.

PointNet 在点云分类与语义分割等问题上有较好的表现,但其仅针对了单个点的特征提取,缺乏捕获局部结构的能力.Qi 等[11]在PointNet 基础上,设计了一个层次化的CNN 结构:PointNet++,该模型可以更好地捕获局部空间结构,但其效果提升不明显.

2.3 加工特征

如前所述,加工特征可以定义为零件上一组具有特定加工语义的形状,不同的加工语境下有不同的加工特征定义.本文讨论的加工特征,主要是由切削成形的特定几何形状,例如:孔、通槽、圆角、凹槽等.加工特征不受模型的几何变换(例如旋转、移动等) 影响.Zhang 等在文献[7]提出的FeatureNet 库中定义了24 个常用加工特征,如图1所示.本文为了比较,也采用了该文献中的加工特征分类方法.

2.4 特征加工面

按照本文讨论的加工特征定义,组成加工特征的所有面都被称为加工面.除了圆(倒)角特征的加工面外,其他加工面一般都是凹面,即由凹边连接的几何面.一组连续邻接的加工面集构成一个独立的加工特征.

图1给出的加工特征都是独立存在的,其加工面未遭到破坏.但在实际零件中,加工特征常常会相交,特征相交会造成加工面几何边界被分割或者被延伸.如图2所示,图2(a)是一个典型的盲槽特征,设为A,图2(b)是添加了另外一个通槽特征B 后的变化情况.一个鲁棒性好的特征识别系统应该对被破坏的A 特征,仍然能被识别为盲槽特征,B 特征识别为通槽特征.

图1 FeatureNet 库中定义的24 个常用加工特征[7]

图2 特征相交造成加工面变化

2.5 识别系统框架

基于PointNet 技术,本文提出如图3所示的基于加工面三维点云数据深度学习加工特征自动识别框架,具体内容如下.

图3 加工特征识别系统框架

(1)构建基于特征加工面3D 点云数据样本

鉴于深度学习给成需要尽量多的数据样本,本文采用FeatureNet[7]提供的24 种特征的STL 文件作为深度学习的基础数据;通过特征提取、点云采样创建基本点云数据样本库.神经网络的训练效果跟训练数据的质量和数量有较大关系.为使神经网络得到更高的训练,使用了数据归一化、数据增强等技术处理数据.最后将数据样本随机分为训练样本和测试样本,形成最终的加工特征点云数据集.

(2)构建和训练CNN 加工特征识别器

在PointNet 基础上,构建CNN 深度学习模型.使用上述的点云数据集训练网络模型,同时在训练和测试过程中依据反馈结果信息,优化网络结构及调整参数.最终采用上述测试效果最好的网络模型作为加工特征识别器.

(3)基于CNN 加工特征识别器加工特征识别

在训练优化好的CNN 加工特征识别器上,进行特征识别.系统首先对识别零件进行边界分割.按照凹面组成加工特征原则,将一个边界模型零件分割为多个加工面集,具体分割算法将在另文介绍.识别时,每次取一个加工面集,即任意输入一个加工面集,系统首先将其采样为点云,然后经过本文提出的数据处理过程转换为标准化的点云输入.最后系统通过神经网络自动分类,给出最终的分类结果.

3 面向加工面点云的加工特征识别器构建

3.1 数据样本

训练一个神经网络需要大量的样本数据.按照上述总体方案设计,需要大量的包含加工特征的3D 点云样本数据.现实中要采集获取庞大的3D 点云样本数据(大于1 万个模型数据) 是一项劳动强度很大的工作.本文采用FeatureNet[7]中提供的、以随机参数为24 类加工特征生成的共计24 000 个STL 文件作为基础的特征数据库.基于这些STL 模型,按照如图4所示的流程,得到点云数据样本库.接下来介绍流程中的关键步骤.

图4 数据样本构造流程图

3.1.1 提取特征加工面集

FeatureNet 中生成这些特征数据的方式为在边长为0.1 m的立方体上,以随机的参数对立方体进行加工除料操作.因此通过切除部分体积而形成的面就是要提取的特征加工面集.该三维模型是以STL 格式存储的,因此提取特征面集就是从文件中选出那些属于特征面集的三角片.就本方法而言,采用对偶逻辑可以使任务更简单,即去除掉那些非特征面集.如果某三角片的3 个顶点有一个坐标同时为0 或者10 (采用厘米为长度单位),那么该三角片就一定不是特征面集.

3.1.2 对特征加工面采样获取点云

本文的神经网络是直接通过点云来进行训练的,因此,点云的获取质量直接决定了神经网络的质量和识别的准确率.本文利用PCL 库中提供的

pcl_mesh_sampling 点云采样程序,实现了特征面集的均匀点云采样,并为每个特征面集采样出800 个均匀的点云数据.图5(a)是一个矩形凹槽特征面边界显示,图5(b)是该矩形凹槽特征面采样点云显示.

图5 矩形凹槽的采样

3.1.3 数据归一化与数据增强

在实际应用中,加工特征会以任意的姿态、大小出现在空间中的任意位置.此外,神经网络需要固定点云数量输入,对不同大小的特征面进行固定点采样会造成点云的密度不同.因此为了使得神经网络能够识别加工特征的多种角度和位置,并消除密度不同的影响,本文将点云数据归一化到以原点为中心,半径为1的球中,并且对数据绕3 个坐标轴方向随机90°、180°、270°旋转.

通过以上处理,可以得到24 类加工特征的训练数据,每类特征有1 000 个训练数据,共计24 000 个训练数据,每个数据有800 个点.但如后文所述,训练时采用的点云数量为512.因此,为了使每个加工特征模型被充分的训练,将800 个点随机分成6 份,形成最终的训练数据集,共计144 000 个训练数据.

3.2 基于PointNet 加工特征识别器

PointNet 是一种能够直接输入无序的三维点云数据的神经网络.本文将加工特征面集采样得到的点云表示为一组3D 点{Pi|i=1,…,n},其中每个点Pi由其(x,y,z)三坐标的值来表示.本文以PointNet 框架为基础,构建了如图6所示的卷积神经网络架构.该架构主要由数据对齐层Tnet、卷积层、池化层、全连接层和输出层5 个部分构成.图6(a)中标明了每一层卷积的通道数以及全连接层的神经元数;图6(b)是对数据对齐层的细化.

执行分类任务的神经网络,本质上是对输入特征向量到类别向量的一个映射.在本文的任务中,输入数据为规模为n的三维点云数据,也就是n×3的矩阵.事实上,模型训练时数据会成批次输入到神经网络,因此输入的数据维度为batch×n×3.为了保证点云经过几何变换后,保证原有的几何特征和所对应的类别标签不变,在正式开始卷积操作之前,加入了数据对齐层Tnet.该层的结构如图6(b)所示,最终输出一个9 维的向量,并重整为一个3×3的矩阵.先将点云数据通过该矩阵变换到合适的空间,使数据对齐后,再进行卷积.

值得一提的是,由于卷积层采用了权值共享的卷积核,所以点云的数据规模n,并不会增加网络模型的可训练参数量.点云的数量n代表了对加工特征的采样精细程度.理论上来说,n越大,点云对原加工特征的代表性越好,识别效果也会越好,但计算成本也会增加.所以点云数量n是一个重要的参数.本文在确定点云数量时,做了如下实验:将点云数量分别固定为64、128、256、512,样本数量均为144 000 个.使用图6所示的模型分别在不同点云数量的数据集上进行训练,训练结果如表1所示.通过对点云数量和单步训练时间的线性拟合,可以得到二者之间的相关系数为0.953,即训练时间和点云数量基本呈线性相关.当点云数量为512 时,识别率超过了99%,而此时训练时间为109.28 min,并没有到不可接受的程度.因此本文选择固定点云数量为512.

图6 卷积神经网络架构

表1 4 种规格点云训练测试结果

模型的中间层按照功能分为卷积层、池化层、全连接层几个部分.卷积的过程就是对每个点数据进行特征提取的过程.每一层卷积都对上层数据进行1 维卷积操作.根据点的无序性,点云数据没有上下文的关联,因此将卷积核的大小设置为1,通道数如图6(a)所示.此外,为解决梯度消失与爆炸问题,本文在每一对相邻层连接之间加入了BatchNormalization 层,并采用了SELU 激活函数.

池化层接在最后一层卷积之后.多层卷积操作为每个点提取了128 个特征,形成了n×128的矩阵.通过最大池化操作将得到每个点数据特征聚集为一个128 维全局的特征向量.该聚集操作使网络结构对于点云的顺序不敏感,解决了点云的无序性问题.

全连接层是神经网络中解决分类问题的经典结构.本文将池化得到的全局特征向量作为原来点云特征的编码,输入到两层全连接层,最后输出一个24 维的分类向量,以Softmax 函数作为激活函数,将24 维输出向量值映射到区间[0,1],表示网络结构预测该点云属于某一类的概率,概率最大值对应类别就是该点云的预测类别.

损失函数是为了衡量模型的输出特征类别与实际特征类别之间的差距.损失函数的输出值越大,模型的识别效果就越差.训练的过程就是优化模型参数减少损失值过程.本文中使用的损失函数为交叉熵损失函数,使用的优化器为NAdam 优化器,其decay 设置为1e-4.根据实验与经验对参数调整,神经网络的其他训练参数如下:

(1)点云数量设置为512;

(2)最大训练迭代次数epoch 设置为200;

(3)Batch 大小设置为32;

(4)采用Exponential scheduling 技术来动态调整学习率.学习率初始化为0.01,每30 步下降为原来的0.1.

4 实验与讨论

对上述网络模型开展了实验,实验训练数据库有144 000 个数据,每种特征识别点云数量固定为512.每一个数据都有一个标签代表类别.数据以65%,15%,20%的比例分为训练集、验证集和测试集.在训练集中训练,在验证集中验证当前模型训练效果,在测试集中对模型做最终识别率测试.实验环境为Windows 10操作系统,AMD R5-4600H+GTX1650 4 GB 显存+16 GB内存的高性能笔记本,在TensorFlow2.1 深度学习框架上实现了上述网络模型.24 种加工特征识别结果如表2.

表2 24 类特征识别率

本文方法与FeatureNet和MSVNet 两种方法进行了比较,比较结果如表3所示.因为不同的环境运行效率不同,因此本文列出训练时间的对比仅供参考.本文提出的卷积神经网络仅有64 824 个训练参数,在109 min的时间里迭代训练了106 步后,验证识别率趋于稳定.在测试集的测试结果表明,24 类特征的综合识别率为99.12%,达到了先进水平.相比于FeatureNet[7]和MsvNet[8],本文提出的方式训练参数分别减少了485倍和1 971 倍,训练时间分别减少了3.6 倍和8 倍.实验结果可以说明,本方法的时间复杂度和空间复杂度均优于另外两种方式.

表3 3 种不同方式对比

此外,为了验证本方法的适用性,本文构造了如图7所示的零件模型来验证对于交叉特征识别的鲁棒性.如图7(a)所示,该零件模型包含有6 个加工特征,每个特征的加工面集分别是:通槽1:F1={f1,f2,f3}、矩形盲槽1:F2={f1,f4,f5,f6,f7}、圆角:F3={f14,f15}、通槽2:F4={f16,f17,f18}、通槽3:F5={f19,f20,f21}、矩形盲槽2:F6={f8,f9,f10,f11,f12,f13}.从图7(b)可以看出,这些特征大部分是相交特征.

图7 零件模型及加工特征面集

将以上特征面集分别通过本文提出的数据处理方式得到加工面的点云数据,然后输入到识别器中进行识别.经过测试,除了图7(b)(1)中矩形通槽被错误的识别为三角形通槽,其他5 个特征均能准确的识别出结果.未能识别的通槽带有尾翼状的底面延伸,这在训练数据集中并没有涉及,今后可以通过分割处理后能够正确识别.

5 结论

本文基于PointNet,提出一个面向加工面点云数据,采用CNN 神经网络的机械加工特征识别方法.包括构建适应加工特征识别CNN 网络学习的加工面三维点云数据样本,设计和改进了加工特征识别卷积神经网络模型的网络结构,优化了识别参数,对特征相交使加工面遭到破坏后特征仍能准确识别,实现对加工面集点云数据的鲁棒性识别.网络模型结构通用性高、识别准确度高、识别速度快,与体素CNN 网络结构和多视图的方法相比,本文的方法有更好的表现.

交叉特征的识别仍然是目前一个亟待解决的难题.本文实现了独立加工面集的特征鲁棒识别,下一步将融合几何边界模型的分割,将一个复杂的零件分割成简单的加工面集,就可以采用本文方法分别识别,实现复杂零件加工特征的鲁棒性识别.

猜你喜欢
卷积神经网络样本
基于神经网络的船舶电力系统故障诊断方法
MIV-PSO-BP神经网络用户热负荷预测
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
用样本估计总体复习点拨
从滤波器理解卷积
基于神经网络的中小学生情感分析
规划·样本
基于傅里叶域卷积表示的目标跟踪算法
基于Q-Learning算法和神经网络的飞艇控制