掌桥专利:专业的专利平台
掌桥专利
首页

基于深度学习的铸件外观缺陷检测方法

文献发布时间:2023-06-19 11:45:49


基于深度学习的铸件外观缺陷检测方法

技术领域

本发明属于汽车压铸件外观缺陷检测领域,尤其是基于深度学习的自动生产线中的缺陷检测领域,涉及一种基于深度学习的铸件外观缺陷检测方法。

背景技术

产品的表面缺陷检测是视觉缺陷检测的一个重要部分,其检测的准确程度直接会影响产品最终的质量优劣。在制造机械零部件的过程中,压铸的铝铸件有可能存在各种缺陷,具体包括气孔、气泡、缩孔、缺肉和冷隔等缺陷,这些导致对设备运行安全的威胁,精密铸件的缺陷检测尤为重要。早期的人工检测或半自动检测的方法难以满足现代工艺生产制造的高效需求。工序检测多依靠人工处理,成本高,效率低。人工检查或半自动监测,生产线检查的劳动力量很大,效率低,缺乏一致性的检测品质,检测效率不稳定及作业成本较高。而利用视觉缺陷检测很好地克服了这一点。

在工业界,传统的数字图像处理在一些相对简单的任务上已经能够在很大的程度上减轻人们的劳动力,比如说在螺纹的漏加工上和孔的漏加工上等缺陷检测的任务中。在这些任务中,传统的数字图像处理方法已经能够达到接近百分之百的准确率了,能够达到完全替代人类进行工作的目的了。但是,这种技术方法只能适用于相对简单的缺陷检测任务上,对于铸件缺陷检测这种相对比较复杂的任务上,传统的数字图像处理方法并不能达到工厂所要求的工业级别。

目前,随着计算机、人工智能等科学技术的出现和发展,深度学习及其发展的产品已经得到了广泛的应用,比如:目标识别、无人驾驶、航空航天等领域。随着深度学习在其他领域的应用的成功,深度学习也逐渐在工业界应用起来。在工业界,缺陷检测就是一个应用前景非常的领域。应用于工业界的深度学习的缺陷检测方法相对于传统的方法在复杂的环境和多目标场景中具有更高的鲁棒性和准确性。同时,将深度学习与5G相结合,能够在工厂内到达实时的缺陷检测的效果。

发明内容

目前在制造机械零部件的过程中,有可能存在各种缺陷比如说缺肉、裂纹、冷隔、气孔等缺陷导致对设备运行安全的威胁,因此汽车精密零部件的缺陷检测尤为重要。当前制造业汽车零部件产品瑕疵缺陷的检查,多是人工检查或半自动检测,生产线检查工人的劳动量很大,效率低,误检率高,极大地抑制了生产效率,质检对质量控制和产能都产生了很大不良影响。本发明的主要目的是为了减轻生产线检查工人的劳动量、提高检测的效率、降低缺陷检测的误检率,提供了一种基于深度学习和5G相结合的铸件外表面缺陷检测方法。

为了达到上述目的,本发明采用的技术方案为:

一种基于深度学习的铸件外观缺陷检测方法,包括以下步骤:

所述的训练阶段主要包括以下几个步骤:

(1)在实际生产线上搭建图像获取模块,选择的工位在铸件机加工的最后一道工序—清洗后。在此工位上,将相机和镜头布置在相机支架上。在实际的应用中,当待检测的工件经过清洗之后,机械臂抓取该工件后将该工件放置到相机前进行图像的获取。通过图像获取模块在生产线上捕获缺陷压铸件的图片,并将缺陷图片保存到电脑终端,通过图像采集模块获得800张缺陷图片。

进一步的,本发明选取的相机是AVT5200型号,选择的打光方式是同轴光。然后按照实际情况在产线中布置好相机、镜头和光源,搭建起图像获取模块。通过图像获取模块,在工厂的生产线上一共收集到800张图片,具体包括缺肉缺陷250张,气孔缺陷250张,缩孔缺陷180张,冷隔缺陷120张。

