基于改进YOLOv7算法的PCB裸板缺陷检测
2023-12-15周贤勇祝俊辉徐明升侯津津
周贤勇,祝俊辉,王 圆,徐明升,侯津津,陈 琳
(长江大学 计算机科学学院,湖北 荆州 434023)
0 引言
印刷电路板(PCB)制造作为电子工业中最基础且最活跃的产业之一发展迅速,在日常工业生产过程中如何制造出高质量的PCB是行业面临的巨大挑战。PCB上毫不起眼的微小缺陷亦可能造成数以万计的巨大损失,因此对PCB成品出厂前的缺陷检测是一项不可或缺的质量检测任务。
传统PCB检测主要是工人们通过特定的检测仪器,在肉眼观测以及个人经验的帮助下判断其是否存在缺陷。然而此种方式无论是检测的准确率还是效率都差强人意。紧接着,行业内又利用其导电性通过将PCB与检测器相连来判断是否存在缺陷,但是由于检测器产生电能的不稳定性,过强的电能可能会损坏PCB中的微小元件,造成不必要的经济损失。
在深度学习技术日渐成熟的今天,PCB缺陷检测任务也选择性地引入了相关的技术[1]以满足高效、无损、低成本的工业生产需求。目前应用比较广泛的目标检测算法可以分为2种:一种是经过单次检测即可直接得到最终结果的一阶段目标检测算法,比较典型的如文献[2-3]中提出的SSD以及文献[4-7]中提及的YOLO系列有着更快的检测速度,一定程度上满足了实时检测的应用要求,但是在识别准确率上会有所欠缺;另一种则是将检测问题划分为2个阶段的二阶段目标检测算法,如文献[8-11]中涉及的Faster R-CNN以及文献[11-14]中研究的Mask R-CNN均能较好地避免错检、漏检的问题,但是会牺牲检测速度,导致不能完全满足实时检测场景的需求。
由此从应用的角度出发,设计出了基于改进YOLOv7的PCB裸板缺陷检测算法。该算法旨在提升PCB裸板的检测精度,希望能在一定程度上满足工业生产的要求。消融实验结果验证了对YOLOv7算法改进的有效性,对比实验的结果表明改进之后的算法在PCB裸板缺陷检测上具有优越性。
1 改进YOLOv7模型
1.1 FSE_YOLOv7模型
针对利用YOLOv7原始模型进行缺陷检测过程中遇到的具体问题对YOLOv7整体网络结构进行了 3处改进,改进后网络结构FSE_YOLOv7如图1所示。
首先,针对原始YOLOv7模型空间特征提取能力较弱的问题,在主干特征提取网络(Backbone)部分引入在图像视觉方面更有优势的FReLU激活函数,将原始Conv2D_BN_SiLU模块替换为Conv2D_BN_FReLU模块,具体如图1的Backbone部分所示;随后,针对模型对小目标的识别能力不足的问题,在特征融合网络对信息进行融合前,引入了SE注意力机制功能模块,令网络更加关注小目标的信息,如图1的FPN部分所示;最后,针对原始模型识别缺陷在精度上有所不足的问题,融入更浅层的信息,将主干特征提取网络中stage2部分的信息加入特征提取网络中的同时添加4个从主干网络部分开始的跳跃连接,用以降低信息传递过程中无法避免的信息损耗,具体的连接方式如图1的FPN部分中虚线跳跃连接部分所示。
图1 FSE_YOLOv7整体网络结构Fig.1 Overall network structure of FSE_YOLOv7
1.2 更换激活函数
原始YOLOv7模型网络结构延用了YOLOv5 中所使用的SiLU激活函数,函数详述见文献[15],激活函数的图像如图2所示(自变量x取值-4~10且间隔2个单位标刻)。SiLU激活函数的具体表达如下:
f(x)=x×sigmoid(x)。
(1)
SiLU激活函数处处可导且连续光滑,在深层模型上应用SiLU激活函数能够有效提高分类的准确率,然而由于其引入了指数函数增加了计算量。
图2 SiLU激活函数图像Fig.2 SiLU activation function image
在YOLOv7网络中利用文献[16]研究的视觉激活函数FReLU替换SiLU,ReLU图像及其变式FReLU图像如图3所示。
图3 ReLU和FReLU激活函数图像Fig.3 ReLU and FReLU activation function images
ReLU和FReLU的表达式如下:
式中:F为非线性激活函数,x为自变量,T(x)为一种高效的空间特征提取方式,不会给网络带来太多的负担。使用参数化的池化窗口加强对空间的关注具体T(x)如下:
(4)
FReLU通过增加一个空间条件来改善之前 几个版本激活函数不依赖于空间条件的现状,如 图4所示。将文献[17]中研究的ReLU和文 献[18]中提及的PReLU扩展为具有像素化建模能力的视觉参数化ReLU,提升了激活函数的空间敏感性,而这一改进落实到公式上只增加了一个可以忽略不计的计算开销,并且实现起来并不会太难。
消融实验的结果表明,应用FReLU激活函数能有效提高PCB裸板缺陷检测模型的mAP值。
图4(c)中将漏斗条件(funnel condition)定义为T(X),相较于图4(a)中手动设计零值和图4(b)中增加一个参数化的pX,FReLU设计了一个依赖于空间上下文的二维漏斗状条件利用这个空间条件T(X)和MAX函数的特性,可以提供像素级的建模能力或者说空间布局能力,理论上来说可以轻易地提取任何形状物体的空间结构。
图4 FReLU增加空间条件演变过程Fig.4 Evolution process of adding spatial condition to FReLU
1.3 引入SE注意力机制
由于大部分PCB裸板缺陷属于小目标范畴而利用YOLOv7模型预测目标时会根据预先设计的不同尺度,分别检测小、中和大3种尺度的目标,因此在YOLOv7中赋予3种不同尺度目标相同的权重的设定无形中会增加网络的负担,降低检测的效率。为了使网络更加关注对小目标的检测,文中引入了文献[19]研究的SE通道注意力机制直接在原有的网络结构中添加SE_block,希望赋予小目标检测通道更大的权重,以提高模型检测小目标的精度。 SE_block详细结构如图5所示。
图5中首先对输入进来的特征图X经过转化Ftr(Transformation)操作生成特征图U,接下来对特征图U进行全局平均池化Fsq(Squeeze),然后通过Fex(Excitation)对2层全连接层进行处理赋予不同通道不同的权重信息,最后在Fscale(Scale)步骤中利用上一步得到的权重信息对特征图U进行权重赋值。
图5 SE_block结构Fig.5 SE_block structure
1.4 改进特征融合网络
文中原YOLOv7特征融合部分的信息来源于主干特征提取网络的stage3、stage4和stage5三部分,如图6所示。这样只选取部分提取到的信息进行特征加强的方式在一定程度上会忽略掉浅层信息,从而影响到模型识别小目标的精度。为了让特征加强部分融入更多的浅层信息,将Backbone部分中提取到的stage2部分的信息也融入FPN过程中,希望借此提高模型的识别精度。在特征加强过程中为了尽量减轻随着网络加深卷积模块增多而产生的信息损失问题,原模型不断地对载入的信息进行上采样和下采样,这无疑会损失许多的细节信息并且降低模型检测小目标时的精度。在之前改进的基础上将stage2、stage3、stage4、stage5直接与P2、P3、P4、P5跳跃连接以保留住更多的细节信息减少信息的损耗,改进后的特征融合部分结果如图7所示。
图6 原YOLOv7网络特征融合网络结构Fig.6 The original YOLOv7 network feature fusion network structure
图6和图7用式(5)来表示特征融合的过程,其中F表示经过融合后的得到的结果,符号[]表示对内部的特征图按照通道维度进行拼接融合,f1、f2和f3表示需要进行融合的特征图。
F=[f1,f2,f3]。
(5)
图7 改进后YOLOv7特征融合网络结构Fig.7 Improved YOLOv7 feature fusion network structure
由式(5)能够得出图6和图7中F2、F3、F4可以分别用用式(6)~式(8)表示,并用式(9)表示F5:
(6)
(7)
(8)
(9)
在进行Upsampling2D之前会进行一个Conv操作,SE_stage表示对经过特征提取网络得到的stage特征图经过一个SE注意力机制模块。
P2、P3、P4、P5表示如下:
(10)
(11)
(12)
(13)
2 实验
2.1 实验条件
YOLO系列算法从曾经的YOLOv1发展到如今的YOLOv7,其高效率的识别能力已经得到了广泛的认可。根据训练实验条件(GPU)的不同,有YOLOv7Tiny和YOLOv7、YOLOv7-W6三种模型供选择,本文采用的是YOLOv7。
实验所需要的软件以及硬件配置如表1所示。由于实验过程中用到的数据集中的图片总数以及各类别的图片数量均无法满足要求,在实验之前会对数据集进行扩充。文中实验开始前会同时采用2种数据增强方式,分别是文献[20]中提及的mosaic以及文献[21]中研究的mixup,对来数据进行增强操作,mosaic数据增强后的图片会有50%的概率进行mixup处理。
表1 实验所需软硬件配置情况Tab.1 Hardware and software configurations required for the experiment
文中使用的CPU为AMD Ryzen 7 5800H with Radeon Graphics @ 3.20 GHz,GPU配置为GeForce RTX3060,整个实验均利用Python语言进行开发,使用的是PyTorch深度学习框架。
2.2 数据集介绍
表2 数据集详细信息
2.3 评估标准
为了更全面客观地对训练后的模型性能进行评估,文中采用2种常用的评价指标分别为F1因子以及平均精度(mAP)。
文中设置判断正负样本的IoU阈值为0.5,当样本检测框和真实框之间的IoU值大于所设的阈值时,该样本被标记为正样本,用TP(真阳性)表示;而IoU值低于0.5时则将样本标记为负样本,用FP(假阳性)表示。将正样本数量除以检测出的该类目标的总数量,记为精确度(P):
(14)
用FN(假阴性)表示正样本被误判为负样本的样本数,召回率记为R,表示如下:
(15)
以P为纵轴,R为横轴,画出二维的P-R曲线,P-R曲线下的阴影面积称为平均精度值(AP),计算如下:
(16)
分别求出各类别的AP值,对所有的AP值求和后除以类别数得到mAP。
用F-Measure评价模型检测能力,当α=1时,P和R的谐波平均值用F1因子表示:
(17)
(18)
2.4 消融实验
针对文中对原始YOLOv7算法提出的3处改进,通过逐一增加改进模块的方法设计了消融实验以验证各个改进模块的有效性。实验中利用mAP以及F1因子对改进模块的效果进行评判,结果如 表3所示。利用FReLU激活函数替换SiLU激活函数,在增强激活空间灵敏度的同时显著改善了图像视觉,与原始YOLOv7相比,mAP值提高了2.34%,F1因子提高了3.01%;在此基础上通过把SE_block注意力机制模块引入进特征融合网络,mAP值提高了0.57%,F1因子提高了1.04%。最后,在前2次变更后的网络中,使用改进后特征融网络结构,让网络融入更多的浅层信息以减少融合过程中的信息损耗,使mAP值从最初的92.53%提高到了95.89%。消融实验结果表明,文中对YOLOv7算法的3次改进均能够提高其对于PCB裸板缺陷检测的精度。
表3 消融实验结果分析Tab.3 Analysis of ablation experiment results
原始YOLOv7算法和文中算法在同一个PCB裸板缺陷数据集上的检测结果如图8所示,图的左侧为原始YOLOv7模型检测结果,右侧为文中算法检测结果。图中不同的锚框颜色代表检测出的不同的缺陷类型,一共6种类型。
HU Yi-jun, LIU Shu-peng, CHENG Kai, XU Gui-xia, HU Jing-jing, LIU Shan-rong
从图8中可以发现,本文算法在同一组数据上能够检测出更多的PCB裸板的缺陷,这表明本文算法相较于原算法在检测精度上有了较大提升,同时也证实了文中针对原始模型3处改进的有效性。
图8 检测结果对比Fig.8 Comparison of test results
2.5 对比实验
将目前主流的目标检测模型YOLOv5s、YOLOX、Faster R-CNN和SSD训练后对测试集中的PCB裸板进行检测,得出的结果与改进后YOLOv7模型的检测结果进行对比,以验证文中算法检测性能的优越性。利用mAP值作为模型的评价指标,结果如表4所示。
表4 对比实验结果分析Tab.4 Comparative analysis of experimental results
由表4可知,本文算法的mAP值最高,其值比Faster R-CNN、SSD、YOLOX、YOLOv5和YOLOv7网络模型的mAP值分别高1.92%、8.26%、5.45%、 2.58%和3.36%。对比实验的结果表明,本文算法对PCB裸板的缺陷检测的精度是最高的。
3 结束语
为了解决PCB裸板缺陷检测精度低,易错检、漏检的难题,提出了基于改进YOLOv7的检测算法。首先引入视觉激活函数FRelU替换SiLU优化网络的视觉提取方式,以捕获更多的空间视觉信息,提高识别精度。然后引入SE注意力机制,令网络更关注对小目标的识别以检测出更多的小型目标,在一定程度上避免漏检情况发生。接着采用改进的特征融合网络对提取到的特征信息进行融合,融合入更多浅层信息的同时通过跳转连接减少网络传递过程中信息的损耗,提升模型识别小目标的准确率。随后在公开的PCB板缺陷数据集上和原始YOLOv7模型进行消融实验,验证了本文的3种改进方式能够提升原始YOLOv7模型对小目标的识别准确率。最后通过与其他经典目标检测算法进行对比,实验结果表明,同等实验条件下,改进后的YOLOv7模型的F1因子和mAP值均为最高值且实际缺陷检测效果要优于其他经典算法,对于PCB裸板缺陷检测在工业上的部署有一定的应用价值。