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

news2025/4/1 6:03:30

目录

一、界面全貌展示

 二、前言摘要

三、GUI界面演示

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

(二)单张图像检测

(三)检测图像文件夹

(四)检测视频

(五)摄像头检测

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



完整代码在公猪号:今夜不能眠

回复PCB缺陷检测获得;;;

一、界面全貌展示

运行文件夹中的yolov8_detection_gui.py文件之后,会出现这个登陆界面,直接输入用户名:admin    密码:123456即可登录进去,登陆进去后即可看到界面全貌。

需要说明的是,我在好几个电脑上测试过,最优的分辨率是1920x1080,这个分辨率是最优的。

 二、前言摘要

摘要:本文提出了一种基于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': '缺失孔'

];
2. 支持图片、视频及摄像头进行检测,同时支持图片的批量检测;
3. 界面可实时显示目标位置、目标总数、置信度、用时等信息;
4. 支持图片或者视频的检测结果保存;


下面我逐条介绍此系统的功能,如果你想要看演示视频以及环境搭建教程,可以去这里看;基于YOLOv8的PCB缺陷检测系统(毕设版)_哔哩哔哩_bilibili

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

点击加载自定义模型图标,选择模型权重文件(我放在models里面了)操作界面如下:点击左侧的加载自定义模型按钮之后,会出来这个选择界面文件夹,选择models/best.pt即可;

如果你有你自己训练好的权重文件,也可以直接加载进去,我写的这个界面是兼容多种编程文件的,不只是支持PCB缺陷检测的权重;举个例子这里也可以加载yolov11的权重文件,也可以正常使用;

(二)单张图像检测

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

选中文件之后就会在图像显示区域显示出来,然后即可进行检测;

(三)检测图像文件夹

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

(四)检测视频

点击检测视频文件夹;选择你要检测的视频文件,然后点击开始检测,就会开始检测了,在检测的过程中会自动保存的save_data文件夹中;

(五)摄像头检测

支持摄像头检测,这里我没打开摄像头,你可以将视频或者图像传输到你的手机上,然后对着摄像头检测就行;演示的时候就这么搞就行,哈哈

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

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

 在训练模型之前,为了让我们的数据能够被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目录下找到生成对若干训练过程统计图。下图为博主训练模型训练曲线图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2322973.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙生态圈暗战:数字孪生三强争霸谁将主宰消费电子未来?

IDC数据显示,2025年Q1华为以38.7%份额领跑中国折叠屏市场,Pura X首月销量突破120万台。这款搭载HarmonyOS 5的旗舰,通过灵犀通信技术实现5G A网络下载速率提升30%,并在离线环境下完成厘米级导航。其爆款逻辑背后,是鸿蒙…

react 15-16-17-18各版本的核心区别、底层原理及演进逻辑的深度解析

一、React 15(2016) 核心架构:Stack Reconciler(栈协调器) 工作原理: 同步递归渲染:采用深度优先遍历方式递归处理 Virtual DOM,形成不可中断的调用栈渲染流程:1. 触发 …

CMS迁移中SEO优化整合步骤详解

内容概要 在CMS迁移过程中,系统化的规划与执行是保障SEO排名稳定性的核心。首先需明确迁移流程的关键阶段,包括数据备份、URL适配、元数据同步及安全配置等环节。其中,数据备份不仅需覆盖原始数据库与静态资源,还需验证备份文件的…

数据结构初阶-二叉树链式

目录 1.概念与结构 2.二叉数链式的实现 2.1遍历规则 2.2申请内存空间 2.3手动构建一棵二叉树 2.4二叉树结点的个数 2.5二叉树叶子结点的个数 2.6二叉树第K层结点个数 2.7二叉树的高度 2.8二叉树中查找值为x的结点 2.9二叉树的销毁 3.层序遍历 3.1概念 3.2层序遍历…

Springboot 集成 Flowable 6.8.0

