一种基于联邦学习的表面缺陷检测模型训练方法

文档序号:31062620发布日期:2022-08-09 19:54阅读:288来源:国知局
一种基于联邦学习的表面缺陷检测模型训练方法

1.本发明涉及联邦学习领域,尤其涉及一种基于联邦学习的表面缺陷检测模型训练方法。


背景技术:

2.在工业产品的生产过程中,由于生产工艺或人为因素,产品表面可能会产生划痕、裂纹、孔洞等缺陷,这些缺陷极大得降低了工业产品的质量,因此需要在质检环节将这些产品筛选出来。表面缺陷检测是指使用计算机程序自动判断产品表面是否存在缺陷,相比于人工质检,表面缺陷检测技术效率更高且不受疲劳工作状态的影响。目前的表面缺陷检测一般基于机器视觉的方法,即先构建一个神经网络模型(在该场景下可以将其称之为表面缺陷检测模型),然后使用大量的产品表面图片去训练这个模型,使之具备提取图像特征的能力,然后使用这个模型去判断产品是否带有缺陷。但是,训练神经网络模型需要大量的产品表面图片,而其中有关产品缺陷的表面图片却不容易获取,因为成熟工业生产线的产品残次率较低。因此,为了训练出可用的表面缺陷检测模型,需要有方法获取足量的产品表面缺陷图片或特征。
3.为了解决用于训练表面缺陷检测模型的缺陷图片数量不足的问题,目前有以下几种方法:
4.1、通过对原缺陷图片进行随机旋转,缩放;随机调整图像的色度,明度,饱和度;随机增加噪点等方式获取新的缺陷图片,并使用这些图片训练缺陷检测模型。
5.2、使用迁移学习的方法,先用通用数据集对模型进行初始化,再使用少量缺陷样本对模型进行微调。
6.3、联合多家生产同类产品的厂商,将各家产品的表面缺陷图片集中起来训练缺陷检测模型。
7.对于第一种方法,虽然对图片进行了各种随机处理,使图片的结构特征发生了改变,但是缺陷处的特征并未发生改变,因此供模型学习的缺陷特征依然不足。对于第二种方法,虽然能训练出模型,但是因为缺陷图片数量少,最后训练得到的模型会达到过拟合状态,泛化性能较低,无法投入使用。对于第三种方法,虽然技术上可行,但是在现实生活中,各家厂商持有的产品表面图片包含了生产工艺,封装技术等商业机密,因此厂商可能不会同意进行集中训练,可行性较低。
8.因此,本领域的技术人员致力于开发一种既能缩短缺陷图片采集时间,又能训练出合格的缺陷检测模型,同时可以保证原始数据保密性的方法。


技术实现要素:

