迟盛元,白 岩*,孟祥民
(北华大学 机械工程学院,吉林 吉林)
随着电子工业的发展,电子工业在现代制造业中占据着重要的地位。印刷电路板(Printed Circuit Board,PCB)作为一种重要的电子元件,确保着各种元器件的正常运行。因此提高PCB 质量对电子信息行业是非常重要的。但是PCB 的生产过程会经历许多复杂的工序,可能会出现短路、开路等缺陷。为了保证电子设备的安全和可靠,必须对PCB 的表面缺陷进行检测。
针对PCB 缺陷检测,易欢等人[1]利用HALCON 软件,进行传统的图像处理方法来进行缺陷识别。董大兴等人[2]通过使用Canny 算子和霍夫变换等方式来进行PCB 缺陷检测。这两种方法不仅不具有泛化性,而且最终结果检测结果的准确还过于偏低。王淑青等人[3]将YOLOv5 原始模型的主干网络替换为EfficientNetV2 结构来提高模型检测精度,但是得出来的结果迭代次数太多,对边缘设施要求过高。
本文针对上述问题,对YOLOv5 网络结构算法进行改进,来提高PCB 缺陷检测精度。
YOLOv5[4]因运行速度快、识别精度高等特点,在计算机视觉领域受到广泛应用。YOLOv5 网络由输入端(Input)、主干网络(Backbone),特征融合网络(Neck)和输出端(Output)四个部分构成[5]。其中Input 指的是图像的传入,Backbone 利用不同图像的信号在细粒度上聚集并产生图像特征,Neck 通过各种混合和组合图像特征操作将图像特征信息传递到预测层,Output 主要用于对图象的特征进行预测,产生一个边框,并对分类进行预测[6]。
由于印制电路板缺陷部分结构复杂,具有强干扰力,因此本文在Backbone 阶段加入SE 注意力机制(SEnet)[7]。该方法能够自动地从各个特征中提取出重要度,并根据这些重要度对特征进行强化,同时剔除那些不需要处理的特征。
在图1 中,U 表示大小为C×H×W 的特征图,Fsq表示为Squeeze 运算,类似一个全局平均池化运算,见式(1)
图1 SE 注意力模块
zc表示经过Fsq运算后的输出,下标c 表示通道数;uc代表U 中第c 个二维矩阵,在图3 中Fsq为Excitation 运算,等于2 个full connection 运算,见式(2)
s 是经过Fex处理后的输出,其中δ 和σ 分别表示ReLU 和sigmoid 的激活函数。然后对s 进行Fscale运算,即将特征映射uc与标量sc的信道相乘,得到输出特征,见式(3)
在YOLOX 算法中使用了解耦头的方法,不仅可以加快收敛速度,而且还能提升检测精度[8]。原始YOLOv5 算法仍采用YOLOv3 的Head,在进行目标检测过程中,分类任务与回归任务是相互冲突的,但是使用解耦头方法可以巧妙的解决这个问题。解耦头结构图见图2。
图2 解耦头结构图
我们对YOLOv5 网络结构进行了一定改写,首先,在Backbone 阶段引入SEnet,通过自学习方法,自动获取各特征信道的重要性值,来获得更重要的特征;然后,引入了解耦头(Decoupled Head)的方法,来解决分类与回归任务间的冲突。改进前后的结构对比图见图3。
图3 改进前后结构对比图
本实验数据来自于北京大学智能机器人开放实验室,共收集到1 293 幅图片,包含6 种缺陷[9]。缺陷图片见图4(a),检测效果的效果图见图4(b)。
图4 缺陷图片及检测效果
实验在Windows 10 系统下完成,CPU 为Intel Core i5-12400F@2.5GHz,GPU 型 号 为 NVIDIA Ge-Force RTX3050,显存12 GB,单显卡训练,使用CUDA11.3 对GPU 进行加速,采用基于Python3.9 的Pytorch1.11.0 深度学习框架。
模型的评价指标主要有:准确率(precision, P),召回率(recall, R)平均精度均值(mean average precision,mAP)等[10]。其中,P、mAP 是判断准确率的重要依据,计算式为(4-7)。
其中,TP、FP、FN 分别是被模型预测为正例的正样本数,被模型预测为正例的负样本数,和被模型预测为负例的正样本数。
为了更全面地分析各个模块的改进效果,本文设计了消融实验,见表1。实验表明,引入各个模块后mAP@.5 都有不同程度提高,实验4 比实验1 的mAP@.5 提高了4.2%。表2 显示不同算法的对比结果,从表2 可知,改进后的YOLOv5 算法比其他网络效果检测效果好。
表1 消融实验
表2 算法对比实验
本文通过对YOLOv5 网络结构的改进,使改进后的算法在印刷电路板的缺陷的检测和识别的实验中获得了良好的效果。最后的实验结果显示,在改进后的YOLOv5 网络结构中,对PCB 电路板缺陷的检测与识别的mAP@.5 为92.5%,通过对YOLOv5 网络的仿真试验,证明了该方法的有效性。