一种基于改进深度学习算法的PCB缺陷图像检测方法

文档序号:32393812发布日期:2022-11-30 09:26阅读:46来源:国知局
一种基于改进深度学习算法的PCB缺陷图像检测方法
一种基于改进深度学习算法的pcb缺陷图像检测方法
技术领域
1.本发明涉及印刷电路板(printed circuit board,pcb)缺陷检测领域,具体涉及一种基于改进深度学习算法的pcb缺陷图像检测方法。


背景技术:

2.印刷电路板是信息产业底层硬件的核心元件,被广泛应用于工业制造、通讯、医疗、航天等领域。随着全球化的不断发展,中国以市场大、生产成本低的优势吸引到了大量投资,已成为全球最大的pcb生产国,而且产品品类齐全,在全球pcb行业的地位举足轻重。但由于pcb的制造过程繁杂,每一步生产工序均可能产生产品生产质量问题。因此,为了保证pcb产品的正常销售,需要在出厂之前对其进行缺陷检测。而传统的人工和机械检测方法存在易误判、漏检、检测准确率低以及破坏产品表面结构等诸多不足,后续出现的传统图像处理算法虽然在一定程度上改善了上述情况,但是在检测个别电路复杂、连通性较弱和特征离散的缺陷种类时,使用阈值分割的方法无法有效对缺陷进行线性处理,从而导致检测率不高。因此利用深度学习技术进行pcb缺陷识别显得尤为重要。
3.近年来,深度学习算法在机器视觉、图像分类、目标检测、智能机器人等领域取得了突破性进展,恰好能弥补传统算法在pcb缺陷检测的短板。深度学习主要是采用神经网络提取输入图像的高层特征,根据特征对样本进行分类、检测等操作,避免了手工提取特征,具有较好的鲁棒性和泛化能力,能够很好地适用pcb缺陷识别检测领域。而且深度学习对不同的检测任务适应性强,通过对不同数据集进行学习,即可能满足工业生产检测的需要。


技术实现要素:

4.本发明的目的在于针对已有技术的不足,提供一种基于改进深度学习算法的pcb缺陷图像检测方法,作用于pcb的各种形态缺陷图像,可改善传统人工和机械检测方法存在易误判、漏检、检测准确率低以及破坏产品表面结构等诸多不足,克服传统图像处理算法对于个别电路复杂、连通性较弱和特征离散的缺陷种类时,使用阈值分割的方法无法有效对缺陷进行线性处理,从而导致检测率不高的缺点。这大大提高了工作效率,降低了人力检测成本,提高生产的效率,促进pcb缺陷自动检测的发展。
5.为实现以上目的,本发明所提供的技术方案为:
6.一种基于改进深度学习算法的pcb缺陷图像检测方法,包括以下操作步骤:
7.(1)建立图像数据集:建立pcb图像数据集,获取多种类pcb缺陷图像,并进行标注;
8.(2)将focal loss函数代替原yolov3模型中的mse loss函数。
9.(3)将spp模块(spatial pyramid pooling,空间金字塔池化结构)嵌入于支路小目标检测头。
10.(4)将cbam模块(convolutional blockattention module,卷积注意力模块)并联融入yolov3模型。
11.(5)将pcb缺陷图像的数据集,分为训练集、验证集以及测试集,依次对改进后的
yolov3模型进行训练、测试,最终实现pcb缺陷类别的自动化和智能化识别。
12.优选地,所述的步骤(1)具体包括:
13.(1.1)由专业人员对pcb外观缺陷检测机输出的pcb图片进行收集和整理,最终得到有缺陷的图像数据集。
14.(1.2)在步骤(1.1)中整理好的pcb图像数据集基础上,使用目标检测开源软件lalbelimg工具进行标注,并生成相应的xml格式的标签文件,最终得到pcb缺陷图像标签文件。
15.优选地,所述的步骤(2)具体包括:
16.针对正负样本不均衡问题进行改进:提出了将focal loss函数代替原yolov3模型中的mse loss函数的改进方式。
17.(2.1)目标检测的算法主要可以分为两大类:单阶段(one-stage)检测和双阶段(two-stage)检测。事实上,单阶段目标检测算法识别精度会低于两阶段算法。以faster r-cnn为代表的双阶段检测算法通过区域建议网络获得感兴趣的候选区域(roi),这些候选区域会先经过一个二分类神经网络。该网络能有效地将边界框的正负样本比例控制为1:3,从而分成背景以及包含目标物体的前景两类。而以yolo为代表的单阶段检测算法没有对边界框进行背景与目标的二分类筛选,结果是一张图像可能生成大量的边界框,但是其中只有很少一部分是包含目标物体的,即大量的边界框为负样本。
18.单阶段算法的准确率不如双阶段的原因主要是样本的类别不均衡。训练的样本中包含着正负样本,正样本一般是指待检测物体,负样本一般指无关背景,正负数量的比例不同即为不均衡。当训练多类样本时,各类样本数据量的不同也会导致正样本之间的不均衡。此外不同类样本中会出现难易分类样本。难分类样本的损失值大,其对网络影响较大,应该是重点关注的对象。易分类样本通常也包括背景类,这类样本损失值小,对网络反向传播的影响小。若正负样本不均衡,负样本数量太大,即背景类无关样本边界框过多,则这一部分损失占总体损失的大部分,因此便会造成模型的优化方向往数量较多的易分类样本主导,进而导致了网络难以学习到目标的有效特征,造成网络退化的现象。合理的正负样本比可以加强网络对有效目标特征的关注,这对于检测精度的提升十分关键。而一种经典的解决正负样本不均衡问题的方法,即使用focal loss损失函数。
19.(2.2)focal loss是在交叉熵损失函数(ce loss)的基础上进行的修改,其基本思想就是在训练的过程中,动态地控制正负样本和难易分类样本的权重,使网络在更新参数时更加重视带有目标特征的样本。本质上,它通过两个超参数来调整错分样本的训练权重,增加或者减少对于一些错分样本的损失值,避免在训练过程中被大量的简单负样本主导模型训练方向,所以可以缓解一部分正负样本不均衡的问题。
20.对于二分类问题,二分类交叉熵损失函数的公式如下:
[0021][0022]
上式中,y

