李 鑫,任德均,任秋霖,曹林杰,闫宗一
(四川大学机械工程学院,四川 成都 610065)
面对国内外智能制造的浪潮,以及国内人口红利优势的下降问题,工业上出现通过自动化、智能化等技术来进行产线升级的需求。汽车轮毂的生产也逐步由半自动走向全自动化生产。本文研究多规格轮毂焊缝的自动化检测定位方法。焊接法生产出来的轮毂,在进入气密性检测工位前,其焊缝会存在轮毂曲面任意角度,所以需对其焊缝进行定位,使轮毂焊缝最终能停在固定位置附近,为下一步气密性检测工位做准备。
在实际生产过程中,轮毂焊缝的定位工作是,在规定时间内,人工手动旋转轮毂,实现焊缝停在固定区域。人工旋转定位焊缝的方法主要存在以下4个问题:
1)焊缝存在颜色多样、痕迹浅淡、水渍、冷却液、油污等干扰因素,人工定位耗时耗力,易影响生产节拍。
2)人工存在主观性定位偏差。
3)人工存在疲劳性失误定位偏差。
4)人工产生的定位偏差,会影响气密性检测工位的准确性,导致残次品问题。
为优化与解决以上4点问题,本文采用机器视觉方法对轮毂焊缝进行检测定位。
要建立轮毂焊缝定位自动化模型,需先分析人工焊缝定位流程。人工焊缝定位可以抽取出3个步骤:1)手动慢速旋转轮毂;2)通过视觉寻找焊缝;3)旋转轮毂使焊缝停在固定区域。反之思考自动化定位流程,可以采用对高速旋转轮毂连续拍照的方式,获取图像数据,焊缝检测定位就可以简化成序列图像的图像识别任务,通过图像检测焊缝并且计算位置关系,停转轮毂从而定位焊缝。
现今基于视觉的自动化检测焊缝的方式有很多。例如基于边缘检测算法定位焊缝[1]、基于模板匹配、阈值分割和形态学处理定位焊缝[2]、基于角点检测与光流法跟踪的焊缝特征提取与定位方法[3]、基于焊缝三维重构法的焊缝无损检测定位[4]、基于PSO-SVM的焊缝检测[5]。还有深度学习方法,例如基于Faster R-CNN模型的焊缝检测定位[6-7]、基于YOLOv3的轮毂和管道环焊缝检测[8-9]等。
分析现有的传统算法在轮毂焊缝识别上的应用可知:轮毂焊缝特征不明显,任意区域的水渍、冷却液、油污干扰、同规格同批次生产的轮毂焊缝特征存在较大差异,且由于轮毂焊缝断裂多段的原因,导致多规格轮毂焊缝的特征归纳成了难点,所以基于传统算法的视觉检测算法,如边缘检测算法、角点检测、模板匹配算法等不太适用此项目。考虑到深度学习算法在无人驾驶、人脸识别的成功应用案例以及通过目标检测方式实现焊缝定位的使用案例,可知深度学习中的基于卷积网络CNN[10-12]的目标检测算法可以用于焊缝检测定位,所以本文采用深度学习的目标检测算法对焊缝进行检测定位。
分析现有的深度学习方法在轮毂焊缝识别上的应用得出:工业检测项目的要点在于对检测精度、检测重复精度、检测速度的要求。从上述轮毂焊缝检测案例可知,基于深度学习方法的检测算法选用的是快速的目标检测算法,YOLO算法是单阶段检测算法,检测速度快,但由于无anchor设置,存在检测精度低、小目标检测效果差的问题。Faster-RCNN是两阶段检测算法,通过区域建议网络RPN得到较高的检测精度,但存在检测速度慢的问题。本文选择Retinanet[13]模型为基本结构,原因如下:
1)单阶段检测算法,检测速度快。
2)采用Resnet[14]残差网络,提高特征提取能力,避免网络深度的增加,导致网络性能下降。
3)采用FPN[15]网络结构,提取多尺度特征,增强对多段焊缝特征的学习。
4)采用Focal loss损失函数,解决前景背景类别不平衡问题。
5)在特征提取阶段引入自注意力机制,增强网络特征提取能力。
本文研究高速旋转轮毂的自动化检测定位方法,并且探讨基于卷积网络的Retinanet及融合了自注意力机制Transformer[16-19]的Retinanet目标检测算法在轮毂焊缝数据集上的检测效果。
焊缝自动化检测定位系统,包含成像、机械控制、算法处理及人机交互。成像单元选择条形光源和工业相机;机械控制部分包含PLC、轮毂旋转机构以及相机移动机构,用于启停旋转轮毂和调整相机轮毂相对位置;算法处理及人机交互包含软件、工控机、显示器等。成像单元如图1所示。
图1 成像单元
焊缝检测定位的核心思路:目标检测算法用于对轮毂图像进行焊缝识别,得到焊缝坐标,通过后处理换算出实际角度,计算轮毂能够准确停转的停止时间,再发送信号给PLC使轮毂停转。轮毂焊缝检测定位流程如图2所示。
图2 轮毂焊缝检测定位流程图
为能够更加精确地使轮毂焊缝停在固定区域,需要在模型检出率、误检率以及后处理方面优化,方法步骤如下:
1)扩充、筛选数据集,训练模型提高检出率,降低误检率。
2)设定单个轮毂检测生命周期及焊缝追踪次数阈值,连续追踪成功的目标视为检出,否则视为漏检,提高检测精度。
3)设定检测区域要求,将反光区域排除在外,减小误检,减小曲面对角度换算的影响,根据实际效果可调整检测区域。
4)通过记录时间来减少程序耗时,更加精准地计算轮毂的实时位置。
5)设置采图信号滤波算法,过滤异常信号,确保轮毂生命周期准确性。
目标检测算法是轮毂焊缝检测的关键,本文检测算法将简化的Retinanet和CoTNet[20]相结合,是卷积网络和Transformer网络相结合的目标检测算法。主要通过变种CoT结构替换Retinanet中抽取特征的卷积层,以较小的计算量实现检测效果的提升。下面将详细介绍检测算法和定位方法细节。
考虑检测对象存在多规格轮毂,焊缝存在断裂、遮挡等问题,所以本文采用Retinanet网络作为目标检测网络,可以增强对局部的、小的特征的学习能力。由于检测速度要求,Retinanet的骨干网络采用ResNet18,配合特征金字塔网络FPN结构,最后是6个卷积网络用于分类和框的预测。接下来对网络结构的关键要素进行介绍。
选用ResNet网络结构的原因。神经网络是一个函数逼近器[21-22],理论上通过增加神经网络的深度就能够实现逼近任意函数,就能够更加好地拟合实际模型。但实际情况是当网络层数超过一定深度后,会产生梯度消失和梯度爆炸现象,该现象可通过改变激活函数为ReLU[23]、使用批量规范化BatchNorm[24]等方法改善。但检测效果仍然会降低,且不是过拟合导致的。为了使得深度网络至少不劣于浅层网络,就有了使后层网络变为恒等变换的思想,问题就转换成使网络节点更好地实现恒等变换,将传播方式F(x)→H(x),优化为传播方式F(x)+x→H(x),其中x为输入特征,F(x)为前向传播计算的特征,H(x)为融合后的特征。于是引入了残差块,组合起来就成了ResNet网络,ResNet网络可以根据检测任务的需求,选择合适的网络深度,例如Res18、Res34、Res50、Res101、Res152等。ResNet网络结构如图3所示。残差块结构如图4所示。
图3 ResNet网络结构
通道不变残差结构
结合通道间信息的残差结构图4 残差网络结构
选用FPN网络结构的原因。检测目标在原图上是存在尺寸大小的差异,反映到卷积网络提取特征阶段,是提取的特征有不同的大小,所以为了能够更好地表达不同尺寸目标的特征,选择使用FPN网络结构。通过提取多尺度的特征信息,进行对应的融合,从而实现多尺寸目标的检测,提升了目标检测效果。在特征层的每个格子上布置候选锚框,通过设置锚框的高宽比以及缩放比,可以在一个格子上生成多个锚框来更好地拟合目标。可以通过K-means聚类算法对目标数据集的标注框的高宽比进行聚类,获取合适的锚框高宽比。焊缝数据集标注框高宽聚类结果如图5所示。锚框高宽比设为(4,5,6),锚框缩放比设为(0,0.3,0.6)。
图5 标注框高宽聚类结果
Retinanet采用ResNet网络为基本骨架结构,选用FPN提取多尺度特征,最后用6个卷积进行分类和框的预测,Retinanet网络结构如图6所示。类别预测采用Retinanet提出的损失函数Focal Loss,而对于定位回归采用Fast R-CNN[25]提出的平滑损失函数Smooth L1 Loss。其中Focal Loss能够较好地解决正负样本不均衡问题,该函数为式(1)~式(3)所示。其中Smooth L1 Loss函数如式(4)所示。
图6 Retinanet网络结构
FL(pt)=-αt(1-pt)γlog(pt)
(1)
(2)
(3)
其中,γ为聚焦参数,p为模型估计类别为1的概率,α为类别为1的权重大小,区间在[0,1]。通过改变αt的大小,可以控制正负样本对训练损失的贡献,通过(1-pt)γ,可以减少简单样本对训练损失的贡献,增加困难样本对损失的贡献。据Retinanet相关文献指出选用α=0.25,γ=2,可以到达较好的效果。
(4)
L1(x)=|x|
(5)
L2(x)=x2
(6)
(7)
式(4)中,x为预测的坐标与真实坐标的差值,Smooth L1 Loss结合L1损失函数和L2损失函数的优点,在(-1,1)之外相当于L1损失函数如式(5)所示,loss最大梯度为1,在(-1,1)之间相当于L2损失函数如式(6)所示,为了保证Loss的下降梯度和L1一致,添加了个系数0.5,使得预测与真实差异较小时,梯度最大为1。但一般在实际中使用式(7),增加β参数,用于控制何时使用均方差、何时使用平均绝对误差。同时在(-1,1)之间,将系数更改为1/(2β),用以控制最大梯度为1,同时在(-1,1)之间外,将偏置改为0.5β,用以控制x差值较大时对损失函数的贡献。一般β设置为1/9。
考虑焊缝在图像上是多段的单个检测目标,可以采用基于自注意力机制的检测网络,增大网络对全局特征的学习能力。目前Transformer在图像识别领域的应用,有单纯只使用Transformer的以及结合卷积网络同时使用Transformer的检测网络。前者验证与探讨了Transformer在图像识别领域的应用效果与原理,后者探讨原理的同时,将Transformer更好地引入图像识别领域中,提升了神经网络图像识别的检测能力。
Carion提出了Detection Transformer(DETR)[26]目标检测网络,在COCO数据集上进行测试,DETR模型可达到与经过严格调整的Faster R-CNN相当的结果;华科提出YOLOS[27]目标检测网络,YOLOS是基于ViT[28]的目标检测网络,在中等大小的ImageNet数据集上,经过预训练的YOLOS已经足以在COCO数据集上取得极具竞争力的目标检测性能;京东AI研究院借鉴了谷歌团队提出的独立自注意力(stand-alone self-attention)[29],提出了一种新的Transformer结构CoT,将CoT代替了ResNet结构中的3×3卷积层,得到CoTNet,在ImageNet数据集上,对比EfficientNet-B6的84.3%的准确率,SE-CoTNetD-152取得了84.6%的准确率,并且具有快2.75倍的推理速度。在分类检测分割等任务效果也非常好。
视觉检测领域中Transformer网络结构主要包含patch embedding图像嵌入层、Transformer编码层、MLP多层感知机层。接下来就网络结构的关键要素进行介绍。图像嵌入层的作用:对图像进行特征提取,并将图像张量转换成Transformer编码层需要的张量形式。因为将输入图像的单个像素作为一个单词,计算量太大,所以将图像块作为一个单词,展开成一维,最终得到图像特征的张量,可增加额外张量,用于后续的目标检测和类别判断。
Transformer编码层的作用:对输入的图像张量进行编码学习。编码层是由多头自注意力层MSA和多层感知机层MLP构成,通过多头自注意力机制,全局性地学习检测目标,通过多层感知机层,将输入特征映射到更高维度去学习特征。其中多头自注意力层MSA层,通过查询矩阵Q(query),键矩阵K(key),得到特征之间的注意力分布加权值,经过Sofmax,再乘上特征矩阵V(value)得到输出。其中多层感知机层MLP层,通过将输入特征映射到更高维度去学习特征。
CoTNet中替换Resnet的3×3卷积网络的结构CoT就是上述的Transformer编码层中的自注意力层,主要是对输入特征X,通过3×3卷积和1×1卷积,获得局部的静态的上下文信息key以及自身特征value,将key和输入特征X(即query)连接在一起,通过2个1×1卷积获得注意力分布,再乘上value,得到动态上下文信息key2,将2个上下文信息线性结合得到输出特征。CoT网络结构如图7所示。
图7 CoT网络结构
考虑CoT结构只做了替换3×3卷积层,不能完全替换Retinanet中所有的卷积层。提出变种CoT结构,下文记作CoTx,是对输入特征X,进行步长为s,输出通道为c,卷积核为k×k的卷积,再连接CoT结构,使替换不限于卷积核的大小、步长的大小,以及输入输出通道变换,可以实现替换任意通用卷积层。CoTx网络结构如图8所示。与原版CoT结构相比,改变了问询矩阵Q,其需要再经历一次卷积获得键矩阵K和特征矩阵V,都是通过与Q进行卷积获得,同时,在CoTx的输入x与输出y维度不同的情况下,也能保证在CoTx结构内Q、K、V维度的一致性。
图8 CoTx网络结构
焊缝定位的核心思路。在离轮毂焊缝最终停止位置,逆轮毂旋转方向前90°工位处进行拍照检测,检测到焊缝后,使轮毂焊缝图片像素坐标与旋转轮毂焊缝的角度位置实时对应。
首先图像中焊缝的角度近似等于实际焊缝角度(2D图像存在轮毂弧度引起的偏差,可通过限制焊缝在中间区域检测到,减小误差),但从拍照到焊缝被检测到之间存在着时间偏差,所以要消除处理时间导致的图像焊缝角度与实际焊缝角度的偏差。方法是设立轮毂生命周期,记录轮毂开始拍照时间、算法处理时间(曝光时间为us级,忽略不计),已知轮毂旋转速度,于是在检测到焊缝后就可以得到轮毂实时位置,并且经过测试后,设计时间补偿参数,发出停止信号后,可以使轮毂焊缝自动停到要求位置附近。于是焊缝定位工作转换成图像焊缝坐标到焊缝角度的转换。转换公式如式(8)所示。
(8)
式(8)中,θ为按轮毂旋转方向,从焊缝停止点到焊缝的角度,cx为焊缝在图像上的中轴线,w为轮毂图像宽度,A为拍照视野内实际轮毂角度。转换原理是将宽度方向的坐标与轮毂角度近似为线性关系,假设画幅正中是270°,通过焊缝在图像的位置,转换得到焊缝实际角度。
(9)
为了匹配多轮毂检测定位需求。保证PLC停转轮毂的角度一致,待轮毂统一旋转到固定角度后,发送停止信号给PLC,角度为式(9)中θ1,t为检测到焊缝后延迟发送停止旋转信号的时间段,R为轮毂旋转速度,t1为算法处理时间,t2为经过30次轮毂重复定位测试,轮毂能准确停靠在规定区域的时间补偿,补偿为测试经验值,为常数,可正可负,用于补偿转速误差、机械抖动误差、计算偏离误差等。
轮毂存在检测到焊缝与未检测到焊缝的情况。为保证生产节拍,轮毂自转2圈半,截止时间前未检测到焊缝,轮毂自己停转视作异常件剔除,从而不影响下一个轮毂的检测。设定轮毂生命周期如图9所示。因为考虑到轮毂的加减速时间,所以前0.4 s不检测,停转前0.4 s停止检测。
图9 轮毂检测定位生命周期
本文采用的数据为某汽车轮毂生产厂家在线生产的4种规格轮毂焊缝,汽车厂日产轮毂数量较大,数据充足,在可以采集充足数据的前提下,不用对数据进行数据增广扩充数据集。在尽可能保证数据集丰富度的前提下,对整体轮毂焊缝数据集进行筛选后选取了15474张。为了减小背景对检测的干扰,以及适配多规格轮毂焊缝的检测,通过自动滑台装置、移动相机以及设定轮毂规格相对应的相机ROI,减小了不同规格轮毂数据的差异性。轮毂焊缝数据如图10所示。
图10 轮毂焊缝
前期针对一个型号轮毂,进行数据采集模型测试。在不影响正常生产的前提下,通过人工检测定位焊缝后,轮毂自转一圈,对旋转轮毂通过Basler面阵相机采集图像,采集2000个轮毂焊缝数据。使用LabelImg软件对其进行数据标注。
中期软件在线使用中,发现存在水渍、油污、冷却液的误检,针对误检,为了不影响生产,提高检测效果以及减少因误检而导致后序钻孔工序的轮毂报废,通过人工添加水渍、冷却液、油污来制作样本数据。针对漏检,开发的软件有自动保存检测数据的功能,可以标注后加入数据集。
后期整体轮毂焊缝数据集有10000多张,可以根据实际生产效果对数据集进行增加与调整。
本文模型训练使用的服务器硬件参数为NVIDIA GeForce RTX 3080,CPU为Intel Core i9-10900X。系统版本为Ubuntu20.04,开发平台为Pycharm,Python版本为Python3.8。本文是在Pytorch深度学习框架下实现的轮毂焊缝检测定位,Pytorch版本为torch1.8.1、torchvision0.9.1,CUDA版本为CUDA11.1。为了做对比实验,在此确定共同的超参数,检测尺寸设为480,批尺寸设为4,选用Adam优化器,初始学习率为10-4,学习率衰减率设为0.1,训练20000步,第14000步学习率衰减。
本文除了提高网络的检测能力以供项目实际使用以外,还要精简网络以提高检测效率,并且探索了卷积网络与Transformer的线性融合方式对检测效果的影响,以及CoTx结构替换卷积层对检测效果的影响。
首先精简Retinanet网络。对15474张轮毂数据,选取不同的随机种子测试3次发现,检测框全部出现在FPN的P5及P6特征层上,具体分布结果如表1所示。由此可以将Retinanet网络中FPN层的P3、P4、P7层去除,可以极大地提升模型训练速度,同时提升检测速度,提速1.5倍,去除后的检测框在特征层上的分布如表2所示。
表1 Retinanet检测框在特征层上的分布
表2 简化Retinanet检测框在特征层上的分布
使用CoTx结构替换Resnet18中的卷积层以及替换FPN中的P5、P6层的卷积层,网络替换前后详细结构对比如表3所示。
表3 网络替换前后详细结构
共有4种规格轮毂用于自动化检测,随机选取各规格轮毂焊缝数据250张,共取1000张轮毂焊缝数据做为训练集,在剩余14474张数据上测试不同的静态上下文k1和动态上下文k2的线性融合策略的检测效果。评价标准选用F1-score,即精确率与召回率的调和平均数,在后续表中简写为F1,网络参数量Params、运算量MACs、检测效果如表4所示。可见静态上下文k1和动态上下文k2的融合,能一定程度地提升网络检测效果。
表4 不同k1、k2融合策略对比
使用k1+k2的叠加融合方式,用CoTx结构替换不同的卷积层,检测效果如表5所示。实验表明,在检测效果达到99%的情况下,用CoTx结构替换卷积层,在数据集不变的情况下,仍然能够起到提升模型检测效果的作用。综合考虑网络的参数量、运算量以及检测效果,在Retinanet网络的特征金字塔FPN层中,用CoTx结构去替换P5、P6特征层的卷积层,效率较高。
表5 CoTx替换不同层的检测效果
重新划分数据集,用12379张图训练模型,训练Retinanet+CoTx(替换P5、P6的卷积层)模型,F1达到99.97%。对比原Retinanet网络、简化后的Retinanet网络,参数量、运算量、检测效果对比如表6所示,损失收敛曲线如图11所示,F1对比图如图12所示,Retinanet+CoTx在特征层P5、P6上生成的热力图如图13所示。
表6 网络检测效果对比
(a) Retinanet+CoTx
(b) Retinanet
(c) Simple Retinanet图11 loss下降图
图12 F1对比图
图13 轮毂焊缝热力图
基于表5与表6可知,使用CoTx结构替换Resnet骨干网络和FPN特征层中的卷积网络能够起到提高检测效果的作用,且替换最后几个提取特征的卷积层,提升效率会高一点。使用目标检测算法,检测轮毂焊缝的检测效果如图14所示。轮毂焊缝检测定位软件是基于C#、Java开发的,现场使用的显卡型号为NVIDIA GeForce RTX 2060,实时检测画面如图15所示。
图14 轮毂焊缝检测效果图
图15 轮毂焊缝检测效果图
本文介绍了基于深度学习的目标检测算法,提出了一种基于Transformer架构的CoTx结构,可便捷替换通用的卷积层,探讨了CoTx替换不同卷积层对目标检测效果的影响,测试了CoTx与Retinanet结合后的目标检测网络在工业项目上的实际检测效果,还提供了一种工业焊缝检测定位的方法。
通过现场实际在线使用,连续统计30天生产的漏检和误检情况可知漏检率为0.28%,误检率为0.01%,定位精度均满足±5°的精度要求,平均单张图检测时间为7 ms,单个轮毂焊缝检测时间为1.25 s,能够较好地满足企业生产需求。