APP下载

基于改进YOLOv5的PCB裸板缺陷检测

2023-11-25葛平淑刘俊杰向青阳

大连民族大学学报 2023年5期
关键词:特征提取卷积精度

程 霖,张 涛,葛平淑,刘俊杰,向青阳

(大连民族大学 机电工程学院,辽宁 大连 116605 )

随着中国现代电子产业和新兴技术的迅猛发展,印刷电路板(PCB)作为各种电子元器件的载体,是各种电子产品布线连接和信号传输的关键硬件支撑,决定着电子产品是否能够正常运行。但生产PCB电路板的工艺十分复杂,受到当前生产工艺技术限制,在PCB生产过程中容易产生如漏孔、鼠咬、开路、短路、杂散、杂铜等缺陷。这些缺陷PCB板一旦应用到电子产品中会导致产品运行故障或者损坏,造成较大经济损失。因此对PCB裸板及时进行缺陷检测有着重要的现实意义和经济价值。

近些年随着深度学习技术在缺陷检测领域的不断发展,与传统的机器学习方法相比,深度学习的泛化能力更强,适合于更多复杂生产环境。如今已有研究人员将深度学习算法应用于PCB板的缺陷检测中来。当前基于目标检测主要分为两种,Two-stage和One-stage检测[1]。Two-stage检测算法中经典的有(R-CNN、Faster R-CNN)等。2020年6月沈非尧等[2]对Faster R-CNN算法进行优化,选择ResNet-101进行作为特征提取网络,并在RoI pooling层中结合RoI Align优化算法,提高了训练速度和精度。2021年6月耿振宇等[3]使用ResNet代替VGG作为Faster R-CNN的主干网络,并引入特征金字塔网络(FPN)来解决多尺度检测问题,并减少了计算量One-stage检测算法主要为YOLO系列算法,与Two-stage检测算法相比优点在于速度更快,但精度略低于Two-stage检测算法。为了兼顾速度与精度问题,2021年6月,孙灿等[4]以YOLOv3为基础模型,在模型参数计算量、注意力机制以及重叠目标检测等方面进行优化,提高了YOLO算法的性能。2022年6月李洋等[5]利用ECANet优化有效特征层融合方式,并改进特征金字塔网络结构,提高了YOLO算法对小目标缺陷的检测精度。

针对PCB裸板缺陷检测难度大的问题,提升高密度场景下PCB缺陷检测精度,缓解梯度消失并降低模型训练损失仍是现阶段大部分算法需要解决的首要问题。本文针对YOLOv5算法进行优化改进,改进主干特征提取网络。引入密集连接卷积网络DenseNet思想[6],搭建密集连接模块,对Bottleneck模块进行改进。缓解了消失梯度问题,鼓励特征重用,加强特征传播。提高YOLOv5算法针对PCB裸板小目标缺陷检测的精度。

1 YOLOv5算法结构

YOLO系列模型在目标检测领域是性能较好的单阶段目标检测算法,2020年6月发布的YOLOv5是YOLO系列兼顾准确率和速度的模型。YOLOv5可以分为s、m、l、x四个版本,本文所用算法为YOLOv5s。YOLOv5网络结构可以分为4个模块:输入端(Input)、主干网络(Backbone)、颈部(Neck)和检测网络(Head)[7]。其结构如图1。

图1 YOLOv5结构

