基于深度学习的工业自动化缺陷检测方法与流程

文档序号:20785170发布日期:2020-05-19 21:37阅读:1162来源:国知局
基于深度学习的工业自动化缺陷检测方法与流程

本发明涉及产品缺陷检测技术领域,特别是涉及一种基于深度学习的工业自动化缺陷检测方法和系统的缺陷检测领域。



背景技术:

由于受到震动、温度、压力等各种外界因素的影响,工业自动化生产中不可避免地会出现产品缺陷。缺陷检测是指对产品表面的斑点、凹痕、划痕、色差、缺损等缺陷进行检测,是工业质量控制中最为重要的任务之一。随着经济的发展、工业生产效率的提高,基于传统的人工缺陷检测方法,不仅检测速度慢,效率低,而且检测过程中容易出错,难以满足现代工业自动化生产高效要求。

基于人工特征提取的机器视觉的检测技术在一定程度上弥补了人工缺陷检测的弊端,实现了缺陷自动检测,提高了工业生产效率。但是该检测方法由于以下几点弊端,难以满足现在工业生产的实际需求:人工特征提取复杂且不能覆盖全部缺陷特征;特征提取过程需要非常专业的领域知识;在复杂检测背景和多目标检测场景下检测准确率和泛化能力较弱;当被检测物体发生变化,所有的规则和算法都需要重新设计和开发。

近两年,人工智能-深度学习技术得到了快速发展,其已广泛应用到能源、交通、医疗、气象等多个领域。然而,深度学习技术在缺陷检测方面应用还相对较少。本发明基于深度学习的工业自动化缺陷检测方法,避免一般机器学习方法中复杂的手工特征选取过程,以及需要相关领域的先验知识等问题,在复杂环境和多目标场景中具有较高检测准确率和很好的泛化能力。应用本发明所述方法能在样本数据不足的情况下,快速训练适用的检测模型,支持快速热部署,并取得比传统检测方法更好的检测效果。发明中的缺陷检测系统是一种基于grpc(remoteprocedurecall远程过程调用)、mqtt(messagetelemetrytransport消息队列遥测传输)和redis(remotedictionaryserver远程字典服务)的模块化系统,所需硬件简单,成本低,部署方便,适用于高并发工业应用场景。



技术实现要素:

为克服现有技术的不足,本发明旨在提出一种基于深度学习的工业自动化缺陷检测方法和系统,该方法可避免复杂的特征提取工作,具有较高的准确率和较好的泛化能力,在缺陷占比较小、检测背景复杂的情况下,体现优势。在样本数据不足的情况下,能快速训练适用的检测模型,支持快速热部署,并取得比传统检测方法更好的检测效果。该检测系统是一种基于grpc、mqtt和redis的模块化结构系统,其部署简单,且能适用于高并发工业应用场景中。为此,本发明采取的技术方案是,基于深度学习的工业自动化缺陷检测方法,包括以下步骤:

(a):对流水线上的工业产品拍照;

(b):将图片转化成三维矩阵数据,并发送到redis数据库相应图像检测消息主题上,该过程基于redis的发布\订阅模式;

(c):由订阅相应图像检测主题的程序监听到消息后,将图片接收后经过提前训练好的目标检测模型yolo-v3,对拍到的照片进行处理,判断照片中是否有被检测物体;

(d):如果有则将被检测到的一个或者多个目标,从图片中截取这些目标,然后将图像矩阵发送到redis数据库相应的图像识别消息主题上,如果未检测到任何目标,则返回(c)继续监听数redis据库相应图像检测消息主题上是否有消息;

(e):部署在服务器上的程序监听到数据库相应图像识别消息主题上有消息时,依次接收这些目标图片矩阵数据,然后,调用部署在服务器上的小样本数据迁移学习得到的神经网络拓扑结构inception-v3图像识别模型,对这些目标数据进行识别,判断这些目标位置是否含有缺陷;

(f):若inception-v3模型识别结果为含有缺陷且置信度超过设定的阈值,则调用mqtt客户端程序,发送报警信息到mqtt相应报警主题上;

(g):若inception-v3模型识别结果为未含有缺陷,或者含有缺陷,但置信度低于设定的阈值,则不做处理,仅仅备份图片到服务器硬盘,然后继续处理下一个目标数据;

(h):工业现场的mqtt客户端从订阅的消息主题上接收到服务器上发来的报警消息后,触发相应的报警装置或者触发执行相应的控制程序,进而控制自动化生产设备,对缺陷产品做相应的处理。

yolo-v3目标检测模型训练,是通过迭代求解的聚类分析算法k-means聚类分析,获取先验框尺寸,并替换原yolo-v3配置中的先验框尺寸,在训练yolo-v3目标检测模型时,可减小网络微调先验框到实际位置的难度,从而使模型快速收敛。

