机械零件的质量检测是工业生产中的重要环节,而零件大多数的缺陷(如划伤、磨痕、磕碰等)都位于表面[1-3].表面缺陷会导致零件质量降低,给企业造成极大的经济损失.因此,零件表面缺陷检测受到了工业界的广泛重视.在企业实际生产中,往往采用人工目检法对产品质量进行检测,但是该方法效率低下,且检测效果难以保证.随着人工智能技术的发展,涌现出一批基于机器学习的零件表面缺陷检测算法[4-6].这些方法首先用图像处理算法提取零件表面缺陷的特征,然后用支持向量机、决策树等分类算法识别缺陷类型[7-9].虽然机器学习方法提高了零件表面缺陷检测的效率,降低了劳动成本,但仍不能满足工业自动化生产对于检测精度和泛化能力的需求.近年来深度学习在图像识别领域发展迅速,基于深度学习的零件表面缺陷检测技术得到广泛研究.Luo等[10]提出了一种基于深度学习的铝表面缺陷检测方法,将Inception V4作为主干特征提取网络,提高了缺陷检测精度.Zhang等[11]提出一种基于卷积神经网络的钢轨表面缺陷检测方法,利用一维卷积神经网络提取特征,长短时记忆网络提取上下文信息,从而实现钢轨表面缺陷分类.于重重等[12]针对表面缺陷尺寸大小不一的问题,提出通过区域网络对样本图片进行区域定位和特征提取,同时将神经网络的卷积器改为动态卷积器,实现了不同大小缺陷的识别.然而,以上深度学习方法在训练时忽略了样本的类内紧凑性和类间可分性,导致模型在处理类别较多的复杂样本时可能出现分类精度不高的问题.许多零件表面缺陷存在特征不明显、不同缺陷类别特征相似度高等问题,大多数深度学习方法的性能有待提高.深度度量学习通过减小同类别特征间距,增大不同类别特征间距,达到精确分类的目的[13].王伟等[14]提出采用条件三元组损失加强网络的特征提取能力,提高纽扣表面缺陷的检测精度.Zhang等[15]针对钢轨缺陷样本较少的问题,提出一种将度量学习与记忆模块相结合的方法,以充分利用各个批次的数据.黄健等[16]将迁移学习与度量学习相结合,提高了小样本情况下模型的分类精度.但以上方法在训练时须要利用大量成对的正负样本,导致计算量大且训练速度慢,而且实际应用时往往无法找到大量的缺陷样本.此外,由于噪声标签的影响,也会使得该类算法在针对较复杂的真实数据时分类性能不足,无法满足表面缺陷检测的实际需求.为增强网络的特征提取能力、加快训练收敛速度并提高模型的稳定性,本研究提出一种基于改进深度注意中心损失(improved deep attention center loss,IDACL)的深度度量学习模型,并将其应用于机械零件的表面缺陷检测.该方法首先用O2U(overfitting to underfitting)-Net进行样本筛选和预训练,减小噪声标签样本的影响.针对中心损失存在中心随机性大、容易导致模型训练崩溃的问题,将O2U-Net参数迁移到深度度量学习模型,并提取各类样本的中心作为中心损失的初始中心.将中心点与所有样本点关联,并根据样本点与类中心的距离加权优化深度注意中心损失函数,以进一步增强模型的判断力.最后通过中间壳体零件表面缺陷检测实验来验证本研究方法的有效性.1 深度注意中心损失中心损失是深度度量学习中常用的一种损失函数,其目标是通过训练缩小样本特征与该类中心的距离,扩大样本特征与其他类中心的距离.模型输出特征向量Xi=[xi1,xi2,…,xid]T∈Rd,其中d为向量长度;cyi为该类样本的特征中心,其标签为yi∈{1,2,…,k}.中心损失为LC=12m∑i=1m∑j=1d||xij-cyij||22,式中m为样本数量.该损失通过优化样本特征向量与类中心特征向量的欧式距离来提高同类样本的相似度,从而实现聚类效果.深度注意中心损失(deep attention center loss,DACL)对中心损失进行了改进,通过注意力网络对样本特征不同维度上的元素进行加权,以去除冗余背景和噪声点,提高网络分类精度[17].如图1所示,深度注意中心损失主要包括稀疏中心损失和注意力网络两个部分.稀疏中心损失(sparse center loss)通过对每个维度计算得到的欧式距离进行加权,从而过滤不相关的特征,损失函数为LSC=12m∑i=1m∑j=1dαij||xij-cyij||22,式中αij为嵌入空间中第i个样本的特征向量的第j个维度元素的权重.10.13245/j.hust.240122.F001图1深度注意中心损失模型深度注意中心损失集成了一种注意力网络,以对特征的每个维度分配权重.该注意力网络由上下文编码单元(CE-Unit)和多头二进制分类器组成.上下文编码单元由三个全连接线性层组成,其作用是将主干网络提取的空间特征图重新进行编码, ei=tanh(BN(W3Trelu(BN(W2T⋅relu(BN(W1Tb(xi*)+b1))+b2))+b3)),式中:BN为归一化层;ei为第i个样本的潜在特征向量,并且ei∈Rd'≪d以保留重要信息;xi*为主干网络提取的空间特征图;b为特征卷积层的展平函数;Wl和bl分别为第l个全连接层的权重和偏差.为了估计特征向量Xi的第j维元素的权重,在上下文编码单元后面添加多头二进制分类器,从而将ei转化为Xi在每个维度上的权重得分,具体公式为pijin=AjinTei+bjin;pijex=AjexTei+bjex,式中:pijin和pij ex分别为特征向量Xi在第j维上的包含得分和排除得分,下标in表示包含,下标ex表示排除;Aj∈R2d和ei分别为每个分类头的权重参数和偏差参数.最后通过交叉熵分类函数计算注意力权重可得αij=exp(pij in)/[exp(pij in)+exp(pij ex)].深度注意中心损失在中心损失的基础上考虑了样本特征不同维度的重要性,然而最小化中心损失仅增大了类内相似度,却忽视了不同类别间的差异性,因此无法获得足够的深层特征信息,导致模型判别力有待提高.2 基于O2U-Net的中心初始化在中心损失算法中,通常随机初始化中心点cy,并将其作为模型参数进行迭代更新,这容易导致模型训练崩溃;同时,中心损失易受噪声标签的干扰,噪声标签对应的损失值较大,因此会对模型参数更新产生很大影响.为了解决以上缺点,本研究提出了一种基于O2U-Net的中心初始化方法.如图2所示,O2U-Net是一种用来检测噪声标签的方法,通过调节网络的学习率来实现从过拟合到欠拟合的循环转换,具体公式[18]为s(t)=[1+(t-1)modg]/g;r(t)=[1-s(t)]r1+s(t)r2,式中:s(t)为线性递减函数;r(t)为第t个迭代轮次的学习率;g为循环训练的次数;r1和r2分别为学习率的最大值和最小值.10.13245/j.hust.240122.F002图2O2U-Net模型在循环过程中记录每个样本的损失,若该样本的平均损失越高,则该样本是噪声样本的概率越高,然后将检测概率最高的前R%的样本作为噪声标签样本从原始数据中剔除,并利用交叉熵分类损失对筛选后的数据重新进行训练.最后将训练完成的O2U-Net模型参数迁移到本研究的主干特征提取网络.由于交叉熵分类损失具有一定的聚类性质,本研究利用迁移后的模型初步提取各类中心作为深度注意中心损失的初始类中心,从而提高模型训练效率,具体公式为cyi=1n∑i=1nF(xi),式中:F(xi)为O2U-Net训练得到的模型;n为该类样本数量.3 改进深度注意中心损失基于中心损失的深度度量学习将每一类的中心当成一个代理点,并将其作为网络参数进行训练迭代.如图3(a)所示,在训练中每个样本点与各自中心点相关联,从而大大降低训练复杂度.但由于中心损失只考虑同类样本的关系,因此使得模型训练时忽视了不同类别间的差异性.如图3(b)所示,本研究对深度注意中心损失的中心损失函数进行改进,将每一个中心作为锚点,同时关联每类中心与该批次的所有样本点,从而获得更为丰富的数据关系.根据样本与中心的距离对损失函数进行加权,突出困难样本在模型训练中的重要性,以加快模型的收敛速度.10.13245/j.hust.240122.F003图3两种损失对比对于一批输入样本来说,存在困难样本对(即违反边界约束的样本对)和正常样本对(即没有违反边界约束的样本对).困难正样本对和困难负样本对表示为Pi*={xi|d(cyi, xi)≥δ};Ni*={xi|i≠j, d(cyj,xi)δ},式中:d(⋅)为欧式距离;δ为边界.为了更好地利用困难样本,本研究基于样本与中心的距离设置权重参数,具体公式为ωi=exp(T(d(cyi, xi)-δ)) (xi∈Pi*);ωj=exp(T(δ-d(cyi, xj))) (xj∈Ni*),式中T为控制加权程度的温度参数,T越大则困难样本在损失中的权重越大.为使困难正样本靠近各自类中心并使困难负样本远离非自身类中心,最小化以下两个损失函数LP=∑xi∈Pi*ωi /∑xi∈Pi*ωi[αid(cyi,xi)-δ];LN=∑xj∈Nj*ωj /∑xj∈Nj*ωj[δ-αjd(cyi,xj)],式中:α为注意力权重;LP和LN分别为困难正样本和困难负样本的损失.改进的深度注意中心损失为L=1k∑i=1k(βLP+(1-β)LN),式中:k为样本中心个数;β为平衡正负样本贡献的参数.本研究提出的改进深度注意中心损失网络结构模型如图4所示,该模型采用端到端方式训练,总损失Lall由分类损失LS与改进的深度注意中心损失L构成,即Lall=LS+λL,式中λ用于控制L在总损失中的比例.10.13245/j.hust.240122.F004图4改进深度注意中心损失模型改进深度注意中心损失考虑了不同类别之间的关系,弥补了深度注意中心损失只考虑类内关系的缺陷.另外,相比深度注意中心损失,改进深度注意中心损失更加关注困难样本在训练中的作用.4 实验验证4.1 数据集和参数设置为验证本研究提出的改进深度注意中心损失深度度量学习模型的有效性,采集某汽车零部件制造公司生产的中间壳体零件表面缺陷图像作为数据集.各类缺陷样本数量见表1,训练集共2 530张图片,测试集共460张图片.由于工人的误操作、保存不当或运输磕碰等原因,中间壳体零件表面会出现划伤、磕碰、油滴、压痕、锈点、擦伤和毛刺等多种缺陷(见图5).在真实生产环境下的表面缺陷复杂多样,且由于拍摄光照弱、背景差异大等原因,导致表面缺陷检测的难度较高.10.13245/j.hust.240122.T001表1缺陷样本数量缺陷种类训练集样本数测试集样本数划伤50070磕碰50070油滴30060压痕40070锈点27060擦伤30070毛刺2606010.13245/j.hust.240122.F005图5中间壳体零件表面缺陷类型在Windows10操作系统下训练改进深度注意中心损失深度度量学习模型,编程语言为Python 3.7,框架为Pytorch-GPU.采用ResNet-18作为主干网络,输入图像的大小为224×224,并通过随机裁剪和水平翻转进行数据增强.用随机梯度下降优化器更新模型参数,初始学习率为0.1,动量设置为0.9,每50个迭代轮次进行一次学习率衰减,参数设置为0.1,超参数δ=0.1,β=0.5,λ=0.1.O2U-Net模型的参数g代表循环训练的次数,该参数越大则模型去噪精度越高,通过多次观察模型性能来确定该参数,该参数初始值一般设置为较小值并逐渐增加,当模型性能稳定不再提升时确定该值.噪声过滤比例k一般根据数据集的先验知识来确定,先验知识可以通过对数据集随机采样一组数据,检查其噪声比例来估计该值,过滤时噪声过滤比例k通常会大于该值.综合考虑该数据集的复杂度和规模,实验中O2U-Net的最大学习率r1设置为0.1,最小学习率r2设置为0.001,噪声过滤比例k设置为10%,循环训练次数g设置为200.工作站处理器为AMD Ryzen Threadripper PRO 3975WX,显卡为NVIDIA RTX A5000,显存为24 GiB,通过CUDA加速运算,提升运算速率.4.2 模型性能评估为了评估模型改进的有效性,从训练和测试两方面将改进深度注意中心损失与深度注意中心损失进行对比.如图6所示,基于改进深度注意中心损失深度度量学习模型当迭代60次时准确率就已经达到98.35%,而基于原方法只能达到92.59%的准确率,其收敛速度较原方法有明显提高.收敛后原方法的测试准确率为93.27%,而改进后的测试准确率为95.21%,实现了更高的检测精度.10.13245/j.hust.240122.F006图6训练准确率对比图7和图8分别为原模型和改进模型的分布式随机邻域嵌入特征可视化结果,从图中可以看出:改进损失函数后模型的聚类效果得到明显提升,且不同类的间距变大.10.13245/j.hust.240122.F007图7原模型特征分布10.13245/j.hust.240122.F008图8改进模型特征分布通过消融实验评估各改进点对模型性能的影响,实验类型包括:a. 深度注意中心损失;b. 仅改进深度注意中心损失的损失函数;c. 在深度注意中心损失中加入O2U-Net,并将O2U-Net中提取的各类中心作为中心损失的初始中心;d. 在c的基础上,进一步改进损失函数.实验结果如表2所示,从表2中可以看出:O2U-Net和改进模型均能提高原方法的分类精度,而二者共同作用使模型性能达到最佳.10.13245/j.hust.240122.T002表2消融实验结果方法平均测试准确率/%提升效果/%原模型93.27改进模型95.211.94O2U-Net+原模型95.442.17O2U-Net+改进模型97.143.87实验中发现,过滤比例参数R对结果影响较大,该参数过小会导致噪声样本过滤不彻底,该参数过大则会导致干净的难例样本被滤除,从而降低样本的复杂性.在不同大小的过滤比例下对各种模型方法进行对比,结果如图9所示.从图9中可以发现:当噪声过滤比例设置为10%左右时效果最好,若过滤比例太大则会导致模型性能下降.10.13245/j.hust.240122.F009图9不同噪声过滤比例准确率对比如图10所示,中间壳零件存在擦伤和划伤及磕碰和压痕这两组缺陷特征,以及背景较为相似的难分样本.如表3所示,引入O2U-Net后,深度注意中心损失模型对这两组难分样本的检测准确率提升了2.86%~9.71%.同时,改进深度注意中心损失配合O2U-Net可以小幅度增加模型区分难分样本的能力,使得模型针对两组难分样本的检测准确率提升了1.23%~1.84%.10.13245/j.hust.240122.F010图10难分样本10.13245/j.hust.240122.T003表3难分样本分类准确率方法划伤擦伤磕碰压痕原模型97.1484.2885.7192.86O2U-Net+原模型10091.4294.2895.71O2U-Net+改进模型10093.2695.5197.11%为进一步验证本文方法的有效性,选择多种常用的深度度量学习模型进行对比,包括中心损失(center loss)[19]、三元中心损失(triplet center loss)[20]、对比中心损失(contrastive center loss)[21]及常规三元损失(triplet loss)[22]和对比损失(contrastive loss)[23].所有模型的训练批次均设置为32,初始学习率设置为0.01,主干网络为ResNet-18,结果如下:深度注意中心损失、中心损失、三元中心损失、对比中心损失、三元损失、对比损失和本文方法的平均测试准确率分别为93.29%,92.83%,95.22%,94.13%,95.43%,94.57%和97.14%,可以看出本文方法性能优于其他方法.5 结语本研究提出了一种基于改进深度注意中心损失的深度度量学习方法,用于机械零件的表面缺陷视觉检测.该方法将O2U-Net与深度度量学习相结合,降低了噪声标签样本对模型训练的影响,并对中心初始化方式和中心损失进行改进.与中心损失相比,改进后的损失考虑了不同类别之间的关系,弥补了中心损失初始中心具有随机性和只考虑类内关系的缺陷,提高了深度注意中心损失的收敛速度及分类能力.中间壳零件表面缺陷的实验结果表明:该方法提高了零件表面缺陷检测精度,检测效果优于基于深度注意中心损失、中心损失、三元中心损失等深度度量学习方法.
使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,
确定继续浏览么?
复制成功,请在其他浏览器进行阅读
复制地址链接在其他浏览器打开
继续浏览