面向小样本学习的PCB 缺陷智能检测方法

作者: 郝佳妮 农丽萍 刘安平 方瑾瑜 田方圆

面向小样本学习的PCB 缺陷智能检测方法0

摘要:目前,深度学习模型通常高度依赖大量标注数据的训练样本。然而,在实际生产过程中,特别是在工业缺陷检测领域,获取高质量标注数据难度大且成本高。为此,提出了一种基于小样本学习的PCB缺陷智能检测算法。首先,采用传统数据增强方法和基于扩散模型的数据增强方法扩充样本,解决样本数量过少的问题;其次,基于YOLOv8深度学习框架,通过高效的骨干网络和检测头实现多尺度目标检测;最后,利用PySide6框架开发了一款智能化的PCB缺陷检测人机交互系统。实验结果表明,所提方法在10-shot任务中展现出优异的检测性能,在真实的PCB缺陷数据集上达到了82.9%的检测精度。

关键词:小样本学习;PCB缺陷检测;数据增强;YOLOv8;深度学习

中图分类号:TP391 文献标识码:A

文章编号:1009-3044(2025)04-0036-06 开放科学(资源服务) 标识码(OSID) :

0 引言

印刷电路板(Printed Circuit Board,PCB) 是电子器件的基础部件,其质量决定着电子器件的工作效率和稳定性。然而,在PCB的制造过程中,由于加工、材料等多种因素,可能会出现诸如裂纹、短路、漏焊等缺陷。因此,及时、准确地检测出PCB中的缺陷是保证其质量的关键。

目前,PCB缺陷检测主要分为传统人工检测和深度学习检测两类方法。传统的检测方法以手工目视检查为主,存在效率低、易受人为干扰等问题。随着深度学习的兴起,利用深度学习技术自动检测PCB缺陷已成为研究热点。沈非尧等人[1]将完整的PCB图像分割成小图像块,并改进了Faster R-CNN网络进行检测。Liao等人[2]提出了YOLOv4-MN3模型,实现了快速高效的PCB缺陷检测。Lian等人[3]利用掩膜R-CNN 进行缺陷检测,并在全连接CNN中添加了几何注意引导的掩膜分支,提高了模型的效率。迟盛元等人[4]引入了SEnet,通过自动学习各特征信道的重要性,提升了检测精度。此外,还创新性地将解耦头思想引入YOLOv5网络,加速了网络的收敛速度。

尽管深度学习技术在PCB缺陷检测方面展现出了巨大潜力,但在实际工业应用中仍面临诸多挑战。其中,工业缺陷样本量和标注量的稀缺性尤为突出。对大量样本进行标注需要消耗大量的人力成本,因此,小样本学习成为当前深度学习领域的研究重点。

小样本学习是一种使用少量训练样本构建准确机器学习模型的技术。该概念最早由Li等人[5]于2003 年提出,他们开发了一种基于贝叶斯理论的无监督一次性学习方法,能够在仅有少量图像样本的情况下学习并识别不同的物体类别。由于小样本学习仅需少量数据即可训练模型,从而降低了高昂的标注成本,节省了数据资源和计算资源,因此基于小样本的检测研究受到广泛关注。史燕燕等人[6]和李芳琳[7]对小样本目标检测进行了深入分类研究,将其分为4类,并详细探讨了各类方法在公共数据集上的表现,为后续研究者提供了清晰的框架和参考。杨明欣等人[8]致力于通过数据增强技术应对小样本问题,使用改进的Mo⁃bileNetV2进行训练,并通过一系列数据增强策略增加模型的泛化能力。Jang等人[9]提出了一种基于元学习的新型迁移学习方法,可以自动学习从源网络转移到目标网络中的位置信息,并在各种数据集和网络架构上验证了该方法。贾慧等人[10]将迁移学习和数据增强相结合,加快了模型的收敛速度,提高了模型的识别率和鲁棒性。郑旭[11]为应对小样本导致的过拟合问题,采用通道注意力机制和融合注意力机制提取重要特征信息,并构造了新的损失函数以优化训练过程。

综上所述,小样本目标检测研究已取得一定成果,但仍存在局限性。目前多数研究基于公共数据集,样本类别多且数量相对均衡。然而,在实际应用中,如本文研究的PCB 数据集,样本类别单一且数量稀少,即数据集中仅包含某一特定类别的目标物体。在这种情况下,模型难以从有限的样本中学习到足够的特征信息,导致检测性能下降。