(2)对所获取的缺陷图片进行数据增强,主要包括对图像的旋转、平移、翻转、对称、对比度改变等一系列的变化,以此来增强训练后模型的鲁棒性和泛化性能。同时也对图片的对比度变、亮度等特征进行了变化,并且在某些图片中还进行了模糊,增加噪声等操作来增加模型的泛化能力,防止模型产生过拟合的现象。经过对所获得的800张缺陷图片进行数据增强后,最终获得了2500张缺陷图片。

(3)采用Imglabel软件对所步骤(2)得到的缺陷图片的缺陷部位进行缺陷标注,将图片中的带有缺陷的部位用矩形框框住,同时保存了缺陷的位置和类别信息作为真实值,这些真实值在训练过程中会作为参考值而被使用,最终获得用于模型训练的数据集;

(4)对标注后获得的数据集中矩形框的大小进行进行kmeans聚类操作,根据kmeans的操作结果来对RefineAtt中锚点的大小进行更改,进而来选择适合本数据集的anchor值的大小,使得该网络模型更适用于该缺陷图片数据集。

进一步的,训练阶段步骤(4)中,采用Kmeans算法对数据集中的目标的大小进行聚类处理,来获得适用于本数据集的锚点大小值和长宽比;同时为了能够提高对小物体的检测的召回率,对锚点的铺设方式进行了重新的设计,在原本的相邻的4个锚点中间新增了一个新的锚点,来提高锚点和待检测物体的iou值,进而提高小缺陷检测的召回率。

(5)将步骤(4)标注好的数据集上传到云端服务器,同时将目前广泛用于工业领域的深度学习模型RefineAtt迁移到云端,并通过标注好的数据集对深度学习模型进行训练,在训练的过程中监测损失函数大小的变化情况,在损失函数几乎不发生变化时将最终训练后的权重系数保存下来。

进一步的,训练阶段步骤(5)中,由于铸件背景十分复杂,对检测会造成巨大的干扰,为了能够使得神经网络能够更多的关注图片中的缺陷部分,本发明在原本的模型后增加了注意力机制,即增加了ATT模块;使得神经网络在训练的时候可以更多的关注图片中存在缺陷的区域,提高检测的准确率。在训练的开始阶段,设定学习率为0.0001,批大小设定为16,并且采用学习率衰减策略,每迭代40000iterations学习率变为初始学习率的0.1倍;在训练的过程中不断监测损失函数的变化以及验证集的准确率,当损失函数的大小和验证集的准确率不在发生变化时,保存训练好的权重系数。由于背景信息会对小型缺陷的检测造成干扰;在该步骤中采用一种对比训练的策略;在收集缺陷的同时,收集数量相当的无缺陷图片,在训练的时候让网络结构对比学习,降低背景信息对检测的干扰。

在一个具体是实施方案中:

在上述(4)中,本发明针对缺陷的大小分布,具体如图2所示,根据缺陷目标的分布大小,采用kmeans算法来对其进行聚类操作,经过聚类操作后得到锚点的大小依次为14.8、30.2、63.1和130.0,而为了能够到达均匀铺排锚点的目的,选取Conv4_3、Conv5_3、Conv_fc7和Conv_fc6的锚点的大小依次为16、32、64和128。但是为了提高对小目标的的召回率,本论文对Conv4_3卷积层上的锚点进行了重新的设计,具体设计方式如图3所示。原始的锚点设计是在以每个锚点为中心,在锚点的周围设计长度和长宽比不同的锚点。而本论文在彼此相邻的四个像素点中间在设置一个长宽比为1的锚点。从图中可以看出,当待检测物体的大小和锚点的大小较为接近的时候,在(a)中锚点与待检测物体间的iou大小为A1,在图b中锚点和待检测物体间的iou为A2,可以很明显的看出A2>A1,因此经过锚点的改进可以很明显的提高小物体的召回率。