将inception-v3的数据集通过yolo-v3模型检测处理后得到新数据集,然后训练基于迁移学习的inception-v3的缺陷分类模型。训练参数设置为:批次大小为100,迭代次数为800步,初始学习率为0.01。

本发明的特点及有益效果是:

(1):基于深度学习,避免了一般机器学习检测方法中的手工特征提取工作,以及对领域的专业知识要求高的问题。

(2):yolo-v3目标检测模型和inception-v3图像分类模型相结合的方法,能够提高图像检测精度和稳定性。尤其是在缺陷图像占比会很小、多缺陷目标检测情况,具有明显优势。且不受复杂环境的影响,检测准确率高。

(3):本发明所述的检测方法,能在小样本集的情况下,快速训练所需缺陷检测模型,快速部署,并能获得较好的检测准确率。

(4):本发明的缺陷检测系统,模块化部署,硬件简单,部署成本低,且适用于高并发的工业自动化生产场景。

(5):基于mqtt和redis的消息订阅\发布机制,方便高效,适用于网络带宽受限的工业环境中。

(6):采用tensorflowserving(google开源服务框架)服务部署缺陷识别模型,其热部署功能,使得管理模型更新迭代方便。

附图说明:

图1为:本发明的缺陷检测系统结构图;

图2为:图像采集端采集的样本图片;

图3为:图2中sample0做数据增强后得到的图片;

图4为:训练yolo-v3目标检测模型的平均损失曲线;

图5为:训练yolo-v3目标检测模型在13×13尺度上的平均iou曲线

图6为:经过yolo-v3目标检测模型检测处理后的图片;

图7为:对yolo-v3目标检测模型处理后的图6做截取处理后的图;

图8为:采用yolo-v3目标检测模型和inception-v3缺陷识别模型相结合的缺陷检测方法的模型准确率和只使用inception-v3缺陷识别模型的准确率对比图;

图9为:采用yolo-v3目标检测模型和inception-v3缺陷识别模型相结合的缺陷检测方法的模型损失曲线和只使用inception-v3缺陷识别模型的损失曲线对比图;

图10为:tensorflowserving服务中缺陷识别模型更新迭代示意图;

图11为:图像采集侧的硬件图:树莓派+usb摄像头;

图12为:缺陷检测系统检测到有缺陷的图片后,发送对应图片消息到微信设备管理群中的效果图;

图13为:终端和服务器侧的监测图。①、②标识分别是两个图像采集终端,③标识是服务器历史日志,④标识是mqtt客户发消息发送日志;

图14为:工业现场缺陷检测客户端实际应用实例图。①标识为usb摄像头模块②标识树莓派机身模块。

具体实施方式

为了克服上述现有技术的不足,本发明提供了一种基于深度学习的工业自动化缺陷检测方法和系统,该方法避免了复杂的特征提取工作,具有较高的准确率和较好的泛化能力,在缺陷占比较小、检测背景复杂的情况下,体现优势。在样本数据不足的情况下,能快速训练适用的缺陷检测模型,支持快速热部署,并取得比传统检测方法更好的检测效果。该检测系统是一种基于grpc和mqtt的模块化结构系统,其部署简单,且能适用于高并发工业应用场景中。

本发明所采用的技术方案是:基于深度学习的工业自动化缺陷检测方法和系统,包括以下步骤:

(i):采用树莓派+usb摄像头作为终端图像采集设备,由部署在树莓派中的图片采集程序来自动完成对流水线上的工业产品拍照(帧差法)。

(j):采集程将图片转化成三维矩阵数据,并发送到的redis数据库相应图像缺陷检测消息主题上(基于发布\订阅模式);

(k):由订阅相应图像缺陷检测主题的程序监听到消息后,将图片接收后经过yolo-v3目标检测模型(小样本集,模型提前训练好的)(一种目标检测算法youonlylookonce版本v3),对拍到的照片进行处理,判断照片中是否有被检测物体(没有,含有一个,或含有多个)。

(l):如果有则将被检测到的一个或者多个目标,从图片中截取这些目标,然后将图像矩阵发送到数据库redis相应的图像缺陷识别消息主题上(基于发布\订阅模式)。如果未检测到任何目标,则返回(c)继续监听redis相应图像缺陷检测消息主题上是否有消息。

(m):部署在服务器上的程序监听到数据库redis相应图像缺陷识别消息主题上有消息时,依次接收这些目标图片矩阵数据,然后,通过grpc调用部署在服务器上的tensorflowserving服务中的inception-v3(googlenet的一种神经网络拓扑结构)图像缺陷识别模型(小样本数据,迁移学习得到)对这些目标数据进行识别,判断这些目标位置是否含有缺陷。