针对上述问题,本文研究了基于小样本学习的PCB缺陷智能检测技术。本文的主要贡献如下:1) 针对小样本集的问题,利用传统数据增强方法和一种基于扩散模型(Diffu⁃sion Model) 的缺陷生成算法扩充数据集,提高模型的泛化能力,解决因小样本导致的过拟合问题。2) 基于YOLOv8构建一种能够同时检测多种PCB缺陷类型的深度学习模型,具有较高的检测精度和较快的检测速度。3) 设计一个人机交互界面,实现检测结果的可视化展示。

本研究成果可为电子制造业提供智能化的质量控制解决方案,并为相关领域的深度学习应用研究提供参考。

1 本文方法

在深度学习领域,数据增强技术已成为提升模型性能的重要策略。当前,数据增强主要分为两大类别:传统数据增强和基于扩散模型的新兴数据增强方法。传统数据增强方法通过对原始数据进行各种变换来增加数据的多样性;而基于扩散模型的新兴数据增强方法则利用生成模型从噪声中生成新的样本。这两种方法各具特色,相互结合能够产生更为显著的效果。

1.1 传统数据增强

传统数据增强在深度学习中至关重要,通过变换和扩充原始数据来提高模型的泛化能力、鲁棒性和预测精度。主要方法包括:1) 图像变换。如翻转、旋转、缩放、剪切等,增加图像多样性同时保留语义信息。2) 灰度处理。将彩色图像转为灰度图像,减少颜色信息干扰,专注于纹理和形状特征。3) 模糊处理。模拟图像模糊效果,如运动模糊和高斯模糊,提升模型的鲁棒性。4) 噪声添加。添加随机噪声,如高斯噪声、椒盐噪声,模拟实际噪声干扰。5) 色彩变换。调整图像色彩属性,如亮度、对比度、饱和度,增加模型对光照变化的鲁棒性。

本文使用当前广泛应用的图像增强库Albumen⁃tations对数据集进行扩充。Albumentations是一个Py⁃thon库,提供了丰富多样的图像变换操作,用于快速且灵活地进行图像增强。本文利用Albumentations进行翻转、旋转、缩放、剪切、随机调整图像的亮度和对比度、对图像进行高斯模糊以及添加高斯噪声等数据增强操作。部分增强后的图片如图1所示。

1.2 基于扩散模型的假样本生成数据增强

扩散模型(Diffusion Model) 是一种用于生成假样本的数据增强方法,近年来在深度学习领域备受关注。该方法的灵感来源于非平衡热力学理论[12],通过定义扩散步骤的马尔可夫链,逐步向数据中添加随机噪声,然后学习逆向扩散过程,从噪声中重构出所需的数据样本。其过程如图2所示。

扩散模型包括两个主要步骤。

1) 前向扩散过程。这是一个固定的(或预设的) 过程q,逐渐向图像中添加高斯噪声,直到最终得到纯噪声。

2) 反向去噪扩散过程。通过训练一个神经网络,从纯噪声开始逐步去噪,最终生成真实图像。

前向过程可以视为一个马尔可夫过程。在马尔可夫链的前向采样过程中,随着步数t 的增大,数据逐渐转换为高斯分布。通过逐步累积对输入数据添加高斯噪声,并结合马尔可夫假设,可以得到扩散过程的数学表达式:

式中,βt 是高斯分布方差的超参数。在扩散过程中,随着t 的增大,xt 逐渐接近纯噪声。当t 足够大时,xt 可以收敛为标准高斯噪声N (0,1)。逆扩散过程是一个去噪推断过程,从纯噪声逐步去噪生成真实样本。根据马尔可夫规则,逆扩散过程在当前时间步t 的状态仅取决于上一个时间步t - 1,即:

式中:N 表示高斯分布,μθ 和Σθ 分别表示通过神经网络学习得到的均值和方差函数。通过对逆扩散过程进行建模,神经网络可以学习从噪声中恢复真实样本的能力。

本文利用扩散模型对原始数据集进行扩充,将原有的60张图片扩展至725张,从而显著提高了模型的泛化能力和鲁棒性,进一步提升了模型的性能。生成的部分假样本图片如图3所示。

