基于YOLOv5s 的PCB 板缺陷检测与实践教学评分系统的应用设计与实现
作者: 王竟羽 郭斌
摘要:PCB板缺陷检测是实践教学评分系统中的重要环节。为了减轻教师在PCB检测与评分过程中的工作负担,提高教学质量和效率,文章对现有检测模型进行了改进。针对YOLOv5s模型在PCB板缺陷检测中存在的通道和空间信息提取不足问题,文章增加了CBAM注意力机制,并使用SlideLoss损失函数。改进后的模型相较原始模型,准确率提升了7.17%,平均召回率提升了4.38%。文章利用全栈Web开发的技术组合进行用户交互、数据存储和管理,使用改进后的YOLOv5s模型进行缺陷自动检测,实现了自动化评分。该系统减少了教师的重复性工作,提高了检测的准确性和效率,学生能够获得及时的反馈,使教师能够更专注于教学和研究。
关键词:YOLOv5s算法;CBAM注意力机制;教学应用;SlideLoss损失函数
中图分类号:TP391 文献标识码:A
文章编号:1009-3044(2024)32-0129-07 开放科学(资源服务)标识码(OSID) :
0 引言
随着电子信息技术的飞速发展,印刷电路板(Printed Circuit Board,PCB) 作为电子产品的关键组成部分,其质量直接影响产品的可靠性与稳定性。PCB 上的缺陷不仅会导致电子产品性能下降,甚至可能引发安全隐患。PCB缺陷检测对于保障电子产品质量至关重要。然而,传统的人工检测方法效率低下、容易出错,无法满足大规模生产的需求[1]。近年来,随着集成电路和半导体技术的快速发展,PCB结构愈加复杂、小巧和精致,对其缺陷检测的要求也相应提高[2]。
传统的PCB缺陷检测方法主要依赖于图像处理技术和人工目视检查。Ismail I等[3]提出了基于图像加减法的集成图像处理技术,Melnyk等[4]提出了基于Kmeans聚类的图像比较方法,这些方法在一定程度上提高了检测的精度和速度,但仍然存在着灵敏度和特异性平衡难、实际应用受限等问题。此外,支持向量机(SVM) [5]和神经网络(NN) [6]等机器学习算法也被应用于PCB缺陷检测领域,进一步提升了检测效果。然而,随着深度学习的发展,卷积神经网络(CNN) 等方法在图像处理中的表现尤为突出,Ding等[7]提出的TDDnet和Hu等[8]提出的改进Faster R-CNN和FPN模型,展示了深度学习在提高检测精度方面的显著潜力。尽管如此,这些方法在实现高精度的同时,往往以牺牲检测速度为代价。
在此背景下,开发高效的PCB板缺陷检测系统具有重要的意义,尤其是在电子信息等专业教育中,PCB板焊接是学生必须掌握的一项核心技能。然而,在传统的实训教学中,教师手动检查学生的PCB板,不仅耗时且容易出错。随着学生数量的增加,教师的工作量随之增加,影响了教学质量。因此,开发一个高效、准确的PCB板缺陷检测系统对于减轻教师负担、提高教学质量具有重要意义。本文设计并实现了一种基于YOLOv5s的PCB板缺陷检测系统,该系统通过集成CBAM注意力机制和SlideLoss损失函数,显著提高了检测的精确度和召回率。此外,系统具备自动化评分、实时反馈、数据驱动教学改进等功能,有效提高了教学效率和质量。该系统不仅有助于提升实训教学质量,还为我国电子信息产业的人才培养提供了支持,推动了行业的良性发展。
1 YOLOv5s 模型
YOLO(You Only Look Once) 是一种革命性的目标检测算法,以其卓越的检测速度和准确性在实时目标检测领域占据重要地位。YOLO的核心优势在于其全卷积网络设计和端到端的处理流程,这使得它能够一次性处理整个图像,而无须依赖复杂的候选区域提取过程。YOLO的设计目标是在单张图像中快速、准确地检测并定位多个目标物体。与传统的基于候选区域(如R-CNN) 方法不同,YOLO通过将输入图像划分为固定数量的网格,每个网格负责预测其内部是否包含目标物体。当物体的中心位于某个网格时,该网格负责输出该物体的类别和边界框位置,从而实现高效的端到端检测。这种方法将候选区域生成和目标分类两个任务合并在一个网络中,大幅度提高了检测速度。通过非极大值抑制(NMS) 处理,YOLO能够同时预测多个边界框及其类别概率,从而实现速度与精度的平衡。
YOLOv5s的模型架构通过精心设计,实现了高效的目标检测能力。其结构主要由三大部分构成:骨干网络(Backbone) 、颈部网络(Neck) 和头部网络(Head) 。
首先,骨干网络(Backbone) 是图像特征提取的核心。图1左侧的蓝色模块代表Focus模块,该模块通过对输入图像的切片和拼接操作,将图像的通道数从3个(RGB) 扩展为更多通道,从而有效压缩数据量并提高计算效率。接下来,绿色的卷积层(Conv) 和黄色的C3模块通过多次卷积操作进一步提取图像的深层特征。其中,C3模块采用了残差连接(类似ResNet的结构),使得网络能够捕捉更复杂和多样化的特征。红色的SPP模块(空间金字塔池化)通过多尺度的池化操作,增加了对不同尺度目标物体的检测能力,使模型对物体的大小、位置和形状具有更高的鲁棒性。
接着,颈部网络(Neck) 负责特征融合,图1中紫色和黄色模块分别表示上采样层(Upsample) 和拼接层(Concat) 。上采样层将低分辨率特征图放大,并与来自骨干网络的高分辨率特征图拼接在一起,从而融合不同尺度的信息。这样,模型在处理大目标和小目标时都能利用这些不同层次的特征进行更有效的检测。通过这种自底向上和自顶向下的特征融合路径,增强了模型对多尺度目标的适应性,进而提高了整体检测性能。颈部网络还采用了CSP2_X结构(图中未标明)来进一步增强特征融合的能力。
最后,头部网络(Head) 负责最终的目标检测。图1底部的三个Detect 模块对应三个不同的尺度输出(小、中、大),分别对不同尺寸的目标进行检测。这种多尺度检测机制确保了YOLOv5s在处理复杂场景时,能够同时检测到大物体和小物体。每个尺度的检测模块都通过卷积层提取特征,并根据特定大小的目标调整输出权重,以便在总损失函数中提供适当的贡献。
在YOLOv5s中,损失函数的设计对于算法的准确性和鲁棒性至关重要。损失函数主要由三部分组成,每部分都针对不同的预测任务进行优化。
首先,边界框回归损失(Bounding Box RegressionLoss) 是评估预测边界框与真实边界框差异的关键指标。YOLOv5s采用了CIOU损失(Complete Intersectionover Union Loss) ,这是一种先进的边界框回归损失计算方法。CIOU损失不仅考虑了预测框与真实框的交集面积,还综合了框的中心点距离、宽高比以及重叠区域的形状,从而更全面地评估边界框的准确性。其次,置信度损失(Confidence Loss) 用于评估模型对目标存在的置信度预测。该部分损失通过二元交叉熵损失(Binary CrossEntropy Loss) 来实现,目的是确保模型能够正确识别预测框中实际包含的物体。通过引入该损失,提高了模型在目标存在性预测上的准确性。最后,类别分类损失(Classification Loss) 负责评估预测类别与真实类别之间的差异,采用了多分类交叉熵损失(Multiclass CrossEntropy Loss) ,对每个目标的类别预测进行评估,确保类别预测的准确性和多样性。在YOLOv5s中,这三种损失加权求和,构成最终的总损失函数。具体公式如下所示:
Itotal = λbox ⋅ Lbox + λobj ⋅ Lobj + λcls ⋅ Lcls (1)
总损失是三个主要部分的加权和:边界框损失 Lbox、目标置信度损失 Lobj 和类别分类损失Lcls。每个部分都有一个相应的权重系数 λ,用于平衡各个损失项的贡献。
边界框损失为 Lbox 公式如下:
Lbox = 1 - CIoU (b ) pred,btrue (2)
这部分使用CIOU(Complete Intersection over Union) 损失。公式中,bpred 是预测的边界框,btrue 是真实的边界框。CIOU不仅考虑了IoU(交并比),还考虑了中心点距离、宽高比和重叠区域的形状。1减去CIOU值作为损失,使得CIOU值越高,损失越小。
目标置信度损失为 Lobj公式如下:
S2 是特征图的大小(假设是正方形);B 是每个网格单元预测的边界框数量1objij 是一个指示函数,当第i个网格的第j 个边界框负责预测目标时为1,否则为0;pc ij是真实的置信度得分;p̂cij是预测的置信度得分。
类别分类损失为Lcls公式如下:
这是一个多类别交叉熵损失,用于评估类别预测的准确性。符号含义与置信度损失相同 ;c 遍历所有可能的类别;pc ij 是类别c的真实概率;p̂cij 是类别c的预测概率。
2 YOLOv5s 算法改进
2.1 CBAM 模块
CBAM模块是一种轻量级的混合域注意力模块,该模块的作用是通过学习通道和空间特征之间的相互关系来提高网络模型的性能[9]。在该模块中同时集成了通道注意力模块(Channel Attention Module,CAM) 和空间注意力模块(Spatial Attention Module,SAM) 。
CBAM模块的结构如图2所示,分为通道注意力模块(CAM) 和空间注意力模块(SAM) 两部分。通道注意力模块(Channel Attention Module,CAM) 通过全局最大池化(MaxPool) 和全局平均池化(AvgPool) ,分别从输入特征中提取不同的全局特征。随后,这两个池化操作生成的特征通过一个共享的多层感知器(Shared MLP) 进行处理,输出的特征相加并经过Sig⁃moid激活函数生成通道注意力权重。最后,这些注意力权重与输入特征逐元素相乘,生成加权后的通道特征(Channel-Refined feature F) 。这种方式有助于网络关注图像中特定通道的重要性,提升网络性能。空间注意力模块(Spatial Attention Module,SAM) 首先通过一个卷积层提取初步的空间特征。接下来,对这些特征进行通道维度的最大池化和平均池化,生成两个不同的特征图。然后,将这两个特征图沿通道维度拼接,再通过一个卷积层生成空间注意力图。最终,这个空间注意力图与输入特征相乘,生成加权后的输出特征图。这一模块帮助网络更好地关注图像中特定空间位置上的重要信息,从而进一步提升网络的表现。CBAM模块整体流程:首先,对输入特征图进行通道注意力操作,生成加权后的通道特征图;然后,再对该特征图进行空间注意力处理,以增强对重要空间位置的关注。通过这种方式,CBAM能够在通道和空间两个维度上优化网络的特征表达能力,从而提升检测的精度。CBAM模块的核心作用是通过分别在通道和空间维度进行注意力加权,提升网络对关键信息的感知能力。这种双重注意力机制能够有效提高模型在目标检测任务中的表现,尤其在处理复杂场景时,CBAM能够帮助网络更准确地识别和定位重要特征。
原始YOLOv5s模型虽然速度快,但在处理小目标和复杂场景时,模型对细节的捕捉能力有限。引入CBAM模块后,可以增强模型对关键信息的注意力,帮助其更好地区分目标和背景,从而提升检测精度。CBAM还能提高模型在有噪声或光照变化等复杂条件下的表现,使网络更具鲁棒性。改进算法网络结构如图3所示,在保持原始结构的基础上,引入了CBAM 模块。在骨干网络中将SPP后的C3替换为CBAM,在颈部网络中的每个卷积层(Conv) 之后增加了CBAM模块,使得特征图在进行上采样和拼接之前先经过CBAM模块的处理。通过在颈部网络部分的卷积层后添加CBAM 模块,提升了模型对重要特征的关注度。这种改进可以在不显著增加计算量和检测时间的情况下,增强模型对重要特征的关注度,提高检测精度,尤其是在处理图像模糊和小目标检测方面表现明显。