陈 凯,王 海*
(1.安徽工程大学 机械工程学院,安徽 芜湖 241000;2.先进数控和伺服驱动安徽省重点实验室,安徽 芜湖 241000;3.特种显示与成像技术安徽省技术创新中心,安徽 芜湖 241000)
在自动跟踪焊接机器人的工作中,要做到机器人实时焊缝跟踪焊接就要知道目标焊缝的准确位置。对于焊缝位置的定位,通常有主动视觉和被动视觉两种检测方法,无论是哪一种方法最终都要根据焊缝位置得到焊枪的运行轨迹再进行跟踪焊接。在焊接大型桁架、滚筒等工件时,由于各种复杂的环境,焊缝的大小、类型的多样性等情况使得焊缝目标识别难度增加。
近年来,随着互联网的发展,人工智能、机器学习、深度学习在焊缝图像的识别领域中运用广泛,其中深度学习神经网络增加了学习能力[1-4],GPU的出现让深度学习超大规模的计算变为可能,通过大量数据样本可以在复杂环境中精确地识别目标。李鹤喜等[5]针对焊接机器人的焊缝识别视觉建模使用了深度学习的方式来构建,其网络模型中输入层、隐含层和输出层构成了全连接层,相当于一个分类器用于焊缝目标识别,对9种类别的焊缝进行分类,但未做到定位检测。郭鹏飞[6]提出用Faster-RCNN对焊缝图像进行深度特征提取。张宇飞等[7]基于视觉的焊接机器人跟踪焊接问题提出了一种图像处理算法,并且在计算机Python平台上基于OpenCV开发出焊缝图像的识别程序。Yang等[8]使用LSTM生成相关滤波器,再用卷积神经网络(CNN)提取的特征进行卷积,但这种方法在复杂的焊接环境中无法获得稳定的结果。张永帅等[9]通过卷积神经网络将焊缝图片进行端对端的像素分类,将图像中目标焊缝激光条纹和背景分割处理,利用跳跃结构将高层信息和低层信息融合完善边缘细节,提高图像分割精度。邹焱飚等[10]还提供了一个根据深度分层特征的焊缝检验单元,有很好的畸变容忍能力,可以在噪声污染的时序图中定位焊缝。
本文的方法可以在复杂环境下通过MobileNetV3算法判断捕捉到图像中是否有焊缝和对焊缝类型进行分类。由于轻量化网络性能优势,分类过程中时效性大大提高,并结合了GAN算法用SeGAN网络对焊缝图像进行分割得到焊缝的准确位置,综合后提高了分类分割性能。
MobileNetV3[11]是由google提出的一种轻量化网络,该网络综合了V1、V2的新模块,并具有相对常规卷积计算中参数更少的深度可分离卷积、倒残差式结构和线性瓶颈结构、SE模块,利用NAS(神经结构搜索)寻找合适的网络参数与配置。MobileNetV2中加入了线性瓶颈结构和反向剩余结构,并通过利用问题的低秩本质来实现更有效的层结构。MnasNet是在MobileNetV2架构上创新形成的,在瓶颈结构中融入了基于挤压和激励的轻量级注意模块,目的是利用结合特征信道的关系来加强网络的学习能力。MobileNetV3网络通过组合不同层来构建出更有效的网络模型。MobileNetV3网络有MobileNetV3-large以及MobileNetV3-small两种形式,针对不同情况选用不同模型。相对而言,MobileNetV3-small运用在ImageNet图片分类任务上相对于MobileNetV2,精度提升约3.2%,运行耗时却减少了15%;MobileNetV3-small与MobileNetV2相比,若在COCO数据集上输出训练结果精度相同时,速度提高了25%,同时在分割算法上也有一定的提高。MobileNetV3-small的整体结构如表1所示,Input代表每个特征层大小的变化;Operator为每次的特征层经历的瓶颈以及对应深度可分离卷积的卷积核大小;SE代表是否引入注意力机制;NL为选择使用激活函数ReLU或者h-swish;s为bneck结构所用步长。
表1 MobileNetV3-small整体结构
图1 Bneck结构示意图
(1)
在MobileNetV3网络中用到一个Pytorch Image Models(timm)库,包括models、layers、utilities、optimizers、schedulers等,即将各种较好且先进的模型组合在一起。
在MobileNetV3多分类任务中损失函数用交叉熵损失函数(nn.CrossEntropyLoss()),该损失函数综合了nn.LogSoftmax()和nn.NLLLoss()两种函数方法,nn.LogSoftmax()相当于激活函数,nn.NLLLoss()则是损失函数。其公式表达为
(2)
SeGAN算法也引入了对抗网络算法的思想[12],在GAN中会有两种不同的网络训练:生成器网络(Generator)和判别网络(Discriminator),GAN算法流程图如图2所示。由图2可知,给生成网络加入随机噪音变量z,则输出的将是虚假图片数据G(z;θg),然后判别网络输入两个参数:真实图片x和虚假图片z,输出的结果表明了该输入为真实数据图像还是虚假图片的二分类置信度D(x;θd)。在理想情形下,判别网络D要通过结果准确识别输入的图像究竟是个真实的图像还是生成器生成的图像,而生成器G所要做的就是以最大可能性去欺骗D,让判别器把产生的虚假图像判断为真实的图像。
图2 GAN算法流程图
训练过程是典型的博弈思维,通过互相提升网络的特性,增加分割精度,增强辨别能力。由算法训练方式和过程定义了其损失函数如下:
(3)
式中,xi、zi为实际的图片数据和noise变量,优化目标是minGmaxDLoss。训练过程中在不断对参数进行优化,在这里不是对θg、θd直接进行梯度优化,而是逐步进行。对于训练判别器D,即更新θd,循环k次,每循环一次准备一组真实数据x=x1,x2,x3,…,xm和一组伪图片数据z=z1,z2,z3,…,zm,通过式(4)进行计算,
(4)
再用梯度上升法更新θd。通过训练生成器网络G更新θg:先提供一组伪图片数据z=z1,z2,z3,…,zm,计算如式(5)所示:
(5)
接着用梯度下降法更新θg,以此为循环交替训练网络。
尽管SeGAN和Gan都利用了对抗性训练过程,但它们有不同的目标。不同于传统的Gan试图找到两个分布pdata和Pz之间的映射函数,SeGAN旨在解决输入图像和它们正确的分割掩码之间的映射(即像素方向的标签映射)。在SeGAN中,首先给出一个数据集,其中包含训练图像xn和一一对应的标签图像yn,定义多尺度目标损失函数为
(6)
式中,lmae为平均绝对误差(MAE);xn·S(xn)是被分割的预测标签映射(即预测标签映射与原始图像的像素相乘)的输入图像;xn·yn是被真实的标签映射(即真实的标签映射与原始图像的像素相乘)的输入图像;fc(x)表示评价网络从图像x中提取的层次特征。
图3 SeGAN网络结构图
SeGAN网络结构主要由Segmentor和Critic两部分构成。Segmentor部分是类似U-Net的u型网络结构,编码器部分先使用卷积核大小为4×4、步长为2的卷积层进行降采样,解码器部分通过卷积调整图像大小进行上采样,最后一步通过卷积核大小为3×3、步幅为1的卷积层进行上采样,最后输出结果是网络预测的焊缝二值图像;Critic部分的网络共用Segmentor部分编码的前3层,依次向Critic输送经过预测的焊缝二值图掩膜的原始输入图像,以及真实焊缝二值图掩膜的原始输入图像,而最后的loss值则经过计算两个不同输出之间的MAE值(L1 loss)得到。其中Multi-scale对Critic部分的每一个卷积计算层产生的特征图像都计算其MAE值,对最终的总loss取平均值。训练网络方式类似于GAN网络的对抗训练学习过程。首先,固定S(Segmentor),对C(Critic)开始一轮训练;再固定C(Critic),对S(Segmentor)再开始下一轮训练,如此反复。对Critic的训练目的是使loss变大(max),对Segmentor训练的目的是使loss变小(min)。随着训练的不断进行,两个网络会变得越来越大,一直训练到分割生成器能够生成出与真实图片非常接近的图像即为预测图像。
本实验是在一台服务器上完成,CPU为酷睿I5-11400F,GPU为GeForce RTX2060,运行内存为6 G。要进行神经网络训练首先要收集焊缝数据,对大量数据样本图片进行图像预处理。数据集图片来自于焊接现场拍摄,部分如图4所示。共2 000张图片,其中500张为不含目标焊缝和已经焊接完成的图片,1 000张为含有T型角接焊缝的图片,另有500张含有V型焊缝的图片。由于数据样本量较少,对其进行扩充,使得数据量扩大100倍。对于收集的焊缝图片,这些采集到的图片数据集是没有标签的,需要人工对其逐一进行标注,标注后的图片结果才能用于网络训练。标注工具使用的是一个图形界面的图像标注软件——LabelMe。对原始图像使用LabelMe标注,对不含目标焊缝的图片直接标注为0,L型焊缝红色框标注标签为1,T型焊缝用绿色框标注标签为2。标注过的焊缝图如图5所示。
图4 部分图像数据集
图5 部分焊缝图数据标注
针对研究的分类问题,用准确率(Accuracy)、精确率(Precision)和召回率(Recall)来表示训练和预测效果。
(7)
(8)
(9)
式中,TP为真阳性;TN为真阴性;FP为假阳性;FN为假阴性。MobileNetV3训练验证过程参数曲线如图6所示。由图6可知,用MobileNetV3网络在焊缝图片数据集上的准确度快速达到稳定状态,而且训练和验证时的误差收敛较好,训练过程曲线较平滑。
图6 MobileNetV3训练验证过程参数曲线
将训练结果较好的模型用在测试集上进行训练,训练集混淆矩阵如图7a所示;测试集混淆矩阵如图7b所示。通过公式计算得出各指标数值如表2、3所示。
图7 混淆矩阵
表2 训练结果各项指标
表3 测试结果各项指标
由表2和表4可知,训练集上的精确度为99.74%,测试集结果的准确率为99.39%,已达到要求精度。为了验证MobileNetV3在焊缝分类识别中的有效性,分别用了MobileNetV2、VGG16和RestNet网络在焊缝图像数据集上进行训练测试,得到各参数结果如表4所示。其中,Parameter amount为权重、卷积核等各参数的数量,Predicted time为测试所有测试集数据的时间。
表4 不同网络在焊缝图像数据集上的训练测试结果
分类结束后将结果保存的文件放在Precdict-result.py文件后面,为进行预测焊缝位置做准备。对于焊缝位置定位用到SeGAN网络训练,首先生成训练判别器G,然后生成训练判别器D。输入图片像素为180×180×128大小,在进行网络训练过程中,进一步将图片大小随机剪裁为160×160×128大小,从而达到数据增强的效果。
训练模型时,通过对比使用批量随机梯度算法、动量梯度下降方法和自适应调节学习率的Adam优化器,得知Adam算法结果最好。训练过程参数设置:一次训练选取样本数Batch Size为10,完整训练Epoch为30,每个Epoch训练1 302张图片,学习率设置为0.000 2,动量系数设置为0.9,使用单个GPU训练,学习衰减率设为0.5。训练过程中,生成器网络损失值G-loss和判别器网络损失值D-loss如图8所示。在训练10个Epoch后,损失值都趋于稳定状态。
图8 G-loss与D-loss曲线 图9 Dice值曲线
训练结果Dice值如图9所示。Dice值为预测的正确结果的两倍比上真实结果和预测结果的总和,数学表达式如式(10)所示,Dice值越高表示预测区域与真实样本标注区域重合度越高,分割效果越好。在第10个Epoch过后Dice都稳定在0.95左右。
(10)
将分类定位两部分合成一个运行程序,输入260张测试焊缝图片,预测种类结果和定位,输出结果标签值为0或1或2,分别为无焊缝、L型焊缝和T型焊缝。为了使分割的效果可视化,抽取部分的结果如图10所示,黑色部分为焊接件,白色区域为分割出来的焊缝位置,可见SeGAN网络具有较好的分割效果,尤其是对宽度较小的焊缝也具有良好的分割效果。在识别效率方面,预测时间约为1.38 s,SeGAN网络分割较传统U-Net分割网络效率有所提高。
图10 焊缝分割结果
最后,将本文算法与其他分割算法进行了对比实验,将每个模型训练过程中的超参数设置为文献推荐参数值,同样在本文的焊缝数据集上进行训练预测,得到不同模型的MPA值和MIOU值如表5所示。
表5 不同算法实验对比
通过对比几个不同算法的参数结果,结合了GAN的分割网络与其他几个网络相比,其MAP值和MIOU值均有所提高,相对原本SegNet算法平均交并比提高了1.5%。
本文用一种轻量化的网络MobileNetV3将传统卷积替换成深度可分离卷积,当网络结构为深层网络结构时可以大大减少参数量,计算量和参数量为传统卷积的1/3,可以防止模型过拟合,有效提高网络模型的鲁棒性。研究借鉴了GAN网络的思路,采用SeGAN分割网络,用min-max的对抗学习来训练Segment和Critic部分,并用Multi-scale L1 loss来优化分割网络,分割出的图像较原始图像更平滑,包含更少噪声,MIOU值较U-Net提高了4.7%,较SegNet提高了1.5%。对于研究中实验样本数量不够大,影响网络模型分割性能的问题,后续将对数据样本量进行扩充,并扩增焊缝类型,提高深度学习在焊缝检测方面的适用性。