一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

缺陷检测模型训练方法、装置、设备及存储介质与流程

2021-10-24 12:31:00 来源:中国专利 TAG:人工智能 缺陷 装置 模型 检测


1.本发明涉及人工智能技术领域,尤其涉及一种缺陷检测模型训练方法、装置、设备及存储介质。


背景技术:

2.目前,基于深度学习的缺陷检测已经应用于金属固件、布匹丝织物、建筑裂纹、钢筋裂纹等多个领域,并取得了不错的成果。为了使得模型收敛且达到较好的泛化效果,基于深度学习的缺陷检测模型训练需要的数据量非常大,使得在多轮训练时数据读取成为非常耗时的部分。并且为使得深度网络表达的特征更丰富,在设计时会使得网络结构越深、越复杂。较大的训练数据量和模型结构对设备计算力和内存要求较高,反之,设备的计算力和内存的限制会导致训练得到的缺陷检测模型的模型精度不高。


技术实现要素:

3.本发明的主要目的在于提供一种缺陷检测模型训练方法、装置、设备及存储介质,旨在解决设备的计算力和内存的限制会导致训练得到的缺陷检测模型的模型精度不高的技术问题。
4.为实现上述目的,本发明提供一种缺陷检测模型训练方法,所述方法应用于分布式集群中的各计算节点,各所述计算节点部署有相同的待训练缺陷检测模型,所述方法包括以下步骤:从所述分布式集群中的分布式文件系统获取本次本地训练所需的本机训练图片,以及从所述分布式集群中的服务节点获取本次本地训练所需的所述待训练缺陷检测模型的基准模型参数;将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数后,采用所述本机训练图片对本机的所述待训练缺陷检测模型进行至少一轮本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值;将所述本机梯度值发送给所述服务节点,以供所述服务节点在接收到各所述计算节点发送的梯度值后进行平均得到总梯度值,并采用所述总梯度值更新所述基准模型参数,将更新后的基准模型参数分发给各所述计算节点以供各所述计算节点采用更新后的基准模型参数作为下次本地训练所需的基准模型参数;在各次本地训练过程中,当检测到本机的所述待训练缺陷检测模型收敛时,将收敛后的待训练缺陷检测模型作为目标缺陷检测模型,以基于所述目标缺陷检测模型进行图片缺陷检测。
5.可选地,所述将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数后,采用所述本机训练图片对本机的所述待训练缺陷检测模型进行至少一轮本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值的步骤包括:将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数后,检测
本机的所述待训练缺陷检测模型是否进入预收敛状态;若确定本机的所述待训练缺陷检测模型已进入所述预收敛状态,则在上一次本地训练时本地迭代训练的轮数基础上加上第一预设轮数,得到目标轮数,其中,第一次本地训练时本地迭代训练的轮数设置为1;采用所述本机训练图片对本机的所述待训练缺陷检测模型进行所述目标轮数的本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值。
6.可选地,所述检测本机的所述待训练缺陷检测模型是否进入预收敛状态的步骤包括:检测本机的所述待训练缺陷检测模型在最近第二预设轮数的历史本地迭代训练中的梯度变化值是否均小于预设值,其中,所述梯度变化值是指当轮本地迭代训练时计算得到的梯度值相比于上一轮本地迭代训练时计算得到的梯度值的变化值;若均小于所述预设值,则确定本机的所述待训练缺陷检测模型已进入预收敛状态;若不是均小于所述预设值,则确定本机的所述待训练缺陷检测模型未进入所述预收敛状态。
7.可选地,所述将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数后,采用所述本机训练图片对本机的所述待训练缺陷检测模型进行至少一轮本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值的步骤之后,还包括:获取当前本机的通信带宽,根据所述通信带宽和所述本机梯度值的数据量大小计算得到本次本地训练梯度回传服务节点的预计通信时长;获取预先记录的本机单次本地训练的训练时长,并计算所述预计通信时长相对于所述训练时长的时长比例;若所述时长比例大于第一预设比例,则丢弃所述本机梯度值;若所述时长比例不大于所述第一预设比例,则执行所述将所述本机梯度值发送给所述服务节点的步骤。
8.可选地,所述将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数后,采用所述本机训练图片对本机的所述待训练缺陷检测模型进行至少一轮本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值的步骤包括:将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数;将所述本机训练图片输入本机的所述待训练缺陷检测模型的特征提取层进行特征提取得到特征图;将所述特征图输入本机的所述待训练缺陷检测模型的ssd检测器得到所述本机训练图片中缺陷区域的缺陷分类得分和缺陷位置坐标;根据所述缺陷分类得分和所述缺陷位置坐标计算得到所述待训练缺陷检测模型的损失函数相对于本机的所述待训练缺陷检测模型中当前模型参数的当前梯度值,以完成本次本地训练的一轮本地迭代训练;检测本次本地训练已进行的本地迭代训练的轮数是否达到第三预设轮数;若达到,则将所述当前梯度值作为本机梯度值;
若未达到,则根据所述当前梯度值更新本机的所述待训练缺陷检测模型中的模型参数,再返回执行所述将所述本机训练图片输入本机的所述待训练缺陷检测模型的特征提取层进行特征提取得到特征图的步骤。
9.可选地,所述从所述分布式集群中的分布式文件系统获取本次本地训练所需的本机训练图片的步骤包括:从所述分布式集群中的分布式文件系统获取本次本地训练所需的本机训练图片,其中,所述分布式文件系统从总训练图片集中选取本次本地训练中各所述计算节点分别对应的单机训练图片集,将各所述单机训练图片集对应分发给各所述计算节点,两两所述计算节点对应的所述单机训练图片集之间存在交集且交并比不小于第二预设比例。
10.可选地,所述在各次本地训练过程中,当检测到本机的所述待训练缺陷检测模型收敛时,将收敛后的待训练缺陷检测模型作为目标缺陷检测模型的步骤之后,还包括:获取待检测缺陷的目标图片;将所述目标图片输入所述目标缺陷检测模型进行缺陷检测,得到所述目标图片中的缺陷类别和缺陷位置;对所述目标图片中的所述缺陷位置进行标记后,将所述目标图片和所述缺陷类别进行输出展示。
11.为实现上述目的,本发明还提供一种缺陷检测模型训练装置,所述装置部署于分布式集群中的各计算节点,各所述计算节点部署有相同的待训练缺陷检测模型,所述装置包括:获取模块,用于从所述分布式集群中的分布式文件系统获取本次本地训练所需的本机训练图片,以及从所述分布式集群中的服务节点获取本次本地训练所需的所述待训练缺陷检测模型的基准模型参数;训练模块,用于将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数后,采用所述本机训练图片对本机的所述待训练缺陷检测模型进行至少一轮本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值;发送模块,用于将所述本机梯度值发送给所述服务节点,以供所述服务节点在接收到各所述计算节点发送的梯度值后进行平均得到总梯度值,并采用所述总梯度值更新所述基准模型参数,将更新后的基准模型参数分发给各所述计算节点以供各所述计算节点采用更新后的基准模型参数作为下次本地训练所需的基准模型参数;确定模块,用于在各次本地训练过程中,当检测到本机的所述待训练缺陷检测模型收敛时,将收敛后的待训练缺陷检测模型作为目标缺陷检测模型,以基于所述目标缺陷检测模型进行图片缺陷检测。
12.为实现上述目的,本发明还提供一种缺陷检测模型训练设备,所述缺陷检测模型训练设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的缺陷检测模型训练程序,所述缺陷检测模型训练程序被所述处理器执行时实现如上所述的缺陷检测模型训练方法的步骤。
13.此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有缺陷检测模型训练程序,所述缺陷检测模型训练程序被处理器执行时实现如上所述的缺陷检测模型训练方法的步骤。
14.本发明中,通过将待训练缺陷检测模型部署于分布式集群的各个计算节点,由各计算节点从分布式集群中的分布式文件系统获取本次本地训练所需的本机训练图片,以及从分布式集群中的服务节点获取本次本地训练所需的待训练缺陷检测模型的基准模型参数;将本机的待训练缺陷检测模型的模型参数配置为基准模型参数后,采用本机训练图片对本机的待训练缺陷检测模型进行至少一轮本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值;将本机梯度值发送给服务节点,以供服务节点在接收到各计算节点发送的梯度值后进行平均得到总梯度值,并采用梯度值更新所述基准模型参数,将更新后的基准模型参数分发给各所述计算节点以供各所述计算节点采用更新后的基准模型参数作为下次本地训练所需的基准模型参数;在各次本地训练过程中,当检测到本机的待训练缺陷检测模型收敛时,将收敛后的待训练缺陷检测模型作为目标缺陷检测模型,以基于目标缺陷检测模型进行图片缺陷检测。本发明通过各个计算节点在完成本地训练后将本机梯度值发送给服务节点进行汇总的方式,实现各个计算节点共同进行缺陷检测模型训练,实现了在单机有限计算能力和内存限制的情况下,将缺陷检测模型的训练任务扩展到多机进行,从而可以采用更多的训练图片来进行训练,增加训练数据的数据量,从而提高了训练得到的缺陷检测模型的模型精度。
附图说明
15.图1为本发明实施例方案涉及的硬件运行环境的结构示意图;图2为本发明缺陷检测模型训练方法第一实施例的流程示意图;图3为本发明缺陷检测模型训练装置较佳实施例的功能模块示意图。
16.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
17.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
18.如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
19.需要说明的是,本发明实施例缺陷检测模型训练设备是分布式集群中的计算节点,可以是智能手机、个人计算机和服务器等设备,在此不做具体限制。分布式集群中的各计算节点部署有相同的待训练缺陷检测模型。
20.如图1所示,该缺陷检测模型训练设备可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi

fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non

volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
21.本领域技术人员可以理解,图1中示出的设备结构并不构成对缺陷检测模型训练设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
22.如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通
信模块、用户接口模块以及缺陷检测模型训练程序。操作系统是管理和控制设备硬件和软件资源的程序,支持缺陷检测模型训练程序以及其它软件或程序的运行。在图1所示的设备中,用户接口1003主要用于与客户端进行数据通信;网络接口1004主要用于与服务器建立通信连接;而处理器1001可以用于调用存储器1005中存储的缺陷检测模型训练程序,并执行以下操作:从所述分布式集群中的分布式文件系统获取本次本地训练所需的本机训练图片,以及从所述分布式集群中的服务节点获取本次本地训练所需的所述待训练缺陷检测模型的基准模型参数;将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数后,采用所述本机训练图片对本机的所述待训练缺陷检测模型进行至少一轮本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值;将所述本机梯度值发送给所述服务节点,以供所述服务节点在接收到各所述计算节点发送的梯度值后进行平均得到总梯度值,并采用所述总梯度值更新所述基准模型参数,将更新后的基准模型参数分发给各所述计算节点以供各所述计算节点采用更新后的基准模型参数作为下次本地训练所需的基准模型参数;在各次本地训练过程中,当检测到本机的所述待训练缺陷检测模型收敛时,将收敛后的待训练缺陷检测模型作为目标缺陷检测模型,以基于所述目标缺陷检测模型进行图片缺陷检测。
23.进一步地,所述将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数后,采用所述本机训练图片对本机的所述待训练缺陷检测模型进行至少一轮本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值包括:将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数后,检测本机的所述待训练缺陷检测模型是否进入预收敛状态;若确定本机的所述待训练缺陷检测模型已进入所述预收敛状态,则在上一次本地训练时本地迭代训练的轮数基础上加上第一预设轮数,得到目标轮数,其中,第一次本地训练时本地迭代训练的轮数设置为1;采用所述本机训练图片对本机的所述待训练缺陷检测模型进行所述目标轮数的本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值。
24.进一步地,所述检测本机的所述待训练缺陷检测模型是否进入预收敛状态包括:检测本机的所述待训练缺陷检测模型在最近第二预设轮数的历史本地迭代训练中的梯度变化值是否均小于预设值,其中,所述梯度变化值是指当轮本地迭代训练时计算得到的梯度值相比于上一轮本地迭代训练时计算得到的梯度值的变化值;若均小于所述预设值,则确定本机的所述待训练缺陷检测模型已进入预收敛状态;若不是均小于所述预设值,则确定本机的所述待训练缺陷检测模型未进入所述预收敛状态。
25.进一步地,所述将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数后,采用所述本机训练图片对本机的所述待训练缺陷检测模型进行至少一轮本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值之后,处理器
1001还可以用于调用存储器1005中存储的缺陷检测模型训练程序,执行以下操作:获取当前本机的通信带宽,根据所述通信带宽和所述本机梯度值的数据量大小计算得到本次本地训练梯度回传服务节点的预计通信时长;获取预先记录的本机单次本地训练的训练时长,并计算所述预计通信时长相对于所述训练时长的时长比例;若所述时长比例大于第一预设比例,则丢弃所述本机梯度值;若所述时长比例不大于所述第一预设比例,则执行所述将所述本机梯度值发送给所述服务节点的步骤。
26.进一步地,所述将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数后,采用所述本机训练图片对本机的所述待训练缺陷检测模型进行至少一轮本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值包括:将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数;将所述本机训练图片输入本机的所述待训练缺陷检测模型的特征提取层进行特征提取得到特征图;将所述特征图输入本机的所述待训练缺陷检测模型的ssd检测器得到所述本机训练图片中缺陷区域的缺陷分类得分和缺陷位置坐标;根据所述缺陷分类得分和所述缺陷位置坐标计算得到所述待训练缺陷检测模型的损失函数相对于本机的所述待训练缺陷检测模型中当前模型参数的当前梯度值,以完成本次本地训练的一轮本地迭代训练;检测本次本地训练已进行的本地迭代训练的轮数是否达到第三预设轮数;若达到,则将所述当前梯度值作为本机梯度值;若未达到,则根据所述当前梯度值更新本机的所述待训练缺陷检测模型中的模型参数,再返回执行所述将所述本机训练图片输入本机的所述待训练缺陷检测模型的特征提取层进行特征提取得到特征图的步骤。
27.进一步地,所述从所述分布式集群中的分布式文件系统获取本次本地训练所需的本机训练图片包括:从所述分布式集群中的分布式文件系统获取本次本地训练所需的本机训练图片,其中,所述分布式文件系统从总训练图片集中选取本次本地训练中各所述计算节点分别对应的单机训练图片集,将各所述单机训练图片集对应分发给各所述计算节点,两两所述计算节点对应的所述单机训练图片集之间存在交集且交并比不小于第二预设比例。
28.进一步地,所述在各次本地训练过程中,当检测到本机的所述待训练缺陷检测模型收敛时,将收敛后的待训练缺陷检测模型作为目标缺陷检测模型之后,处理器1001还可以用于调用存储器1005中存储的缺陷检测模型训练程序,执行以下操作:获取待检测缺陷的目标图片;将所述目标图片输入所述目标缺陷检测模型进行缺陷检测,得到所述目标图片中的缺陷类别和缺陷位置;对所述目标图片中的所述缺陷位置进行标记后,将所述目标图片和所述缺陷类别进行输出展示。
29.基于上述的结构,提出缺陷检测模型训练方法的各个实施例。
30.参照图2,图2为本发明缺陷检测模型训练方法第一实施例的流程示意图。
31.本发明实施例提供了缺陷检测模型训练方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。在本实施例中,缺陷检测模型训练方法应用于分布式集群中的各计算节点,各计算节点部署有相同的待训练缺陷检测模型。在本实施例中,所述缺陷检测模型训练方法包括:步骤s10,从所述分布式集群中的分布式文件系统获取本次本地训练所需的本机训练图片,以及从所述分布式集群中的服务节点获取本次本地训练所需的所述待训练缺陷检测模型的基准模型参数;在本实施例中,待训练缺陷检测模型是可以采用常用的缺陷检测模型,在本实施例中不做限制,待训练缺陷检测模型中的模型参数根据经验或随机初始化,训练过程中需要对模型参数进行多轮迭代更新,直到待训练缺陷模型收敛时,停止训练,得到训练完成的目标缺陷检测模型。
32.分布式集群中包括多个计算节点,和至少一个服务节点以及至少一个分布式文件系统。为解决单机设备训练缺陷检测模型受计算能力和内存限制的问题,在本实施例中,将待训练缺陷检测模型预先部署至各个计算节点,也即,各个计算节点中部署有相同的待训练缺陷检测模型,由各个计算节点一起来训练待训练缺陷检测模型。
33.将训练过程分为多次本地训练,一次本地训练由各个计算节点分别在各自本地对待训练缺陷检测模型进行训练,每完成一次本地训练后,各个计算节点将训练结果在服务节点进行一次汇总,作为下一次本地训练的基础。由于各个计算节点在本地训练时执行的操作相同,以下以一个计算节点为例进行具体实施方式的阐述。
34.具体地,在一次本地训练开始后,计算节点从分布式文件系统获取本次本地训练所需的本机训练图片。需要说明的是,分布式文件系统中存放有总训练图片集,总训练图片集中包括多张训练图片,训练图片中有存在缺陷的产品图片和不存在缺陷的产品图片,构成正例和反例训练图片;计算节点每次本地训练需要一批训练图片,计算节点从分布式文件系统获取的用于本次本地训练的一批训练图片就称为本机训练图片。在具体实施方式中,在一次本地训练中,两两计算节点所获取的本机训练图片之间可以完全不同,也可以部分不同(也即允许有交集);由于各个计算节点采用不同的训练图片来训练待训练缺陷检测模型,在一次本地训练中,待训练缺陷检测模型的训练图片数据量相当于是各个计算节点的本机训练图片的总和,训练图片数据量大大增加,但对于单个计算节点而言训练图片数据量又在单机计算能力和内存的可承受范围内。一个计算节点在各次本地训练时获取的本机训练图片之间可以完全不同,也可以部分不同。
35.进一步地,在一实施方式中,分布式文件系统从总训练图片集中选取本次本地训练中各计算节点分别对应的单机训练图片集,将各单机训练图片集对应分发给各计算节点。也即,在一次本地训练开始时,分布式文件系统针对每个计算节点,选取该计算节点在本次本地训练中所需用到的训练图片集,也即单机训练图片集,并发送给该计算节点,对于该计算节点而言,即从分布式文件系统获取本次本地训练所需的本机训练图片。其中,分布式文件系统选取的各个计算节点的单机训练图片集满足一个条件,即两两计算节点对应的单机训练图片集之间存在交集且交并比不小于第二预设比例。第二预设比例预先根据需要进行设置,例如设置为20%。限定两两单机训练图片之间需要存在交集且交并比需要不小于
一个比例,目的是使得各个计算节点在一次本地训练时所采用的训练图片集之间都有相同的训练图片,从而避免因各个计算节点之间的训练数据差异过大导致梯度下降方向偏差过大进而导致模型难以收敛的情况,保证了待训练缺陷检测模型的训练成功率。
36.在一次本地训练开始后,计算节点从服务节点获取本次本地训练所需的待训练缺陷检测模型的基准模型参数。基准模型参数是指本次本地训练以该基准模型参数为基础进行训练。需要说明的是,第一次本地训练时,服务节点可以将初始化的模型参数作为第一次本地训练的基准模型参数分发给各个计算节点。
37.步骤s20,将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数后,采用所述本机训练图片对本机的所述待训练缺陷检测模型进行至少一轮本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值;计算节点在获取到本次本地训练所需的本机训练图片和基准模型参数后,将本机的待训练缺陷模型的模型参数配置为该基准模型参数。需要说明的是,后面提到的待训练缺陷检测模型即配置了基准模型参数之后的待训练缺陷检测模型。
38.计算节点采用本机训练图片对本机的待训练缺陷检测模型进行至少一轮本地迭代训练。需要说明的是,一次本地训练过程中,计算节点可以在本地进行至少一轮的本地迭代训练,具体的轮数可以根据预先设置,每次本地训练时本地迭代训练的轮数可以相同也可以不同,不同计算节点的本地迭代训练的轮数可以相同也可以不同。需要说明的是,在具体实施方式中,当本地迭代训练的轮数设置得较少时,计算节点与服务节点之间的交互比较频繁,可以避免计算节点在本地训练过程中梯度跑偏,保证模型能够收敛,但是因为交互频繁,增加了计算节点和服务节点的通信成本;当本地迭代训练的轮数设置为较多时,可以降低计算节点和服务节点的通信成本,但轮数越多,可能会导致梯度跑偏,模型无法收敛;通过合理设置本地迭代训练的轮数,可以避免梯度跑偏,保证模型能够收敛,同时降低一定的通信成本,例如,可以设置为一次本地训练中进行10轮本地迭代训练。
39.一轮本地迭代训练的过程可以是计算节点将本机训练图片输入本机的待训练缺陷检测模型,得到缺陷检测结果,根据缺陷检测结果计算得到待训练缺陷检测模型的损失函数相对于待训练缺陷检测模型当前的各个模型参数的梯度值,以完成一轮本地迭代训练;如果不再进行下一轮本地迭代训练,则该梯度值即将被作为本次本地训练得到的本机梯度值;如果还要进行下一轮本地迭代训练,则根据该梯度值对待训练缺陷检测模型当前的模型参数进行更新,基于更新模型参数后的待训练缺陷检测模型进行下一轮本地迭代训练。损失函数可以采用常用的缺陷检测模型的损失函数,在此不做限制。
40.经过至少一轮本地迭代后,计算节点得到本机的待训练缺陷检测模型中各个模型参数的本机梯度值。由于本机进行本地训练得到的梯度值与其他计算节点进行本地训练得到的梯度值是不同的,因此称为将本机计算得到的梯度值称为本机梯度值。
41.步骤s30,将所述本机梯度值发送给所述服务节点,以供所述服务节点在接收到各所述计算节点发送的梯度值后进行平均得到总梯度值,并采用所述总梯度值更新所述基准模型参数,将更新后的基准模型参数分发给各所述计算节点以供各所述计算节点采用更新后的基准模型参数作为下次本地训练所需的基准模型参数;计算节点在完成本次本地训练后,将本次本地训练得到的本机梯度值发送给服务节点。服务节点接收各个计算节点发送的本次本地训练得到的梯度值,将各个计算节点发
送的梯度值进行平均,得到总梯度值。需要说明的是,待训练缺陷检测模型的模型参数一般有多个,一个模型参数对应一个梯度值,那么多个计算节点发送给服务节点的梯度值就包括与每个模型参数分别对应的多个梯度值;服务节点将每个模型参数对应的多个梯度值进行平均,得到每个模型参数分别对应的一个总梯度值。
42.服务节点在计算得到总梯度值后,采用总梯度值更新基准模型参数,再将更新后的基准模型参数分发给各个计算节点,各个计算节点将接收到的更新后的基准模型参数作为下一次本地训练所需的基准模型参数。
43.步骤s40,在各次本地训练过程中,当检测到本机的所述待训练缺陷检测模型收敛时,将收敛后的待训练缺陷检测模型作为目标缺陷检测模型,以基于所述目标缺陷检测模型进行图片缺陷检测。
44.在各次本地训练过程中,计算节点检测本地的待训练缺陷检测模型是否收拢。检测本地的待训练缺陷检测模型是否收敛具体可以是计算节点在每轮本地迭代训练得到梯度值之后,检测梯度值相比于上一轮本地迭代的梯度值的变化量是否小于一个预先设置的值,如果小于则确定收敛,如果不小于则确定未收敛;或者可以是由服务节点在每次本地训练计算得到总梯度值后,检测总梯度值相比于上一次本地训练的总梯度值的变化量是否小于一个预先设置的值,如果小于则确定收敛,如果不小于则确定未收敛,并将是否收敛的结果反馈给计算节点。
45.当计算节点检测到本机的待训练缺陷检测模型收敛时,结束训练,将收敛后的待训练缺陷检测模型作为目标缺陷检测模型。在得到目标缺陷检测模型后,计算节点可以采用目标缺陷检测模型来进行图片缺陷检测,具体地可以拍摄待检测缺陷的物体图片,将图片作为待检测图片输入目标缺陷检测模型进行检测,得到缺陷检测结果,例如得到表示是否存在缺陷的结果。
46.进一步地,在一实施方式中,所述步骤s40之后,还包括:步骤a,获取待检测缺陷的目标图片;步骤b,将所述目标图片输入所述目标缺陷检测模型进行缺陷检测,得到所述目标图片中的缺陷类别和缺陷位置;步骤c,对所述目标图片中的所述缺陷位置进行标记后,将所述目标图片和所述缺陷类别进行输出展示。
47.将需要检测缺陷的图片称为目标图片,在得到目标缺陷检测模型后,计算节点可以获取目标图片,对目标图片进行缺陷检测。具体地,可以将目标图片输入目标缺陷检测模型进行缺陷检测,得到目标图片中的缺陷类别和缺陷位置。其中,缺陷类别是指缺陷属于什么类别的缺陷,例如划痕、裂纹等;用于训练待训练缺陷检测模型的训练图片可以是预先采集的包含不同类别缺陷的图片,以使得训练得到的目标缺陷检测模型能够检测出不同类别的缺陷。缺陷位置是指缺陷区域在图片中的位置,可以通过图片中的坐标范围来表示。需要说明的是,当未检测到缺陷时,缺陷类别和缺陷位置为空;当检测到多个缺陷时,缺陷类别包括每个缺陷的类型,对应地缺陷位置包括每个缺陷的位置。在得到目标图片的缺陷类别和缺陷位置后,将目标图片中的缺陷位置进行标记;标记的方式可以是在图片中缺陷位置处采用带颜色的框来标记,或者是将缺陷位置填充醒目的颜色。将标记缺陷位置后的目标图片和缺陷类别一起输出进行展示;可以将缺陷类别和目标图片单独输出,也可以是将缺
陷类别标记在在目标图片中对应的缺陷位置处,再将带有缺陷位置标记和缺陷类别的目标图片输出。
48.在本实施例中,通过将待训练缺陷检测模型部署于分布式集群的各个计算节点,由各计算节点从分布式集群中的分布式文件系统获取本次本地训练所需的本机训练图片,以及从分布式集群中的服务节点获取本次本地训练所需的待训练缺陷检测模型的基准模型参数;将本机的待训练缺陷检测模型的模型参数配置为基准模型参数后,采用本机训练图片对本机的待训练缺陷检测模型进行至少一轮本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值;将本机梯度值发送给服务节点,以供服务节点在接收到各计算节点发送的梯度值后进行平均得到总梯度值,并采用梯度值更新所述基准模型参数,将更新后的基准模型参数分发给各所述计算节点以供各所述计算节点采用更新后的基准模型参数作为下次本地训练所需的基准模型参数;在各次本地训练过程中,当检测到本机的待训练缺陷检测模型收敛时,将收敛后的待训练缺陷检测模型作为目标缺陷检测模型,以基于目标缺陷检测模型进行图片缺陷检测。本实施例通过各个计算节点在完成本地训练后将本机梯度值发送给服务节点进行汇总的方式,实现各个计算节点共同进行缺陷检测模型训练,实现了在单机有限计算能力和内存限制的情况下,将缺陷检测模型的训练任务扩展到多机进行,从而可以采用更多的训练图片来进行训练,增加训练数据的数据量,从而提高了训练得到的缺陷检测模型的模型精度。
49.进一步地,基于上述第一实施例,提出本发明缺陷检测模型训练方法第二实施例,在本实施例中,所述步骤s20包括:步骤s201,将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数后,检测本机的所述待训练缺陷检测模型是否进入预收敛状态;计算节点在获取到本次本地训练所需的本机训练图片和基准模型参数后,将本机的待训练缺陷模型的模型参数配置为该基准模型参数。需要说明的是,后面提到的待训练缺陷检测模型即配置了基准模型参数之后的待训练缺陷检测模型。
50.在配置了基准模型参数之后,计算节点可以动态确定本次本地训练需要进行的本地迭代训练的轮数。
51.具体地,计算节点可以先检测本机的待训练缺陷检测模型是否进入预收敛状态。其中,预收敛状态是指将要进入收敛状态的一种状态,预先可以设置当满足一定条件时即确定进行入预收敛状态,例如,在一实施方式中,当本地训练的次数达到一定次数时,即可认为进入预收敛状态。
52.步骤s202,若确定本机的所述待训练缺陷检测模型已进入所述预收敛状态,则在上一次本地训练时本地迭代训练的轮数基础上加上第一预设轮数,得到目标轮数,其中,第一次本地训练时本地迭代训练的轮数设置为1;若计算节点确定待训练缺陷检测模型已进入预收敛状态,则在上一次本地训练时本地迭代训练的轮数基础上加上第一预设轮数,得到一个轮数(以下称为目标轮数)。其中,第一预设轮数是预先根据需要设置的一个轮数,例如2,表示在进入预收敛状态后的各次本地训练,本地迭代训练的轮数以等差数列的形式递增。第一次本地训练时本地迭代训练的轮数设置为1,以避免在开始训练时计算节点本地训练的梯度跑偏。
53.进一步地在一实施方式中,可以设置一个上限轮数,当上一次本地训练时本地迭
代训练的轮数大于该上限轮数后即不再进行增加。
54.步骤s203,采用所述本机训练图片对本机的所述待训练缺陷检测模型进行所述目标轮数的本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值。
55.在确定目标轮数后,计算节点采用本机训练图片对本机的待训练缺陷检测模型进行目标轮数的本地迭代训练,得到本机的待训练缺陷检测模型中各个模型参数的本机梯度值。也即,计算节点在每完成一轮本地迭代训练后,检测本次本地训练已完成的本地迭代训练的轮数是否达到目标轮数,如果达到,则将该轮本地迭代训练后的梯度值作为本次本地训练的本机梯度值,如果未达到,则进行下一轮本地迭代训练。
56.若计算节点确定待训练缺陷检测模型未进入预收敛状态,则可以将上一次本地训练时本地迭代训练的轮数作为本次本地训练的本地迭代训练的轮数。
57.进一步地,在一实施方式中,所述步骤s201中检测本机的所述待训练缺陷检测模型是否进入预收敛状态的步骤包括:步骤s2011,检测本机的所述待训练缺陷检测模型在最近第二预设轮数的历史本地迭代训练中的梯度变化值是否均小于预设值,其中,所述梯度变化值是指当轮本地迭代训练时计算得到的梯度值相比于上一轮本地迭代训练时计算得到的梯度值的变化值;步骤s2012,若均小于所述预设值,则确定本机的所述待训练缺陷检测模型已进入预收敛状态;步骤s2013,若不是均小于所述预设值,则确定本机的所述待训练缺陷检测模型未进入所述预收敛状态。
58.计算节点对历轮本地迭代训练中计算得到的梯度值进行记录,并计算当轮本地迭代训练时计算得到的梯度值相比于上一轮本地迭代训练时计算得到的梯度值的变化值,作为当轮本地迭代训练的梯度变化值。计算节点可以检测本机进行的最近第二预设轮数的历史本地迭代训练中的梯度变化值是否都小于预设值。其中,预设值可以根据经验进行设置,例如设置为1.25e