1. 创建 Spring Boot 项目 通过 Spring Initializr(https://start.spring.io/ )创建一个基础的 Spring Boot 项目,添加以下依赖: Spring WebSpring Data JPAMySQL DriverLombok(可选,用于简化代码&#x…

协作机械臂需要加安全墙吗? 安全墙 光栅 干涉区

安全墙是什么 文章目录 安全墙是什么简介1. 物理安全墙1.1 定义:1.2 作用机制:1.3 应用场景: 2. 虚拟安全墙2.2 定义:2.3 作用机制:2.3 应用场景: 3. 安全毛毯3.1 工作原理:3.2 特点3.3 应用场景…

springboot+mybatisplus

1.什么是springboot? Spring Boot是一个用于快速构建Spring应用程序的框架。它旨在帮助开发人员快速搭建Spring框架,减少配置和繁琐的工作。Spring Boot继承了原有Spring框架的优秀基因,使Spring在使用中更加方便快捷。 在Spring Boot中集成ActiveMQ,需要导入相应的starter…

《TypeScript 面试八股:高频考点与核心知识点详解》

“你好啊!能把那天没唱的歌再唱给我听吗? ” 前言 因为主包还是主要学习js,ts浅浅的学习了一下,在简历中我也只会写了解,所以我写一些比较基础的八股,如果是想要更深入的八股的话还是建议找别人的。 Ts基…

SICAR 标准 KUKA 机器人标准功能块说明手册

功能块名称:LSicar_Robot_KUKA_PrD 目录 1. 概述 2. 功能说明 2.1 程序控制 2.2 状态监控 2.3 报警与故障处理 2.4 驱动控制 3. 关键参数说明 4. 操作步骤指南 4.1 初始化配置 4.2 运行控制 4.3 状态监控 5. 常见故障处理 6. 注意事项 附录1:程序段索引 附录…

linux中如何修改文件的权限和拥有者所属组

目录标题 chmod指令八进制形式权限修改文件拥有者所属组的修改umask有关内容 chmod指令 chmod指令可以用来修改人员的权限其形式如下: u代表的是拥有者,g代表的是所属组,o代表的是其他人,a表示所有人,如果你想增加权…

掌握Linux项目自动化构建:从零入门make与Makefile

文章目录 前言: 一、初识自动化构建工具1.1 什么是make/Makefile?1.2 快速体验 二、深入理解核心机制2.1 依赖关系与依赖方法2.2 伪目标的妙用2.3 具体语法a.makefile的基本雏形b.makefile推导原则! 三、更加具有通用型的makefile1. 变量定义…

Jenkins 配置python项目和allure

Jenkins新建项目 新建ry-api-auto-test。 添加项目描述,选择gitee令牌。 源码管理,设置仓库地址和凭证。参考我上一篇文章的链接:配置gitee私人令牌和凭证 构建步骤,因为我Jenkins部署在Windows,因此选择batch。…

vue3:十一、主页面布局(进入指定菜单页面,默认锁定到左侧菜单)

一、效果 直接进入home页面,直接展开对应的菜单项 二、具体实现 1、菜单容器增加默认选中变量 在菜单容器中将默认展开菜单default-openeds修改为默认选中菜单default-active 2、引入useRoute方法 引入该方法为了获取当前页面的路径 import { useRoute } from …

【蓝桥杯】每日练习 Day13

前言 今天做了不少题,但是感觉都太水了,深思熟虑之下主播决定拿出两道相对不那么水的题来说一下(其实还是很水)。 两道问题,一道是日期问题(模拟),一道是区间合并问题。 日期差值 …

【Docker系列七】Docker Compose 命令详解

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【AI学习】Transformer 模型

1,概念 是一种基于自注意力机制(Self-Attention Mechanism)的深度学习架构,在自然语言处理、计算机视觉等多个领域都有着极为重要的应用。 2,基本结构 1)编码器(Encoder) 通常由多个相同的编码器层堆叠而成。 每个编码器层包含了多头自注意力机制、前馈神经网络以及…

大数据学习栈记——HBase操作(shell java)

本文介绍HBase在shell终端的常见操作以及如何利用java api操作HBase,操作系统:Ubuntu24.04 参考: https://blog.51cto.com/u_16099228/8016429 https://blog.csdn.net/m0_37739193/article/details/73618899 https://cloud.tencent.com/d…

智能制造:物联网和自动化之间的关系

工业自动化 工业自动化是机器设备或生产过程在不需要人工直接干预的情况下按预期的目标实现测量、操纵等信息处理和过程控制的统称。 在传统的工业生产过程中,很多环节需要人工操作,比如设备调试、生产监控、质量检测等。然而,随着工业自动化…

Axure项目实战:智慧城市APP(三)教育查询(显示与隐藏交互)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:教育查询 主要内容:教育公告信息,小升初、初升高、高考成绩查询;教育公告信息为传统的信息页面,小升…

01 设计模式和设计原则

类设计原则: 单一职责原则(Single Responsibility Principle,SRP):实现类要职责单一开闭原则(Open Close Principle,OCP):对扩展开放,对修改关闭里氏替换原则…