陈博源
(西安交通大学电气工程学院,陕西西安,710049)
PCB(Printed Circuit Board),中文名称印制电路板,又称印刷线路板,是一种重要的电子元件是各类电子元器件的运行载体,具有关键的支撑作用。因其高密度化、高可靠性、可设计性、可生产性、可测试性、可组装性、可维护性等优良特性,已在电力电子、航空航天、国防安全、计算机网络和工业自动化等高新技术领域得到了广泛应用。当前PCB产业产值在电子元件各个细分产业中占比最大,占全球电子元件总产值份额达四分之一以上。随着PCB板产能的提高和制作复杂度的增加,迫切需要对大批量PCB板进行快速准确的缺陷检测。传统的检测方法包括人工目测、功能测试和激光检测,其中人工目测是操作人员使用显微镜和放大镜检测电路板是否合格的方法,人工成本高、主观误差大;功能测试是采用专业的测试设备,在生产线的中、末端全面测试PCB板的功能模块的方法,缺陷定位困难、测试流程复杂和特种测试设备开发成本高;激光检测是通过激光束扫描PCB板,并将预设的合格极限值与实际测量值进行比较,收集相关检测数据的方法,设备初始成本高,维护问题多。
通过计算机视觉技术从图像中提取目标特征的方法,在PCB板缺陷检测领域得到了初步应用。陈寿宏等[1]通过提取图像特征,提出了一种基于SVM支持向量机算法的PCB版焊点检测方法,通过提取HOG特征实现焊点检测,但该方法数据增强方式单一,对小批量数据集的特征提取效果差。何止戈等[2]采用深度学习方法,对PCB图像进行卷积池化操作,建立了基于R-CNN算法的PCB检测模型,但该方法对于小目标的检测效果不佳,且算法复杂度较高,检测耗时较长。
Joseph Redmon等[3]于2016年提出YOLO算法,将目标检测的分类和定位用一个神经网络实现,目前已经经历了从v1到v5[3-6]的发展,在目标检测领域得到了广泛的应用。Yih-Lon Lin等[7]提出基于YOLOv2的PCB检测方法,显著降低了检测所用时间,平均检测时间小于0.3s。贺建安等[8]提出了基于YOLOv3算法的PCB表面目标检测方法,较YOLOv2在准确度上有了显著提升,平均准确率达到98.42%。2020年推出的YOLOv5网络结构具有体积小、速度快、精度高等优点,且在具有成熟开发生态的PyTorch 编译软件中实现,硬件适配性强,部署简单。YOLOv5基于CutMix[9]方法,采用Mosaic数据增强方式有效解决了模型训练中难度最大的“小对象问题”。YOLOv5包括了YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x四个权重模型,本文采用这四种权重模型分别在相同PCB数据集上进行训练,并与YOLOv3 等方法进行对比分析,利用训练好的神经网络模型实现PCB缺陷的智能检测。
图1为本文实验方案框架图,先对数据集预处理,包含数据集准备、各功能数据集分类、缺陷标注和格式转化操作;然后进行YOLOv5网络训练,包含数据增强、自适应锚框计算、主干网络构建和模型迭代训练;再进行模型效果检验,包含模型输出、精度相关数据输出和检测效果评价。
图1 实验方案框架
(1)获取共2700张包含缺陷信息的PCB数据集,每张图像大小为640×640。编写图像分类程序,以6:3:1的比例随机分配用于训练模型、验证模型和测试模型的数据集,保证缺陷数据分配的随机性。
(2)采用labelimg工具对训练集中的PCB缺陷进行锚框标注(见图2,图中0代表的是缺失孔、1是咬伤、2是开路、3是短路、4是杂散、5是伪铜)。
图2 PCB 缺陷标注示例
(3)编写程序,将生成的可扩展标记语言(.xml)格式的缺陷信息转化成文本信息格式(.txt)。
每个缺陷信息表示为带缺陷种类系数的矩阵格式。
图3为本文PCB缺陷检测基于YOLOv5的网络结构,根据该网络进行训练,训练步骤如下:
图3 YOLOv5 网络结构
(1)选用随机不重复取四张图片,对四张图片进行拼接,获得一张新的图片,同时也获得这张图片对应的锚框,将新的图片传入到神经网络当中学习,丰富检测物体背景,降低模型内存需求,提高训练速度。
(2)采用自适应锚框计算方法,输入数据集后,程序自行选择初始锚点框,进而和真实框(GT)进行比对,对二者差值执行反向更新操作,调整权重参数。每次训练时,以自适应方式输出训练集中的最佳锚框值。
(3)Backbone结 构 包 含Focus和CSPNet[10](Cross Stage Partial Networks,跨阶段局部融合网络)模块。Focus模块包含对输入图像进行切片操作,先变成 304×30×12的特征图,再经过一次32个卷积核的卷积操作,最终变成 304×304×32 的特征图。CSPNet模块包含提取不同层的特征信息,通过局部跨层融合操作获得更为丰富的特征图。
(4)Neck结构包含PANet[11](PathAggregation,路径聚合网络)和spp[12](space pyramid pooling,空间金字塔池化)模块。PANet模块包含对不同层图像的特征融合,在进行自顶向下的特征融合后,然后再进行自下向顶的特征融合。spp模块包含采用4种不同大小的卷积核进行最大池化操作,再进行张量拼接。
(5)采用GIOU_Loss[13]作为损失函数,代替YOLOv3的IOU_Loss。通过对相交尺度的测量,解决当两锚框不相交时难以优化的情况。
本实验的运行环境:CPU为Intel i7-11800H,GPU为 NVIDIA GeForce RTX 3060,内存为 16G,操作系统为Windows10,CUDA为11.0版本,开发语言为Python,框架为pytorch。权重参数训练采用SGD优化算法,参数设置如下:Batch大小为4;最大迭代次数为100;动量因子为0.9;权重衰减系数为0.0005。采用余弦退火策略动态调整学习率,初始学习率为0.01。采用GIOU_Loss作为损失函数。
对1620张PCB图像进行100次迭代训练后得到最佳权重模型,进行图像测试。平均缺陷检测准确度达到99.52%,损失函数值为0.02。对同一图像在相同运行条件下,分别在YOLOv5和YOLOv3中的检测结果进行对比,图中数值为对应目标置信度,YOLOv5的整体检测置信度高于YOLOv3(见图4,a为YOLOv5,b为YOLOv3)。
图4 YOLOv5与YOLOv3部分检测结果对比图
表1为各网络对比实验结果,由表可知在YOLOv5各个权重模型中,YOLOv5s模型训练时间最快,YOLOv5模型平均训练时间为192min,分别低于YOLOv3和YOLOv2模型33.3%和52.4%。YOLOv5模型平均测试精度为92.59%,分别高于YOLOv3和YOLOv2模型3.42%和6.14%。
表1 网络对比实验结果
YOLOv5模型平均准确率达到和99.52%,分别高于YOLOv3和YOLOv2模型8.15%和和9.69%。
YOLOv5平均每张640×640大小图像检测时间为0.016s,分别为YOLOv3和YOLOv2的27%和6.4%。YOLOv5模型整体性能更优。
为了实现印制电路板缺陷智能检测,基于YOLOv5网络在印制电路板缺陷数据集上进行训练,得到PCB缺陷检测模型。实验结果表明,本次实验构建的基于YOLOv5的PCB缺陷智能检测模型整体性能显著优于其他PCB缺陷检测模型,检测速度快,准确率高,适合对大批量印制电路板进行快速准确的缺陷检测。