基于LabVIEW和YOLOv5的PCB缺陷检测方法

作者: 舒强

 基于LabVIEW和YOLOv5的PCB缺陷检测方法0

关键词:LabVIEW;Python;PCB;缺陷检测

中图分类号:TP391 文献标识码:A

文章编号:1009-3044(2024)28-0124-03

印制电路板(Printed Circuit Board,PCB) 是电子产品中各种电子元器件的载体,也是电子产品可靠性的重要组成部分。然而,PCB的生产过程涉及多道工序,可能会出现各种缺陷,如短路、漏焊、开路等。由于这些缺陷可能导致电子产品无法正常工作,对PCB 进行表面缺陷检测至关重要。传统的基于图像处理和机器学习的视觉缺陷检测技术在面对不同缺陷类型或环境变化时,通常需要重新调整参数和重新训练模型,其泛化能力较差。深度学习算法能够自动学习特征,具有较强的泛化能力,可以有效解决传统方法泛化性差的问题。LabVIEW作为虚拟仪器开发平台,拥有丰富的机器视觉处理功能,被广泛应用于自动检测系统,但在深度学习方面的支持尚不完善。

本文针对上述问题,将深度学习YOLOv5算法导入LabVIEW开发环境,利用NI IMAQ和NI Vision的函数采集摄像机视频图像,经过预处理后由Python编写的YOLOv5推理函数进行PCB缺陷检测,最终结果传回LabVIEW。该方法提高了PCB缺陷检测的泛化能力,扩展了LabVIEW的应用场景。

1 PCB 缺陷的视觉检测技术

1.1 传统视觉检测技术

早期的PCB表面缺陷检测方法主要是人工目视检测,这种方法存在主观因素强、人工成本高、数据收集困难等问题。目前,PCB缺陷检测技术主要包括自动光学检测(AOI) 和机器视觉检测(MVI) 。视觉检测系统通过光学元件和图像传感器获取PCB图像,并经过定位、预处理、分割等步骤提取特征,随后与模板特征进行比较以分类和标记缺陷。图像处理和特征提取是视觉检测技术的核心,部分经典机器学习算法也被用于缺陷检测,例如支持向量机(SVM) 、神经网络等,这些算法逐渐发展出丰富的工具和方法。易欢等将HALCON机器视觉软件引入PCB焊接缺陷检测,设计的检测系统适用于中小型生产企业[1]。胡江宇等采用改进的Faster RCNN,提高了PCB微小缺陷的分类精度[2]。

1.2 基于深度学习的视觉检测

近年来,深度学习算法取得了显著进步,YOLO系列算法成为目标检测的研究热点之一,并在PCB缺陷检测中被广泛研究和应用。YOLOv5网络结构包含输入层、主干网络、特征融合网络和输出层四个部分。YO⁃LOv5算法提供YOLOv5s、YOLOv5m、YOLOv5l和YO⁃LOv5x四种模型,其中由于YOLOv5s的轻量化特点,它在速度和精度之间取得了较好的平衡,是最常用的一种模型[3]。为了进一步提升检测效果,研究人员对YOLO 算法进行了多种改进,并提出了新的模型。比如,陈怡菲等在YOLOv5模型中引入了Coordinate Attention注意力机制,从而提高了PCB板缺陷的检测精度[4]。

1.3 基于LabVIEW 的PCB缺陷检测系统

PCB缺陷检测系统一般包括硬件部分和软件部分。硬件部分主要负责图像采集,而软件部分则负责缺陷检测。在实际应用中,通常通过在开发平台上挂载工具包的形式来构建PCB缺陷检测系统的软件部分。Lab⁃VIEW是美国NI公司开发的虚拟仪器开发平台,具有通用编程系统的函数库,还提供了丰富的数据采集、仪器通信协议、数据分析等工具,拥有强大的图形化编程功能。LabVIEW还提供了多种针对特定应用的附加模块,例如实时模块、FPGA模块、图像处理和视觉模块等,便于用户进行各种功能的开发。Lab⁃VIEW虚拟仪器的设计包括前面板和框图程序两部分:前面板用于人机交互界面的设计,框图程序则通过图标和连线等进行程序功能的设计。由于LabVIEW采用图形化的编程方式,易学易用,在自动化测试、数据采集、仪器控制等领域得到了广泛应用。Lab⁃VIEW 提供了NI Vision Builder 和IMAQ Vision这两部分视觉开发模块,拥有丰富的图像采集、分析处理和计算测量函数,方便用户高效完成机器视觉系统的设计。郭联金等应用LabVIEW的机器视觉功能构建了针对PCB空板的缺陷检测系统[5]。

尽管LabVIEW的机器视觉功能随着版本的更新不断完善,但对深度学习的支持仍有限,尚未提供完整的解决方案。近年来,Python在科学计算领域得到了广泛应用,自LabVIEW 2018版开始,LabVIEW提供了Python节点,方便用户调用Python程序,这一功能在后续版本中逐步完善。本文采用LabVIEW 2023Q1 版本,通过Python 节点在LabVIEW 中实现基于YO⁃LOv5的推理。