输入端的作用就是进行图像的预处理,将图片缩放为网络输入大小、数据归一化和数据增强。YOLOv5采用masaic增强技术把四张图片的部分进行拼接随机组成一张新的尺寸固定的输入图片。而YOLOv5与以往不同的是作者对其进行了改进,变为了自适应图片缩放,之前的YOLO算法都是将不规则图片进行填充,产生新的固定的正方形图片,该方法所生产的新图片有较多的黑色边框,由此会造成信息冗余,从而产生不必要的计算量,进而影响算法的推理速度。YOLOv5算法因此改进了图片缩放方式,采用了自适应的填充,由此对原始图片添加最少的黑边框。大大减少了算法推理计算量。主干网络Backbone模块则借鉴了跨阶段局部网络CSPNet(Cross Stage Partial Network)的设计思想[8],使用CSPdarknet为主干网络,减少了模型整体计算量。其中在YOLOv5第一次使用了Focus结构。C3模块是对残差特征学习的主要模块,主要作用是增加网络深度,提高特征提取能力。C3由两种不同的bottleneck结构和标准的卷积模块组成,组成两种不同的C3模块。空间金字塔模块SSP的主要思想为对输入的特征图进行卷积核大小不同的池化操作,得到不同大小的特征图,最后进行拼接得到统一尺寸的特征图[9]。颈部(Neck)网络设计沿用了FPN+PAN的结构[10]。FPN结构通过自顶向下进行上采样,构建出多尺度高级语义特征图[11]。PAN结构则是自底向上进行下采样,加入了自底向上的路线,弥补并加强了定位信息。

2 改进的YOLOv5算法结构

PCB缺陷检测多为小目标检测,需要对YOLOv5算法进行改进,而对于小目标检测的难点在网络的加深过程中,会出现图像信息丢失的现象。在网络加深的过程中,提取出的特征也由浅变深,浅层特征即具体的位置信息,深层特征即抽象的语义信息。随着网络加深,小目标在特征图中所占据的像素会越来越少,使目标检测的结果不理想。为了更加充分利用各个卷积层所提取出来的特征信息,本文在YOLOv5算法中引入密集连接卷积网络(DenseNet)的思想,DenseNet网络具体结构如图2。

图2 DenseNet密集连接网络

在DenseNet网络中,每两层之间都直接相连,每层都可以获得前面所有层的特征输入,对于网络L层输出,传统网络的输出与DenseNet网络输出如公式(1)、(2)所示:

xL=HL(xL-1);

(1)

(2)

从上述公式中可以看出,引入密集连接思想,可以实现特征重用。每一层只需学习很少的特征,不需要重复学习冗余的特征图,通过更少的参数量就使得卷积层学习到更多的特征,相比于传统的卷积网络,这种结构的特征利用效率更高,使得网络可以更加高效的学习新的信息。

对YOLOv5中的主干特征提取网络进行改进,在主干网络的Bottleneck中添加两个新的卷积块,同时使得每层都可以获得前面所有层的特征信息,这使得层之间的连接更紧密。密集卷积网络精度提高的原因是各个层通过更短的连接从损失函数中获得额外的监督。可以将 DenseNet 解释为执行一种“深度监督”。好处是它的每个隐藏层都有分类器,强制中间层学习判别特征。DenseNet以隐式方式执行类似的深度监督,DenseNet 的损失函数和梯度要简单得多,因为所有层之间共享相同的损失函数。因此DenseNet网络可以减少梯度消失,增强特征传播,提高YOLOv5算法中的特征信息重用,使其更加适合PCB裸板缺陷的小目标检测。具体改进结构如图3~4。

图3 原C3模块

图4 改进C3模块

通过上述对YOLOv5算法中的主干特征提取模块改进,相比于原来层与层之间的连接更加激进,模块中大量使用了残差分支,每一层都在接受前几层的特征信息,并将自己的特征信息传递给后续的所有层,以提高算法的检测精度。

3 实验与验证

3.1 实验环境

软件环境使用Windows 11 专业工作站版,PyTorch深度学习框架。硬件配置上为CPU:AMD Ryzen 9 5900X 12-Core Processor 3.70 GHz;GPU:NVIDIA RTX A4000 16G显存。

3.2 数据集简介

采用公开数据集PKU-Market-PCB,该数据集一共包含692张印刷电路板缺陷图片,并附有对应的标注文件。包含了工业生产中常见的6种缺陷类型。图片的张数和缺陷数量见表1。

表1 缺陷图片数量及各缺陷数量

3.3 数据集增强

由于公开数据集PKU-Market-PCB只有692张缺陷图片,由于数据量有限,很可能会因数据量较少而导致训练结果过拟合,因此需要对原始数据进行扩增,本文采用的方法是通过旋转、镜像、增亮、加噪声等随机增强的方法进行扩增。最终得到数据6 920张。