(n):若inception-v3模型识别结果为含有缺陷且置信度超过设定的阈值,则调用mqtt客户端程序,发送报警信息到mqtt服务器相应报警主题上(基于发布\订阅模式)。同时服务程序调用微信api接口,将捕捉到的图片发送到微信设备管理群中,方便管理者查看信息。并备份图片到服务器硬盘,方便后期研究和查看使用。

(o):若inception-v3模型识别结果为未含有缺陷,或者含有缺陷,但置信度低于设定的阈值,则不做处理,仅仅备份图片到服务器硬盘,方便后期研究和使用,然后继续处理下一个目标数据。

(p):工业现场mqtt客户端从订阅的消息主题上接收到mqtt服务器上发来的报警消息后,触发相应的报警装置或者触发plc执行相应的控制程序,进而控制自动化生产设备,对缺陷产品做相应的处理。

下面结合附图对本发明进一步说明。

(一)系统结构

图1显示了本发明——基于深度学习的工业自动化缺陷检测方法的系统结构示意图,主要包括图像数据采集服务、图像分类服务、系统报警服务、数据转发服务、数据存储服务等5部分组成,共同完成了缺陷检测工作。

图像数据采集服务:由部署在树莓派3b上的采集程序调用usb摄像头进行图像采集,然后经过yolo-v3模型处理,对图片中的可疑缺陷部位进行识别,最后将识别到的缺陷部位从图片上截取后发送到图像分类服务器上。

图像分类服务:由部署在服务器上的inception-v3模型作为图像识别服务,对图像数据采集服务发来的可疑缺陷截图进行检测,输出缺陷检测结果,根据检测结果决定是否触发报警系统,以及是否下发设备控制状态指令。

系统报警服务:根据图像分类服务的下发的控制状态指令,触发相关设备的控制单元plc(可编程逻辑控制器)执行相应程序,控制设备输出状态,依据设定决定是否触发声光报警装置。同时该服务也将报警信息通过微信api推送到微信设备管理群中。

数据转发服务:数据转发主要采取了两种方式,其一是图片数据转发处理基于数据库redis的消息发布\订阅模式。其二是plc装置、报警装置的状态控制信息,采用了基于轻量级的mqtt协议的消息发布\订阅机制。

数据存储服务:将整个缺陷检测服务中产生的图片数据,报警控制数据进行记录存储,一方面为了满足后续对模型进行更新升级训练对图片数据的需要,另一方面,对设备关键参数数据形成历史记录,方便后续设备数据分析研究使用。

(二)数据集制作

(a)数据采集

由部署在树莓派3b中的程序使用帧差法通过usb摄像头对图片数据进行采集,该型号摄像头采集尺寸为500×375,线盘的颜色有,红,绿,蓝,黄,黑,白共6种。包装带有透明薄膜和白色塑料带两种。图2中展示几张有代表性的图片,其中sample0为同时拍到多个电线盘的情况,sample3展示了只拍到一个角的电线盘的情况,sample4为没有带包裹(包装缺陷)和带包裹(包装合格)的共存的情况,sample5展示了包裹有漏隙的包装缺陷情况

(b)数据增强

inception-v3模型的训练需要大量的训练样本,但是实际生产中短期内获取样本尤其是带缺陷的线盘样本相对比较困难,因此通过图像预处理,来增加样本数据的容量。数据增强主要有:旋转、平移、缩放、边缘填充、调整亮度、饱和度、裁剪、模糊、灰度化等方式。图3中包含了对图2中sample0的水平翻转、垂直翻转、增加20%的亮度、降低60%的饱和度、灰度降低30%、中心按60%比例裁剪。通过数据增强,将1张图片,变成7张图片,大大增加样本容量。

(c)数据集构成

将采集到的原始数据分为3类:带包裹(包装合格)、不带包裹或者包裹有间隙(包装缺陷)、其它。其中‘其它’是指类似于图2中的sample3没有目标线盘的图或类似于sample4中同时含有带包裹和不带包裹的线盘。根据实际需求,不需要对缺陷分类,可简化模型将样本分为两类:包装合格、包装缺陷。其中inception-v3的数据集为:训练集[1280张,1266张],测试集[100张,100张]。需要说明的是:由于包装合格的样本容易获取,训练集和测试集中的合格样本均为原样本图,而包装缺陷样本相对不容易获取,训练集和测试集中的缺陷样本是原始200张缺陷图片经过数据增强后得到1400张图片,剔除其中一些裁剪后无线盘或者线盘显示不足一半的图片后得到1366张增强后的图片,训练时,将训练集的10%作为验证集;yolo-v3的数据集是从inception-v3的数据集中随机抽取120张图片,手工使用labelimg工具进行线盘位置标注生成voc格式的xml文件,再通过脚本生产yolo格式的.txt文件。