2 基于YOLOv8的PCB 缺陷检测算法

2.1 YOLOv8网络结构

YOLOv8 模型如图4 所示,主要由 Backbone 和Head 两部分组成,采用特征金字塔(Feature PyramidNetwork,FPN) 结构,通过自下而上、自上而下以及跳层连接的方式进行多尺度特征融合。各主要模块简介如下。

1) CBS。CBS 由基础卷积(Conv) 、批量归一化(BatchNorm) 和激活函数(Swish) 组成,其结构如图5所示。CBS模块定义了所有卷积结构和网络的起始结构。同时,它支持不同的激活函数选项,在神经网络设计中具有很强的通用性。

2) C2f。C2f模块是网络的特征提取模块,其具体结构如图6所示。该模块的工作流程概述如下:首先,对输入的特征图进行一次卷积操作,使通道数增加至原来的两倍;随后,特征图经过 n 个 Bottleneck 模块逐步提取空间特征;然后,将这n 个 Bottleneck 模块的输出特征图进行拼接;最后,通过一次卷积操作对拼接后的特征图进行压缩,使输出特征图具有目标通道数。C2f模块具有特征聚合和模型压缩的能力,能够更有效地整合多尺度信息,减少计算量,同时保持甚至增强模型的表达能力。

3) Bottleneck。Bottleneck模块的核心作用在于特征提取和增强。该模块通过两次卷积操作以及一次残差连接来处理输入的特征图,以确保信息能够在网络层之间有效传递,其结构如图7所示。

4) SPPF(Spatial Pyramid Pooling Fast) 。SPPF是空间金字塔池化的快速实现,常用于卷积神经网络中处理不同尺寸的输入数据。该模块的结构如图8所示。其工作流程如下:首先,对输入的特征图执行一次卷积操作,使通道数减半;随后,特征图依次通过三个最大池化层,以提取显著特征;接着,将这三个池化层的输出与第一个卷积层的输出进行拼接,拼接后的特征图通道数增加至原来的两倍,从而以较小的计算代价提升模型的感受野。

2.2 基于YOLOv8的PCB 缺陷检测过程

YOLOv8利用深度学习技术,通过高效的骨干网络和检测头实现多尺度目标检测。其工作流程如下:首先,输入图像经过骨干网络处理,提取出三个不同尺度的关键特征图,并输出相应的边界框及其置信度,这些信息用于表示潜在目标的可能位置及其存在的概率。接着,根据设定的置信度阈值,筛选出高置信度的边界框,并通过非极大值抑制技术(NMS) 去除重叠的边界框,确保每个目标仅被检测一次。最终,系统将输出目标的类别、边界框的具体位置以及置信度,作为检测的最终结果。

利用YOLOv8网络模型训练PCB缺陷数据集,并对PCB 缺陷进行识别和分类,流程如图9 所示。首先,对PCB缺陷数据集进行数据预处理操作;随后,利用 labelImg 工具对PCB缺陷特征进行标注,标注完成的图像被用来构建训练和验证数据集,供YOLOv8模型训练使用;最终,通过训练好的YOLOv8模型,实现对PCB缺陷的自动检测。

3 实验结果分析与系统集成

3.1 实验设置和环境

实验在搭载 Intel(R) Core(TM) i5-10210U CPU、配备 24G 内存及 NVIDIA A30 显卡的 Linux 系统上进行调试。实验采用 PyTorch 1.10.0 作为深度学习框架,使用 Python 3.8.5 作为编程语言,并在 PyCharm 环境中搭建实验平台。

在训练过程中,设定了100个训练周期(Epochs) ,批处理大小(Batch Size) 设置为64,利用单卡GPU进行加速运算。选择 Adam 作为优化器,动量为0.9,初始学习率为0.001。为了进一步优化和加速训练,采用在COCO数据集上预训练的YOLOv8s模型参数作为起始权重。

3.2 数据集来源和特点

本文所使用的数据集为某工厂提供的真实数据集,其中小样本训练图片为60张,测试图片为 2 309 张,共有6种缺陷类别:empty、pin_tilt、crack、normal、less、leak。图片统一处理为640像素规格。

经典小说推荐

杂志订阅