本发明涉及深度学习领域,具体涉及一种基于yolo卷积神经网络的布匹表面瑕疵识别方法、装置及系统。
背景技术:
在现代纺织生产中,质量的控制与检测非常重要。目前在纺织服装生产企业主要采用人工验布的方法,但人眼检测速度及可视宽度有限,检测结果易受主观因素影响。少数纺织企业已经开始使用智能化验布系统,但它的瑕疵检出率和准确率仍然需要大幅度提高。随着智能化视觉检测技术的不断优化,减轻人工检测的劳动强度,提高生产过程织物质量监控的效率和精度显得尤为重要。因此一个实用的自动布匹瑕疵检测系统可以显著的改善织布厂的生产效率和产品质量,提高产品的市场竞争力和生产的自动化水平。
布匹瑕疵检测算法主要是根据检测到的布匹的纹理形状进行瑕疵判断,大致有3类:统计法、谱分析法和基于模型法。但是这些方法或多或少都存在计算量大、准确率差和可靠性低的缺陷,很难满足工业需求。
为解决上述布匹瑕疵检测速度慢、精度低的问题,本发明采用opencv对布匹图片进行预处理,并进行数据增强扩大数据集,随后利用检测速度与精度最为均衡的目标检测网络yolov3进行训练,最终用训练好的模型进行布匹表面瑕疵的检测、识别以及定位,打破现阶段“低智能”的布匹瑕疵检测模式,大大提高纺织产业工作质量与效率。
技术实现要素:
本发明针对现存识别布匹瑕疵速度慢、准确率低的问题,发明了一种基于yolo卷积神经网络的布匹表面瑕疵识别方法、装置及系统。
发明所采用的技术方案是:
在一方面本发明提供了一种基于yolo卷积神经网络的布匹表面瑕疵识别方法,包括:
利用opencv,通过对数据集中的布匹图片进行threshold二值化和findcontours检测轮廓后裁剪,依次采用光照均衡化、自适应二值化以及中值滤波方法对图片进行处理;
利用opencv随机地调整预先获得的布匹图片的gamma曲线和对比度参数,获得布匹图片数据集;
利用处理后的布匹图片对yolov3神经网络进行训练;
利用训练好的yolov3神经网络识别预处理后的待识别布匹图片,给出识别结果,所述识别结果包括瑕疵属性。
进一步地,对待识别布匹图片进行预处理的方法包括:
使用二值化方法将布匹区域与非布匹区域分开;
利用findcontours算法对布匹区域进行边缘检测,根据检测到的布匹区域裁剪图片,舍弃非布匹部分。
进一步地,所述的光照均衡化的方法为:首先将图片分为多个设定像素的矩形区域,分别计算每一个区域的平均灰度;利用计算得到的灰度均值对每一个区域分别进行亮度补偿。
在另一方面,本发明提供一种基于yolo神经网络的布匹瑕疵识别装置,其特征在于,包括:
数据集扩充模块、图像预处理模块和神经网络训练以及识别模块;
所述数据集扩充模块,用于利用opencv随机地调整预先获得的布匹图片的gamma曲线和对比度参数,获得布匹图片数据集;
所述图像预处理模块,用于利用opencv,通过对数据集中的布匹图片进行threshold二值化和findcontours检测轮廓后裁剪,依次采用光照均衡化、自适应二值化以及中值滤波方法对图片进行处理;
所述神经网络训练以及识别模块,用于利用训练好的yolov3神经网络识别预处理后的布匹图片,给出识别结果。
进一步地,还包括图像采集模块,所述图像采集模块,用于采集布匹表面的图片。
进一步地,还包括瑕疵参数筛选过滤模块,
所述瑕疵参数筛选过滤模块,用于根据选定的瑕疵属性对所述神经网络训练以及识别模块识别出的瑕疵进行筛选和过滤。
进一步地,还包括用于对识别结果进行存储和备份的识别结果存储以及备份模块。
进一步地,还包括统计查询模块,用于根据查询条件查询结果存储以及备份模块所存储的识别结果,并将结果返回。
进一步地,还包括用于响应于各类瑕疵在各时段中被识别到的数量超过阈值发出报警信号的故障预警模块。
在第三方面,本发明提供一种基于yolo神经网络的布匹瑕疵识别系统,其特征在于,包括网页端、pc端、数据库服务器以及权利要求4~9任意一项权利要求所述的一种基于yolo神经网络的布匹瑕疵识别装置;
所述网页端和pc端用于与以上所述的一种基于yolo神经网络的布匹瑕疵识别装置进行交互;
所述一种基于yolo神经网络的布匹瑕疵识别装置用于采用opencv对布匹图片进行边缘检测,针对布匹部分单独进行光照补偿、二值化并调整然后随机调整gamma曲线以扩大数据集;对于经过处理后的数据集,利用yolov3神经网络进行训练,最终用训练好的模型进行瑕疵检测与识别;
所述数据库服务器模块用于存储一种基于yolo神经网络的布匹瑕疵识别装置上传的布匹瑕疵识别结果。
与现有技术相比,本发明实现布匹瑕疵的检测与识别,其优点是:
(1)瑕疵实时自动检测:能自动时检测布匹瑕疵位置并显示瑕疵种类;
(2)瑕疵检测准确率高、速度快:能够准确地检测布匹表面瑕疵的种类、位置,并且运行速度快、效率高;
(3)云服务器管理:能将布匹信息、瑕疵类别及位置等检测结果信息上传到云服务器备份,并完成布匹的增删改查以及瑕疵复检;
(4)故障预警:跟踪各类瑕疵在各时段中的数量,出现异常即向控制台发出警报,大幅提高瑕疵检测的智能程度;
(5)可靠、实用:系统具有较高的性能,不易出现故障,方便工厂对布匹进行检测,节省了大量人力物力资源。
附图说明
图1为本发明具体实施例的系统结构图;
图2为本发明具体实施例的图片预处理算法流程图;
图3为本发明具体实施例的图片预处理示意图;
图4为本发明具体实施例的瑕疵检测算法流程图;
图5为本发明具体实施例的过滤瑕疵参数算法流程图;
图6为本发明具体实施例的统计分析算法流程图;
图7为本发明具体实施例的统计分析及故障预警示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步的详细说明。
实施方式一:
一种基于yolo卷积神经网络的布匹表面瑕疵识别方法,包括:
利用opencv随机地调整预先获得的布匹图片的gamma(伽马)曲线和对比度参数,获得布匹图片数据集;
利用opencv,通过对数据集中的布匹图片进行threshold(阈值化)二值化和findcontours(查找轮廓)检测轮廓后裁剪,依次采用光照均衡化、自适应二值化以及中值滤波方法对图片进行处理;
利用处理后的布匹图片对yolov3神经网络进行训练;
利用训练好的yolov3神经网络识别预处理后的待识别布匹图片,给出识别结果,所述识别结果包括瑕疵属性。
下面对使用opencv对图片进行预处理步骤进行详细阐述,如图2、图3所示:
(1)二值化:由于摄像机所拍摄的图片中并不都是完整的布匹,因此首先需要对布匹图片进行二值化,将布匹部分与非布匹部分分开。一般来说,布匹部分偏亮,而非布匹部分(如桌面等)偏暗,因此可以设置一定阈值进行二值化。具体实现方法为:
1.检查摄像机所拍摄的图片的通道数,并由三通道转变为一通道的灰度图。
2.将阈值t设置为100。
3.将其中的灰度值小于等于100的位置全部置为0(黑色),而将大于100的位置置为255(白色),其公式如下所示。
其中,t为所设置的阈值,m[x][y]表示图片在(x,y)位置的像素值。由此输出一张仅有黑色与白色组成的图片。
通过这种方式,可以使两者之间的边缘更加清晰,方便下一步处理。
(2)边缘检测:使用findcontours方法识别二值化以后的较为明显的布匹边缘,此方法中使用了suzuki85算法来跟踪二值图片中1像素以及0像素的联通域(边界),并返回所查找到的边界。由于在上一步处理后的黑白二值图像中,布匹与非布匹区域的边界清晰且没有噪声干扰,因此在使用可以保证查找到的轮廓十分准确。在得到布匹部分的矩形区域之后,裁剪并保留下矩形区域,舍弃掉会对结果产生较大干扰的非布匹区域。
(3)光照均匀化:由于布匹图片均为摄像机所拍摄,其光照以及摄像机本身的拍摄参数均不相同,且光照强度、角度都会发生变化。为了减小曝光不同对识别所产生的影响,本系统使用光照均匀化来对高光部分进行减暗处理,对暗部进行提亮处理,从而保证整张布匹的曝光均匀,并恢复更多的细节。具体实现方法为:
1.将确定输入图片的通道数,如果图片为三通道图片,需要将其变为单通道灰度图片。
2.循环遍历此图片到所有像素点以得到整张图片的平均灰度(记为g)。
3.根据每张图片的高度与宽度,将图片分成m×n个较小的矩阵区域。
4.分别计算每一个区域(i)的平均灰度(记为gi)。
5.将gi与g相减,得到区域的平均灰度与整张图片的平均灰度之间的差值,作为其区域亮度补偿值(记为ci)。
6.在原始灰度图上对应各个区域(i)减去ci,得到亮度补偿后的图片。
(4)自适应二值化:布匹表面上的瑕疵往往不明显,灰度变化较小且由于光照等环境因素各不相同,从而无法轻易地设置一个固定的阈值。因此,本系统采用自适应的二值化,具体实现方法为:
1.通过循环遍历图片的每一个像素点,并计算布匹图片的平均灰度。
2.然后将所得到的平均值作为二值化的阈值对其进行二值化。
相比于固定阈值进行二值化,这样做可以适应更多的情况,且有助于将不疲表面的瑕疵变得更加突显,最大程度保留其特征,方便之后的检测识别。
(5)中值滤波:在处理过程中,图片上会产生很多干扰识别的颗粒状椒盐噪声,因此使用medianblur(中值滤波)方法对其进行降噪。在此方法中,系统将会根据设置的核大小,自动地获取图片中以每一个像素为中心的周围相应区域内的全部像素值并组成一个值的序列,最后将此像素的值用这个序列的中值代替,从而实现消除噪声的效果。通过这种方法,可以有效地减少噪声的干扰,以提高神经网络识别的准确率。
(6)数据增强:在训练神经网络的时候,为了提高神经网络的性能以及泛化性,通过随机调整gamma曲线、亮度等方式扩大样本数据集。其中,调整gamma曲线的具体方法为:
1.预先指定一个gamma值,然后根据公式(1):
其中,x为图片中每一点的灰度值。初始化一个长度为256的灰度映射表(记为t)。
2.根据映射表,将图片(记为m)中的像素点映射为相应的灰度值,如点(x,y)的灰度值为v,则将其的值设置为映射表中第v个位置的值,从而使整个图像的灰度符合指数关系。
调整gamma曲线的方法可以有效增强低灰度和高灰度的图片细节。对于类似于布匹表面图片这类对比度较低的图片,这种方法可以极为有效地增强图片细节,与此同时,通过随机设置gamma值,可以对同样的图片进行不同调整,从而有效扩大数据集。
对于调整亮度的方法,具体实现为:
1.首先初始化一个与待处理图片长、宽都相等的,且像素值都为0的矩阵(记为z)。
2.输入α与β,对于图片中的每一个像素点(x,y),按照公式处理。
dst[x][y]=src1[x][y]×α src2[x][y]×(1-α) β(4)
其中,dst[x][y]代表输出的图片像素;src1[x][y]与src2[x][y]分别对应原图以及z的对应像素;α代表原图与z所占的比重;β代表亮度。
3.循环遍历图片,根据第2步得到图片上每一个像素点处理后的结果,并组成一张新的图片输出。
通过随机设置α和β值,可以生成不同亮度以及对比度的图片,从而达到扩大数据集的目的,并提高神经网络的性能,使其对各种情况下的布匹都具有较高的识别准确率。
如图3所示,经过预处理后的图片上瑕疵的明显度有了显著提升,将有瑕疵的图片放入yolov3神经网络进行训练,训练好后就可以进行在线瑕疵检测与识别。
下面对使用yolov3神经网络训练实现布匹瑕疵检测与识别的步骤进行详细阐述,如图4所示:
(1)装载训练模型:为了使神经网络可以高效地、实时地检测图片,首先需要将其存放在内存之中,方便之后直接调用。
(2)导入待检测布匹文件:本系统支持对单张图片的检测、多张图片的检测、视频检测、以及通过摄像头进行实时检测,在检测前,应首先设置好检测的方式。
(3)过滤疵点参数:本系统支持对所需要识别的参数进行筛选和过滤,其中包括对瑕疵种类的过滤、对瑕疵大小的过滤、对瑕疵密集程度的过滤、对瑕疵置信度的过滤等等。其算法流程如图5所示,其中包含以下步骤:
1、填写瑕疵参数:在界面上勾选并填写所需要过滤的参数。
2、更新配置文件:读取界面上所填写的过滤参数,并更新配置文件。
(4)调用yolov3神经网络:调用内存中的yolov3神经网络对输入的图片进行识别,识别完成后,根据配置文件中所设置的筛选条件,过滤掉一部分不符合条件的瑕疵结果。
本发明完成了对布匹瑕疵的实时检测与识别,并完成了筛选疵点参数、故障预警等功能,识别速度快、精度高,改善了织布厂的生产效率和产品质量,提高了产品的市场竞争力和生产的自动化水平。
实施方式二
一种基于yolo神经网络的布匹瑕疵识别装置,包括:
数据集扩充模块、图像预处理模块和神经网络训练以及识别模块;
所述数据集扩充模块,用于利用opencv随机地调整预先获得的布匹图片的gamma曲线和对比度参数,获得布匹图片数据集;
所述图像预处理模块,用于利用opencv,通过对数据集中的布匹图片进行threshold二值化和findcontours检测轮廓后裁剪,依次采用光照均衡化、自适应二值化以及中值滤波方法对图片进行处理;
所述神经网络训练以及识别模块,用于利用训练好的yolov3神经网络识别预处理后的布匹图片,给出识别结果。
所述图像采集模块,用于采集布匹表面的图片。
在以上实施例的基础上,所述系统还包括瑕疵参数筛选过滤模块,所述瑕疵参数筛选过滤模块,用于根据选定的瑕疵属性对所述神经网络训练以及识别模块识别出的瑕疵进行筛选和过滤,可选地包括设置筛选条件,可以勾选所需要查询的布匹、以及瑕疵类型。
在以上实施例的基础上,所述系统还包括用于对识别结果进行存储和备份的识别结果存储以及备份模块,对于检测到的瑕疵种类以及其位置信息,将其保存至数据库中,并上传到云服务器进行备份。
在以上实施例的基础上,所述系统还包括统计查询模块,用于根据查询条件查询数据库结果存储以及备份模块所存储的识别结果,并将结果返回
在以上实施例的基础上,还包括图表生成模块,用于生成类别分析饼状图及时间趋势折线图,其中根据时间趋势折线图可做故障预警,如图7所示,企业操作员可利用该趋势及时发现织机故障等问题,完成了故障预警功能。
在以上实施例的基础上,所述系统还包括用于响应于各类瑕疵在各时段中被识别到的数量超过阈值发出报警信号的故障预警模块。所述图像预处理模块和所述神经网络训练以及识别模块执行的方法可采用实施方式一提供的方法。
实施方式三
一种基于yolo神经网络的布匹瑕疵识别系统,该系统是基于开发网页端与pc端相配合的双平台,采用opencv对图片进行预处理后使用yolov3神经网络训练来实现布匹瑕疵的检测与识别,并将结果上传至数据库服务器,便于管理及复检,以及生成相应的统计图表。
如图1所示,一种基于yolo卷积神经网络的布匹表面瑕疵识别系统,包括网页端、pc端、基于以上实施例提供的基于yolo神经网络的布匹瑕疵识别装置、数据库服务器。
其中网页端采用flask框架 html5、js、css来设计界面并完成与数据库的交互;pc端利用pyqt设计exe界面,并嵌入自己设计的qss样式,使界面美观且交互友好;
基于yolo神经网络的布匹瑕疵识别装置采用opencv对布匹图片进行边缘检测,针对布匹部分单独进行光照补偿、二值化并调整然后随机调整gamma曲线以扩大数据集;对于经过处理后的数据集,利用yolov3神经网络进行训练,最终用训练好的模型进行瑕疵检测与识别;
数据库服务器模块可以将布匹瑕疵识别产生的结果上传到云服务器上,便于企业人员的管理和人工复检。
首先采集约1万份来自坯布、面料、服装中有瑕疵的产品高速相机拍摄的影像数据,每个影像包含一种或多种瑕疵点,使用opencv对图像进行预处理,使布匹图片上的瑕疵更加明显并扩大瑕疵数据集,然后通过yolov3神经网络对样本进行训练,最后将训练好的模型装载到开发的平台上在线检测瑕疵,并将检测结果上传到云服务器,方便管理及复检。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
1.一种基于yolo神经网络的布匹瑕疵识别方法,其特征在于,包括以下步骤:
利用opencv,通过对数据集中的布匹图片进行阈值二值化和检测轮廓后裁剪,依次采用光照均衡化、自适应二值化以及中值滤波方法对图片进行处理;
利用opencv随机地调整预先获得的布匹图片的gamma曲线和对比度参数,获得布匹图片数据集;
利用处理后的布匹图片对yolov3神经网络进行训练;
利用训练好的yolov3神经网络识别预处理后的待识别布匹图片,给出识别结果,所述识别结果包括瑕疵属性。
2.根据权利要求1所述的一种基于yolo神经网络的布匹瑕疵识别方法,其特征在于,对待识别布匹图片进行预处理的方法包括:
首先使用二值化方法将布匹区域与非布匹区域分开;
利用findcontours算法对布匹区域进行边缘检测,根据检测到的布匹区域裁剪图片,舍弃非布匹部分。
3.根据权利要求1所述的一种基于yolo神经网络的布匹瑕疵识别方法,其特征在于,所述的光照均衡化的方法为:首先将图片分为多个设定像素的矩形区域,分别计算每一个区域的平均灰度;利用计算得到的灰度均值对每一个区域分别进行亮度补偿。
4.一种基于yolo神经网络的布匹瑕疵识别装置,其特征在于,包括:
数据集扩充模块、图像预处理模块和神经网络训练以及识别模块;
所述数据集扩充模块,用于利用opencv随机地调整预先获得的布匹图片的gamma曲线和对比度参数,获得布匹图片数据集;
所述图像预处理模块,用于利用opencv,通过对数据集中的布匹图片进行阈值二值化和findcontours检测轮廓后裁剪,依次采用光照均衡化、自适应二值化以及中值滤波方法对图片进行处理;
所述神经网络训练以及识别模块,用于利用训练好的yolov3神经网络识别预处理后的布匹图片,给出识别结果。
5.根据权利要求4所述的一种基于yolo神经网络的布匹瑕疵识别装置,其特征在于,还包括图像采集模块,
所述图像采集模块,用于采集布匹表面的图片。
6.根据权利要求4所述的一种基于yolo神经网络的布匹瑕疵识别装置,其特征在于,还包括瑕疵参数筛选过滤模块,
所述瑕疵参数筛选过滤模块,用于根据选定的瑕疵属性对所述神经网络训练以及识别模块识别出的瑕疵进行筛选和过滤。
7.根据权利要求4所述的一种基于yolo神经网络的布匹瑕疵识别装置,其特征在于,还包括用于对识别结果进行存储和备份的识别结果存储以及备份模块。
8.根据权利要求4所述的一种基于yolo神经网络的布匹瑕疵识别装置,其特征在于,还包括统计查询模块,用于根据查询条件查询结果存储以及备份模块所存储的识别结果,并将结果返回。
9.根据权利要求4所述的一种基于yolo神经网络的布匹瑕疵识别装置,其特征在于,还包括用于响应于各类瑕疵在各时段中被识别到的数量超过阈值发出报警信号的故障预警模块。
10.一种基于yolo神经网络的布匹瑕疵识别系统,其特征在于,
包括网页端、pc端、数据库服务器以及权利要求4~9任意一项权利要求所述的一种基于yolo神经网络的布匹瑕疵识别装置;
所述网页端和pc端用于与权利要求4~9任意一项权利要求所述的一种基于yolo神经网络的布匹瑕疵识别装置进行交互;
所述一种基于yolo神经网络的布匹瑕疵识别装置用于采用opencv对布匹图片进行边缘检测,针对布匹部分单独进行光照补偿、二值化并调整然后随机调整gamma曲线以扩大数据集;对于经过处理后的数据集,利用yolov3神经网络进行训练,最终用训练好的模型进行瑕疵检测与识别;
所述数据库服务器模块用于存储一种基于yolo神经网络的布匹瑕疵识别装置上传的的布匹瑕疵识别结果。
技术总结