(三)模型训练

(a)yolo-v3目标检测模型训练

为了适应上述数据集,通过k-means聚类分析(k-meansclusteringalgorithm一种迭代求解的聚类分析算法),获取先验框尺寸,并替换原yolo-v3配置中的先验框尺寸。可以在训练yolo-v3预测模型时,减小网络微调先验框到实际位置的难度,从而使模型快速收敛。实验数据聚类k=9时聚类点分别为:(109,146),(157,73),(180,160),(204,218),(242,117),(254,170),(285,240),(292,215),(440,295)。可以看出数据集上的目标尺寸大小几乎均在100×100以上,同原配置默认参数在13×13尺度上的先验框尺寸(116,90),(156,192),(373,326)相近,属于大目标。这和实验实际测试中,发现使用原参数时只有13×13尺度上能检测到目标,其他尺度上未检测到目标的情况一致。并且要比使用自己聚类得到的多个尺寸,在多尺度上训练模型效果要好。这是由于使用的数据集较小,且线盘目标尺寸均属于大目标,相比在26×26、52×52尺度,13×13尺度的特征图上包含的分辨率信息较少,语义信息大,能更好的区分目标和背景。因此,本实验采用原始模型参数,能满足检测需求。

实验机为ubuntu16.04系统内存16g,inteli7-4980hq2.8ghz处理器,nvidiageforcegtx980m4g显卡,设置为批尺寸为16,迭代次数为5000,学习率使用分步策略在0-2000轮为0.001,2000-3000轮设置为0.0001,3000-5000轮设置为0.00001。在数据集上进行训练结果如图4、图5所示,分别为模型训练的损失变化曲线,在13×13尺度上的iou(预测框和真实框的交并比)曲线变化。平均损失曲线在迭代的最一开始损失比较大,随着迭代次数增加,损失快速降低,大约在迭代2000次时候基本处于稳定状态,损失在0.0045左右波动。iou曲线同样在迭代2000次后处于稳定状态,在0.88左右波动。

(b)inception-v3缺陷识别模型训练

首先将inception-v3的数据集,经过训练好的yolo-v3模型进行处理,对图2中的样本进行识别,结果如图6所示,可以看到图中的线盘均精确的识别出来,并用黄色的矩形框标出。(图detect3由于只有一个小小的边角,没有被模型识别到),然后将这些识别到的线盘从图片中截切出来,得到图7所示的数据(图6中detect4中最下面的线盘由于矩形框太小,没有达到阈值80×80,故在程序中被滤除)。

将inception-v3的数据集通过yolo-v3模型处理后得到新数据集,然后训练基于迁移学习的inception-v3的缺陷分类模型。训练参数设置为:批次大小为100,迭代步数800,学习率为0.01。图8、图9显示了经过yolo-v3处理和未经过yolo-v3处理所获的inception-v3分类模型在训练集上的准确率曲线和交叉熵损失曲线。从图中可以看出,采用yolo-v3识别处理后训练得到的inception-v3分类模型(红色曲线)在400步后准确率稳定在99.49%,其方差为0.0000506相比未处理获得的模型准确率为97.70%,方差为0.000251,在准确率曲线和损失曲线波动幅度均比较小,总体更加平稳。

(四)模型部署

(a)tensorflowserving服务

在机房的服务器ubutu16.04上通过docker容器技术搭建了tensorflowserving服务,将训练好的inception-v3缺陷识别模型部署到服务器上,远程多个客户端均可以通过grpc或者restfulapi来访问模型服务,同时tensorflowserving支持在线热部署,方便后期更新迭代模型,其结构如图10所示,model1到model3表示模型迭代更新,model3表示目前正在服务的模型。本文中通过grpc形式远程调用训练好的模型,并得到了图形的检测结果,以及结果的置信度。根据服务程序设计的阈值决定是否调用mqtt客户端向mqtt服务器发送报警、控制等状态消息。

(b)采集端硬件和信息接受端

图11中左边是一款usb摄像头,右面是树莓派3b是本发明的图像采集设备,部署在工业生产现场,负责采集采集生产过程中的产品图像。在工业现场中的实际部署情况如图14所示。图中①是usb摄像头,②是树莓派机身。整个采集模块通过车间wifi连接到系统网络中。

图12展示了缺陷检测系统检测结果为不合格产品时,服务程序调用微信api接口,将捕捉到的图片推送到微信设备管理群中的效果。可以看到检测结果是未打包,并给出了置信度为0.98和0.97,同时也给出了检测到缺陷图片的时间。

图13中①、②是图像数据采集端的摄像头监测画面和对应的日志信息,③是服务器侧的日志,记录了识别模型的识别结果,以及是否推送到微信客户端的日志。④是mqtt客户端的消息日志,记录了报警日志信息。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1