【《基于YOLO v3检测算法的手机表面缺陷检测技术研究》20000字】_第1页
【《基于YOLO v3检测算法的手机表面缺陷检测技术研究》20000字】_第2页
【《基于YOLO v3检测算法的手机表面缺陷检测技术研究》20000字】_第3页
【《基于YOLO v3检测算法的手机表面缺陷检测技术研究》20000字】_第4页
【《基于YOLO v3检测算法的手机表面缺陷检测技术研究》20000字】_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录第二章深度神经网络基本理论2.1卷积神经网络的基本原理卷积神经网络(CNNs)是现阶段计算机视觉领域最普遍运用的深度学习结构。卷积神经网络是伴随人工神经网络的迅猛发展衍生而来,逐渐转变为语音解析和图像识别领域人们探索的热门内容。卷积神经网络利用空间关系的相关运算,可以缩减所练习参数量,从而实现提升训练性能的目标,因而第一个明确的多层网络体系结构训练算法的名称就来源于此。卷积神经网络(CNNs)其实是一种深度学习结构,它不仅在极大程度上减少了对数据预处理的需求,还提高了分类的准确性。在深度卷积神经网络中,层次结构中最基层的输入是对图像的个别部分感知,其信息被一一发送到不同的层。也正因有卷积核,每一层都可以得到图像数据中最重要的特征。由于图像的最基本特征也可以通过图像的局部感知来获取,因此一些数据(如具有不变平移、缩放和旋转的视觉数据)的明显特征可以通过卷积神经网络获得[21]。卷积神经网络的结构肖似人体脑部突触。卷积神经网络的权值共享很大程度上拉低了网络模型的繁复程度和权值的数目。对比传统意义上的图像检测类算法,卷积神经网络在图像处理中颇具优越:图像可以在无需调动的条件下就输入到神经网络参与练习,能够消减人工设计卷积算子的特征提取程序。2.2卷积神经网络的网络结构相对传统的神经网络而言,卷积神经网络界说了相当一部分的层次关系。传统的神经网络只包括输入层、隐藏层和输出层,而卷积神经网络在隐层扩充了卷积层、激活层、池层和全连接层,如图2-1所示。分类特征提取分类特征提取图2-1卷积神经网络示意图(1)输入层。该层的主要目的是读取并且对数据做预先处理。而在做图像数据的管理时,通常采用卷积神经网络,它的输入一般是四维的张量(tensor),其具体的表现形式为[B,C,H,W],其中,B代表批次(batch),是数据的第零维,其数值意义为此批次内送入网络的图片数量;C代表通道(channel),通常图片的通道数是1或3,1代表图片是灰度图或黑白图像,3表示画面是三个通道,即红、绿、蓝是三种无法由其他色体混合得来的颜色,通常称为三原色。当三原色取不同值时,它们可以组合成其他任意颜色,因此三通道的图像是彩色图像;H和W分别代表图像的高度和宽度。众所周知,像素是图片在计算机中的最小单位,许多个像素点则构成了一张图片,因此通过图片的高和宽我们就能具体访问特定像素的值。(2)卷积层。整个神经网络的最重要的操作是卷积操作,其包含两个关键的操作:滤波器的制作及其滑动方式。滤波器在深度学习领域也叫作卷积核,其形状与核值的大小直接影响着卷积后的特征图,而特征图则是为了压缩原始图片,提取并保留关键的信息,其工作原理如图2-2所示。卷积核为3*3的矩形,大小为像素的下标,核中每一个数值与对应的像素中的值相乘后,把所有的值相加作为新的卷积特征图的第一个值,然后以1为步长滑动原图片,再把得到的所有计算值拼成一张新的卷积特征图,可以看出,通过卷积操作,原来5*5大小的数据被压缩成了3*3的数据,并保留了原图的关键信息。通过图2-2所演示的两种不同的提取方法,可以发现,不同的卷积核对图像特征提取并不是相同的,因此整个卷积神经网络的关键操作是选择合适的卷积核。滑动方式就是选择的步长大小和是否选择在原图外层补0,步长越大,压缩信息量便越大,丢失的信息也会相应增加,为了得到与原图大小相同的特征图,则可以通过补0来实现。1*11*01*1000*11*11*0100*10*01*11100110011001110001110001*11*01*1001*01*10*0011*10*00图卷积特征图原图卷积特征图图2-2卷积原理图(3)激励层。如若卷积层的输出是非线性映射的,当不应用激活函数时,那么所得到的结果只是一个线性组合,其产生的效果与没有隐藏层相同,很难达到接近理想的线性逼近效果,正因如此,非线性激励函数的引入是为了方便表达。普遍使用的激活函数包括:Sigmoid函数、Tanh函数、ReLU函数。Sigmoid函数:其代数形式为:(2-1)Sigmoid函数的几何描述图像如下图:图2-3Sigmoid函数的几何描述图像Sigmoid函数的主要特点是能够把上一个节点输入的值转换成0~1之间的值,若原来的数值为很大的正值,则输出值向1无限逼近,若原来的数值是一个很大的负值,则输出值无限逼近0。然而,此函数也存在着一定的缺点:在定向传播过程中,易发生梯度爆炸;由于输出不是零平均,在反向传播过程中权值会向正或负方向更新,导致抑制速度迟缓,产生约束效应;公式中的幂运算大大增加了计算机的计算量,并且还会增加有一定规模的深度学习网络的训练时间[22]。Tanh函数:其代数形式为:(2-2)Tanh函数的几何描述图像如下图:图2-4Tanh函数的几何描述图像Tanh函数处理了Sigmoid函数非零均值输出问题,但仍未解决梯度爆炸以及复杂的幂运算的问题。ReLU函数:其代数形式和导数形式分别为:(2-3)(2-4)ReLU函数的几何描述图像如下图:图2-5ReLU函数的几何描述图像ReLU函数有力梳理了Sigmoid函数和Tanh函数的梯度爆炸的问题,并且不需要计算幂函数,使计算机的计算量得到了极大的减少,且收敛速度远远快于这两种函数。然而,ReLU函数会产生deadReLUproblem,意思是在传输过程中可能不会激活一些神经元,从而导致在整个过程中不会更新相应的参数。(4)池化层。该层的作用主要有以下几点:特征不变性,该特性能够保证图像的特征尺度不变性,尽管压缩了图像,但仍然保留着能够识别图像的关键信息;能够降低出现过拟合的现象,即加快了损失值的收敛速度,利于优化的进行。常用的合并方法主要有两个:平均合并和最大合并,其操作过程类似于卷积操作,但最大池取池核范围内的最大像素值,平均池取池核范围内所有像素值的平均值。池化层中的操作也是通过一个窗口在输入上进行滚动实现,其操作方式和卷积层的操作非常相似。池化层的窗口简称为池化窗口,它与卷积层的互相关操作不同:池层通常执行两种操作,一种是最大池化,即计算窗口中的最大值;其次就是平均池化,即,计算窗口中所有值的平均值。01234567845782356(a)最大池化(b)平均池化图2-6不同池化效果如果采用了2*2的平均池化,那么只要特征在像素级的范围内变动不超过两个像素,就仍然可以得到正确的结果。(5)全连接层。在通过所有的卷积层及池化层提取图像的特征后,一般会加入一至两层的全连接层当作卷积神经网络的最后层,这可以把特征转换为识别种类的数值,从而判断最终的分类结果。全连接层就是所有元素都和各自权值参数相乘后再相加,其公式为:(2-5)其中,O为输出,W为权重参数,B为偏差参数,X为输入。可以看出全连接层是对输入进行的仿射变换,因为全连接层中所有的输入元素都有各自的参数参与了计算,因此称为全连接层。2.3模型训练模型训练是指通过对模型不断的迭代,依照某种方式不断将模型的参数进行优化,最终得到一个达到指定要求的模型的过程。当模型和损失函数相对简易时,例如比较浅的多层感知机和平方差损失函数,可以通过计算求解得到使得损失函数达到最小值的解,这一类解就是解析解,但是在模型较复杂的情况下,往往无法求得解析解,因此,为了尽可能减小损失函数的取值,采用优化算法的有限迭代法,得到的解称为数值解。在数值求解的优化算法中,应用最广泛的是随机梯度降低法,实际上它是一种迭代法,按照一定步长通过对损失函数上的当前计算结果对应梯度的反方向进行迭代,可以找到损失函数的局部最小值点。它的算法如下:首先选取一组模型参数的值,通常使用对权重参数进行初始化的方式,将其改为均值为0、标准差为0.01的正态分布任意抽取的样本,并将偏差参数初始化为0。然后多次迭代参数,并保证每次迭代都尽量使损失函数的值有所降低。在每一次迭代中,先由固定数量的训练数据组合成小批量B,随之随机均匀地采样一个,然后从这一小部分数据样本中得到损失函数相对于模型参数的梯度。最后,此迭代中模型参数的缩减相当于此项结果与预期设计正数的乘积。对于权重参数的更新如式2-6所示:(2-6)式中,为权重参数中第j个量,为权重参数向量,b为偏差参数,|B|为小批量样本数量,也就是批处理大小,称为学习率(learningrate),通常为一个正值,因为小样本数量和学习率都是人为设定,而不是依靠模型迭代更新,因此与其他参数不同,称为超参数。学习率的设置往往都是设置为0.001,这样可以较快的收敛,学习率的更新策略也较多,常见的有分段常数衰减和指数衰减等。批处理量的大小设置有自己的取值,取值应当适中,不能太大也不能太小,若设置太小,则会导致模型收敛慢,可能造成震荡;若设置太大,则可能导致模型泛化能力弱,且对计算资源造成巨大压力,这也就是为何要使用小批量随机梯度下降而不是直接对整个输入使用梯度下降法的原因。在实际生产实践中,批处理量大小一般设置为2的幂次,如2、4、8、16、32等。模型的计算过程可以分为两部分,一部分是计算输入的数据,输出结果,并且通过损失函数获得误差,这一过程称为正向传播。另一部分是根据损失函数达到的误差计算相关梯度,更新模型数值,实现更新迭代过程,这一过程称为反向传播。这样的改进过程称之为批处理过程。不同批处理过程中使用的样品数量不同,也就是说样本的取样是无放回的,整个数据集遍历完称为一轮。通过模型的迭代,可以将模型参数逐渐迭代至使损失函数到达最小值的最优解。2.4本章小结本章论述了深度卷积神经网络的基本原理、网络结构以及卷积神经网络的训练过程这三个方面,为后续搭建深度学习模型、训练模型以及评估实验结果提供了理论基础。第三章手机表面缺陷数据集构建要搭建手机表面的缺陷检测系统,首先要获取缺陷数据集。当前深度学习的模型在主流数据集中表现较好,但在工业检测领域的应用较少,且存在诸多不足。本章将详细介绍工业检测领域中手机表面缺陷数据集的获取、增广与缺陷标注,并通过分析缺陷类型,为后续章节中的模型搭建与训练提供参考和指导工作方向。3.1手机表面缺陷的数据集获取当前主流的深度学习网络模型在工业检测领域表现不佳的主要原因在于其针对的数据集。目前现有的数据集图片类型主要集中于动物、交通工具、日用品等,较为知名的有ImageNet和MS-COCO等,这些数据集用于描述宏观事物,而工业检测领域则要求获取更具有针对性、专一性的微观缺陷检测。手机表面缺陷与主流数据集的不同在于:检测工位拍摄的图片分辨率高,而缺陷面积较小、手机表面缺陷与背景对比不明显、缺陷形态各异,长宽比悬殊等。这导致无法在主流数据集上通过调参、迁移学习和反复训练的方式在表面缺陷数据集上达到检测标准,而需要重新建立手机表面的专用缺陷数据集。如图3-1所示,表示主流数据集与手机表面表面缺陷数据集对比。(a)COCO数据集(b)手机表面表面缺陷图3-1主流数据集与手机表面表面缺陷数据集对比本课题选用某产品的手机表面工业检测照片作为数据集,该产品一共可分为IPU1、IPU2两大工位,分别对应手机的摄像区域以及玻璃表面区域。根据缺陷出现的位置以及对应工序、缺陷样貌,将缺陷共分为五大类,分别是:崩边、纹路缺损、脏污、白点和划伤。各缺陷成因与缺陷样貌如下:(a)崩边(b)纹路缺损(c)纹路缺损(d)脏污(e)白点(f)划伤图3-2手机表面缺陷样貌其中,图(a)的崩边表示手机边缘轮廓因压伤而造成的损坏。该缺陷集中于手机摄像区域的边缘,形态狭长,属于损伤性缺陷;图(b)与图(c)分别表示纹路缺损的两种常见形态,分别为边缘纹路缺损和内部纹路缺损。边缘纹路缺损形态狭长,受损面积区域较大,而内部纹路缺损则受损面积区域较小,肉眼难以识别;图(d)表示手机出厂前因油渍、灰尘等掉落在手机表面上而造成的脏污缺陷。脏污属于非损伤性缺陷,因此在做缺陷分类时需要额外将其区分;图(e)白点的缺陷形成较为复杂,其既可能是灰尘落在表面上造成的非损伤性缺陷,也可能是表面遭到尖锐物体擦伤形成的白色点状损伤性缺陷。由于玻璃表面的反光性,因此部分白点缺陷会在其附近有个大小相同的倒影;图(f)缺陷表示划伤缺陷,是由于玻璃表面遭到尖锐物体划伤造成,属于损伤性缺陷。明确好缺陷类型后,首先需要对采集到的原图像进行图像裁剪。工业检测领域常采用工业相机来进行图片采集。工业相机价格昂贵,拍摄精度高、稳定性好,其采集的图片像素常达到上亿级别,而一个缺陷的像素往往只有几百甚至几十,因此直接通过原图来进行缺陷检测是不现实的,检测前需要将图像进行裁剪。图3-3工业相机采集的手机表面图片如图3-3所示,为工业相机采集的某型号手机表面图片。该图片像素规模为16384×14500,虽然通过传统的机器视觉检测方式可以利用阈值分割,然后通过面积筛选、长宽比筛选等方式在两亿多像素的原图上进行缺陷检测,但由于手机表面缺陷的形态多样,利用传统的机器视觉检测方法其算法复杂性太高,且不具有普适性。而基于深度学习的缺陷检测方法则只需将原本的大图裁剪为适合送入模型训练的小图,省略了提取ROI(感兴趣区域)等步骤,具有更广泛的灵活性与适用性,裁剪图片算法的流程如下所示:图3-4图像裁剪算法流程图①首先,由于工业相机获取的图像为灰白图像,而深度学习获取常用图像通道为三通道,因此在进行图像裁剪之前,需要利用Halcon的compose算子将单通道图像复制给三个通道,以得到适配的图像输入通道。②选取合适的图像输入大小。为了保证模型训练的稳定性,需要将每幅图像裁剪成大小相同的图像,深度学习常用图像输入大小为256×256、416×416、512×512以及1024×1024等,考虑缺陷在每张图片中的大小应当适中,本文选用416×416的图像进行裁剪。由于工业相机拍摄的原图的长、宽并不总是能被416整除,因此在进行裁剪之前需要将原图调整为可以被416整除的图像大小规模。如图3.3所示,图像四周存在许多非检测区域,对这些区域的去除不会影响最终检测结果,因此可以通过裁剪这些区域以满足图像被416整除的要求。③进行图像裁剪。获取图像的长、宽像素规模,创建box_list,利用pythonPIL中的Image模块将被裁剪的图像矩阵保存在box函数中。④保存被裁减图像。利用save函数将所有被裁减图像输出为PNG格式,并保存在根目录下。至此,所有图片都被裁剪为416×416格式,找出其中含有缺陷样貌的图片,即可作为本课题的缺陷图像数据集。3.2手机表面缺陷的数据增广及缺陷标注3.2.1图像数据增广根据本章第一小结分析,本文通过图像裁剪的方式获取缺陷部位的图像数据集,但在实际工程应用中,大规模的数据集获取主要存在以下两个难点:(1)数据量较少,且数据构成不均。在实际产线上,相机捕捉到的图像大多都为好品图,有缺陷的产品只占其中的少数,且并不是每种类型的缺陷样本数量都相同,类似于脏污、白点等缺陷,其缺陷样本数量明显要多于崩边、刮花等缺陷。不平衡的缺陷数量会导致模型对样本数量充足的缺陷较敏感,而对样本量不足的缺陷不敏感,最终训练得到的模型就不能达到实际应用的要求。(2)模型会对缺陷的出现位置产生依赖性。由于在对缺陷进行标注时,会包括缺陷的位置信息,过多重复的缺陷位置信息会使模型对缺陷出现位置产生依赖性,导致类似的缺陷出现在其他位置时造成漏检。因此,需要通过图像翻转、镜像等方式来降低模型对缺陷产生位置的依赖性。基于以上两个问题,目前最常用且有效的手段就是图像增广(imageaugmentation),也称数据增强。通俗来讲,图像增广就是指通过对需要训练的图片进行一系列随机变化,产生一系列相似但不同的训练样本,从而达到扩大数据集的规模的效果,因此可以提高模型的抗干扰性。图像增广对数据集的影响不局限于数量。因为数据增强改变了图片中缺陷的位置、亮度、色彩等,所以降低了模型对于此类属性的依赖性,模型可以对不同状态下的目标进行识别,因而提高模型的泛化能力。接下来介绍本文采用的图像增广手段:(a)旋转:将图片旋转90度;(b)镜像:沿图像的水平对称轴或者竖直对称轴翻转图像;(c)模糊:利用GaussianBlur算子对图像进行高斯滤波;(d)变亮、变暗:通过增加或降低图像的亮度来改变缺陷灰度值;(e)增加噪声:利用SaltandPepper(椒盐噪声)和GaussianNoise(高斯噪声)对图像进行加噪工作;通过以上的增强手段随机组合,可以有效扩充数据集,提高训练样本的多样性,降低模型对某一因素的依赖性。经过增强后的图像效果如图3-5所示。(a)原图(b)旋转(c)镜像(d)模糊(e)变亮或变暗(f)加噪图3-5图像增强后的效果传统的数据增强手段是通过对每张图片都应用数据增强,这会造成数据集过于臃肿,模型训练时间大大增长。因此本文采用随机增强,即对每一张图像都随机应用以上的图像增强手段,缩短训练时间。3.2.2缺陷标注在完成图像数据集的准备后,接下来需要对标注数据集进行构建。在深度学习的模型训练时,需要大量带有标注的样本,标注信息必须包括缺陷的位置信息、类别信息,因此需要对图片进行像素级的标注。如图3-6所示,像素级标注耗时耗力,会对实际工程项目的人力成本和时间成本造成压力。为此本文采用Labelimg完成图像标注工作。(a)(b)图3-6对手机表面缺陷进行像素级标注Labelimg是基于QtCreater平台开发的便捷式图像标注工具,该软件主要由标注界面(图3-6a)和标签界面(图3-6b)组成。标注界面主要负责将产品的缺陷出现位置进行标出,然后通过标签界面选择该缺陷所属的类别。通过这种方法,可以快速、准确地完成对缺陷的标注工作。标注完成后,labelimg会保存标注xml文件,如图3-7所示,分别对应原图图像的输入大小、缺陷类别信息以及缺陷位置信息,这些信息是后续送入模型训练的依据。输入图像大小缺陷位置信息输入图像大小缺陷位置信息缺陷类别信息图3-7保存的xml格式标注文件3.3本章小结本章详细介绍了工业检测领域中手机表面缺陷数据集的获取、增广以及缺陷标注,并通过分析缺陷类型,为后续章节中的模型搭建与训练提供参考和指导工作方向。基于YOLOv3的缺陷检测系统设计第四章基于YOLOv3的缺陷检测系统设计4.1基于深度学习的目标检测算法选择马尔是第一位提出计算机视觉理论的人。他提出“Whatiswhere”可以概括计算机视觉要解决的物体,这意味着最终输出应包括图像中包含的目标类别及目标位置[23]。虽然深度学习目标检测算法包括卷积神经网络框架,但由于其检测方法不同,又可以将它分为两类:One-Stage算法和Two-Stage算法。Two-Stage算法和One-Stage算法的主要区别在于是否生成候选区。Two-Stage算法的过程主要分为两步。首先是生成候选区,随后将这些候选区送入神经网络中,在网络中训练并预测。目前最常用的候选区生成算法是滑窗算法,依照一定大小的滑窗和步长遍历整张输入图像,每次滑动都会生成一个感兴趣区域(ROI),单张输入图片会生成多张图片进入网络。因此Two-Stage算法具有精度较高的特点,但由于计算量较大,因此计算效率会比较低。比较常见的Two-Stage算法主要是R-CNN家族,包括R-CNN、FastR-CNN、FasterR-CNN等。One-Stage算法只有一个阶段,没有生成候选区的过程,直接将输入的图片送入神经网络中,通过计算直接得到目标类别与位置,即把定位问题转为回归问题。因为没有生成候选区域的过程,因此计算量小,速度快,但是精度略低。常见的One-Stage算法有YOLO系列和SSD系列,包括YOLOv1,YOLOv2,YOLOv3、SSD、DSSD等。由于在工业生产过程中,需要实时得出产品的质量情况,以便对产品的生产过程进行调控,避免因计算结果滞后而生产大批量的次品,因此对缺陷检测手段的实时性要求较高,必须要满足对流水线上的产品快速检测的要求。由此可见,One-Stage算法比Two-Stage算法更容易满足质量检测要求,因此目标检测算法选择使用One-Stage算法。One-Stage算法中存在的YOLO算法相较于其他算法有多尺度预测机制,对于尺寸相差较大的目标也有更好的检测效果。结合手机表面缺陷大小各异、形态差距较大的实际情况,因此选择YOLOv3作为目标检测算法进行手机表面缺陷检测。4.2YOLOv3算法在功能层面,YOLOv3的网络结构可分为两个部分:darknet53骨架特征提取网络和结果预测网络。YOLOv3网络模型的结构图如图4-1所示。图4-1YOLOv3的结构图骨架特征提取网络的功能是提取输入的图片的特征,网络名称为DarkNet53,它是一种包含有52层卷积层的网络,但如果最后一层的输出层是全连接层,那就变成了53层,这也是它名称的来源。数据集中的图片和标签数据作为输入对象,数字化的图片作为训练或推理的对象直接输入并进入网络。首先,通过主干特征提取网络提取DarkNet53特征,再将网络的输出传送到后续的结果预测网络中。输入的形式通常是四维矩阵,也就是四维张量[B,C,W,H]。其中B表示batch_size,即输入批次中图片的数量;C表示图片的维度,常见的图片维度有1和3。1表示单通道灰度图,3表示三通道彩图,其中RGB也就是红绿蓝三种颜色。W和H表示图片的属性,分别为图片宽和高方向上的像素数量,也就是图像的宽和高[24]。YOLOv3的输入是格式为[B,3,416,416]的四维张量。DarkNet53具有独特的的卷积块结构和残差网络。DarkNetConv2D结构如图4-2所示。卷积块结构通过在每一个卷积部分都进行了L2正则化,即又加入了权重参数平方和。卷积部分采用填充为2,步幅为1的n*3*3卷积核进行卷积操作,根据式子,保持输出的高和宽不变,将通道数改为n。卷积块的主要作用是提取图片特征及控制通道维数量,并在卷积完成后进行小批量标准化(BN层)和激活。(a)卷积块(b)残差块图4-2基础结构块使用残差结构的网络称为残差网络,残差神经网络层如图4-3所示,具体的操作是将输入与卷积后的输出结果进行相加。图4-3残差结构残差结构主要用于解决由于网络层数过深而带来训练误差上升所导致的问题。当神经网络层数过深时,网络浅层产生了相应的变化,经过网络深层的运算后,无法忽略其数值变化,进而对模型的稳定性产生了影响。但当引入残差块后,原本模型网络学习的数据从到目标的映射,变为了,原本是直接学习真实的映射,经过残差结构处理,转变为了学习真实映射与上一层输入之间的差值,这种差值称为残差[25]。模型学习到的残差在数值上最差的结果是0值,相当于对输入做恒等变换,因此不会降低模型的精度。如图4-1所示,结果输出网络主要包含卷积块、上采样块以及联结块。卷积块的结构与骨架特征提取网络中的结构相同,通过五次反复堆叠,只用于深度挖掘图片的语义信息,而不改变输入的通道数和宽高。上采样块包括一个卷积块与一个上采样层,通过上采样层将输入特征的宽高翻倍,为联结块中将上一层的输出与骨架网络中对应输出做通道维上的联结。通过以上三种结构块,骨架网络的输出相互联结,并输出各自的预测结果,构成如图4-4所示的特征金字塔(FPN)结构:图4-4特征金字塔结构通过使用特征金字塔结构,在每个独立的图像尺度上计算特征,并进行图像内容预测,可以有效进行多尺度目标检测。结果输出网络的计算来自骨架网络的三个输入,并对应输出三个预测结果,输出大小分别是B*N*52*52、B*N*26*26以及B*N*13*13的张量。N的大小由要求网络能够识别的缺陷种类数量决定,由式4-1给出:(4-1)其中3表示三个预选框,a表示框的大小参数,由框的中心点坐标和宽高四个参数构成,1表示该框的置信度,classes则表示需要识别的类别总数。预测结果的区别在于其输出端的宽和高,分别为52*52、26*26及13*13,对应三种不同尺度的预测,图像分割的预测结果分别为52*52、26*26以及13*13。针对不同尺寸的目标,这种设计可以做到精确预测。每一个尺度上的预测对应三个预选框,如下图所示:图4-5预选框机制预选框是具有具体尺寸的,根据目标大小,可以选用不同尺寸的预选框标记目标,预选框的大小可根据预测结果进行相应调整。每一个尺度上的预测结果都有三个尺寸的预选框进行预测,最后挑选其中置信度最高的作为结果输出。图4-6缺陷检测效果基于以上的预选框机制,可以实现对目标缺陷的检测任务。以图4-6为例,该图共有三处缺陷,分别为一个崩边缺陷和两个纹路缺损缺陷,在进行检测时,模型从不同尺度上对缺陷进行预测,预选框上方的数值表示缺陷置信度,置信度最高预选框的被选中,从而将缺陷位置框出,完成缺陷检测任务。4.3本章小结本章选取了基于YOLOv3的深度学习算法,并分析了现有的常用深度学习模型。通过介绍YOLOv3算法,并对该缺陷算法的预选框机制进行设计,从而完成了模型的网络结构设计。附录第五章手机表面缺陷检测系统平台搭建与实验验证在前几个章节中,本文对基于深度学习的手机表面缺陷检测系统进行了分析与设计,为验证该模型的具体效果,以及性能是否满足工业检测要求,本章节将详细介绍实验平台的搭建,并通过实验对本文提出的算法进行验证,以此评估在真实的工业场景下的有效性和可靠性。5.1缺陷检测系统的软件平台搭建 本课题的软件平台是基于Windows系统下的Anaconda开源软件包管理系统进行搭建的,并通过Pycharm、Halcon等软件实现算法开发。PyCharm是一种PythonIDE,是Python语言开发的高效工具,该软件界面简洁,容易上手,并且基于python运行,python语言具有简单易懂、可移植性强、丰富拓展库等优点,是当前深度学习领域最受欢迎的编程语言。德国MVtec公司开发了一款机器视觉处理软件:机器视觉算法库Halcon,该软件集成大量二维图像处理算法,语言简单且调试方便,可以结合Python、C++等众多高级语言进行联合开发,开发效率较高。如图5-1所示,该课题的软件架构主要分为三部分,分别为图像预处理模块、深度学习模型搭建模块以及系统操作界面模块,接下来详细介绍这三个模块:图像预处理模块图像预处理模块深度学习模型搭建模块系统操作界面模块Pycharm+Halcon负责进行图像裁剪、增广等预处理工作负责模型搭建、模型训练及模型测试负责系统UI界面搭建Anconda+pytorch1.8.0PyQt图5-1系统软件架构图5.1.1图像预处理模块图像预处理模块由Pycharm和Halcon平台共同开发,主要负责图像的裁剪、图像数据增广以及缺陷标注工作。软件操作界面如图5-2所示,缺陷标注工作通过labelimg完成,并保存为XML文件,图像数据增广源码见附录1。为了后续模型搭建效果的验证,此模块还需要把数据集分成训练集和测试集两个部分。这里选取增广后的图像共3061张,训练集的缺陷样本构成如图5-3(a)所示,根据图表信息可知,除去少数缺陷本身数据量较少外,大多数缺陷的样本数据分布均衡,数量符合少样本的数量要求。同理的,选取255张原缺陷图像作为测试集,测试集缺陷样本构成如图5-3(b)所示。(a)pycharm软件界面(b)Halcon软件界面图5-2软件操作界面(a)训练集数据分布(b)测试集数据分布图5-3数据集缺陷类型分布5.1.2深度学习模型搭建模块第二部分为深度学习模型搭建模块,该模块基于Anconda搭建的虚拟python环境运行,并使用Pycharm作为IDE。该模块主要负责模型搭建,模型训练以及模型测试,训练好的模型文件以pth权重文件保存下来。本论文所采用的模型基于深度学习框架PyTorch实现。PyTorch由Torch7团队开发,能够使用GPU和CPU优化模型。实验使用的深度学习工作站的硬件配置如表5-1所示,软件配置如表5-2所示。表5-1深度学习工作站硬件配置名称型号主要参数CPUINTELi7-8700k6C12T@4.7GHzGPUNVIDIARTX2080Ti11GBGDDR6SSDSAMSUNG970EVO512GB内存ADATADDR416GB*2@3200MHz主板PRIMEZ390-AINTEL1151表5-2计算机软件配置名称版本深度学习平台PyTorchv1.8.0编译环境Windows1064位系统PythonPyCharmGPU运算平台CUDAv10.2GPU加速库CuDNNv7.6.5.32在模型的训练过程中,涉及到的过程主要有参数初始化、优化求解以及超参数调试。对于参数初始化方法的选择,由于模型中起的特征识别、信息提取的卷积核的作用是相同的,因此使用数据迁移,这比从头开始训练的效果要更好,随机赋值是对模型中的参数赋随机数值,一般采用将权重参数的每个元素初始化为随机采样于均值为0,标准差为0.01的正态分布,偏差初始化为0。因为要考察不同模型结构之间的差异性,所以选择随机赋值作为模型的初始化方法。第二个优化求解表示通过不断的迭代,并将损失函数不断降低。在进行模型训练时,常采用梯度下降算法,本文选用自适应矩估计算法来作为优化算法。最后一个为超参数调试。神经网络中的参数可以分为两类,分别是权值参数和超参数。超参数用于控制模型训练属性,决定模型结构。学习率是超参数中最主要的一个,用于调整参数更新的步幅。若学习率过大,则损失函数变法幅度也大;若学习率过小,则函数收敛较慢,且可能陷入局部最优。因此需要根据训练的进程选用不同的学习率,选用Adam算法进行优化的初始学习率参数一般设置为0.001,采用如式(5-1)所示的指数型衰减策略。QUOTEldecayed=l×γe式中,为学习率,QUOTEγ为控制学习率下降的乘数因子,QUOTEepoch表示迭代次数,QUOTEstep_size是调整学习率的步长,每过一定的步长,更新一次学习率。确定好模型训练的参数后,开始将数据集送入卷积神经网络模型,并进行训练。如图5-4所示,设定Freeze_Epoch迭代次数10次,Unfreeze_Epoch迭代次数40次,训练pth权重模型,基于yolov3的深度学习模型源码见附录4。图5-4开始模型训练5.1.3系统操作界面模块第三个模块为系统操作界面模块,该模块负责系统的UI界面搭建。本文的UI界面基于PyQt工具包开发,PhilThompson开发了用于创建GUI应用程序工具包的PyQt,该库基于python编程语言,是py编程语言与Qt库的成功融合。系统操作界面如图5-5所示,分别为图像显示区域、权重文件输入区域以及软件操作区域。图像显示区域负责显示待检测的原图以及缺陷检测图;权重文件输入区域负责加载训练好的pth权重文件;软件操作区域负责执行输入图片、开始检测以及批量检测图片等任务,接下来简要介绍软件检测流程。图像显示区域权重文件输入区域图像显示区域权重文件输入区域软件操作区域图5-5手机表面缺陷检测程序软件界面如图5-6所示,打开手机表面缺陷检测程序后,需要首先将训练好的权重文件加载进入系统,加载完毕后会弹出加载成功提示。图5-6权重文件加载成功提示随后输入需要检测的图片,点击开始检测按钮,即可完成对该图的缺陷检测工作,如图5-7所示。检测图中各种不同颜色的方框表示不同的缺陷类型,方框上面的数值表示缺陷类型的概率,最高为1.0,数值越高表示模型的预测结果越好。如果需要对批量图片进行缺陷检测,可以选择批量输入图片按钮,检测结果会以PNG图片格式保存在predict_image文件夹下,如图5-8所示。本系统的UI界面模块源码见附录2。图5-7进行缺陷检测图5-8批量进行缺陷检测5.2数据集构建可行性验证在第三章的手机表面缺陷数据集构建中,本文对图像的裁剪、增广方式进行设计,现基于该算法流程对数据集构建可行性进行实际效果验证。在图像数据增广小节中,本文分别采用旋转、镜像、模糊、变亮变暗、增加噪声这六种方法进行数据增广,为验证增广效果,本文抽取126张缺陷图并对这些图像进行数据增广。但在缺陷增广过程中,由于部分增广涉及旋转、镜像等改变缺陷位置的因素,因此在进行图像增广时还需修改标注xml文件中的缺陷坐标位置,否则会造成实际缺陷位置与标注位置不相符的情况,大大降低模型的准确度与可信度。如图5-9所示,当原图数据进行不同组合的增广时,其缺陷改变的位置也不尽相同。(a)原缺陷图标注位置(b)镜像图缺陷标注位置(c)逆时针旋转90°+加噪缺陷标注位置(d)逆时针旋转+镜像缺陷标注位置图5-9数据增广造成部分缺陷标注位置不准确为解决这一问题,需要根据图像的旋转方式来改变缺陷坐标。如图5-9(b)所示,对于镜像图片,设原标注坐标为x、y,改变后的坐标x1、y1,则有:x1=416-x,y1=416-y(5-2)如图5-9(c)所示,对于逆时针旋转90°的图片,则公式改写为:x1=416-y,y1=x(5-3)如图5-9(d),对于逆时针旋转90°加上镜像图片,公式改写为:x1=y,y1=416-x(5-4)依此类推,可以得到数据增广后的缺陷标注位置,并重新写入到xml文件中,缺陷标注位置更改程序源码见附录3,更改缺陷标注后的图像如图5-10所示。至此,数据集的预处理工作实行完毕。(a)原缺陷图标注位置(b)镜像图缺陷标注位置(c)逆时针旋转+加噪缺陷标注位置(d)逆时针旋转+镜像缺陷标注位置图5-10更改缺陷标注位置后的图像5.3基于YOLOv3的缺陷检测系统精度验证5.3.1评价指标在训练完成后,使用模型对测试集进行推理。推理结果的好坏需要统一的指标进行衡量。模型的评价指标较多,需要根据需求选择恰当的指标。由于检测的目标是工业应用,因此更加关注是否存在漏检,即优先检出缺陷,避免产生大量缺陷造成损失,其次是对缺陷进行分类,提供相关信息调整生产,最后是缺陷的位置信息。模型的相关属性可以用混淆矩阵(ConfusionMatrix)及其二级指标进行衡量[26]。混淆矩阵是用于统计分类模型归类结果的表格。混淆矩阵的具体形式如图5-11所示。混淆矩阵真实值positivenegative预测值positiveTPFPnegativeFNTN图5-11混淆矩阵根据被检测对象(Positive和Negative)和预测结果(Positive和Negative)的不同,可以将缺陷识别结果分为四种情况。真实值为positive,检测结果为positive( TruePositive,TP),表示检测结果准确;真实值为positive,检测结果为negative(FalsePositive,TF),表示误检;真实值为negative,检测结果为positive(FalsePositive,TF),表示漏检;真实值为negative,检测结果为negative(FalsePositiveTF),表示检测结果准确。基于混淆矩阵,衍生出几个二级指标,分别是准确率(accuracy),精确率(precision),召回率(recall)和特异度(specificity),计算方式如下:QUOTEaccuracy=TP+TNTP+(5-6)(5-7)(5-8)准确率衡量的是模型中所有正确判断结果占总推理结果的比重;精确率表征在所有预测为positive的结果中,正确结果的比重;召回率代表在真实值为positive中,预测正确的比重;特异度代表真实值为negative中,推理正确的比重。由于在现场操作中,一般不改变置信度阈值,因此在这里不使用平均精确度和均值平均精度指标,而是选取准确率、召回率、精确率作为模型在手机背板表面缺陷检测的性能衡量指标。5.3.2精度验证实验基于YOLOv3的深度学习模型训练完毕后,在系统界面输入权重文件,并通过批量导出图片按钮将检测结果图进行批量导出,如图5-12所示。图5-12批量导出检测图依照上一小节所讲述的评价指标,统计测试集的原图缺陷数量与检测图缺陷数量,并绘制混淆矩阵,如表5-3所示。表5-3最终测试结果混淆矩阵原图检测图崩边纹路缺损脏污白点划伤无缺陷总计准确率总准确率崩边37000023995.0%91.6%纹路缺损07210078090.0%脏污017400108587.1%白点59116196.7%划伤2012195.2%无缺陷00000286286100%通过实验结果对比分析,可以得到以下结论:由表5-3可知基于YOLOv3的权重模型经过50次迭代后模型测试效果较好,loss函数呈收敛趋势,各类缺陷检测效果基本都能达到90%以上的准确率,但仍存在一部分漏检情况,下面主要分析漏检的情况。如图5-13所示,从图中可以看出在手机背板的闪光灯孔周围存在三块脏污缺陷,但在实际检测时模型只检测到了两块,产生这类漏检的情况主要有两大原因:一是漏检的缺陷样貌过小,且先前的训练集中没有与之类似样貌的缺陷,导致模型训练不充分,造成漏检;二是缺陷过于靠近图片边缘,或者在进行图像裁剪时将一整块大型缺陷裁剪为两份,导致在进行测试集验证时检测不完全。脏污缺陷不同于其他缺陷类型,该缺陷样貌众多且不规则,其在手机背板上造成的黑块既可能是油墨等黏着性污渍,也有可能是毛丝等飘落上去的污渍,因此要解决这类缺陷的漏检问题,可以通过增加训练集样本的方式来解决。图5-13造成漏检的缺陷样貌除了脏物类缺陷样本集不足的问题,训练的权重模型还存在部分误分类的问题。如图5-14所示,从图中可以看出,手机纹路的边缘区域可能由异物刮蹭后并沾上了油渍,因此该缺陷类型其实即属于纹路缺损,又属于脏污缺陷。造成误分类的主要原因是由于两类缺陷样貌相近导致的,要解决误分类只能通过在训练集的标注阶段将两类缺陷进行仔细分类,但在实际工程应用中,误分类情况几乎不可避免,但对缺陷检测效果影响不大。图5-14缺陷样貌相近造成误分类经过如上分析,可以看出本文搭建的基于深度学习的手机背板缺陷检测系统其检测效果基本能够满足要求,该系统的综合检测准确率达到91.6%,并且能在既完整检测缺陷的基础上,并将缺陷自动划分为崩边、纹路缺损、脏污、白点、划伤这五大类。5.4本章小结本章节详细介绍了实验平台的搭建,并通过实验对本文提出的算法进行验证,以此评估在真实的工业场景下的有效性和可靠性。第六章总结与展望6.1总结产品质量控制是手机生产过程中的必要环节,其中最常见的质量控制方法即为表面缺陷检测。针对手机表面缺陷控制任务中的缺陷种类多样、检测实时性要求高以及手机表面纹理复杂等问题,本文以《基于深度学习的印刷品表面缺陷识别方法研究》为题,研究了一种具有高效率、高精度、高适应性的缺陷检测算法,有效解决了在表面纹理复杂多变、样本种类多样、样本数量不均、样本数量不足的问题,并且能在保证效率与精度的同时,从源头减少缺陷产生的可能性,并降低相关检测需要付出的生产力和劳动力成本。本课题主要完成了了以下几点工作:(1)研究了手机屏幕的缺陷特性,分析了客户对缺陷标准的需求,拟定义了一个缺陷筛选标准,该标准主要针对的是手机表面的崩边、纹路缺损、脏污、白点和划伤进行面积或长度的标准筛选。(2)针对手机表面缺陷中样本数量不均,正样本数量无法满足模型达到收敛所需数量,以及不同生产流程与工艺导致

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论