针对小目标的检测,通过背景信息的帮助往往能够达到较好的检测效果。但是背景信息对于缺陷检测来说,效果往往会适得其反。这是因为缺陷检测的时候,待检测的工件的位置是固定不变的,同时由于缺陷的部位相对较小,因此经过训练后的模型在进行检测的时候,由于背景信息的存在往往会将良品错误的判断为缺陷件。为了解决上述这个问题,该步骤中采用了一种对比训练的策略。除了采集上述的缺陷图片外,又采取了相当数量的无缺陷的图片作为了新增的一类。在训练的时候,神经网络通过2类有无缺陷的对比的学习,可以很好的解决背景信息带来的干扰。

在上所述(5)的RefineAtt深度学习模型是是以Refinedet网络为基础的,该算法主要包括4大模块,分别为ARM、ODM、TCB和ATT模块。ARM模块主体采用的是VGG16,将VGG16后面的2个全连接层去掉,更改为conv_fc6和conv_fc7,并在其后面增加了2层卷积层。ODM模块主要功能是为了能够充分利用高层的语义信息,并采用了特征金字塔的思想。ODM模块主要的功能是对来自ARM模块的存在物体的锚点进行具体的分类和进一步的位置回归。由于铸件表面背景十分复杂,对模型的检测回造成很大的影响。因此,在网络的最后阶段整合了attention机制,增添了一个ATT模块。具体如图4所示,从图中可以看出,对于输入图片来说,首先进行最大池化操作,接着使用全连接层来使通道数量降低,经过relu操作后,将通道数量恢复,并通过Sigmoid操作来获得各个通道间的权重系数,在将该系数和输入图片进行乘积来使网络结构更加注重图片中缺陷部位,从而减少复杂背景的干扰。

所述的在工厂的环境中进行缺陷检测阶段的步骤主要如下:

(1)将基于收集的缺陷图片训练好的深度学习模型部署在云端服务器上,具体的:客户端和服务器端采用的通信方式是基于flask的client/server的部署模式,将训练好的模型加载到云端服务器上,作为我们要进行访问的server,并且通过电脑终端的client发送请求,就可以进行缺陷的检测。

(2)在进行缺陷检测开始之前,首先需要打开云端服务器并在服务器上加载训练好的深度学习模型;此步骤是可以明显的节省缺陷检测的时间无需在每次检测的时候加载一次模型。

(3)在工厂现场通过图像获取模块采集流水线上的待检测工件的表面图片,并将其保存在本地上;

(4)利用5G的低延时和高带宽等优点,将从工业相机获取的图片通过5G网络由电脑终端上传到云端服务器上;由于工业相机拍摄的缺陷照片所占的存储空间很大,因此通过5G的传输能够达到实时的效果。

进一步的,所述缺陷检测阶段中的步骤(4)中:客户端和服务器端采用的通信方式是基于flask的client/server的部署模式,将训练好的模型加载到云端服务器上,作为后续进行访问的server,并且通过电脑终端的client发送请求,进行缺陷检测。

(5)所述云端服务器接受到来自终端的请求时,云端的服务器接受由终端上传来的图片,并将该图片输入到训练好的神经网络模型中,通过神经网络模型的运算得到该图片的检测结果;具体为:

所述云端平台接受终端传来的请求后,会对来自终端的图片进行处理,并将来自终端的图片传输到神经网络中去。在神经网络中,首先是通过backbone对所输入的图片进行特征的提取;接下来是对所获取的特征图进行信息的整合,即将低层的特征图和高层的特征图进行融合,来提高最终检测的准确率。这是因为低层的特征图中的语义信息较低,但是保存着比较细节的特征,而高层的特征图中具有更高的语义信息,但是细节的特征较少。通过这样的特征融合,可以将低、高的语义信息相结合,能够明显的提高检测的准确率。在神经网络的最后一段就是最终的结果的输出,包括类别以及该类别的位置坐标。