4。需要说明的是,当检测模型是否收敛时是将梯度值与一个值(称为目标值以示区分)进行比较,那么该目标值应当小于该预设值,也即,小于预设值且大于目标值时是预收敛状态,小于目标值后是已收敛的状态。第二预设轮数可以根据需要预先进行设置,例如可以设置为10轮,也即,检测最近10轮本地迭代训练的梯度变化值是否都小于预设值。
59.若最近第二预设轮数的历史本地迭代训练中的梯度变化值都小于预设值,则计算节点确定本机的待训练缺陷检测模型已进入预收敛状态,否则,确定本机的待训练缺陷检测模型未进入预收敛状态。
60.在本实施例中,通过计算节点根据待训练缺陷检测模型的收敛情况动态地调整各次本地训练时进行本地迭代训练的轮数,当进行预收敛状态时,逐渐增加本地迭代训练的轮数,在前期能够保证避免本地训练时梯度跑偏,模型无法收敛的情况发生,在后期模型收敛方向趋于稳定后,能够通过增加本地迭代训练的轮数来降低计算节点与服务节点的通信成本,从而实现在整个训练过程中即能够保证模型有效收敛,有能够实现降低通信成本。
61.进一步地,基于上述第一和/或第二实施例,提出本发明缺陷检测模型训练方法第三实施例,在本实施例中,所述步骤s20之后,还包括:
步骤s50,获取当前本机的通信带宽,根据所述通信带宽和所述本机梯度值的数据量大小计算得到本次本地训练梯度回传服务节点的预计通信时长;由于服务节点需要在等待各个计算节点发送了本次本地训练的梯度值后,才进行平均得到总梯度值,进而发起下一次本地训练,为避免由于个别计算节点因通信带宽较低迟迟不发送梯度值导致服务节点等待,延长训练时长,在本实施例中,在计算节点计算得到本次本地训练的本机梯度值后,可以先确定是否需要发送该本机梯度值给服务节点。
62.具体地,计算节点可以在计算得到本次本地训练的本机梯度值后,先获取当前本机的通信带宽,根据通信带宽和该本机梯度值的数据量大小,计算本次本地训练梯度回传至服务节点的预计通信时长,也即,预计需要花费的通信时长。
63.步骤s60,获取预先记录的本机单次本地训练的训练时长,并计算所述预计通信时长相对于所述训练时长的时长比例;若所述时长比例大于第一预设比例,则执行步骤s70,丢弃所述本机梯度值;若所述时长比例不大于所述第一预设比例,则执行所述步骤s30。
64.计算节点可以对本机单次本地训练的训练时长进行记录。具体地,可以对各次本地训练的训练时长进行平均,作为本机单次本地训练的训练时长,也可以直接将本次本地训练所花费的时长作为本机单次本地训练的训练时长。计算节点计算预计通信时长相对于本机单次本地训练的训练时长的时长比例,也即时长比例=预计通信时长/本机单次本地训练的训练时长。
65.计算节点可以检测时长比例是否大于第一预设比例。第一预设比例可以根据经验设置,例如设置为1/10。当时长比例大于第一预设比例时,说明预计通信时长与本机单次本地训练的时长较接近,如果让服务节点等待该计算节点发送梯度值,该计算节点占比较大的通信时长将对待训练缺陷检测模型的整体训练速度造成较大影响,此时,该计算节点可以将该本机梯度值进行丢弃,即不向服务节点发送该本机梯度值,直接参与下一次的本地训练。服务节点则只对接收到的梯度值进行汇总。进一步地,若计算节点丢弃本次本地训练的本机梯度值,则可以向服务节点发送一个短信号,已通知该计算节点不参与本次本地训练结果的汇总。当时长比例不大于第一预设比例时,说明该计算节点的通信时长不会对待训练缺陷检测模型的整体训练速度造成太大影响,此时,该计算节点可以执行步骤s30,也即将本机梯度值发送给服务节点。
66.进一步地,在一实施方式中,所述步骤s20包括:步骤s204,将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数;在本实施方式中,待训练缺陷检测模型可以包括特征提取层和ssd(single shot multibox detector)检测器,特征提取层用于进行特征提取,ssd检测器用于基于特征提取的结果进行缺陷分类和缺陷位置检测。其中,特征提取层可以采用cnn网络,例如,可以采用vgg16,vgg16是由16个小卷积层组成5个大卷积层的深度特征提取网络,用作提取图片中的特征信息。待训练缺陷检测模型中的模型参数即特征提取层和ssd检测器中的模型参数。
67.计算节点在获取到本次本地训练所需的本机训练图片和基准模型参数后,将本机的待训练缺陷模型的模型参数配置为该基准模型参数。需要说明的是,后面提到的待训练缺陷检测模型即配置了基准模型参数之后的待训练缺陷检测模型。
68.步骤s205,将所述本机训练图片输入本机的所述待训练缺陷检测模型的特征提取层进行特征提取得到特征图;步骤s206,将所述特征图输入本机的所述待训练缺陷检测模型的ssd检测器得到所述本机训练图片中缺陷区域的缺陷分类得分和缺陷位置坐标;步骤s207,根据所述缺陷分类得分和所述缺陷位置坐标计算得到所述待训练缺陷检测模型的损失函数相对于本机的所述待训练缺陷检测模型中当前模型参数的当前梯度值,以完成本次本地训练的一轮本地迭代训练;计算节点采用本机训练图片对本机的待训练缺陷检测模型进行至少一轮本地迭代训练。
69.一轮本地迭代训练的过程可以是计算节点将本机训练图片输入本机的待训练缺陷检测模型的特征提取层进行特征提取,得到特征图,再将特征图输入本机的待训练缺陷检测模型的ssd检测器进行检测,得到本机训练图片中缺陷区域的缺陷分类得分和缺陷位置坐标。其中,缺陷分类得分是指缺陷区域属于各个缺陷类别的概率得分,缺陷位置坐标是指缺陷区域在本机训练图片中的位置坐标。计算节点根据缺陷分类得分和缺陷位置坐标计算得到待训练本机的待训练缺陷检测模型当前的各个模型参数的梯度值(以下称为当前梯度值以示区分),以完成本次本地训练的一轮本地迭代训练。
70.步骤s208,检测本次本地训练已进行的本地迭代训练的轮数是否达到第三预设轮数;在完成一次本地迭代训练得到当前梯度值后,计算节点先检测本次本地训练已进行的本地迭代训练的轮数是否达到第三预设轮数。其中,第三预设轮数可以是预先设置的,也可以是按照上述第二实施例中的递增方法确定的本次本地训练的本地迭代训练轮数。
71.若达到,则执行步骤s209,将所述当前梯度值作为本机梯度值;若未达到,则根据所述当前梯度值更新本机的所述待训练缺陷检测模型中的模型参数,再返回执行所述步骤s205。
72.若达到第三预设轮数,则计算节点确定已完成本次本地训练,将当前梯度值作为本次本地训练的本机梯度值。若未达到第三预设轮数,则计算节点确定未完成本次本地训练,根据当前梯度值更新本机的待训练缺陷检测模型中的模型参数后,进入下一轮本地迭代训练,也即,将本机训练图片输入本机更新模型参数后的的待训练缺陷检测模型的特征提取层进行特征提取。
73.此外,本发明实施例还提出一种缺陷检测模型训练装置,所述装置部署于分布式集群中的各计算节点,各所述计算节点部署有相同的待训练缺陷检测模型,参照图3,所述装置包括:获取模块10,用于从所述分布式集群中的分布式文件系统获取本次本地训练所需的本机训练图片,以及从所述分布式集群中的服务节点获取本次本地训练所需的所述待训练缺陷检测模型的基准模型参数;训练模块20,用于将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数后,采用所述本机训练图片对本机的所述待训练缺陷检测模型进行至少一轮本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值;发送模块30,用于将所述本机梯度值发送给所述服务节点,以供所述服务节点在
接收到各所述计算节点发送的梯度值后进行平均得到总梯度值,并采用所述总梯度值更新所述基准模型参数,将更新后的基准模型参数分发给各所述计算节点以供各所述计算节点采用更新后的基准模型参数作为下次本地训练所需的基准模型参数;确定模块40,用于在各次本地训练过程中,当检测到本机的所述待训练缺陷检测模型收敛时,将收敛后的待训练缺陷检测模型作为目标缺陷检测模型,以基于所述目标缺陷检测模型进行图片缺陷检测。
74.进一步地,所述训练模块20包括:第一检测单元,用于将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数后,检测本机的所述待训练缺陷检测模型是否进入预收敛状态;第一计算单元,用于若确定本机的所述待训练缺陷检测模型已进入所述预收敛状态,则在上一次本地训练时本地迭代训练的轮数基础上加上第一预设轮数,得到目标轮数,其中,第一次本地训练时本地迭代训练的轮数设置为1;训练单元,用于采用所述本机训练图片对本机的所述待训练缺陷检测模型进行所述目标轮数的本地迭代训练,得到本机的所述待训练缺陷检测模型中各模型参数的本机梯度值。
75.进一步地,所述第一检测单元还用于:检测本机的所述待训练缺陷检测模型在最近第二预设轮数的历史本地迭代训练中的梯度变化值是否均小于预设值,其中,所述梯度变化值是指当轮本地迭代训练时计算得到的梯度值相比于上一轮本地迭代训练时计算得到的梯度值的变化值;若均小于所述预设值,则确定本机的所述待训练缺陷检测模型已进入预收敛状态;若不是均小于所述预设值,则确定本机的所述待训练缺陷检测模型未进入所述预收敛状态。
76.进一步地,所述装置还包括:第一计算模块,用于获取当前本机的通信带宽,根据所述通信带宽和所述本机梯度值的数据量大小计算得到本次本地训练梯度回传服务节点的预计通信时长;第二计算模块,用于获取预先记录的本机单次本地训练的训练时长,并计算所述预计通信时长相对于所述训练时长的时长比例;丢弃模块,用于若所述时长比例大于第一预设比例,则丢弃所述本机梯度值;所述发送模块30还用于若所述时长比例不大于所述第一预设比例,则将所述本机梯度值发送给所述服务节点。
77.进一步地,所述训练模块20包括:配置单元,用于将本机的所述待训练缺陷检测模型的模型参数配置为所述基准模型参数;提取单元,用于将所述本机训练图片输入本机的所述待训练缺陷检测模型的特征提取层进行特征提取得到特征图;输入单元,用于将所述特征图输入本机的所述待训练缺陷检测模型的ssd检测器得到所述本机训练图片中缺陷区域的缺陷分类得分和缺陷位置坐标;第二计算单元,用于根据所述缺陷分类得分和所述缺陷位置坐标计算得到所述待
训练缺陷检测模型的损失函数相对于本机的所述待训练缺陷检测模型中当前模型参数的当前梯度值,以完成本次本地训练的一轮本地迭代训练;第二检测单元,用于检测本次本地训练已进行的本地迭代训练的轮数是否达到第三预设轮数;确定单元,用于若达到,则将所述当前梯度值作为本机梯度值;所述提取单元还用于若未达到,则根据所述当前梯度值更新本机的所述待训练缺陷检测模型中的模型参数,再返回执行所述将所述本机训练图片输入本机的所述待训练缺陷检测模型的特征提取层进行特征提取得到特征图。
78.进一步地,所述获取模块10包括:获取单元,用于从所述分布式集群中的分布式文件系统获取本次本地训练所需的本机训练图片,其中,所述分布式文件系统从总训练图片集中选取本次本地训练中各所述计算节点分别对应的单机训练图片集,将各所述单机训练图片集对应分发给各所述计算节点,两两所述计算节点对应的所述单机训练图片集之间存在交集且交并比不小于第二预设比例。
79.进一步地,所述获取模块10还用于获取待检测缺陷的目标图片;所述装置还包括:缺陷检测模块,用于将所述目标图片输入所述目标缺陷检测模型进行缺陷检测,得到所述目标图片中的缺陷类别和缺陷位置;输出模块,用于对所述目标图片中的所述缺陷位置进行标记后,将所述目标图片和所述缺陷类别进行输出展示。
80.本发明缺陷检测模型训练装置的具体实施方式的拓展内容与上述缺陷检测模型训练方法各实施例基本相同,在此不做赘述。
81.此外,本发明实施例还提出一种计算机可读存储介质,所述存储介质上存储有缺陷检测模型训练程序,所述缺陷检测模型训练程序被处理器执行时实现如下所述的缺陷检测模型训练方法的步骤。
82.本发明缺陷检测模型训练设备和计算机可读存储介质各实施例,均可参照本发明缺陷检测模型训练方法各个实施例,此处不再赘述。
83.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
84.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
85.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
86.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