2 系统方案

本文构建的PCB缺陷检测系统的设计方案如图1 所示。系统分为硬件和软件两个部分。硬件部分负责PCB图像的采集,主要由USB摄像机和计算机构成。软件部分包括基于Python 3.9的训练和推理部分(图1中的虚线框),以及基于LabVIEW的图像采集、增强、推理和交互界面的虚拟仪器设计。

2.1 PCB 缺陷检测系统的虚拟仪器设计

虚拟仪器主要负责图像数据的采集和增强,并调用Python函数进行缺陷推理。虚拟仪器的前面板和框图程序如图2和图3所示。

在计算机操作系统上安装摄像机驱动后,需要在NI MAX的“设备和接口”中确认摄像机是否成功安装,并确定系统分配的摄像机名称。在本系统中,计算机自带的摄像头标识为“cam0”,外接的USB摄像机为cam1。在框图程序中,通过IMAQdx 中的Open、Configure Grab、Grab和Close四个VI实现图像采集,获得单帧图像。考虑到实际应用场景中可能存在的光照不均匀问题,需要增强局部对比度,本文采用直方图均衡化来增强图像细节,并使用“IMAQ ColorEqual⁃ize”VI作为图像增强算法,同时在前面板提供选择开关供用户使用。为了方便用户选择摄像机或已有的照片,前面板提供图像来源选择功能。此外,为保存检测结果,还提供了图片保存功能,并以列表形式显示分类和置信度。

2.2 实验数据集及训练参数

实验数据集采用北京大学智能机器人开放实验室共享的PCB瑕疵数据集,该数据集包含1 386张图像,涵盖6 种缺陷:漏孔(missing hole) 、鼠咬(mousebite) 、开路(open circuit) 、短路(short) 、杂散(spur) 、杂铜(spurious copper) [6]。训练过程中,使用YOLOv5s模型,训练参数设置如下:训练周期(epochs) 为150次,批处理数量(batch-size) 为16,图片尺寸(imgsz) 为640。模型训练结果的precision-recall 曲线如图4所示,[email protected]达到0.951。

2.3 推理

LabVIEW 提供的Open Python Session 和PythonNode函数可以方便用户调用Python执行推理脚本。其中,Open Python Session函数用于打开Python会话,该函数需要设置Python解释器的路径和版本,并获取会话句柄;而Python Node函数用于直接调用Python函数。调用时,需要连接会话句柄,指定Python模块的路径和函数名称,并在函数有返回值的情况下指定返回值的数据类型。

LabVIEW 采集的图像数据类型为LabVIEW 的image格式,在Python脚本中无法直接处理。因此,需要将图像数据转换成数组,利用Python Node函数以参数的形式传递到Python 脚本。LabVIEW 的IMAQExtractColorPlanes 和Image ToArray 函数能够将图像数据转化为R、G、B三个颜色的数组。

为了处理LabVIEW的三色图像数组,需要将Py⁃thon端的YOLOv5推理脚本detect 改造成函数detec⁃timg(b, g, r)。该函数以R、G、B三个颜色的数组作为输入参数,数据类型均为np.uint8。首先,使用cv2.merge((b, g, r))函数将这三个颜色数组合并为Python可处理的图像数据,然后执行推理过程,得到包括类别、预测边界坐标和置信度的推理结果。由于LabVIEW与Py⁃thon的数据类型并不完全通用,并且LabVIEW的Py⁃thon Node无法直接接收Python的元组、列表、字典等数据类型,因此本文将推理结果包含的多个数值以字符串的形式封装,通过return语句返回给LabVIEW。推理过程使用训练得到的best权重文件进行推理。

2.4 检测结果显示

在获得推理函数返回的字符串后,首先需要解析出类别、边界框坐标以及置信度数据。然后,通过IMAQ Overlay Multiple Lines 2和IMAQ Overlay Text函数在图像上叠加边界框和置信度图层。考虑到PCB 可能存在多种颜色,为方便识别,边界框的颜色和线宽可以由用户根据实际情况进行调整设置。

3 PCB 缺陷检测实验

测试的PCB板如图6所示,板上的3个漏孔缺陷(missing hole) 被成功正确检出。

在使用数据集中未参与训练的PCB图片进行测试时,如图7所示,图片中的鼠咬(mouse bite) 缺陷也被成功正确检出。

4 结论

本文提出了一种将深度学习算法YOLOv5应用于PCB缺陷检测的智能化系统设计方法,通过Python和LabVIEW的联合编程,拓展了LabVIEW的机器视觉处理能力。实验结果表明,该方法能够有效检测PCB缺陷,并获得可靠的检测结果,有助于简化传统PCB 缺陷检测系统的设计工作。未来,基于本文的设计,可以进一步探索更优化的深度学习算法,以提高PCB 缺陷的识别率和检测精度,同时降低计算量。这将有助于在更广泛的应用场景中实现更高效的PCB缺陷检测。

经典小说推荐

杂志订阅