9.有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是如何开发一种既能缩短缺陷图片采集时间,又能训练出合格的缺陷检测模型,同时可以保证原始数据保密性的方法。
10.为实现上述目的,本发明提供了一种基于联邦学习的表面缺陷检测模型训练方法,其特征在于,所述方法包括以下步骤:
11.步骤一:客户端本地数据处理;
12.步骤二:客户端预选择算法;
13.步骤三:客户端本地训练;
14.步骤四:基于图像质量权重的参数聚合算法;
15.步骤五:模型组合。
16.进一步地,所述步骤一还包括以下方法:
17.步骤s1:本地数据采集,各个客户端采集产品表面图片,将图片格式和大小进行统一,按照“正常”和“缺陷”对图片进行归类,并保存至存储介质中;
18.步骤s2:训练目标检测模型,使用软件标注产品表面图片中产品的位置,并生成标注文件,所述标注文件中应含有产品位置的坐标信息,选取合适的目标检测网络如yolov4,下载网络的模型文件以及初始权重文件;各个客户端使用各自持有的图片和对应的标注文件训练目标检测网络,并保存最终的模型;
19.步骤s3:通信测试,服务器向各个客户端发送信号,收到的客户端向服务器发送信号以示在线,服务器根据客户端的回复信号判断有多少可以正常工作的客户端能参与训练;
20.步骤s4:预估重要指标,各个客户端根据历史传输时间和训练时间,并结合当前的通信条件和算力条件,计算出本轮预估的传输时间和计算时间
21.进一步地,所述步骤二中,首先,服务器会判断客户端当前是否支持通信并能保证一定时间的稳定通信;然后,客户端需要将当前的通信带宽,训练用时,资源大小,以及相关历史数据等参数告知中心服务器,中心服务器会在计算后排除那些虽然可通信但是通信时间过长的客户端,这样做能让尽可能多的客户端在限定的通信时间完成一轮训练,减少总训练时间;
22.c={c1,,,ck}表示参与联邦学习的k客户端,s={k1,,,k
|s|
},ki∈c表示经过客户端预选择算法筛选后参与下一轮训练的客户端,tr为每轮训练的时间上限,tf为总训练时间上限,t
cs
为客户端预选择的时间,t
ag
为参数聚合的时间;表示服务器将参数分发给各个客户端所花费的时间,这与各个信道的通信带宽有关;和分别表示将第k个客户端训练本地模型和上传模型参数花费的时间;上述参数均在客户端预选择阶段时由各个客户端发给服务器,因为这些数据量相对模型参数和带宽来说非常小,因此传输时间可以忽略不计;
23.客户端预选择算法的目标函数为max|s|,即在设定的单轮训练时间内选择让尽可能多的客户端参与训练;客户端的本地模型训练是并行的,因此取被选择客户端中训练时间最大的即可,上传参数需要每个客户端分别与服务器建立连接,因此这个过程是串行的;每一轮客户端训练和通信的总时间θ可以如下表示:
24.θ=t
tr
+t
ul
25.[0026][0027]
综上所述,最终的优化问题可以汇总为:
[0028]
max|s|
[0029][0030]
因为变量有训练时间t
tr
和上传时间两个t
ul
,而t
tr
是取所有中的最大值,因此可以先固定t
tr
再找到最长的t
ul
序列;首先对t
tr
和t
ul
排序,令t
ul
为零,找到最大然后再寻找满足约束条件下最长的t
ul
序列,变量l
max
记录序列最长长度;下一次循环时,减小t
tr
,继续上述操作,直至剩余客户端数量小于此时的l
max
;记录最终的s序列,得到参与本轮训练的客户端。
[0031]
进一步地,所述步骤二还包括以下方法:
[0032]
步骤m1:确定固定指标,合理设置每轮训练时间上限tr,根据历史数据确定客户端预选择的时间t
cs
、参数聚合时间t
sg
、服务器将参数分发给各个客户端所花费的时间
[0033]
步骤m2:变量预处理,从步骤一获取各个客户端的传输时间和计算时间分别保存到序列和中,对序列逆序排序,对序列顺序排序;
[0034]
步骤m3:获取参与训练的客户端序列,令t
ul
为零,找到满足条件的最大作为本轮的t
tr
,然后寻找满足约束条件下最长的t
ul
序列,变量l
max
记录序列最长长度;下一次循环时,减小t
tr
,继续上述操作,直至剩余客户端数量小于此时的l
max
或为零,记录最终的s序列,得到参与本轮训练的客户端。
[0035]
进一步地,所述步骤三还包括以下方法:
[0036]
步骤n1:初始化,各个参与本轮训练的客户端获得从服务器中得到的模型初始权重文件,并对本地模型进行初始化;
[0037]
步骤n2:训练,各个客户端使用本地产品表面图片按设定的轮次训练本地模型;
[0038]
步骤n3:参数上传,各个客户端将训练后得到的模型参数上传到服务器。
[0039]
进一步地,所述步骤四还包括以下方法:
[0040]
步骤t1:测试模型训练,在服务器中使用正常清晰图片训练出具有一定判断能力的测试模型,该模型与联邦学习最终得到的分类模型相比准确率较低,主要用于测试本地图片质量。将该模型分发给各个客户端;
[0041]
步骤t2:计算图像质量权重,各个客户端将本地图片打乱并随机抽取一定数量的图片,并使用这部分图片测试从服务器接收到的测试模型的准确率,将其记为acck,使用公式计算图像质量权重qk;
[0042]
步骤t3:参数聚合,服务器接收到各个客户端的本地训练参数后,使用公式进行参数聚合
[0043]
其中,qk表示图像质量权重,acck表示各个客户端使用抽检样本测试出的模型准确率,因为准确率最低为0.5左右,所以需要减去这个基数并取绝对值;nk表示该客户端持有
的图片数量,n表示该所有客户端持有图片数量总和,wk表示各个客户端使用本地图片训练得到的模型参数。
[0044]
进一步地,所述步骤五具体为循环进行步骤二三四,直至服务器上的模型达到收敛状态,对模型的准确率进行测试,若结果正常,那么将模型发送给各个客户端。
[0045]
进一步地,所述步骤五各客户端将使用本地训练的目标检测模型和联邦学习训练的图像分类模型一起进行产品表面的缺陷检测。
[0046]
进一步地,所述步骤五客户端缺陷检测方法是首先拍摄产品表面图片;然后使用目标检测模型得到图片中的待检区域,去除无关背景;再使用图像分类模型对待检区域进行判断,并得到最后的检测结果。
[0047]
进一步地,所述步骤n2中,使用联邦学习训练模型的具体过程主要可以分为以下几步:第一步,建立连接,服务器会与各个客户端进行通信状况测试,选择在线可用的节点参与该轮的训练;第二步,初始化,服务器初始化模型,并将初始模型参数发送给各个参与训练的客户端节点;第三步,本地训练,客户端收到初始模型参数后,使用本地样本训练模型,并将该阶段得到的参数发送给服务器;第四步,参数聚合,服务器得到各个参与该轮训练的客户端节点的模型参数,使用聚合算法对参数进行聚合,并对总模型进行更新;最后将总模型参数分发给各个客户端节点;循环执行以上步骤,直至总模型达到预设状态,退出循环完成训练。
[0048]
本发明具有如下技术效果:
[0049]
1.采集表面缺陷图片周期更短,并且不会泄露各训练参与者的本地数据;
[0050]
2.降低了暂时的通信状况不佳对整体训练速度的影响;
[0051]
3.降低了持有低质量图片的训练参与者对整体模型性能的影响。
[0052]
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
[0053]
图1是本发明的一个较佳实施例的基于联邦学习的表面缺陷检测模型训练过程;
[0054]
图2是本发明的一个较佳实施例的联邦学习的运行过程。
具体实施方式
[0055]
以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。
[0056]
在附图中,结构相同的部件以相同数字标号表示,各处结构或功能相似的组件以相似数字标号表示。附图所示的每一组件的尺寸和厚度是任意示出的,本发明并没有限定每个组件的尺寸和厚度。为了使图示更清晰,附图中有些地方适当夸大了部件的厚度。
[0057]
为了解决缺少缺陷样本的问题,最好的方法依然是采集足够多的缺陷图片。考虑到工业产品本身并不是一个孤立的物品,可以借助同类近似产品的表面缺陷图片,联合训练出一个缺陷检测模型。这样既能缩短缺陷图片采集时间,又能训练出合格的缺陷检测模型。然而这里又存在原始数据保密性的问题,因此可以引入联邦学习的方法。联邦学习是一
种加密的分布式机器学习方法,它的网络拓扑结构是一个中心服务器连接多个客户端,服务器负责协调所有客户端进行训练。相较于普通的分布式机器学习,联邦学习各个客户端持有的数据并不直接上传给服务器,而是只将本地训练的模型参数共享给服务器,确保了各厂商本地数据的安全。如果将其映射到现实场景中,那么中心服务器可以认为是一个用于协调训练的云端设备,而客户端可以认为是各个生产厂商中持有缺陷图片并具备一定算力的边缘设备。为了统一称谓,下文中将分别以服务器和客户端代指这两者。
[0058]
为了不失一般性,可以将表面缺陷检测算法分为用于判断产品位置的目标检测模型和用于判断是否存在缺陷的图像分类模型。在实际使用时可以分两阶段进行,在第一阶段使用目标检测模型判断产品的位置,提取目标区域,在第二阶段使用图像分类模型判断目标区域是否包含缺陷。从训练的角度看,因为第一阶段的目标检测模型只需提取产品位置,所以正常图片和带有缺陷的图片都可以用于训练,对缺陷图片的需求量并不高。而第二阶段的图像分类模型需要判断是否存在缺陷,因此需要大量的缺陷图片进行训练。那么,在实际场景中,各个客户端首先在本地各自完成目标检测模型的训练,再选择使用联邦学习在保证保密性的情况下联合多个客户端的缺陷图片训练图像分类模型。最后,各个客户端获取完成训练的图像分类模型,再与之前本地训练的目标检测模型进行组合,得到适用于各自产品的表面缺陷检测模型。上述步骤如附图1所示。
[0059]
使用联邦学习训练模型的具体过程主要可以分为以下几步:第一步,建立连接。服务器会与各个客户端进行通信状况测试,选择在线可用的节点参与该轮的训练。第二步,初始化。服务器初始化模型,并将初始模型参数发送给各个参与训练的客户端节点。第三步,本地训练。客户端收到初始模型参数后,使用本地样本训练模型,并将该阶段得到的参数发送给服务器。第四步,参数聚合。服务器得到各个参与该轮训练的客户端节点的模型参数,使用聚合算法对参数进行聚合,并对总模型进行更新。最后将总模型参数分发给各个客户端节点。循环执行以上步骤,直至总模型达到预设状态,退出循环完成训练。上述步骤如附图2所示。
[0060]
上述联邦学习过程是针对所有网络模型训练的一般流程,但是在表面缺陷检测场景中,使用联邦学习训练模型会碰到一些独特的问题,下面将一一进行优化。本项专利主要通过如下两种方法对联邦学习训练缺陷检测模型的过程进行优化。首先,考虑到客户端代表的多个工厂可能分隔多地,通信状况并不稳定,部分客户端在某些时刻可能会因此在传输参数过程中花费较多时间,影响所有节点整体的总训练时间。因此提出了一种客户端预选择算法来预先根据当前通信状况和训练时间对参与训练的节点进行选择。其次,考虑到每个节点拥有的图像质量不同,低质量图片训练出的模型参数会拉低整体模型质量,应该在参数聚合时赋予较低的权重,因此提出了基于图像质量权重的参数聚合算法。
[0061]
客户端预选择算法在每轮通信开始之前进行。首先,服务器会判断客户端当前是否支持通信并能保证一定时间的稳定通信;然后,客户端需要将当前的通信带宽,训练用时,资源大小,以及相关历史数据等参数告知中心服务器,中心服务器会在计算后排除那些虽然可通信但是通信时间过长的客户端,这样做能让尽可能多的客户端在限定的通信时间完成一轮训练,减少总训练时间。
[0062]
假设c={c1,,,ck}表示参与联邦学习的k个客户端,s={k1,,,k
|s|
},ki∈c表示经过客户端预选择算法筛选后参与下一轮训练的客户端,tr为每轮训练的时间上限,tf为总训
练时间上限,t
cs
为客户端预选择的时间,t
ag
为参数聚合的时间。表示服务器将参数分发给各个客户端所花费的时间,这与各个信道的通信带宽有关。和分别表示将第k个客户端训练本地模型和上传模型参数花费的时间。上述参数均在客户端预选择阶段时由各个客户端发给服务器,因为这些数据量相对模型参数和带宽来说非常小,因此传输时间可以忽略不计。
[0063]
客户端预选择算法的目标函数为max|s|,即在设定的单轮训练时间内选择让尽可能多的客户端参与训练。客户端的本地模型训练是并行的,因此取被选择客户端中训练时间最大的即可,上传参数需要每个客户端分别与服务器建立连接,因此这个过程是串行的。每一轮客户端训练和通信的总时间θ可以如下表示:
[0064]
θ=t
tr
+t
ul
ꢀꢀ
(1)
[0065][0066][0067]
综上所述,最终的优化问题可以汇总为:
[0068]
max|s|
ꢀꢀ
(4)
[0069][0070]
经过分析可以发现,这个问题的优化目标和约束类似于背包问题,因此本文基于贪心算法的思想来求解。因为变量有训练时间t
tr
和上传时间两个t
ul
,而t
tr
是取所有中的最大值,因此可以先固定t
tr
再找到最长的t
ul
序列。首先对t
tr
和t
ul
排序,令t
ul
为零,找到最大然后再寻找满足约束条件下最长的t
ul
序列,变量l
max
记录序列最长长度。下一次循环时,减小t
tr
,继续上述操作,直至剩余客户端数量小于此时的l
max
。记录最终的s序列,得到参与本轮训练的客户端。
[0071]
基于图像质量权重的参数聚合算法是对服务器收到各客户端模型参数后进行的“参数聚合”环节进行优化。常用的参数聚合算法主要根据各客户端持有的图片数量对本地模型参数进行调整,持有图片数量多的客户端将在聚合时拥有更高权重。在表面缺陷检测场景中,根据经验可知,影响模型性能的因素不仅包括训练图片的数量,还包括训练图片的质量。更多的训练图片能让模型在训练时学习到更多的知识,提高模型的泛化性,而更高的图像质量能让模型学到的知识更加精练。在本项专利中,图片质量代指图像的清晰程度,因为在表面缺陷检测场景中,摄像头是定焦自动拍摄图片的,因此经常会因为失焦而导致图片模糊。对于缺陷检测来说,如果训练图片中的缺陷清晰可见易于辨认,那么模型从中学习到的关键特征必然会比那些模糊的缺陷图片要多。因此,在参数聚合时,应该给予持有更多清晰图片的客户端更高权重,因为它们训练出的本地模型性能更优。
[0072]
本文使用待检图片测试已知模型准确率并反向推导清晰图片比例的方法获取各个客户端的图像质量权重。首先,服务器持有一定数量的测试图像,先用这批清晰的测试图像训练出一个初步模型,这个模型虽然和联邦学习最终得到的模型无法相比,但也具备一定的检测能力。在联邦学习正式开始前,将这个模型发送给各个客户端,打乱训练图像后随机抽取一部分图像测试这个模型的准确率。通过反向分析可知,在模型确定的情况下,测试
图像中模糊图片的占比越高,测试出的模型准确率越低,以此可以推断该客户端持有模糊图片数量的比例。在之后的聚合过程中,以该参数作为图像质量的参考因子,并修改相应的参数聚合权重,给清晰图片占比高的节点赋予更大的聚合权重。其计算过程如下所示:
[0073][0074][0075]
其中,qk表示图像质量权重,acck表示各个客户端使用抽检样本测试出的模型准确率,因为准确率最低为0.5左右,所以需要减去这个基数并取绝对值。nk表示该客户端持有的图片数量,n表示该所有客户端持有图片数量总和,wk表示各个客户端使用本地图片训练得到的模型参数。因为各个节点持有的图像在单次训练时不会改变,所以在联邦学习开始前就可以确定每个节点的图像质量权重。那么对各个节点图像质量的检测在训练开始前就可以完成,并在服务器内部进行汇总,这也保证了前置的图像质量检测不会影响正式训练。
[0076]
本专利所设计的基于联邦学习的表面缺陷检测方法主要分为以下几个步骤:
[0077]
步骤一:客户端本地数据处理,该步骤主要可以分为以下几步:
[0078]
s1:本地数据采集
[0079]
各个客户端采集产品表面图片,将图片格式和大小进行统一。按照“正常”和“缺陷”对图片进行归类,并保存至存储介质中。
[0080]
s2:训练目标检测模型
[0081]
使用软件标注产品表面图片中产品的位置,并生成标注文件。标注文件中应含有产品位置的坐标信息。选取合适的目标检测网络如yolov4,下载网络的模型文件以及初始权重文件。各个客户端使用各自持有的图片和对应的标注文件训练目标检测网络,并保存最终的模型。
[0082]
s3:通信测试
[0083]
服务器向各个客户端发送信号,收到的客户端向服务器发送信号以示在线,服务器根据客户端的回复信号判断有多少可以正常工作的客户端能参与训练。
[0084]
s4:预估重要指标
[0085]
各个客户端根据历史传输时间和训练时间,并结合当前的通信条件和算力条件,计算出本轮预估的传输时间和计算时间
[0086]
步骤二:客户端预选择算法,该步骤主要可以分为以下几步:
[0087]
s1:确定固定指标
[0088]
合理设置每轮训练时间上限tr,根据历史数据确定客户端预选择的时间t
cs
、参数聚合时间t
ag
、服务器将参数分发给各个客户端所花费的时间
[0089]
s2:变量预处理
[0090]
从步骤一获取各个客户端的传输时间和计算时间分别保存到序列和中。对序列逆序排序,对序列顺序排序。
[0091]
s3:获取参与训练的客户端序列
[0092]
令t
ul
为零,找到满足条件的最大作为本轮的t
tr
,然后寻找满足约束条件下最长的t
ul
序列,变量l
max
记录序列最长长度。下一次循环时,减小t
tr
,继续上述操作,直至剩余客户端数量小于此时的l
max
或为零。记录最终的s序列,得到参与本轮训练的客户端。
[0093]
步骤三:客户端本地训练,该步骤主要可以分为以下几步:
[0094]
s1:初始化
[0095]
各个参与本轮训练的客户端获得从服务器中得到的模型初始权重文件,并对本地模型进行初始化。
[0096]
s2:训练
[0097]
各个客户端使用本地产品表面图片按设定的轮次训练本地模型。
[0098]
s3:参数上传
[0099]
各个客户端将训练后得到的模型参数上传到服务器。
[0100]
步骤四:基于图像质量权重的参数聚合算法,该步骤主要可以分为以下几步:
[0101]
s1:测试模型训练
[0102]
在服务器中使用正常清晰图片训练出具有一定判断能力的测试模型,该模型与联邦学习最终得到的分类模型相比准确率较低,主要用于测试本地图片质量。将该模型分发给各个客户端。
[0103]
s2:计算图像质量权重
[0104]
各个客户端将本地图片打乱并随机抽取一定数量的图片,并使用这部分图片测试从服务器接收到的测试模型的准确率,将其记为acck。使用公式(5)计算图像质量权重qk。
[0105]
s3:参数聚合
[0106]
服务器接收到各个客户端的本地训练参数后,使用公式(6)进行参数聚合。
[0107]
步骤五:模型组合
[0108]
循环进行步骤二三四,直至服务器上的模型达到收敛状态。对模型的准确率进行测试,若结果正常,那么将模型发送给各个客户端。各客户端将使用本地训练的目标检测模型和联邦学习训练的图像分类模型一起进行产品表面的缺陷检测。首先拍摄产品表面图片,然后使用目标检测模型得到图片中的待检区域,去除无关背景。再使用图像分类模型对待检区域进行判断,并得到最后的检测结果。
[0109]
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1