表示经过激活函数的输出,值在0-1之间,也是样本的预测值。y表示该样本的真实标签值。对于正样本而言,即当y=1时,预测值越大,损失值越小;对于负样本而言,即当y=0时,预测值越小,损失值越小。ce loss在大量简单样本的训练过程中比较缓慢,而且可能无法收敛至最优。
[0023]
为了平衡正负样本比例,加入第一个超参数α。公式如下:
[0024][0025]
在实际应用中,α根据逆类别频率或者交叉验证得到;当负样本数量小于正样本数量的情况下,正样本总的损失会淹没小量负样本总的损失,网络无法学习到负样本的特征。此时若取α=0.25,代表网络需要平衡正样本的权重,即正样本要比负样本占比小,因此网络便得以区分负样本。
[0026]
为了处理难易样本不均衡的问题,引入第二个超参数(1-y

)
γ
,得到最终focal loss公式:
[0027][0028]
当γ>0时,对于易分类样本的损失将会更小,困难样本的损失会变大。对于正类样本而言,易分样本的y

大于0.5,此时(1-y

)
γ
的值便会减小,由于0-1之间数字的连乘会导致这时的损失函数值更小;而难分样本的y

小于0.5,此时该样本的损失便会相对更大。对于负类样本而言,难分样本的损失值远比易分样本的损失值要大,模型便会趋向于将负样本预测准确。总而言之,有了第二个超参数,模型将会更加关注损失函数值较大的难分样本,减少了易分样本的影响。
[0029]
(2.3)由于yolov3特殊的预测机制,网络最终会生成(13
×
13
×
3+26
×
26
×
3+52
×
52
×
3)个预测框。其中,只有当先验框与真实框之间的交并比大于所设阈值(一般是0.5)时,先验框才会根据预测值调整大小与位置成为正样本,其余的预测框均为负样本。因此,一张图片中正样本与负样本比例失衡非常严重。在yolov3目标检测网络中,损失函数分为三个部分:定位损失、置信度损失以及分类损失。定位损失函数是mse loss函数,它用于计算预测框的位置偏差。分类损失函数是二分类的交叉熵,即把所有类别的分类问题归结为是否属于这个类别,这样就把多分类问题转化为二分类问题。因此,为了解决正负样本不均衡问题,应该调整正样本的权重以及大量负样本的权重。最终,本发明决定将作为置信度损失的mse loss函数改进为focal loss。
[0030]
优选地,所述的步骤(3)具体包括:
[0031]
针对输入图片经过裁剪、拉伸等操作造成的信息丢失的问题进行改进:将spp模块嵌入于支路小目标检测头。
[0032]
(3.1)在yolo之前的卷积神经网络中,网络的输入图像大小要求是固定的,为了满足这一条件,需要对输入图像进行裁剪或拉伸等操作。这两种方式可能出现不同的问题:(1)原始图像经过裁剪后,会有部分与目标相关的特征被裁剪掉,被裁剪掉的特征必然会对特征的提取造成一定的影响;(2)原始图像经过拉伸后,会使目标物体发生形变,导致目标物体的位置信息发生扭曲,从而对特征提取产生影响。如果识别目标尺寸变化多样,所检测的pcb缺陷因为其种类不同所以形态也不一致,于是无法提前定义好图像的尺寸。
[0033]
一般的卷积神经网络主要由三个模块构成,分别是卷积、池化和全连接。卷积层通
过滑动窗口操作对输入图像进行加性或者乘性特征计算,其对输入图像的尺寸没有过高的要求。只需要保证图像尺寸比卷积核尺寸大即可,即卷积层可以处理任意尺寸大小的图像,并输出任意大小的特征图。对于池化操作,由于该操作是直接在图像上对像素进行线性操作,而无其他额外参数,因此,池化对输入图像的大小也没有要求。但对于全连接层而言,由于内部神经元固定,训练之后,所得的权重矩阵是固定的。矩阵乘法中,要求相乘的两个矩阵行列维度一致,因此固定的权重矩阵要求输入网络的图像尺寸也是固定的。在很多实际应用场景中,所收集到的图像大小不一定是固定的,这就不能满足全连接层对固定输入图像尺寸的需求,进而影响网络的前向传播过程。
[0034]
而spp结构可以改善上述情况,将spp结构应用于深度卷积神经网络中时,有以下两个显著的特点。第一,当深度卷积神经网络结构中存在全连接层且输入网络的图像尺寸没有限制的情况下,只要将spp结构应用于全连接层之前,那么在前向传递时,图像经过spp结构的池化操作后便可以输出固定大小的特征图,以此来满足全连接层对于固定大小输入的需求。同时也避免了输入图片经过裁剪、拉伸等操作造成的信息丢失的问题。第二,特征图包含了某些特征的响应强度以及对应的空间位置两个方面的信息。spp结构首先把前一层卷积操作得到的特征图通过不同大小的池化核进行再次特征提取,然后把提取之后的特征进行聚合。在一定程度上,多尺度特征的提取可以得到输入图像不同的空间位置信息,最后的聚合操作可以总结所分离的重要上下文特征,以增加主干网络的多尺度特征接收能力,从而提高算法检测的准确度。
[0035]
在深度神经网络中,最后一个全连接层的作用往往是将模型学习到的目标物体特征映射到样本标记空间(即分类器或者检测器)。spp结构通常应用于最后一个全连接层之前,用于提取多尺度的空间位置信息,以此增加该支路上的感受野。但在yolov3网络中,用于映射的全连接层被1
×
1卷积层代替,1
×
1卷积层拥有跨通道信息交互的功能,它能改变特征图的通道数,实际上也起到了和全连接层类似的作用。由于卷积层的计算量远小于全连接层,将由池化运算搭建而成的spp结构应用于1
×
1卷积层之前,也不会由于计算量的急剧上升而改变yolov3原有的分类特性。同时分别将spp模块嵌入于主干路大目标检测头的yolov3模型、将spp模块嵌入于支路小目标检测头的yolov3模型、将spp模块嵌入于三个检测头的yolov3模型,经过这三组实验最终得出:加入spp模块后的yolov3模型的损失值均比原yolov3模型的损失值要小。对比模型最后的训练集和验证集loss值之差发现,将spp模块嵌入于支路小目标检测头的yolov3模型的损失值最小,而且其也是三者之中唯一验证集loss值低于训练集loss值的模型。这说明对于同一批训练集来说,将spp模块嵌入于支路小目标检测头的yolov3模型对于pcb缺陷特征的学习能力更强。
[0036]
优选地,所述的步骤(4)具体包括:
[0037]
针对原yolov3模型的特征提取能力不足的问题进行改进:将cbam模块并联融入yolov3模型。
[0038]
(4.1)通道注意力ca模块利用特征通道间的关系来生成通道注意力特征图,由于特征图的每个通道都被视为特征检测器,因此通道注意力集中于确定输入图像中的目标是“什么”。为了有效地计算通道注意力,需要压缩输入特征图的空间维度。为了聚合空间信息并映射至通道维度,通常使用的方法是平均池化,因为该操作能够帮助网络有效地学习目标物体的范围和细节信息。除此之外,最大池化操作也在可以收集目标物体在另一个特征
空间中的重要线索,并通过这一独特的物体特征推断出更精细的通道注意力。最大池化意在保留物体的边缘信息,平均池化意在保留物体的纹理信息,将两种信息结合起来,有助于网络更加清晰地认识检测目标。
[0039]
输入特征图经过通道注意力模块时,首先会分别经过平均池化和最大池化操作,将特征图内部的信息汇总成两个不同的空间向量,分别表示平均池化特征和最大池化特征,空间向量的长度是原特征图的通道维度。然后,这两个空间向量会流经一个共享网络,共享网络由一个具有隐藏层的多层感知器构成。空间向量先被压缩成原来长度的十六分之一,然后再扩展成原来的长度。这种提取通道注意力的方法借鉴了se-net(squeeze-and-excitation networks)。由于在网络训练的过程中,每个通道包含的信息不同且对图像任务的贡献程度不一,因此,在网络训练过程中需要对通道的重要程度进行压缩。在某种程度上,压缩的空间向量具有全局感受野的作用。随后根据训练完成的通道重要度,对空间向量进行扩展,这也是特征的第二次标定。最后,将输出的两个空间向量进行逐像素的加和操作,再经过sigmoid激活函数,生成最终的通道注意力向量。
[0040]
(4.2)空间注意力sa模块利用特征之间的空间关系来生成空间注意力特征图,主要关注在空间层面的图像特征。通常来说,空间注意力操作所生成的特征矩阵大小与输入特征图的大小一致,且通道数量会压缩成1,从而关注更多的空间信息。与通道注意力模块所不同的是,空间注意力模块重点关注的是给定输入图像中的目标在“哪里”,这与通道注意力模块是互补的。在计算空间注意力时,使用与通道注意力模块中相同的最大池化和平均池化操作。不同之处在于,通道注意力模块中,池化操作是在h(图像的高度)
×
w(图像的宽度)维度上计算的,而在空间注意力模块中,池化操作是在通道维度上计算的,因为沿通道轴应用池化操作可以有效地突出显示物体的区域信息。
[0041]
经过通道注意力模块后的特征图,同样也会被输送至空间注意力模块。首先会进行在通道维度的池化操作,将特征图的空间信息聚合在一个平面,该平面的大小为h
×
w,两个池化操作分别得到平均池化平面和最大池化平面,且平面的通道数为1。接着,使用concat操作在通道维度上连接两个平面,生成一个宽度为2的特征图。在空间注意力模块中,最大池化编码显著的位置信息,平均池化编码包括目标周围物体的全局位置信息,连接两个特征平面是将两种不同特征信息融合起来,增强网络的特征表达能力。然后在已经连接的空间特征平面上,应用卷积操作再次将空间平面的宽度降为1,此时的特征图中便包含了应该强调或抑制的位置信息。最后,经过sigmoid操作,生成最终的空间注意力。
[0042]
(4.3)在yolov3目标检测网络中,主干网络框架是darknet53。yolov3模型结构图可知,它是由多个残差单元构成的。残差单元中的每个残差块借鉴了最原始的resnet结构,主路结构使用1
×
1卷积降维,然后使用3
×
3卷积提取特征,最后将旁路结构中自身与提取的特征图相加。由此可见,残差块提取图像特征主要依赖3
×
3卷积核,这样单一提取特征的方式的一个优势便是计算量小。但对于卷积运算来说,它提取特征的方式是滑动窗口,这也就说明卷积运算对于大部分特征一视同仁。对于要完成的pcb缺陷检测任务来说,ng所涉及的缺陷种类不同,且对于无缺陷图像也即背景类特征也有要求,因此单一的提取方式不太适用pcb缺陷检测。注意力机制可以关注图像中目标的位置信息与特征信息,增强模型的特征提取能力,且其中空间聚合操作可以强化所学习的特征,进而能帮助模型关注更多的特征信息。为此,本发明改进了原始残差块的结构,将cbam模块嵌入了yolov3网络中。
[0043]
与现有技术相比,本发明具有如下显而易见的突出实质性特点和显著的技术进步:
[0044]
1.本发明基于改进深度学习算法的pcb缺陷图像检测方法,改善了数据集正负样本不均衡的问题、提高了模型对pcb小缺陷的检测精度,增强了网络对于检测图像的特征表达、重要特征信息的提取,使得本发明pcb缺陷检测算法具有较好的鲁棒性和泛化能力。
[0045]
2.本发明利用改进后的模型对pcb缺陷图像进行检测,新模型相对于原yolov3模型,在敏感性这一指标有所提升,表明改进后的模型具有较好的pcb缺陷检测性能。在同等条件下的实验对比,在0.1阈值下模型的敏感性达到了97.26%,在pcb缺陷检测任务中具有较好的性能。
附图说明
[0046]
图1是本发明优选实施例的pcb缺陷图像检测方法的流程示意图。
[0047]
图2是本发明优选实施例的pcb缺陷样本类型。
[0048]
图3是本发明优选实施例的yolov3原目标检测网络示意图。
[0049]
图4是本发明优选实施例的spp的网络结构图。
[0050]
图5是本发明优选实施例的通道注意力模块的结构图。
[0051]
图6是本发明优选实施例的空间注意力模块的结构图。
[0052]
图7是本发明优选实施例的最终改进后的yolov3模型结构图。
[0053]
图8是本发明优选实施例的pcb缺陷检测实验中yolov3模型和改进型yolov3模型的roc曲线。
具体实施方式
[0054]
下面通过附图和优选实施例对本发明做进一步说明。
[0055]
实施例一:
[0056]
参见图1,一种基于改进深度学习算法的pcb缺陷图像检测方法,操作步骤如下:
[0057]
(1)建立图像数据集:建立pcb图像数据集,获取多种类pcb缺陷图像,并进行标注,部分pcb缺陷样本类型,如图2所示。
[0058]
(2)针对正负样本不均衡问题进行改进:提出了将focal loss函数代替原yolov3模型中的mse loss函数。
[0059]
(3)针对输入图片经过裁剪、拉伸等操作造成的信息丢失的问题进行改进:将spp模块嵌入于支路小目标检测头。
[0060]
(4)针对原yolov3模型的特征提取能力不足的问题进行改进:将cbam模块并联融入yolov3模型。
[0061]
(5)pcb缺陷检测:将pcb缺陷图像的数据集,分为训练集、验证集以及测试集,依次对改进后的yolov3模型进行训练、测试,最终实现pcb缺陷类别的自动化和智能化识别。
[0062]
本实施例一种基于改进深度学习算法的pcb缺陷图像检测方法,作用于pcb的各种形态缺陷图像,可改善传统人工和机械检测方法存在易误判、漏检、检测准确率低以及破坏产品表面结构等诸多不足等缺点,提高了工作效率,降低了人力检测成本,提高生产的效率,实现pcb缺陷的自动检测。
[0063]
实施例二:
[0064]
本实施例与实施例一基本相同,特别之处如下:
[0065]
所述的步骤(2)针对正负样本不均衡问题进行改进:提出了将focal loss函数代替原yolov3模型中的mse loss函数的改进方式。目标检测的算法主要可以分为两大类:单阶段(one-stage)检测和双阶段(two-stage)检测。事实上,单阶段目标检测算法识别精度会低于两阶段算法,单阶段算法的准确率不如双阶段的原因主要是样本的类别不均衡。而一种经典的解决正负样本不均衡问题的方法,即使用focal loss损失函数。由于yolov3特殊的预测机制,网络最终会生成(13
×
13
×
3+26
×
26
×
3+52
×
52
×
3)个预测框。其中,只有当先验框与真实框之间的交并比大于所设阈值(一般是0.5)时,先验框才会根据预测值调整大小与位置成为正样本,其余的预测框均为负样本。因此,一张图片中正样本与负样本比例失衡非常严重。在yolov3目标检测网络中,损失函数分为三个部分:定位损失、置信度损失以及分类损失。定位损失函数是mse loss函数,它用于计算预测框的位置偏差。分类损失函数是二分类的交叉熵,即把所有类别的分类问题归结为是否属于这个类别,这样就把多分类问题转化为二分类问题。因此,为了解决正负样本不均衡问题,应该调整正样本的权重以及大量负样本的权重。最终,本发明将作为置信度损失的mse loss函数改进为focal loss。
[0066]
所述的步骤(3)针对输入图片经过裁剪、拉伸等操作造成的信息丢失的问题进行改进:将spp模块嵌入于支路小目标检测头。在深度神经网络中,最后一个全连接层的作用往往是将模型学习到的目标物体特征映射到样本标记空间(即分类器或者检测器)。spp结构通常应用于最后一个全连接层之前,用于提取多尺度的空间位置信息,以此增加该支路上的感受野。但在yolov3网络中,用于映射的全连接层被1
×
1卷积层代替,1
×
1卷积层拥有跨通道信息交互的功能,它能改变特征图的通道数,实际上也起到了和全连接层类似的作用。由于卷积层的计算量远小于全连接层,将由池化运算搭建而成的spp结构应用于1
×
1卷积层之前,也不会由于计算量的急剧上升而改变yolov3原有的分类特性。同时分别将spp模块嵌入于主干路大目标检测头的yolov3模型、将spp模块嵌入于支路小目标检测头的yolov3模型、将spp模块嵌入于三个检测头的yolov3模型,经过这三组实验最终得出:加入spp模块后的yolov3模型的损失值均比原yolov3模型的损失值要小。对比模型最后的训练集和验证集loss值之差发现,将spp模块嵌入于支路小目标检测头的yolov3模型的损失值最小,而且其也是三者之中唯一验证集loss值低于训练集loss值的模型。这说明对于同一批训练集来说,将spp模块嵌入于支路小目标检测头的yolov3模型对于pcb缺陷特征的学习能力更强。
[0067]
所述的步骤(4)针对原yolov3模型的特征提取能力不足的问题进行改进:将cbam模块并联融入yolov3模型。在yolov3目标检测网络中,主干网络框架是darknet53。如图3所示,yolov3模型结构图可知,它是由多个残差单元构成的。残差单元中的每个残差块借鉴了最原始的resnet结构,主路结构使用1
×
1卷积降维,然后使用3
×
3卷积提取特征,最后将旁路结构中自身与提取的特征图相加。由此可见,残差块提取图像特征主要依赖3
×
3卷积核,这样单一提取特征的方式的一个优势便是计算量小。但对于卷积运算来说,它提取特征的方式是滑动窗口,说明卷积运算对于大部分特征一视同仁。对于要完成的pcb缺陷检测任务来说,ng所涉及的缺陷种类不同,且对于无缺陷图像也即背景类特征也有要求,因此单一的
提取方式不太适用pcb缺陷检测。注意力机制可以关注图像中目标的位置信息与特征信息,增强模型的特征提取能力,且其中空间聚合操作可以强化所学习的特征,进而能帮助模型关注更多的特征信息。为此,本发明改进了原始残差块的结构,将cbam模块嵌入了yolov3网络中。
[0068]
本实施例方法利用改进型yolov3网络结构,用于pcb缺陷图像检测;该卷积神经网络改善了数据集正负样本不均衡影响模型泛化性的问题,解决了输入图片因裁剪、拉伸等操作而信息丢失的问题。该模型更关注图像中目标的位置信息与特征信息,增强模型的特征提取能力,且其中空间聚合操作可以强化所学习的特征,进而能帮助模型关注更多的特征信息,最终提升模型对pcb缺陷的检测能力,能满足工业生产中的pcb缺陷检测要求。
[0069]
实施例三:
[0070]
在本实施例中,参见图1,一种基于改进深度学习算法的pcb缺陷图像检测方法,具体如下:
[0071]
(1)获取pcb缺陷图像,利用labelimg软件将图像进行标注并建立pcb图像训练数据集以及测试数据集。其中52000张缺陷图像作为训练数据,包括ng_au41类图像一共7000张,ng_ge22类图像一共25000张,ng_ge57类图像一共13000张,划伤、空洞、残渣等其他缺陷合计7000张。图像按照随机顺序输送网络训练,按照9.5∶0.5的比例划分为训练集和验证集,即49400张图像用于训练,2600张图像用于训练过程中的验证。此外,测试集分为两类,共280000张图片,有缺陷ng图片100000张,无缺陷ok图片180000张,其中ng图片里各种类型的缺陷均已覆盖,其比例大致与训练集中缺陷比例相似。
[0072]
(2)针对正负样本不均衡问题进行改进:提出了将focal loss函数代替原yolov3模型中的mse loss函数的改进方式。目标检测的算法主要可以分为两大类:单阶段(one-stage)检测和双阶段(two-stage)检测。事实上,单阶段目标检测算法识别精度会低于两阶段算法,单阶段算法的准确率不如双阶段的原因主要是样本的类别不均衡。而一种经典的解决正负样本不均衡问题的方法,即使用focal loss损失函数。由于yolov3特殊的预测机制,网络最终会生成(13
×
13
×
3+26
×
26
×
3+52
×
52
×
3)个预测框。其中,只有当先验框与真实框之间的交并比大于所设阈值(一般是0.5)时,先验框才会根据预测值调整大小与位置成为正样本,其余的预测框均为负样本。因此,一张图片中正样本与负样本比例失衡非常严重。在yolov3目标检测网络中,损失函数分为三个部分:定位损失、置信度损失以及分类损失。定位损失函数是mse loss函数,它用于计算预测框的位置偏差。分类损失函数是二分类的交叉熵,即把所有类别的分类问题归结为是否属于这个类别,这样就把多分类问题转化为二分类问题。因此,为了解决正负样本不均衡问题,应该调整正样本的权重以及大量负样本的权重。最终,本发明决定将作为置信度损失的mse loss函数改进为focal loss。
[0073]
(3)针对输入图片经过裁剪、拉伸等操作造成的信息丢失的问题进行改进:将spp模块嵌入于支路小目标检测头。在深度神经网络中,最后一个全连接层的作用往往是将模型学习到的目标物体特征映射到样本标记空间(即分类器或者检测器)。spp结构通常应用于最后一个全连接层之前,用于提取多尺度的空间位置信息,spp结构如图4所示,以此增加该支路上的感受野。但在yolov3网络中,用于映射的全连接层被1
×
1卷积层代替,1
×
1卷积层拥有跨通道信息交互的功能,它能改变特征图的通道数,实际上也起到了和全连接层类似的作用。由于卷积层的计算量远小于全连接层,将由池化运算搭建而成的spp结构应用于1×
1卷积层之前,也不会由于计算量的急剧上升而改变yolov3原有的分类特性。同时分别将spp模块嵌入于主干路大目标检测头的yolov3模型、将spp模块嵌入于支路小目标检测头的yolov3模型、将spp模块嵌入于三个检测头的yolov3模型,经过这三组实验最终得出:加入spp模块后的yolov3模型的损失值均比原yolov3模型的损失值要小。对比模型最后的训练集和验证集loss值之差发现,将spp模块嵌入于支路小目标检测头的yolov3模型的损失值最小,而且其也是三者之中唯一验证集loss值低于训练集loss值的模型。这说明对于同一批训练集来说,将spp模块嵌入于支路小目标检测头的yolov3模型对于pcb缺陷特征的学习能力更强。
[0074]
(4)针对原yolov3模型的特征提取能力不足的问题进行改进:将cbam模块并联融入yolov3模型。在yolov3目标检测网络中,主干网络框架是darknet53。由图3所示,yolov3模型结构图可知,它是由多个残差单元构成的。残差单元中的每个残差块借鉴了最原始的resnet结构,主路结构使用1
×
1卷积降维,然后使用3
×
3卷积提取特征,最后将旁路结构中自身与提取的特征图相加。由此可见,残差块提取图像特征主要依赖3
×
3卷积核,这样单一提取特征的方式的一个优势便是计算量小。但对于卷积运算来说,它提取特征的方式是滑动窗口,这也就说明卷积运算对于大部分特征一视同仁。对于要完成的pcb缺陷检测任务来说,ng所涉及的缺陷种类不同,且对于无缺陷图像也即背景类特征也有要求,因此单一的提取方式不太适用pcb缺陷检测。注意力机制可以关注图像中目标的位置信息与特征信息,增强模型的特征提取能力,且其中空间聚合操作可以强化所学习的特征,进而能帮助模型关注更多的特征信息。为此,本发明改进了原始残差块的结构,将cbam模块嵌入了yolov3网络中。
[0075]
提出将focal loss函数代替原yolov3模型中的mse loss函的改进方式,是为了解决单阶段目标检测算法中由于正负样本不均衡而造成模型预测结果有所偏差的问题。提出在yolov3检测头的1
×
1卷积层之前嵌入空间金字塔池化结构的改进方式,是以多池化核的方式提取pcb缺陷的多尺度特征。提出在yolov3主干网络中应用通道注意力和空间注意力模块的改进方式,通道注意力模块和空间注意力模块结构如图5和图6所示,以使模型可以更多地关注图像中的缺陷信息,从而提升模型整体的特征提取能力。在以上改进基础上,本发明将综合以上的改进方法,基于focal loss损失函数将spp模块嵌入于支路小目标检测头、并且将cbam模块并联融入yolov3模型,从而提出改进型yolov3模型。改进后的模型结构如图7所示。
[0076]
(5)将pcb图片集划分为训练集、验证集和测试集,利用改进后的yolov3模型进行训练、测试。对于模型性能的好坏,即模型的泛化能力,需要用某个指标来衡量。在深度学习中,常用精确率(precision)和召回率(recall)来衡量一个模型分类能力的好坏,但在本发明中,为了减轻样本不均衡这一现象,使用敏感性(specificity)和特异性(sensitivity)两个指标作为评判标准。以上指标是基于深度学习中的混淆矩阵来计算的,混淆矩阵如表1所示。
[0077]
表1混淆矩阵
[0078][0079]
混淆矩阵各项解释为:
[0080]
(1)tp(真正例):实际为正类,预测为正类数;
[0081]
(2)fp(假正例):实际为负类,预测为正类数;
[0082]
(3)fn(假负例):实际为正类,预测为负类数;
[0083]
(4)tn(真负例):实际为负类,预测为负类数;
[0084]
特异性(specificity)是针对负样本而言的,它的含义是在实际为负的样本中被预测为负样本的概率。在本发明中,代表被预测正确的ok图片数量占所有ok图片数量的比例。其公式如下:
[0085][0086]
敏感性(sensitivity)的定义与召回率相同,均是在实际为正的样本中被预测为正样本的概率,其公式如下:
[0087][0088]
同时为了方便统计数据以及对比实验结果,在预测过程中,若检测结果是ok类,则将其统计为负类,若检测结果不为ok类,其他四类均统计为ng类别,即正类。检测求也是只需把pcb图像分为ok和ng两类。
[0089]
使用改进后的yolov3网络对收集的图像数据集训练后进行测试,分类阈值取0.5时改进yolov3模型与原yolov3模型的检测结果如表2所示。从表2可以看出,改进型yolov3模型的特异性有所下降,但在可以接受的范围之内。其敏感性有不少的提高,达到95.78%。改进型yolov3模型的推理速度较yolov3模型有所下降,这是由于嵌入了spp和cbam两个模块。当改进型yolov3模型的置信度阈值从0.1取至0.6时,模型检测的ng图片敏感性和ok图片特异性的值见表3。
[0090]
表2两种模型对应的各指标结果
[0091][0092]
表3改进型yolov3模型在pcb缺陷检测上的表现
[0093][0094]
yolov3模型和改进型yolov3模型的roc曲线如图8所示,结合表3,当置信度阈值取0.1时,改进型yolov3模型曲线的真正率达到了97.26%,且由图8可以看出,此时yolov3模型的假正率要低于改进型yolov3模型;当图中改进型yolov3模型的真正率在75%和87.5%之间时,对应的置信度阈值介于0.5至0.6之间,此时yolov3模型的假正率要高于改进型yolov3模型。当置信度阈值较小时,对于ok图像的特异性,改进型yolov3模型比yolov3模型有所降低,但仍在可以接受的范围之内,对于ng图像的敏感性,尤其在阈值取0.5时,改进型yolov3模型的提升较大。考虑到0.6及其以上的置信度阈值适用性低,故在取0.5及以下阈值时,对于ng图像的敏感性,改进型yolov3模型的效果要优于yolov3模型。由图中还可以看出,改进型yolov3模型曲线基本包围了yolov3模型,说明在pcb缺陷检测能力上,改进型yolov3模型比yolov3模型更好。
[0095]
上述实施例基于改进深度学习算法的pcb缺陷图像检测方法。针对yolov3深度卷积神经网络模型对于正负样本不均衡、网络对pcb小缺陷的特征表达、图像重要特征信息提取等不足提出了改进,本发明提出了将focal loss函数代替原yolov3模型中的mse loss函数的改进方式,以此来动态地控制正负样本和难易分类样本权重。同时本发明将spp模块嵌入于支路小目标检测头、并且将cbam模块并联融入yolov3模型,以使模型可以更多地关注图像中的缺陷信息,从而提升模型整体的特征提取能力。本发明方法可对不同类型的pcb缺陷图像进行检测,较原yolov3模型相比,敏感性等指标均有提升,在pcb缺陷检测任务中具有较好的性能,可降低漏检率与误检率,更好地实现pcb缺陷的自动化和智能化检测。
[0096]
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效流程形式变换,或运用在其他相关的技术领域,均包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1