目录

基于YOLOv8深度学习的PCB缺陷检测识别系统python源码GUI界面数据集训练代码

基于YOLOv8深度学习的PCB缺陷检测识别系统【python源码+GUI界面+数据集+训练代码】

一、界面功能展示

基于YOLOv8的PCB板缺陷检测系统

二、前言摘要

https://i-blog.csdnimg.cn/direct/fb38e26ee7774dc08a621b9d6aa72372.png

摘要:本文提出了一种基于YOLOv8算法的印刷电路板(PCB)缺陷智能检测系统,旨在提升电子制造领域的质量控制效率。针对传统检测方法在复杂缺陷识别中的局限性,本研究采用改进型YOLOv8目标检测框架。系统首先构建包含短路、断路、焊点缺陷、划痕等典型缺陷的多源PCB图像数据库,通过数据增强策略优化样本多样性。系统架构集成图像预处理、动态推理和可视化分析模块,可实时处理产线采集的PCB图像并输出缺陷定位及分类结果。通过实验验证,基于YOLOv8的PCB缺陷检测系统展现出优异的准确性和实时性。

三、GUI界面演示

首先, 基于YOLOv8的PCB缺陷检测 系统 主要用于PCB板上缺陷的识别,显示缺陷目标在图像中的类别、位置、数目、置信度等;可对单张图片、文件夹、视频文件读取的图像,或从摄像头获取的实时画面中的PCB缺陷进行识别,算法模型可选择替换;( 这里,支持多种算法切换-从YOLOv8-YOLOv11都是可以用的,如果你手头有训练好的不是YOLOv8的模型,那也可以使用,直接选择就能使用;兼容性比较高) ;界面包含识别结果可视化,结果实时显示并能够进行目标逐个标注、显示和数据展示;画面显示窗口可缩放、拖动、自适应,结果可点击按钮保存,方便后续查阅使用。

  1. 可进行6种PCB缺陷检测与识别,分别为: [

‘mouse_bite’: ‘鼠咬’,

‘open_circuit’: ‘开路’,

‘short’: ‘短路’,

‘spur’: ‘毛刺’,

‘spurious_copper’: ‘杂铜’,

‘missing_hole’: ‘缺失孔’

];

  1. 支持图片、视频及摄像头进行检测,同时支持图片的批量检测;

  2. 界面可实时显示目标位置、目标总数、置信度、用时等信息;

  3. 支持图片或者视频的检测结果保存;

(一)用户加载自定义模型

点击加载自定义模型图标,选择模型权重文件(我放在models里面了)操作演示如下:

3月14日

(二)单张图像检测

点击加载图像按钮,加载完成后点击开始检测按钮,进行检测;

3月14日(1)

(三)检测图像文件夹

点击加载文件夹按钮,点击开始检测开始,停止检测停止,检测结果在检测结果框里,右侧会有检测图像的名称,双击即可随意切换;

3月14日(2)

(四)检测视频

点击检测视频文件夹;即可检测

3月14日(3)

(五)保存

点击保存结果按钮,输入要保存的名称即可保存;

四、模型训练以及训练结果

数据集展示: 通过网络上搜集关于PCB缺陷 的各类图片 ,并使用LabelMe标注工具对每张图片中的目标边框(Bounding Box)及类别进行标注。一共包含 693张图片 ,其中 训练集包含554张图片验证集包含139张图片 ,部分图像及标注如下图所示。

https://i-blog.csdnimg.cn/direct/4867019318444a539690dbeae9369a0a.png

https://i-blog.csdnimg.cn/direct/57667fdc53ae4ed2937a5624a9e83c5f.jpeg

在训练模型之前,为了让我们的数据能够被YOLO找到,我们需要写一个data.yaml文件存储在目录下,在其中记录下数据的路径和模型要识别的标记类别,文件内容如下所示。YOLO通过读取目录下的data.yaml文件,进而找到我们数据集存储的位置才能读取数据进行训练验证。

train: \PCBDetection\datasets\PCB_DATASET\train  # train images (relative to 'path') 128 images
val: \PCBDetection\datasets\PCB_DATASET\val  # val images (relative to 'path') 128 images
test:  # val images (optional)

# number of classes
nc: 6

# Classes
names: ["missing_hole", "mouse_bite", "open_circuit", "short", "spur", "spurious_copper"]

我们可以在终端输入如下命令进行训练,当然也可以直接点击train.py运行。

python train.py --batch 32 --epochs 300 --data data.yaml --weights yolov8n.pt 
完整代码地址https://mbd.pub/o/bread/mbd-aJaUmJ5t

在深度学习中,我们通常通过损失函数下降的曲线来观察模型训练的情况。而YOLOv8训练时主要包含三个方面的损失:矩形框损失(box_loss)、置信度损失(obj_loss)和分类损失(cls_loss),在训练结束后,我们也可以在logs目录下找到生成对若干训练过程统计图。下图为博主训练模型训练曲线图。

https://i-blog.csdnimg.cn/direct/a4fb17180ba24aa2bca46cc4b1c4cf39.png

https://i-blog.csdnimg.cn/direct/17f22a0f7527455486b924f307ef3b96.png