谢浩彬,陈新度,2,3,吴 磊,2,3,刘跃生
(1. 广东工业大学机电工程学院,广东广州510006;2. 广东工业大学广东省计算机集成制造重点实验室,广东广州 510006;3. 广东工业大学省部共建精密电子制造技术与装备国家重点实验室,广东广州 510006)
在现有铸件打磨加工系统中,大部分采取特定夹具将铸件固定,通过对准基准坐标,利用离线编程或者固定轨迹规划,对铸件进行打磨加工,去除飞边。采取这类加工方案的通常是大批量和尺寸类似的铸件,而对于小批量、尺寸多变的铸件加工,则需要设计多种夹具,提前进行离线编程等工作,才能进行打磨加工。
2016年,Qi等人提出了直接面向无序点云识别的神经网络框架——Point-Net[1],其利用变换矩阵解决点云的空间旋转不变性,以及对称函数解决点云的无序性。2017年,Qi等人改进并提出了Point-Net++[2],级联嵌套了Point-Net单元,提升了网络的局部表达能力和特征提取能力。自此,直接面向无序点云识别的神经网络如雨后春笋,提出了许多基于Point-Net++神经网络的变体框架,其中,主要有Point-CNN[3]、Point-SIFT[4]、GAC-Net[5]和Rand-LA-Net[6]等网络。其中,GAC-Net专注于图注意力机制,对点云邻域信息比较敏感,可以在边缘分割达到较好的效果[8],因此,本文提出一种GAC-Net的铸件飞边识别算法,通过提取铸件飞边点云信息,输入机器人系统,有助于机器人对加工轨迹进行自动规划,从而实现铸件飞边的自适应打磨操作。
图1 本文算法框架
本文研究的直接对象是铸件,目的是寻找出铸件的飞边空间信息,为机器人打磨系统提供视觉引导,减少人工参与的过程,提高生产制造的智能化程度。
在铸件铸造成型过程中,因上下模合模处存在空隙,在分型面形成厚度、大小、形状随机的片状飞边,具有如下特征。
首先,一般飞边的面积在整个铸件点云中比例较小,通常仅有2%,而GAC-Net模型使用了采样均匀的最远点采样算法,有可能在降采样过程中丢失飞边点云,不利于飞边的分割,因此需要改进网络的降采样方式,使其可以根据特征进行选取采样点,令网络朝着分割精度提高的效果进行采样。其次,本文的直接处理对象是三维点云,GAC-Net模型使用了图注意力的方式聚合了邻域信息,为进一步提高点云的特征提取能力,应引入成熟的二维卷积,因此,需要解决点云的无序性,才能将二维卷积应用于点云深度模型。最后,在GAC-Net模型中,上采样过程采用线性插值的方式,仅仅获取了局部信息,因此,在上采样过程中,必须提高网络的感受野,融合局部和全局信息,让网络可以根据飞边与整体的关联进行识别。
本文的任务是对铸件的点云模型进行识别,通过构建深层神经网络算法,实现对铸件点云的分割。算法的输入是铸件的点云模型,输出是点云模型中每个点的语义类别,包括地面、铸件和飞边。其中,飞边信息用于机器人对加工轨迹进行规划,地面和铸件信息用于对规划过程中添加约束。
本文算法框架和核心模块如图1和图2所示,其中,如图2所示,对图注意力卷积GAC模型进行改进,利用提出的对称函数激活和最远点采样融合算法进行采样,提高网络采样过程的针对性,同时,将GAC获取的特征融合采样过程产生的全局特征和排列不变卷积特征,构造M-X-GAC模块,提高网络的特征丰富度,其输入与输出均为每一层点云P(N*C,N为点云的数量,C是点云的坐标空间x,y,z)及对应特征F(N*D,D是点云的特征维度)、采样过程产生的全局特征。将GAC-Net中的上采样过程融合全局特征,构造局部-全局特征提取模块L-NL进行上采样,最终,将采样过程中最大化的特征与最终特征进行融合,经过多层感知机(MLP),得到最终的预测结果。其中,MAX-FPS、M-X-GAC和L-NL模块的详细描述参见第4节。整体网络框架如图1所示,输入是数量为N的点云,包含空间坐标C及其初始特征D0(法向量、色彩和强度值等),本文算法输入为点云的坐标点,属于基于点的语义分割网络,输出为每个点云所属的K种类别。整体架构呈现U-Net[7]的编码-解码框架,利用多个M-X-GAC模块迭代地对点云进行降采样的同时,提高网络的特征维度,再结合前一层的信息,进行上采样,将点云的数量上采样至输入点云的数量,将降采样过程产生的S维全局特征Fpn-max复制N份并进行特征融合,最终经过多层感知机,得到每一个点的预测结果,实现点云的语义分割。
图2 M-X-GAC模块
本文算法主要通过提高采样层的自适应能力,以及对图注意力卷积GAC改进来提高特征提取能力,同时结合局部与全局信息进行上采样,以下对各模块进行分析。
图3 MAX-FPS原理图
在GAC-Net中,采用最远点采样的方式对点云进行降采样,然而,在铸件飞边点云分割任务中,飞边点云的数量占比较少,若采用最远点采样,虽然可以保持整体的均匀性,但是飞边点云的数量可能较少,甚至由于最远点采样的随机性,无法获得飞边点云,因此,需要寻找一种更具有针对性和更具有代表性的点作为采样点。受Point-Net利用对称函数(MAX)的启发,其克服了点云的无序性,通过激活点云中具有代表性的点的特征值,达到对点云的整体识别。并且,在对抗-攻击领域中,将最大化激活处的点云进行随机偏移或者删除,大大降低了原始神经网络的性能[8]。综上,可以看出最大值激活有助于选取点云中具有代表性的点,因此,本文提出一种基于最大化激活的最远点采样算法(MAX-FPS),其算法流程图和原理图如图3和算法1所示,输入为输入点PL以及对应的特征FL,输出为采样点PL+1及对应的特征FL+1、中间特征Fpn以及最大化后的特征Fpn-max。首先,将输入点通过多层感知机进行特征升维,然后,利用最大值函数,取得激活处的点,再利用最远点采样算法对采样点进行补充,得到最终采样的点,同时,输出经过索引后的中间特征Fpn以及最大化后的特征Fpn-max,将特征融入后续特征,利用反向传播,让网络学习到更有利于点云识别的激活点。
算法1:MAX-FPS算法
输入:PL,FL
输出:PL+1,FL+1,Fpn,Fpn-max采样点及对应特征
1)Fpn=MLPU(PL) 对输入点进行特征升维
2)Fpn-max,idxs=max(Fpn) 对Fpn取最大值
3)PL+1,idx=FPS(PL,idxs) 利用最远点算法对采样点进行扩充
4)FL+1=index(FL,idx) 根据索引进行特征选取
5)Fpn=index(MLPD(Fpn),idx) 先降维,根据索引进行特征选取
GAC-Net将图注意力的思想应用到点云的识别中,引入注意力机制,提高点云对邻近点的敏感性能,对有利于点云识别的邻近点给予较大权重,对点云识别无作用的点给予较小权重,权重的选取由神经网络中反向传播自动确定最佳参数。因此,点云中每个点的“视野”来自有利于自身分类的邻近点云,因此有利于点云的分类识别。如图4所示,GAC首先输出权重矩阵,再将其应用于邻近点,进行特征聚合,实现特征的升维,其整体算法流程如算法2所示,输入为采样点p、邻近点P、采样点特征f和邻近点特征F,输出为采样点特征fp。由于其对于邻近点的可选择性,相当于实现了卷积的可变性性,这对于局部特征识别具有重大作用,因此,GAC模块可提高网络的性能,从而提高整体网络的分类性能。
图4 GAC模块
算法2:GAC算法输入:p,P,f,F
输出:fp领域点聚合后的特征
1)P′=P-p 坐标归一化
2)F′=MLPg(F-f) 特征相似度度量
3)α=Softmax(MLPα(P′‖F′)) 计算临近点权重
4)fp=∑~α*F′+b 聚合邻域特征
虽然GAC可以增强点云对其领域信息的敏感性,但是无法解决点云的无序性,无法进行二维卷积,受Point-CNN启发,通过构造变换矩阵,从而消除点云无序性与不规则性对点云卷积造成的结果不一致性,从而可以对点云进行普通卷积。排列不变卷积X-Conv算法原理如算法3所示,输入为卷积核K、采样中心点p、邻近点P和特征f,输出为采样点新的特征。本文X-Conv将应用于此,解决点云的无序性,提高网络的特征提取能力。
算法3:Х-Conv算法
输入:K,p,P,F
输出:Fp领域点聚合后的特征
1) P′=P-p 坐标归一化
2) Fδ=MLPδ(P′) 逐点提取领域特征
3: F*=[Fδ,F] 将原始特征与提取的特征拼接
4: χ=MLP(P′) 学习χ-变换矩阵
5: Fχ=χ x F*利用χ-变换矩阵对特征进行重排列
6: Fp=Conv(K,Fχ) 常规卷积
在GAC-Net中,对点云进行降采样时,采用最远点采样算法,该算法可以保持点云的均匀性,但是,由于铸件中飞边点云的数量占比少,造成飞边采样点较少,因此,将采样方式替换为本文提出的MAX-FPS采样方法,让网络可以根据分割结果动态选取采样点,使网络在训练过程中朝着分割精度提高的方向发展。
如图2所示,本文将GAC中的采样模块替换MAX-FPS,并且,融合排列不变卷积信息,提出了M-X-GAC模块,该模块实现对点云的降采样以及特征的提取。首先,利用本文提出的MAX-FPS对点云进行降采样的同时,获取局部特征Fpn和全局特征Fpn-max。然后,在原有GAC对点云进行特征提取FG的基础上,融合X-Conv信息FX和Fpn,实现对点云的特征提取。M-X-GAC模块的整体过程如算法4所示。
算法4:M-X-GAC算法
输入:PL,FL,Fpn-max-L
输出:PL+1,FL+1,Fpn-max-L+1
点及特征
1: PL+1,FL+1,Fpn,Fpn-max-L+1=MAX-FPS(PL,FL,Fpn-max-L)
降采样
2: FX-L+1=X-Conv(PL+1,FL+1)
X特征
3: FG-L+1=GAC(PL+1,FL+1)
GAC特征
4: FL+1=concat(FX-L+1,FG-L+1,Fpn)
融合特征
在GAC-Net中,对点云进行上采样时,采用了距离插值[2]的方式对点进行特征获取,仅仅考虑了领域的信息,即局部特征,极大地限制了特征获取的视野。受Point-ASNL[9]的启发,通过计算查询点与输入点的权重矩阵,对输入点进行升维,将特征聚合到查询的每个点,可获得全局特征。因此,本文将全局特征NL(None-Local)与距离插值获得的局部特征L(Local)进行融合,构造L-NL上采样模块,扩大点云获取特征的视野。如图5所示,L-NL上采样模块分为两条路线,首先,利用距离加权方式得到上采样后的局部特征,并进行特征升维,同时,利用采样点及特征和初始点及特征获取全局特征。L-NL整体算法如算法5所示,输入为输入点坐标PL、采样点坐标PL+1、输入点特征FL和采样点特征FL+1,输出为采样点新特征。本文利用L-NL进行上采样,有利于提高网络对局部与全局信息的融合。
图5 L-NL模块
算法5:L-NL算法
输入:PL,PL+1,FL,FL+1
1)Fmid-L=Interpolation
(PL,PL+1,FL,FL+1) 利用插值获取局部特征
2)α=softmax(MLPq(FL+1)*MLPk1(FL)T)
获得权重矩阵
3)Fmid-NL=MLPout(α*MLPk2(FL)) 获得全局特征
为了验证本文提出的算法在铸件飞边分割任务中的有效性,通过仿真建模多个不同的铸件模型,共42个铸件模型,每个零件随机采集12份点云,获得504份点云,再利用点云标注软件对点云进行标注。将504份点云按照5:1分为训练集与测试集。点云包含的类别分为地面、铸件和飞边。
点云语义分割任务中,常用的评价指标有整体准确率、类别平均准确率、整体交并比和类别平均交并比。由于本文任务是飞边点云分割,而飞边类别的点云个数远远小于铸件与地面的点云个数,因此,本文采用类别平均交并比和飞边交并比,从而更好地评价点云分割的效果。对于类别i,其交并比的计算公式如公式(1)所示,其中TP指标签与预测均为类别i的总数量,FP指预测为类别i而标签不是类别i的总数量,FN指标签为i而预测不为i的总数量,交并比可以衡量类别之间预测整体准确度。本文采用公式(2)的平均交并比作为评价指标,即取所有类别的交并比平均值。
(1)
(2)
本文在对网络进行训练时,在线对点云进行随机旋转(绕z轴)、随机拉伸和小范围随机平移。同时,由于飞边存在于零件的周围,因此对飞边进行z轴方向的随机平移,丰富样本的多样性,有利于网络进行特征学习。
本文算法框架每一层中降采样的个数,特征的维度设置,如表1所示,其中,N为每一层采样的个数,K为点的领域点个数,F为输出特征的维度,SA为特征提取-降采样层,FP为上采样层。
表1 网络框架参数设置
图7 铸件点云分割结果
进行实验的计算机,采用Intel(R) Core(TM) i5-9400F CPU
2.90GHz芯片和NVIDIA GeForce RTX 2060显卡。采用软件环境为win10系统,编程语言采用python3.7,采用pytorch深度学习框架进行网络训练,CUDA版本为10.1,CUDNN版本为7.6.5。小批次数量设置为4,训练过程为250个周期,初始学习率为0.001,每20个周期衰减至原有的0.7,采用Adam优化器进行训练,利用交叉熵损失CrossEntropy-Loss作为损失函数,利用梯度下降及反向传播更新网络参数,优化网络学习特征。
通过训练,如图6所示,训练过程中的训练集的损失loss与测试集的m-IOU分别呈现下降与上升,m-IOU达到97.80%,达到了工业要求。同时,本文进行了对比实验,在同样的硬件和软件条件下,将传统的基于全局特征的Point-Net和最新的基于局部特征与全局特征的Point-CNN、GAC-Net、Point-ASNL网络框架作为对比实验,并对分割结果进行可视化,如图7所示,可见,传统的基于全局特征的Point-Net算法的分割结果并不理想,在铸件表面的点云被误分为飞边,即使在引入局部特征的GAC-Net和Point-CNN在飞边与铸件的过度面(图中方法处)分割亦存在差错,导致飞边的IOU比较低,会对后续机器人打磨加工造成一定的影响,而本文提出的算法,在过度面处分割效果较好,论证了本文算法的有效性,具体实验结果如表2所示。
表2 点云分割对比实验结果
图6 Loss与m-IOU变化值
为论证本文提出的各模块算法的有效性,因此进行消融实验,其实验结果如表3所示。其中,实验1表示采用最原始的GAC-Net,实验2表示融入排列不变性卷积X-Conv信息,实验3将全局信息融入上采样方式中,实验4表示将原始的最远点采样点替换为本文提出的MAX-FPS算法。
表3 消融实验
由于本文算法应用于机器人打磨打工中的视觉引导,需要对其计算效率进行分析。采用如4.3节中所述的硬件实验条件,模拟实际加工过程中运算过程(即小批次数量设置为1),计算算法在预测过程中的帧速率(FPS,帧/秒)、模型参数和每秒浮点运算次数(FLOP)。实验结果如表4所示。
表4 点云分割效率
分析图6可知,网络前期loss下降速度很快,这是由于地面与铸件的分割较为容易,因此损失值迅速下降,后期训练网络主要集中学习飞边与铸件的分割,因为飞边与铸件有着直接的联系,辨别分割飞边与铸件成为了网络的后期主要任务。随着网络对飞边的正确分割,可以看到测试集上m-IOU呈现上升状态,证明本文算法的有效性。
分析表2可知,本文提出的算法在铸件飞边点云分割的任务达到了最优效果,m-IOU达到97.80%,比GAC-Net算法效果高出5.34%,飞边IOU达到95.59%,而传统的基于全局特征的Point-Net算法的飞边识别IOU仅有77.13%,本文算法相较其高出18.46%,论证了本文算法的有效性和实用性。
分析表3可知,融入排列不变卷积信息后,分割结果m-IOU较原始的GAC-Net上升了3.9%,说明其可以更近一步地提取经过图注意力卷积后的特征,有利于提升网络的特征提取能力。将全局特征融入上采样过程中,其m-IOU进一步提升了1.3%,说明采用局部信息进行上采样,其特征提取能力较差,需要全局信息对其进行弥补。采用对称函数激活的最远点采样方法,其分割结果m-IOU比仅采用最远点采样方法高出0.14%,飞边-IOU高出0.22%,这是由于最远点采样仅仅关注降采样的均匀性,而忽略了飞边点云较少的问题,而采用对称函数激活的最远点采样方法,可根据分割结果和梯度下降反向传播,动态地调整采样过程,使采样朝着分割精度提升的方向行走,因而更精确的分割结果,说明了MAX-FPS算法的有效性。
分析表4可知,本文提出的算法在时间消耗上与Point-CNN等算法相差不大,并且运算的帧速率达到6帧/秒,即完成每次分割仅仅需要0.17秒,同时,参数量和FLOP在本实验硬件条件下均得到满足,不会出现内存爆炸和运算量不足的问题。本文在引入多个模块的同时,能保持高效的运算效率,主要原因是各个模块之间存在信息复用(如采样点和邻近点等)。在实际应用过程中,仅需要在初始进行铸件飞边识别,将识别结果进行保存,即可为后续加工提供视觉引导,因此本文算法具有实用性。
本文针对传统铸件飞边打磨过程中零件放置固定、夹具要求高和需要人工前期示教或离线编程等局限性,提出了一种基于图注意力的铸件飞边点云识别算法,对GAC-Net模型进行改进,融合了对无序点云具有较强处理能力的排列不变性卷积模块,提出结合最大化激活的最远点采样算法,以及采用结合局部特征与全局特征的方式进行上采样,构建了一种铸件点云语义分割框架。实验表明,本文算法优于Point-Net和GAC-Net等算法,通过消融实验论证本文算法对于GAC-Net算法改进的有效性。