进一步的,所述缺陷检测阶段中的步骤(5)中:由于在实际的生产车间中,各种类型的缺陷的数量是及其不平衡的,不同缺陷类型的数量甚至可能达到10倍以上,由于上述原因该类型缺陷是不能进行训练和检测的,为了能够解决上述问题,本发明提出了一种基于深度学习与数字图像处理相结合的铸件外观缺陷检测方法,该方法首先通过深度学习方法确定出缺陷可能发生的位置,并将该位置截取出来,并进一步使用数字图像处理技术来对该区域进行最后的识别处理。

(6)在云服务器上获取的检测结果通过5G网络反馈到电脑终端;检测结果包括缺陷类别和位置坐标。

(7)电脑终端接受云服务器的检测结果并在电脑终端显示出来,其中缺陷类别和位置坐标在电脑终端中将该缺陷的具体位置框选出来,并最终显示在客户端交互界面上来指导工人的操作。但是,由于工厂内对缺陷检测的准确率要求在99.99%以上,为了满足工厂的实际应用的需要,将最终的检测结果设置为以下三种,分别为:OK、NO和待检测。设定的原则是:当图片输入到神经网络后获得的置信度大于0.85时判定为有缺陷的,当置信度处于0.4至0.65时判定为待检测,当置信度低于0.4时判定为无缺陷。通过上述的设置,我们可以满足工厂对准确率的要求。

在上述步骤5中,由于在实际的生产车间中,各种类型的缺陷的数量是及其不平衡的,不同缺陷类型的数量甚至可能达到10倍以上,由于上述原因该类型缺陷是不能进行训练和检测的,为了能够解决上述问题,本发明提出了一种基于深度学习与数字图像处理相结合的铸件外观缺陷检测方法,具体的流程图如图9所示。该方法首先通过深度学习方法确定出缺陷可能发生的位置,并将该位置截取出来,并进一步使用数字图像处理技术来对该区域进行最后的识别处理。

同时,由于缺陷部位在整张图片中所占的比例较小,在经过下采样后,缺陷部位可能已经消失,因此无法达到检测的目的。因此,为了能够提高缺陷部位在整张图片中所占的比例,本发明采取了将整张图片分割为2x2的小图片,在对每张小图片依次进行缺陷的检查,以此来提高缺陷检测的准确率。

本发明的有益效果是:

本发明相对于传统的缺陷检测算法,避免了手动的提取特征的工作。同时,本发明对于缺陷部分相对较小等难检测的情况时具有更好的识别效果,同时由于工厂内的光照变化较大,对缺陷检测会带来较大的影响,对于这种情况,我们在数据采集和数据增强时通过改变光照的强度,能够使得光照对缺陷检测的影响的降到最小,因此本算法具有更高的鲁棒性和泛化性能。综上可见,本算法很好的统筹了缺陷的检测速度和准确率。

附图说明

图1为缺陷检测系统图;

图2为缺陷目标大小分布图;

图3为Conv 4_3层锚点的设计;

图4为ATT模块的具体形式;

图5为RefineAtt模型结构图;

图6为算法检测的效果图,其中(a)为多肉缺陷;(b)为缩孔缺陷;(c)为缺肉缺陷;(d)为气孔缺陷;

图7为训练时损失函数变化曲线;

图8为客户端交互界面;

图9为深度学习与数字图像处理相结合的流程图。

具体的实施方式

为了更加详细的阐述本发明的技术方案和技术特点,将结合下面的附图来进行详细的说明。本方案的结构简单,在工厂的环境下即插即用。同时在光照变化明显,并且环境较恶劣的工厂的环境下针对相对较小的铸件缺陷能够很好的识别效果。

接下来将结合以下附图来对本发明进行进一步的阐述:

(一)方法的概述:

如下图1所示为本方法的总体流程图,从本发明的流程图上可以看出,本方法主要分为2大阶段和3大模块。2大阶段分别为训练阶段和最终的检测阶段,3大模块分别是图像获取模块、图像传输模块和缺陷检测模块。对于训练阶段,首先通过图像获取模块对流水线上的缺陷工件进行拍照来获取缺陷图片,并将其存储在电脑终端。在获取到一定量的缺陷照片后,对缺陷图片进行数据增强来增加训练后模型的泛化性能。在本发明中,经过数据增强后的照片数量为2500张,并将图片按照8:1:1的比例划分为训练集、验证集和测试集。获取数据后对图片进行标注,在标注后将数据上传到云端服务器。本发明采用的是RefineAtt算法,如图5所示。RefineAtt深度学习模型是是以Refinedet网络为基础的,该算法的主体模块采用的是SSD,同时为了能够充分利用高层的语义信息,并采用了特征金字塔的思想。由于铸件表面背景十分复杂,对模型的检测会造成很大的影响。因此,在网络的最后阶段整合了attention机制,增添了一个ATT模块。具体如图4所示。在进行预测时,本算法采用了简单的逻辑回归进行分类发明并通过回归来获得缺陷的位置坐标。在云端服务器上配置RefineAtt的训练环境,并根据数据集来对模型进行训练。在训练的过程中实时的检测损失函数以及验证集准确率的大小变化趋势,待损失函数的大小和验证集的准确率不在发生明显的变化时,将训练后的训练权重保存下来。同时,为了满足工厂内实时性检测的目的,将训练好的深度学习模型下放到边缘测端,使得缺陷检测的速度受网络的影响相对较小,检测效率更高。在进行缺陷检测阶段,首先需要通过图像获取模块对铸件的外表面进行图像的获取,并将图像通过图像传输模块上传到边缘服务器端,在边缘服务器端接收到有电脑终端上传的图片后,便将该图片上传到深度学习网络中进行缺陷的检测,获得检测的结果以及缺陷的位置坐标。然后将该缺陷检测的结果通过图像传输模块回传到电脑终端进行最终结果的显示。若检测的结果为存在缺陷,则边缘服务器会将存在缺陷的结果上传到云端服务器,并对该检测结果进行备份,用于最终结果的溯源。

(二)数据的准备:

通过图像获取模块对流水线上的缺陷图片进行拍照,采集的缺陷类型主要包括以下几种,分别为:气孔缺陷、缩孔缺陷、冷隔缺陷、漏加工缺陷和缺肉缺陷等。

采集系统的硬件部分主要包括光源、相机、镜头、光源控制器等。在采集图片时,通过机械臂末端携带工件运动到相机前的指定位置,进行图片的获取。通过图像获取模块,一共获取到800张缺陷图片。

由于气孔和缺肉等缺陷所占面积非常小,所以我们采用对原图进行分割的2×2个小区块的方法,增大缺陷在整张图中所占的比例,进而来提高缺陷检测的准确率。为了提高模型的泛化能力,本发明对所获取的图片进行了几何方面的数据增强和像素方面的数据增强。几何方面包括对原照片进行平移、旋转、对称等操作。并且对图片进行像素级的操作,包括对图像进行模糊、对比度增强以及亮度变化等操作。因此本发明对每张图片进行对称、旋转90度和180度操作,同时对图片进行了模糊和增加噪声等像素级的图像增强。经过数据增强经过数据增强后,所获取的图片总数为2500张。在获取到缺陷图片后,使用标注工具Labelimg对缺陷图片进行标注,通过标注获取到缺陷在整张图片中具体位置信息。经过标注后会获取到一个后缀名为.xml的标注文件,这些标注信息是在训练过程中会作为参考值而被使用。

(三)模型的训练

对标注后数据集进行kmeans操作,根据kmeans的操作结果来对锚点的大小进行更改,进而来选择适合本数据集的anchor值的大小,该方法明显可以提高小缺陷的召回率,同时对Conv4_3上的锚点进行了重新设计,在4个相邻的锚点中间增添一个锚点,来提高对小目标检测的召回率。

将原始图像和标注文件上传到云端,同时将训练模型部署在云端,在云端对模型进行训练。深度学习网络在进行训练过程中是通过不断的迭代使损失函数减少进而来不断优化模型的。在训练的过程中采用的框架时Pytorch,CUDA版本为10.0,CUDNN版本为7.6。同时,我们采用随机梯度下降法来训练我们的深度学习模型,深度学习模型在进行训练过程中是通过不断的迭代使损失函数减少进而来不断优化模型的,而损失函数主要包括两部分,分别是类别损失和位置损失两部分。