3.4 评价指标

在评价算法的性能时,本文采用平均精度(mean Averrage Precision,mAP)、召回率(Recall)、F1得分(F)、精确率(Precision)、作为评价指标。

根据PCB测试样本的真实类别与模型预测类别划分为真正例(TP)、假正例(FP),真反例(TN),假反例(FN)。

精确率又叫做查准率,是指分类过程中模型预测的所有正例中预测正确的比例。召回率又叫查全率,是指模型预测正确的正例占据真实正例的比例,它们具体计算公式如(3)、(4)所示:

(3)

(4)

准确率和召回率是两个矛盾的衡量标准,在准确率高时,召回率则会较低;而当召回率较高时,准确率则会较低[12]。综合两者,绘制P-R曲线,纵坐标为精确度的值数,横坐标为召回率的值数,获取值数后做出曲线图,根据曲线面积与坐标轴围成的面积即可得到平均精度AP(Averrage Precision),该面积越大则反映出算法的性能越好。在最后检测结果中,每一个类别都会有一个AP曲线,所有的AP曲线收集起来,得到mAP即为均值平均精度。两者计算公式如(5)、(6)所示:

(5)

(6)

3.5 算法训练与实验

文中将训练集、验证集与测试集按照8:1:1的比例进行划分。训练的具体参数设置见表2。

表2 训练的参数设计

改进的YOLOv5算法训练期间的损失曲线如图5。观察可知随着训练轮数的增加,损失曲线的斜率逐渐趋于平缓,图5a代表训练集位置损失;图5b代表训练集置信度损失;图5c代表训练集类别损失。由图5可知训练效果达到了较好拟合状态,证明该算法已经收敛,最终的实验结果如图6。改进后的算法对PCB裸板缺陷的识别平均精度为95.6%,其中对于漏孔缺陷的检测精度最高,达到了99.5%。该算法检测效果符合需求,准确检测出各类缺陷如图7~12。

a) box_loss图 b) obj_loss图 c)cls_loss图图5 损失曲线

图6 P-R曲线图

图7 mouse bite 缺陷检测 图8 spur缺陷检测

图11 missing hole 缺陷检测 图12 open circuit 缺陷检测

图9 short 缺陷检测 图10 spurious copper 缺陷检测

为了检验本文算法改进的有效性,在同一数据集中,对改进YOLOv5算法(YOLOv5+denseNet模型),原YOLOv5算法、YOLOv7算法进行对比实验,所得到的性能参数见表3。

表3 改进后算法与YOLOv5、YOLOv7算法精度比较 %

由表3可知,改动后的算法相比较于原算法,平均精度提高了1.1%,平均精度提高了1.9%,召回率提高了1.6%。说明对YOLOv5算法中主干特征提取模块引入密集连接思想,加强特征信息传递后有效地提高了算法性能,证明了改进YOLOv5算法在PCB裸板等目标检测方面拥有较好的适用性,其性能优于其他算法。

4 结 语

针对目前检测算法对小目标缺陷检测效果不理想的情况,对YOLOv5算法进行改进,提出了一种针对PCB裸板缺陷检测的改进YOLOv5算法,主要是对YOLOv5算法的主干特征提取网络进行改进。与原算法相比,在同一数据集中的平均精度得到了提高。值得注意的是不同数据集预处理方式会影响模型精度,因此后续将进一步提高改进模型的泛化性,同时拓展应用在其他目标尺寸较小的应用场景中。

猜你喜欢

特征提取卷积精度
基于3D-Winograd的快速卷积算法设计及FPGA实现
从滤波器理解卷积
基于Daubechies(dbN)的飞行器音频特征提取
基于DSPIC33F微处理器的采集精度的提高
基于傅里叶域卷积表示的目标跟踪算法
Bagging RCSP脑电特征提取算法
GPS/GLONASS/BDS组合PPP精度分析
改进的Goldschmidt双精度浮点除法器
基于MED和循环域解调的多故障特征提取
一种基于卷积神经网络的性别识别方法