1. 引言
随着电子产品向着高集成、高密度、小型化方向发展,PCB (Printed Circuit Board)作为连接电子元件的基础,要求其制造质量越来越高。PCB板缺陷检测的研究也随之变得愈加重要。缺陷检测不仅关乎产品的可靠性和性能,还直接影响到生产效率、成本控制和最终产品的质量[1]。因此,PCB板缺陷检测技术的研究,成为了电子制造领域一个重要的课题。
目前,PCB缺陷检测的研究主要集中在两大方向:传统的检测方法和基于图像处理的自动化检测方法。传统的PCB缺陷检测方法,如人工视觉检查和自动化光学检测(AOI),虽然在实际应用中得到了广泛的使用,但随着PCB设计的日益复杂,这些方法逐渐暴露出检测精度不足、效率低下等问题[2]。例如,人工视觉检查容易受到操作人员疲劳和经验水平的影响,而AOI技术虽然可以实现自动化检测,但在复杂缺陷识别上仍存在一定的局限性。此外,X射线检测和超声波检测等[3]基于物理传感器的技术,虽然能够识别内部缺陷,但其高成本和操作复杂性限制了大规模应用。
近年来,随着深度学习技术的快速发展,基于计算机视觉的自动化缺陷检测方法逐渐成为研究的热点。卷积神经网络(CNN)作为深度学习中的一种强大工具,能够自动从图像中提取特征,并进行高效的分类和检测[4]。特别是YOLO (You Only Look Once)系列算法,以其快速实时的检测能力,在工业缺陷检测中获得了广泛应用。YOLOv8,作为YOLO系列的最新版本,进一步提升了检测精度和速度,特别适用于高精度的PCB缺陷检测任务。
尽管YOLOv8在目标检测方面具有显著的优势,但在PCB缺陷检测中的应用仍然面临一些挑战。例如,PCB图像中缺陷的复杂性和多样性、不同类型缺陷的尺度差异以及不同PCB板的复杂背景,都可能影响YOLOv8算法的检测性能[5] [6]。因此,如何针对这些问题对YOLOv8进行改进,提升其在PCB缺陷检测中的应用效果,成为了本研究的主要目标。
本研究基于YOLOv8算法,结合北京大学公开PCB数据集,提出了一种改进的缺陷检测方法。本研究旨在通过对PCB图像的自动检测,优化其在PCB缺陷检测中的表现。提高生产过程中的缺陷检测效率,并减少人工检查的工作量和误差,为智能制造提供技术支持。
2. 小目标缺陷的研究现状与挑战
2.1. 研究现状
小目标检测的研究始于传统的计算机视觉方法,如使用手工特征和机器学习算法进行检测。然而,这些方法在处理小目标时往往表现不佳,因为它们缺乏对尺度变化的鲁棒性[7]。随着深度学习,尤其是卷积神经网络(CNN)的发展,小目标检测取得了显著进展。近年来,研究者通过改进网络架构、引入注意力机制、上下文建模等技术,使得深度学习方法能够更好地处理小目标检测任务[8]。
目前的深度学习方法可以大致分为以下几类:
1) 基于尺度的检测方法:这种方法通过多尺度训练和特征金字塔结构,增强了模型对不同大小目标的检测能力。
2) 注意力机制:通过引入注意力机制,模型能够自动关注小目标区域,提升检测精度。
3) 上下文建模:小目标通常背景复杂,因此,结合上下文信息来提高检测的准确性是当前研究的热点之一。
2.2. 面临的问题与挑战
尽管深度学习技术在小目标检测中取得了显著进展,但仍面临一些挑战:
1) 尺度问题:小目标与背景的差异较小,且尺寸远小于大目标,使得其在图像中占据的像素较少,这对检测算法提出了更高的要求。
2) 背景干扰:小目标通常容易被复杂背景掩盖或与其他物体混淆,导致检测精度下降。
3) 标注困难与数据集问题:小目标的标注和数据集的构建仍然是一个瓶颈。现有的公共数据集(如COCO)大多偏向于中大目标,缺乏针对小目标的专门标注。
4) 检测精度与效率的平衡:在实际应用中,除了追求高精度外,检测算法的效率也是一个重要问题,尤其在工业生产中的实时检测任务中,如何平衡精度与效率仍是一个挑战[9]。
2.3. 本文主要研究工作
2.3.1. 引进2024年7月发布在《Image and Vision Computing》期刊上的ASF-YOLO模型
该模型为基于注意尺度序列融合的yolo细胞分割模型。该模型设计了一个多尺度特征融合模块SSFF (能够增强网络的多尺度信息提取能力)和三重特征编码器TFE模块(能够融合不同尺度的特征映射,增加详细信息),以增强小物体的实例分割性能。另外引入了通道和位置注意力机制(CPAM),使模型能够专注于信息通道和空间位置相关的小物体。在细胞分割任务上取得了显著的检测性能[10]。因此把它引用到YOLOv8中,来检测PCB板上微小的相关缺陷。手动增加小目标检测层P2,来额外关注来自主干网络的4倍下采样特征信息,进一步提高模型对小目标的检测能力,形成ASF-YOLO-P2结构。
2.3.2. 在YOLOv8主干网络中加入SimAM注意力机制
SimAM为2021年发布的一种比较新的注意力机制,是一个简单的,无参数且轻量化的即插即用的卷积神经网络注意模块。与现有的通道注意力和空间注意力模块不同,SimAM推断出特征图的三维注意力权重,而不需要为原始网络添加参数。文章基于一些著名的神经科学理论,提出通过优化一个能量函数来确定每个神经元的重要性,并推导出该能量函数的快速闭式解,表明该解可以在不到十行代码的情况下实现[11]。此外,SimAM模块的另一个优点是大多数操作是基于能量函数的解选择的,从而避免了过多的结构调优工作。
2.3.3. 改进v8损失函数CIOU为Wise-CIoUv3
它采用动态非单调调频技术设计了WIoUv3,通过动态非单调聚焦机制,利用异常值程度而非IoU来评估锚框的质量,从而提供了一种明智的梯度增益分配策略。这种策略降低了高质量锚框的竞争力[12],同时减少了低质量样本产生的有害梯度,使得WIoU能够更好地关注普通质量的锚框,从而提高检测器的整体性能。
3. 改进YOLOv8模型结构展示以及优化损失函数定义
3.1. YOLOv8-ASFPS模型结构展示
为方便起见,从下文开始把改进后的模型命名为YOLOv8-ASFPS,其模型结构如图1所示。
Figure 1. Model network structure of YOLOv8-ASFPS
图1. YOLOv8-ASFPS模型网络结构图
注:模块里的p字母标注(如P2为第二特征层),即4倍下采样后的特征图尺寸为原来的1/4,依此类推;模块后的数字(如2,4)为模块的层号;模块后的括号(如(11,6,12))表示此模块接收的输入来自模型第11,6和12层。另外,红色模块为新增的p2小目标检测层。
3.2. SimAM注意力机制的实现方式
基于Sim注意力机制的定义,整个Sim注意力机制可以细化为:
(1)
X表示输入特征,E表示对最小能量,Sigmoid为激活函数。此公式基于pytorch可用代码表示为,如表1所示。
Table 1. A pytorch-like implementation of SimAM
表1. SimAM注意力机制的pytorch实现
实现方式 |
# X: input feature [N, C, H, W] |
# lambda: coefficient λ in Eqn (5) |
def forward (X, lambda): |
# spatial size |
n = X.shape[2] * X.shape[3] - 1 |
# square of (t - u) |
d = (X - X.mean(dim=[2,3])).pow(2) |
# d.sum() / n is channel variance |
v = d.sum(dim=[2,3]) / n |
# E_inv groups all importance of X |
E_inv = d / (4 * (v + lambda)) + 0.5 |
# return attended features |
return X * sigmoid(E_inv) |
与很多其他基于一维通道和基于二维空间的注意力机制不同,SimAM直接估计三维空间每个点的权重,即三维权重。如图2所示。
Figure 2. SimAM attention mechanism 3D weight generation method
图2. SimAM注意力机制三维权重生成方式
3.3. 改进损失函数
损失函数是神经网络模型里非常重要的一环,根据损失函数来定义模型输出与标签的差异,进而通过梯度的反向传播来优化模型的参数。原算法使用的是CIoU作为边界框损失函数,没有考虑PCB数据集中质量差的标注样本带来的影响。
将Wise-IoU引入YOLOv8中,形成Wise-CIoU,CIoU是对传统IoU损失的一种改进,CIoU的损失函数可以表示为:
(2)
其中:
是预测框
与真实框
之间的重叠度。
是预测框与真实框中心点之间的欧氏距离。c是预测框和真实框的最小包围框的对角线长度。v是宽高比的惩罚项,𝛼是平衡因子。
Wise-IoU提出了一个动态聚焦机制,通过自适应调整梯度增益来增强低质量样本的训练效果。Wise-IoU引入了attention mechanism来动态调节不同样本对回归损失的影响。将Wise-IoU的动态聚焦机制与CIoU损失相结合,形成Wise-CIoU,表达式为:
(3)
其中:
CIoU为公式(2)所示。Dynamic Focusing Term是Wise-IoU引入的动态聚焦项,该项通过聚焦低质量锚框,降低它们在损失计算中的影响。λ是一个超参数,用于平衡CIoU和Dynamic Focusing Term之间的关系。
假设Dynamic Focusing Term是基于锚框的质量和IoU的调整因子,它可以表示为:
(4)
其中:
γ是调节因子,控制聚焦强度。θ是IoU的阈值,当IoU低于此值时,聚焦机制增强对低质量锚框的注意。
综上,Wise-IoU可以减少低质量样本对训练的负面影响,在处理多样化和复杂场景(如小物体、低质量样本)时更加鲁棒,有助于提高目标检测模型的整体性能。
4. 实验平台搭建以及结果分析
4.1. 数据集的构建
采用北京大学智能机器人开放实验室的印刷电路板(PCB)瑕疵数据集。共693张,训练集,验证集划分比为8:2。把原标签标注格式xml转化为txt。数据集分布情况如表2所示。
Table 2. Distribution of the dataset
表2. 数据集分布情况
缺陷类型 |
张数 |
Missing_hole |
115 |
Mouse_bite |
115 |
Open_circuit |
116 |
Short |
116 |
Spurious |
115 |
Spurious_copper |
116 |
4.2. 实验环境
本次实验的环境软硬件配置如表3所示。
4.3. 模型训练参数设置
模型部分训练参数如表4所示。
4.4. 实验评价指标
在目标检测任务中,mAP (mean Average Precision)和召回率(Recall)是两个常用的评价指标。它们可以帮助我们全面了解模型在检测任务中的表现。
Table 3. Experimental environment configuration
表3. 实验环境配置
实验环境 |
|
CPU |
AMD Ryzen 7 5800H with Radeon Graphics 3.20 GHz |
GPU |
NVIDIA GeForce RTX 3050 Laptop |
内存 |
16.0 G |
操作系统 |
Windows 11家庭中文版 |
CUDA |
CUDA11.8 |
cuDNN |
cuDNN9.00 |
Python |
3.9.19 |
torch |
2.2.2 + cu121 |
torchaudio |
2.2.2 + cu121 |
torchvision |
0.17.2 + cu121 |
Table 4. Training parameter settings
表4. 训练参数设置
Image size |
640 × 640 |
Learning rate |
0.01 |
epochs |
300 |
batch |
8 |
workers |
6 |
optimizer |
AdamW |
4.4.1. mAP@50 (Mean Average Precision at IoU = 0.50)
定义:mAP@50是在目标检测中衡量模型性能的常用指标,它代表的是每类目标的平均精度(Average Precision, AP),通常是在多个不同的IoU (Intersection over Union,交并比)阈值下计算的。mAP@50特指IoU = 0.50时的精度评估,即:
IoU 2是计算预测边界框和真实边界框重叠程度的指标,只有当预测框和真实框的IoU大于0.5时,才认为该检测是正确的(True Positive)。Average Precision (AP)计算的是从Precision和Recall曲线下方面积的平均值。mAP是所有类别的AP平均值。计算公式为:
(5)
其中N是类别数,APi是第i类的平均精度。
mAP@50值的提高通常意味着模型在目标检测精度上有所提升,即模型在检测目标时更加准确,不仅能够检测到更多的目标,还能精确地预测它们的位置。对于PCB数据集,这意味着模型能更好地检测到电路板中的不同缺陷。
4.4.2. 召回率(Recall)
定义:召回率是检测模型能够正确识别出所有真实目标的能力,即模型正确检测到的真实目标占所有实际存在目标的比例。召回率的计算公式为:
(6)
其中TP (True Positives):模型正确识别的真实目标数。FN (False Nagatives):模型未能识别的真实目标数。
召回率的提高表示模型能够检测到更多的真实目标,减少了漏检的情况。在PCB数据集上,召回率的提高意味着模型能够发现更多的缺陷,即使这些目标可能较小或在复杂背景下较难检测。
4.4.3. 提高mAP@50和召回率的意义
提高mAP@50表示模型对目标位置的预测更精确,且在IoU为0.5时,预测框与真实框之间的重叠较大。这通常意味着模型的定位能力得到了提升。
提高召回率表示模型能检测到更多目标,尤其是对较小、较隐蔽或者被遮挡的目标(在PCB检测中可能是微小的缺陷或细节)更敏感。这意味着模型的漏检率降低,对于实际应用(尤其是自动化检测)具有重要意义。
4.4. 模块消融实验
由表5可知,依次加入改进部分后,模型在验证集上的平均精度mAP@50依次上涨,召回率R基本不断上涨,参数量有明显下降,模型大小减小。最终,改进模型较基线模型YOLOV8n平均精度上升3.55%,召回率提高6.76%,参数量下降17.19%,模型存储大小减小0.8 MB。证明了模块改进的有效性以及模型可观的检测精度。
Table 5. Ablation experiment
表5. 消融实验
Model |
mAP@50 |
parameters |
Recall |
模型大小(MB) |
YOLOV8n |
87.3 |
3006818 |
81.4 |
6.0 |
+ASF |
88.2 |
3046434 |
84.4 |
6.1 |
+ASF-P2 |
89.7 |
2489960 |
85.8 |
5.2 |
+ASF-P2 + SimAM |
89.8 |
2489960 |
85.0 |
5.2 |
+ASF-P2 + SimAM + Wise-CIoU |
90.4 |
2489960 |
86.9 |
5.2 |
4.5. 不同系列YOLO模型对比实验
对比v8最近系列的yolo模型,如表6所示,证明了改进后的模型在PCB数据集上检测精度方面有不俗的表现,提高了对缺陷检测的正确率,同时在参数量和模型大小方面基本有一定幅度的降低。
Table 6. Comparative experiment
表6. 对比实验
Model |
mAP@50 |
parameters |
GFLOPS |
模型大小(MB) |
YOLOv8 |
87.3 |
3006818 |
8.1 |
6.0 |
YOLOv7-Tiny |
90.8 |
6028518 |
13.2 |
11.7 |
YOLOv9-t |
88.6 |
2618900 |
10.7 |
5.8 |
YOLOv10 |
86.8 |
2266338 |
6.5 |
5.5 |
YOLOv11 |
87.3 |
2583322 |
6.3 |
5.3 |
YOLOv8-ASFPS |
90.4 |
2489960 |
12.0 |
5.2 |
4.6. 改进算法检测结果展示
由图3~图8可知,我们的模型在预测效果上普遍要优于基线模型,在查全性能上,能够检测出基线模型检测不出的缺陷,如图4、图5、图7、图8。说明改进后的模型检测缺陷的能力更好,漏检率降低。
(a) Baseline (b) Ours
Figure 3. Comparison of the prediction effect of missing hole categories
图3. 缺孔类别预测效果对比
(a) Baseline (b) Ours
Figure 4. Comparison of the prediction effect of mouse bite categories
图4. 鼠咬类别预测效果对比
(a) Baseline (b) Ours
Figure 5. Comparison of the prediction effect of open circuit categories
图5. 开路类别预测效果对比
(a) Baseline (b) Ours
Figure 6. Comparison of the prediction effect of short categories
图6. 短路类别预测效果对比
(a) Baseline (b) Ours
Figure 7. Comparison of the prediction effect of spur categories
图7. 毛刺类别预测效果对比
(a) Baseline (b) Ours
Figure 8. Comparison of the prediction effect of spurious copper categories
图8. 余铜类别预测效果对比
5. 总结与展望
本文提出的改进模型在PCB数据集上取得了预想的效果,提高了PCB微小缺陷的检测能力。
不足的是,改进后的模型在某些样本类别上(如图4,鼠咬)仍然出现明显漏检情况,在图7上,出现了误检的情况。可能是数据集样本过少的原因,未来可以增加训练样本,对图像进行离线数据增强。在轻量化方面,虽然改进后的模型在参数量和模型大小方面较其他算法有优势,但是计算量仍然较高,不能很好地达到在计算资源有限的设备上部署的要求,未来可以考虑更好的改进方案以及对模型进行剪枝和蒸馏。
NOTES
*第一作者。
#通讯作者。