在训练的开始阶段,设定的学习率为0.0001,批大小设定为16,并且采用学习率衰减策略,每迭代40000iterations学习率变为初始学习率的0.1倍。在训练的过程中我们不断监测损失函数的变化以及验证集的准确率,在迭代次数达到120000左右后,损失函数的大小和验证集的准确率不在发生变化,此时将训练好的权重系数保存下来。

由于背景信息的存在,对缺肉等小型缺陷的检测往往会造成干扰。为了解决该问题,在该步骤中采用了一种对比训练的策略。在收集缺肉缺陷的同时,收集数量相当的无缺陷图片,在训练的时候让网络结构对比学习,可以较好的降低背景信息对检测的干扰。

(四)模型的部署及检测:

客户端和服务器端采用的通信方式是基于flask的client/server的部署模式,将训练好的模型加载到云端服务器上,作为我们要进行访问的server,并且通过电脑终端的client发送请求,便可以进行缺陷的检测。

本发明将模型部署在边缘服务器上,而不是云端的服务器上。这是因为边缘计算是将数据的处理、应用程序的运行,甚至一些功能服务的实现,由中心服务器下放到网络边缘的节点上,也就是说就是将需要低延迟的计算机程序放在更接近请求的位置,从而降低了传输成本,缩短了延迟并提高了服务质量。当电脑终端箱服务器发送请求时,服务器接收到请求后将接收到的图片进行分割,分割程2×2个小图片,依次对该4个小图片进行缺陷的检测。由于在实际的生产车间中,各种类型的缺陷的数量是及其不平衡的,不同缺陷类型的数量甚至可能达到10倍以上,由于上述原因该类型缺陷是不能进行训练和检测的,为了能够解决上述问题,本发明提出了一种基于深度学习与数字图像处理相结合的铸件外观缺陷检测方法。具体流程图如图9所示。

(五)数据的传输:

在检测阶段,首先需要通过5G将图像获取模块采集的图片信息上传到云端服务器上,等待在服务器进行缺陷的检测;同时在服务器端对传入的照片检测后需要将检测的结果通过5G传输反馈到电脑终端上,这也是图像传输模块的主要的功能。

(六)缺陷检测的结果展示:

电脑终端接受到云端传来的缺陷类别和位置坐标后,便会在电脑终端中将该缺陷的具体位置框选出来,并最终显示在客户端交互界面上来指导工人的操作。但是,由于工厂内对缺陷检测的准确率要求在99.99%以上,我们为了满足工厂的实际应用的需要,我们将最终的检测结果设置为以下三种,分别为:OK、NO和待检测。我们设定的原则是当图片输入到神经网络后获得的置信度大于0.85时判定为有缺陷的,当置信度处于0.4至0.65时判定为待检测,当置信度低于0.4时判定为无缺陷。通过上述的设置,我们可以满足工厂对准确率的要求。

(七)实际操作步骤:

将该系统集成到生产的流水线上的最后一道工序上,工作人员在开始使用时,需要通过点击打开相机按钮来打开相机。在工件放置好后,通过点击开始检测按钮进行检测操作,检测结果可以通过显示界面展示出来。最终检测结果的显示主要包括三个结果,分别为绿色的“OK”,红色的“NG”,以及黄色的“待检测”,具体如图5所示。在流水线上经过1000件样件的检测,我们系统检测的准确率可以达到95%以上。具体的检测结果如3所示。通过将系统和工人的共同检测可以满足工厂内的缺陷检测要求,同时也大大减轻了工人们的工作强度。

以上所述实施例仅表达本发明的实施方式,但并不能因此而理解为对本发明专利的范围的限制,应当指出,对于本领域的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些均属于本发明的保护范围。

相关技术
  • 基于深度学习的铸件外观缺陷检测方法
  • 一种基于深度学习的工业元器件外观缺陷检测方法
技术分类

06120113045925