李奉顺,张建红,祝前峰,陆荣鑑
(1.南京林业大学机械电子工程学院,江苏 南京 210037;2.南京审计大学,江苏 南京 211815)
随着工业自动化需求不断提升,自动化焊接技术越来越受到受到研究人员的重视,目前自动化焊接技术主要包括主动视觉技术和被动跟踪技术,其中主动视觉技术因其无接触,适用范围广等优点而成为自动焊接领域的研究热点[1]。主动视觉技术是指跟踪模块主动向焊接工件投射激光线,通过工业相机拍摄激光线,然后提取特征点并将特征点的像素坐标转换到世界坐标[2],为后续的跟踪任务提供条件。但是在实际的焊接工况中,常伴有大量的烟雾,弧光,飞溅以及强光干扰,增大了焊缝特征点的提取难度。因此,如何在焊接过程中准确提取激光条纹是焊接自动化领域中的重要研究方向。
目前已有许多方法应用于焊缝激光条纹的提取,南方等[3]设计了一种改进Steger 算法来提取激光条纹,该算法通过霍夫变换取出条纹轮廓并计算宽度,针对不同的宽度的条纹采用不同的均方差,可以有效提高Steger 算法的准确度。杨毅等[4]采用动态ROI提取条纹区域,再使用灰度重心法初步提取条纹中心,最后采用均值法与Savitzky-Golay 算法二次平滑干扰,可以准确提取出焊缝中心线位置。王兴东等[5]则针对条纹提取过程中的图像二值化问题提出了一种基于区域优化的图像二值化方法,该方法利用灰度差极值划分像素变化区域,建立光条区域判定模型,提高了二值化过程中的阈值选取的准确度。韩洁等[6]采用基于大津法的变阈值算法对图像进行二值化处理,该方法能够较为完整的保存光条中心。刘亚辉等[7]则提出了一种基于形态特征的滤波算法来提取光条纹中心线,利用一阶马尔可夫链提取光条纹中心,结合不同干扰图像的形态特征进行滤波处理,能够良好的去除飞溅干扰。张帅[8]等采用自适应双边滤波算法过滤图像干扰,再使用灰度重心法提取激光条纹中心。
上述方法都是针对弱干扰或者无干扰的焊接图像,而在实际的应用过程中,弧光、飞溅、烟雾与强光干扰往往无法避免,传统算法或者针对性算法都不能完全的滤除焊接过程中出现的各种干扰,从而影响到后续焊缝特征点提取。本文提出一种采用U-Net 神经网络的方法来提取激光条纹,该方法通过采集大量的焊接样本进行训练,最终实现对焊接图像的像素级分类,能够准确的将激光条纹从干扰背景中提取出来,大大提高了激光条纹提取的准确率。
对于U-Net 神经网络来说,其实质上是监督学习中的分类问题,即给定一个待拟合函数(x),对函数输入Xi,输出属于目标值Yi的概率[9-10],为保证拟合的精度与泛化能力,需要采集大量的训练样本,训练样本需要尽可能的包括实际工况中发生的各种情况。
本文研究的焊接对象是V型坡口钢,焊接工艺为激光焊接,为便于采集图像数据,设计了一种焊接条纹检测模块,模块包括一台线激光器与一台工业相机,通过安装座安装在激光焊接头上。相机采用加拿大灰点工业相机,线激光采用653nm 红光线激光器,相机镜头前安装有650nm 红光窄带滤光片,焊接条纹检测模块结构如图1所示。
图1 焊接条纹检测模块
采集的图样来源于上述焊接激光条纹检测模块拍摄图像,通过修改气阀参数与激光功率获得不同类型的图样,其中包括强飞溅图样,强曝光图样,弧光干扰图样等。本次采集图样按训练集、验证集、测试集划分样本,划分比例约为72%,18%,10%,详细数据如下表所示。
表1 数据集划分表
为使采集图像能够输入到网络中进行训练,还需要手工对训练集验证集图像进行分割生成掩码图,在手工分割的掩码图中,背景使用白色标识,激光条纹用黑色标识,手工分割的结果如图2所示。
图2 特征条纹数据集
U-Net是由Olaf Ronneberger等[11]提出的一种基于卷积神经网络的语义分割网络,其结构可分为两个部分,分别是作为编码器的下采样部分与作为解码器的上采样部分,其结构如图3所示。
图3 U-Net网络结构
相较于传统的卷积神经网络而言,U-Net 引入了残差连接的思想,在每一层编码器结束后保留图像的特征图,用于后续解码器上采样中进行特征拼接[12]。残差结构的引入一定程度上解决了神经网络中的退化问题,并且增快了模型的收敛速度[13]。
本文中输入图像大小为640×640×3,图像依次进入编码器1-4,每一个编码器包括两个卷积层,卷积层后都采用ReLU激活函数。图像经过编码器后像素大小不变,输出通道倍增,然后保存编码器输出的特征图并将特征图输入到池化层进行池化。每一层图像经编码器与对应池化层后输出的特征图通道数分别是64、128、256、512,像素大小分别降低为原来的1/2,1/4,1/8,最后进入到Bottleneck层。
Bottleneck 层结构与编码器结构类似,经过Bottleneck层后特征图通道数达到了1024,像素大小降低到了原来的1/16。之后网络进入解码步骤,图像通过上采样恢复像素大小。
本文采用反卷积实现上采样过程,U-Net 将每一层上采样的结果与对应编码器特征图结果沿通道方向进行拼接,其目的是为了混合上采样结果与同层编码器结果,结合两者的输出特征,这一点不同与FCN 的将特征图进行相加操作后反卷积[14]。U_Net一共包含四个解码器,每一层解码器都混合了同层的编码器输出特征图,经过四层的解码与上采样步骤,特征图的通道数分别下降为512、256、128、64,像素大小也恢复到原输入图像的大小,最后通过一个卷积层实现最终的分类。
本次的U-Net 基于Pytorch 深度学习框架实现,GPU采用RTX2080TI,CPU采用Intel Xeon Gold 5218,操作系统为Linux,系统内存为256G。
本文构建的U-Net网络最终目的在于分割出激光条纹与干扰背景,其本质上是一种二分类问题,因此采用BCE(二分类交叉熵)损失函数,对于二分类损失函数来说,通常在模型中采用Sigmoid函数作为输出层的激活函数,其函数公式如下所示:
BCE 损失函数[15-16]的公式如式2 所示,其中p 是模型预测样本是正例的概率,l是样本标签,当样本标签为正例则取值为1,反之取值为0。由于对数函数单调递增,为使优化损失函数值最小,在对数函数前有一个负号。Pytorch 中BCELoss函数参数为两个张量,第一个张量为正例分类标签概率值,由模型输出得到。第二个张量是为以0 为负例标签,1为正例标签的目标数据值,通过对掩码图独热编码后得到。当l为1时,模型趋向预测正例,当l为0时,模型趋向预测负例。
在选用损失函数以外,还需要采用优化函数来对模型进行优化,本次采用SGD(随机梯度下降算法)优化器来优化模型,构造优化器的参数包括lr(学习率),momentum(动量项),在本文中,学习率与动量项被分别设置为0.001与0.7。
在评估模型的学习效果时通常使用损失函数图来表示模型的学习效果,随着模型的不断训练,模型在训练集上的loss 越来越低,表示模型的分布越来越趋向训练集的分布。但是在实际应用中,由于模型的样本数量有限,不能够完全覆盖样本的实际分布情况,因此需要在模型训练过程中引入验证集来验证模型的实际训练情况。验证集的数据源与训练集数据源一致,但验证集不参与训练过程,只用于表征模型学习情况。通常来说,一个良好的模型是当模型迭代到一定程度的时候,训练集的loss 趋于收敛,验证集loss 同样趋于收敛,由于训练集有限,验证集loss 会稍稍大于训练集loss,本文的训练结果如图5所示。
图5 训练损失
从结果中可以看出,模型学习效果良好,训练loss 与验证loss 基本保持同步下降,同步收敛,未出现过拟合与欠拟合情况。
在语义分割领域中,通常有PA(像素准确率),类别像素准确率(CPA),类别平均像素准确率(MPA),交并比(IOU),平均交并比(MIOU),根据参考文献,采用MIOU和MPA来评价模型的分割结果[17]。
上述评价指标都基于混淆矩阵实现,在计算指标之前需要先计算出预测结果与真实结果的混淆矩阵,本文主要对输入图像进行二分类,分割出激光条纹与携带干扰的背景,其混淆矩阵示意表格如表2所示。
表2 条纹与干扰混淆矩阵
对于MIOU来说,其含义在于求解激光条纹与干扰背景预测结果与真实结果的交集并集比值,再求二者的平均,因此其计算公式如下:
对于MPA 来说,其含义在于计算激光条纹与干扰背景被正确分类的像素的比例,然后求二者的平均值,其计算公式如下:
训练结果的MIOU与MPA指标评估结果如表3所示。
表3 MIOU与MPA评估结果
从训练结果上看,本文U-Net的MIOU和MPA在测试集与验证集上都达到了较高的水平,能够较好的分割出干扰背景与激光条纹。
本次实验采用U-Net对激光焊接图像进行焊缝图像分割,图6为三种不同干扰的图像,图6a为强飞溅干扰图像、图6b为强弧光干扰图像、图6c为强曝光干扰图像,这三类图像是激光焊接中最容易出现的干扰图像。为对比实验效果,本次实验还使用了基于Hessian 矩阵的Steger 算法(图7a-7c)与灰度重心法(图8a-8c)提取焊缝激光条纹,并且在这两种算法上都使用了高斯滤波算法对图像进行滤波,同时使用Ostu(大津法)对图像进行阈值分割。
图6 干扰图
图7 Steger算法
图8 灰度重心法
从图9a-9c 中可以看出,基于U-Net 的焊缝激光条纹提取方法能够很好的滤去图中的各种干扰,准确的分割出激光条纹。而Steger 算法与灰度重心法只能在干扰较弱的区域识别到激光条纹,在强干扰区域都不能准确的找到激光条纹中心。虽然后续能够通过划分ROI来降低搜索范围,过滤部分干扰,但是对于重叠在激光条纹上的干扰仍然不能很好的处理。
图9 基于U-Net方法
为验证基于U-Net神经网络提取激光条纹算法的准确性,根据参考文献[18],对原始手工分割的掩码图以及U-Net分割结果采用灰度重心法计算图像中每列光条纹中心位置,以原始掩码图条纹中心位置为标准,对比三种方法提取结果的RMSE(均方根误差)如表4所示。
表4 RMSE对比结果
从表4 结果可以看出,本文采用的U-Net 方法相较于Steger算法与灰度重心法具有良好的抗干扰能力,提取的激光条纹中心像素位置接近于原激光条纹掩码图像素中心,可以应用于工程实际中。
目前,深度学习越来越多的应用到了图像处理领域,深度学习算法能够通过大量的样本训练来使其滤除图像中的各种干扰,相较于传统的激光条纹算法,基于深度学习的焊接特征条纹提取算法可以大大提高激光条纹中心像素提取的准确度。本文采用的U-Net网络实现了将焊缝激光条纹与干扰背景分离,即使在强烈的干扰情况下,U-Net也能够准确的将激光条纹从背景中提取出来,为后续的特征点识别打下了基础。