张士冲,魏书伟,马世杰,朱文贤,刘星宇,闫娇娇
(青岛恒星科技学院信息工程学院,山东 青岛 266000)
随着移动端和精密计算机等电子设备的普及,电子制造工业呈现井喷式的发展。印刷电路板作为各种电子元器件最重要的载体,随着应用的需求攀升,也开始向高精度、高复杂度、高性能等方向迈进。但是,在生产器件中,PCB电路板的生产工序比较复杂,其中的每一个环节都有可能导致PCB 板产生各种各样的缺陷,从而影响PCB 板的整体质量。所以,PCB电路板缺陷的实时检测已俨然成了电子工业生产的重要组成部分。传统的PCB 缺陷检测包括人工手动目检、在线测试[1]、激光检测系统[2]。人工手动目检是使用放大镜和已校准的显微镜目视检查PCB电路板,主观评判误差大、长期成本高、效率低;在线测试使用针床测试仪,通过电气性能测试来识别缺陷,需要测试夹具、编程和调试时间,且夹具制造成本高、难以使用;激光检测系统使用激光扫描电路板、收集板面信息,并通过比较实际测量值和合格极限值来筛选含有缺陷的印刷电路板,初始成本高,维护和使用问题大。张静[3]等人基于光学原理,并且全面使用图像分析、计算机和自动控制技术来检测并处理生产中遇到的缺陷问题,尤其是焊点的检查是AOI 检查的重点与难点,技术相对不成熟,误差较大。
卷积神经网络[4]是深度学习领域中的热门技术之一,尤其是它在图像识别和模式分类方面发挥的优势,是其他技术难以比拟的。这个网络的优势是具有特殊局部感知的特点,大大降低了网络运算的复杂度,并降低权值的数量。本文采用的YOLO5 网络是一种监督式学习的神经网络。卷积层和子采样层是特征提取功能的重要模块,负责特征提取和降维以及减少计算时间。与其他前馈式网络相比,采用梯度下降(GD)的方法,把最小化的损失函数应用到网络中,并对其中的各个节点的权重参数逐层调节,不断调整网络节点的权重参数,使损失函数的结果变得更小,从而提高模型对比样本的拟合程度,使预测结果和实际值更加拟合。
本文运用的卷积网络可以把输入信号在某一特征上进行加强,从而实现特征的提取,也能降低特征噪声。卷积核(kernel)是一个二维矩阵,对输入的图像进行卷积运算。卷积核的初始值随机生成,并在学习过程中随机调整,多个卷积核叠加即为过滤器(filter)。在卷积运算中,卷积核每计算一次,便会向某一方向移动一段距离,这段距离即为步长(stride)。卷积核按一定步长移动过程中,有时会移出图像,因此,需要对原图按圈数补充像素点,即填充(padding)。通过卷积运算,可以获得一张完整的图,即特征图(feature map)。每张特征图映射出来输入图,对应的输入图大小即为感受野,特征图越多,感受野越大,捕获的信息也越多。但是最后一层感受野太大,导致小目标容易丢失,所以本文采用了特征融合的方法,用来融合之前的特征。同时由于没有全连接层,破除了对输入图像长宽比的限制。
为了检测印制电路板表面的多种缺陷,基于YOLOv5深度学习算法,笔者进行了数据集分类、数据增强和神经网络构建的过程。通过对缺陷图像目标信息的提取,在印制电路板数据集上进行迭代训练,筛选出最佳的检测模型。对测试集中的印制电路板图像进行检测,统计检测精度相关参数,与传统印制电路板检测模型对比分析。首先通过特征点匹配算法对进行测试的图像和模板图像进行校准,然后利用搭建好的PCB 缺陷电路板的数据集训练YOLOv5 网络模型,使用训练结果最好的模型对剩下电路板上的元器件进行检测识别,识别检测后输出各元器件的类别及位置信息;最终,采用图像处理算法提取每个元器件的位置信息,并创建相应的特征向量。接下来,计算待测电路板和PCB电路板的元器件特征向量,并对比它们的匹配程度,以确保误差最小,从而实现对所述的6种电路板缺陷的准确检测。
本实验采用了one-stage[5]单阶段算法YOLO 算法作为实验算法,YOLOv5作为第5代版本,检测速度较快,前传耗时为50ms,每秒帧数最高可达140FPS(理论速度),且识别精度较高,mAP@0.5 可达0.991。第二代版本去掉了全连接层,全换成卷积层,破除了对输入图像长宽比的限制;每一层都进行BN,归一化后收敛更加容易;还引入了anchor boxes,通过k-mean聚类预测获得不同比例的先验框;甚至还加入了特征融合;选择相对grid cell 的偏移量,提高了模型的稳定性。这些update为YOLO算法日后行稳致远奠定了坚实的基础;第三代版本和第四代版本在此基础上改进网络结构,使其更适合小目标检测;特征做得更细致;增加了resnet 的残差连接,保证每次卷积至少不比原来差;先验框更丰富;softmax 改进,可以预测多标签任务。
本实验采用的YOLOv5 算法分为5 个权重,由于它们的整体网络结构基本相同,只是depth_multiple和width_multiple参数大小有所不同,而其中YOLOv5s的体积最小,所以本实验选择YOLOv5s 作为实验权重。它由输入端、BackboneNeck、Head、预测4 个部分组成。本文采用的YOLOv5s 的主干网络为New CSPDarknet53,去掉了Focus切片结构,取而代之的是一个6×6的卷积层,二者在实现功能上并无差别,但是更换为卷积层后,对现有的一些GPU设备更加友好。颈部网络为SPPF、New CSP-PAN,将SPP换成了SPPF,SPP是将输入通过并行多个不同大小的maxpool 层,从而进行特征融合。
本次数据集,共收集了648张图片,并对此进行扩容,每张图片扩大了10倍,保证充足的训练量,保持数据的精准度。通过编写脚本,对输入图片添加高斯噪声、色域变换、旋转、缩放等数据增强操作,并对annotation文件夹中xml格式的注释文件中bboxs(回归框)的坐标进行变换。从而将原始图像扩充为7 623张图像,实现数据集的扩充。
本实验数据共6类,分别是:短路、断路、针孔、缺口、咬伤、杂散。利用LabelImg工具打标,输出格式选择为PascalVOC,得到xml格式的文件。其中xml文件中包含了对应的bundingbox 框以及图片width 和height等信息。
为了提高模型的迁移和泛化能力,本实验共使用7 623 张包含缺陷信息且极具代表性的PCB 数据集,每张输入图像的大小为3 034×1 586,经过转化,reshape 为640×640。编写数据集划分程序,以7:2:1 的比例随机分配给train_dataset、val_dataset,test_dataset。保证训练数据分配的随机性。
YOLO 是一种非常流行的计算机视觉算法,可以用于目标检测和物体识别。它的训练过程相对较为复杂,需要先准备好数据集、配置文件和网络模型等多个方面。以下是YOLO 网络模型训练的一般步骤:1)准备数据集,指定超参数;2)下载预训练权重,修改配置文件;3)开始训练,评估模型性能;4)调整模型,预测目标物体。
本实验的运行环境为:GPU 为NVIDIA GeForce RTX 3060;CPU为11thGen Intel i5-11700k@3.60GHZ;内存为32 GB。操作系统版本:Windows10;Cuda版本:11.6;cuDNN版本:8.5;实验开发语言为Python;实验框架为PyTorch,权重参数训练采用随机梯度下降SGD。设置如下:Batch_size 大小为16;动量因子为0.935;初始学习率为0.01;最大迭代的次数epoch 为300;权重衰退系数为0.0005。
本文采用mAP 来衡量PCB 板缺陷的检测效果。对于每一种缺陷类别,可以绘制P-R曲线来评估其检测效果,其中横坐标为召回率,纵坐标为精确率。曲线下的面积被称为平均准确率(AP),而多个缺陷类别的AP平均值则被称为平均精确率(mAP)。mAP的取值范围为0~1,它的计算公式如下:
其中k表示目标检测中的类别集合,而APi则表示某一类别下物体的平均准确率。
对7 623 张PCB 进行300 次迭代训练后,得到最佳权重模型。实验获得的P-R图如图1所示:
图1 实验获得的P-R图
从图1中可以看出,missing_hole 的AP(平均精确度)为0.993,mouse_bite 的AP 为0.991,open_circuit 的AP 为0.994,short 的AP 为0.995,spur 的AP 为0.979,spurious_copper 的AP 为0.992。而均值平均精度(MAP)在IOU 为0.5 的情况下,可达0.991。根据实验结果可得出,检测准确率较高,模型整体性能优越。验证集上的预测结果如图2所示。通过对比标注图片可知,笔者的模型可以精准识别并定位缺陷的位置,且整体检测置信度较高。
图2 验证集上的预测结果
网络训练中的损失如图3所示:
图3 网络训练中的损失
根据图3可以分析得出:随着迭代次数的增加,定位损耗、置信度损失、分类损失逐渐减少,在加入动量因子之后,下降曲线呈现为一条平滑的曲线,而非震荡下降。在第200次迭代后,梯度下降的速度趋缓,损失接近最小值,同时map 接近最大值,模型的拟合程度变强。
本文提出了一种基于YOLOv5 卷积神经网络的PCB板缺陷识别算法,该算法通过卷积来提取缺陷特征,并通过网络训练,从而实现缺陷电路板的自动分类和识别。通过大量实验表明,该算法能够精准地检测电路板元器件缺陷的种类,大大提高检测的效率。可以把该算法集成到系统中,并根据缺陷识别算法研发出相对应的软件,并在日常生活中应用于工业生产当中。