基于深度学习的PCB板缺陷检测系统(含UI界面、yolov8、Python代码、数据集)

请添加图片描述

在这里插入图片描述

项目介绍

项目中所用到的算法模型和数据集等信息如下:

算法模型:
    yolov8

    yolov8主要包含以下几种创新:
        1. 添加注意力机制(SECBAM等)
        2. 修改可变形卷积(DySnake-主干c3替换、DySnake-所有c3替换)

数据集:
    网上下载的数据集,详细介绍见数据集介绍部分。

以上是本套代码的整体算法架构和对目标检测模型的修改说明,这些模型修改可以为您的 毕设、作业等提供创新点和增强模型性能的功能

如果要是需要更换其他的检测模型,请私信。

注:本项目提供所用到的所有资源,包含 环境安装包、训练代码、测试代码、数据集、视频文件、 界面UI文件等。


项目简介

本文将详细介绍如何使用深度学习中的YOLOv8算法实现对车型的检测,且利用PyQt5设计了简约的系统UI界面。在界面中,您可以选择自己的视频文件、图片文件进行检测。此外,您还可以更换自己训练的yolov8模型,进行自己数据的检测。

该系统界面优美,检测精度高,功能强大。它具备多目标实时检测,同时可以自由选择感兴趣的检测目标。

本博文提供了完整的Python程序代码和使用教程,适合新入门的朋友参考。您可以在文末的下载链接中获取完整的代码资源文件。以下是本博文的目录:

目录

  • 项目介绍
  • 项目简介
  • 效果展示:
  • 🌟一、环境安装
  • 🌟二、数据集介绍
  • 🌟三、 目标检测介绍
    • yolov8相关介绍
  • 四、 yolov8训练步骤
    • 五、 yolov8评估步骤
    • 六、 训练结果
  • 🌟下载链接

效果展示:

功能:
1. 支持单张图片识别
2. 支持遍历文件夹识别
3. 支持识别视频文件
4. 支持结果导出(xls、csv两种格式)
5. 支持切换检测到的目标

基于深度学习的PCB板缺陷检测系统


🌟一、环境安装

本项目提供所有需要的环境安装包(python、pycharm、cuda、torch等),可以直接按照视频讲解进行安装。具体的安装流程见此视频:视频链接
环境安装视频是以车牌项目为例进行讲解的,但是可以适用于任何项目。

视频快进到 3:18 - 21:17,这段时间讲解的是环境安装,可直接快进到此处观看。
在这里插入图片描述

环境安装包可通过百度网盘下载:
链接:https://pan.baidu.com/s/17SZHeVZrpXsi513D-6KmQw?pwd=a0gi
提取码:a0gi
–来自百度网盘超级会员V6的分享

上面这个方法,是比较便捷的安装方式(省去了安装细节),按照我的视频步骤和提供的安装包安装即可,如果要是想要多学一点东西,可以按照下面的安装方式走一遍,会更加熟悉。

环境安装方法2:
追求快速安装环境的,只看上面即可!!!

下面列出了5个步骤,是完全从0开始安装(可以理解为是一台新电脑,没有任何环境),如果某些步骤已经安装过的可以跳过。下面的安装步骤带有详细的视频讲解和参考博客,一步一步来即可。另外视频中讲解的安装方法是通用的,可用于任何项目

  1. python环境安装:B站视频讲解
  2. cuda、cudnn安装:B站视频讲解
  3. torch安装: B站视频讲解
  4. pycharm安装: B站视频讲解
  5. 第三方依赖包安装: B站视频讲解

按照上面的步骤安装完环境后,就可以直接运行程序,看到效果了。


🌟二、数据集介绍

数据集总共包含下面6个类别,且已经分好 train、val、test文件夹,也提供转好的yolo格式的标注文件,可以直接使用。

missing_hole 				# 漏孔
mouse_bite  				# 鼠牙洞
open_circuit				# 开路
short       				# 短路
spur						# 毛刺
spurious_copper				# 杂铜

数据样式如下:
在这里插入图片描述


🌟三、 目标检测介绍

yolov8相关介绍

YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。

不过 ultralytics 并没有直接将开源库命名为 YOLOv8,而是直接使用 ultralytics 这个词,原因是 ultralytics 将这个库定位为算法框架,而非某一个特定算法,一个主要特点是可扩展性。其希望这个库不仅仅能够用于 YOLO 系列模型,而是能够支持非 YOLO 模型以及分类分割姿态估计等各类任务。
总而言之,ultralytics 开源库的两个主要优点是:

  • 融合众多当前 SOTA 技术于一体

  • 未来将支持其他 YOLO 系列以及 YOLO 之外的更多算法

在这里插入图片描述

网络结构如下:
在这里插入图片描述


四、 yolov8训练步骤

此代码的训练步骤极其简单,不需要修改代码,直接通过cmd就可以命令运行,命令都已写好,直接复制即可,命令如下图:
在这里插入图片描述
下面这条命令是 训练 添加 CBAM 注意力机制的命令,复制下来,直接就可以运行,看到训练效果(需要将coco_NEU-DET.yaml替换为自己的数据集的yaml文件)。

python ./train.py --epochs 500 --cfg models/yolov5s-CBAM-2.yaml --hyp data/hyps/hyp.scratch-low.yaml --data data/coco_NEU-DET.yaml --weight weights/yolov5s.pt --workers 4 --batch 16

执行完上述命令后,即可完成训练,训练过程如下:
在这里插入图片描述

下面是对命令中各个参数的详细解释说明:

  • python: 这是Python解释器的命令行执行器,用于执行后续的Python脚本。

  • ./train.py: 这是要执行的Python脚本文件的路径和名称,它是用于训练目标检测模型的脚本。

  • --epochs 500: 这是训练的总轮数(epochs),指定为500,表示训练将运行500个轮次。

  • --cfg models/yolov5s-CBAM-2.yaml: 这是YOLOv5模型的配置文件的路径和名称,它指定了模型的结构和参数设置。

  • --hyp data/hyps/hyp.scratch-low.yaml: 这是超参数文件的路径和名称,它包含了训练过程中的各种超参数设置,如学习率、权重衰减等。

  • --data data/coco_NEU-DET.yaml: 这是数据集的配置文件的路径和名称,它指定了训练数据集的相关信息,如类别标签、图像路径等。

  • --weight weights/yolov5s.pt: 这是预训练权重文件的路径和名称,用于加载已经训练好的模型权重以便继续训练或进行迁移学习。

  • --workers 4: 这是用于数据加载的工作进程数,指定为4,表示使用4个工作进程来加速数据加载。

  • --batch 16: 这是每个批次的样本数,指定为16,表示每个训练批次将包含16个样本。

通过运行上面这个命令,您将使用YOLOv5模型对目标检测任务进行训练,训练500个轮次,使用指定的配置文件、超参数文件、数据集配置文件和预训练权重。同时,使用4个工作进程来加速数据加载,并且每个训练批次包含16个样本。


五、 yolov8评估步骤

评估步骤同训练步骤一样,执行1行语句即可,注意--weights需要变为自己想要测试的模型路径, VOC_helmet.yaml替换为自己的数据集的yaml文件。

python ./val.py --data  data/VOC_PCB.yaml --weights ../weights/yolov5s.yaml/weights/best.pt

评估结果如下:
在这里插入图片描述


六、 训练结果

我们每次训练后,会在 run/train 文件夹下出现一系列的文件,如下图所示:
在这里插入图片描述


🌟下载链接

   该代码采用Pycharm+Python3.8开发,经过测试能成功运行,运行界面的主程序为main.py,提供用到的所有程序。为确保程序顺利运行,请按照requirements.txt配置Python依赖包的版本。Python版本:3.8,为避免出现运行报错,请勿使用其他版本,详见requirements.txt文件;

    若您想获得博文中涉及的实现完整全部程序文件(包括训练代码、测试代码、训练数据、测试数据、视频,py、 UI文件等,如下图),这里已打包上传至博主的面包多平台,可通过下方项目讲解链接中的视频简介部分下载,完整文件截图如下:
在这里插入图片描述

项目演示讲解链接:B站

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux:apache优化(3)—— 页面缓存时间

作用:通过 mod_expires 模块配置 Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求,减轻服务端工作压力。启用 mod_expires 模块后,会自动生成页面头部信息中的 Expires 标签和 CacheControl 标签&#xff0…

AIGC年度回顾!2024向量数据库是否还是AI发展方向之一?

引言 2023 年,是 AI 技术大爆发的一年,从年初到年末,全球关心技术发展的人们见证了一次次的 AI 技术升级,也逐步加深着对 AGI 发展的畅想。而伴随着生成式人工智能的飞速发展,向量数据库以其独特的技术优势逐渐崭露头角…

char 和 varChar 的区别是什么?

大家好,我是伯约,这篇对大家有帮助的话求一个赞,另外文章末尾放了我从月入7k到现在3W的学习资料,大家可以去领一下(无偿)。 CHAR 和 VARCHAR 是最常用到的字符串类型,两者的主要区别在于&#x…

案例073:基于微信小程序的智慧旅游平台开发

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

大文件快速传输解决办法汇总

在数据传输普及的当今时代,文件体量也在不断的突破它”大“的上线,很多企业也在面临着这类大文件快速传输的烦恼,而且这里面的“大”可不是一般意义的几M,几G的文件,它有可能上T级甚至是PB级别、TB级别的大文件,或者是…

LINUX加固之命令审计

一、前言 在LINUX安全范畴中,安全溯源也是很重要的一个环节。对主机上所有曾操作过的命令详细信息需要有一份记录保存,当系统遭受破坏或者入侵,拿出这份记录,可以帮助定位一些可疑动作。 很多系统通常都会配置安全堡垒机&#xff…

二、串行FLASH文件系统FatFs移植

经过上一节的分析,我们对文件系统有一定的理解了,这一节给大家介绍怎么把FatFs文件系统的这些代码移植到STM32S上,然后STM32利用这一些代码或者函数,以文件的格式对FLASH进行读写数据。 实则对diskio.c提供一些函数接口。 首先将…

企业内训系统源码开发实战:搭建实践与经验分享

本篇文章中,小编将带领读者深入探讨企业内训系统的源码开发实战,分享在搭建过程中遇到的挑战与解决方案。 一、项目规划与需求分析 通过对企业内训需求的深入了解,我们可以更好地定义系统架构和数据库设计。 二、技术栈选择 在内训系统开发…

2024年MySQL学习指南(三),探索MySQL数据库,掌握未来数据管理趋势

文章目录 前言7. DML- 增删改数据7.1 添加数据7.2 修改数据7.3 删除数据 8. DQL- 数据的查询操作8.1 基础查询1. 基础查询语法2. 基础查询练习 8.2 条件查询1. 条件查询语法2. 条件查询练习 8.3 排序查询1. 排序查询语法2. 排序查询练习 8.4 聚合函数1. 聚合函数语法2.聚合函数…

部署node.js+express+mongodb(更新中)

1-Linux服务器部署MongoDB 1.升级 yum -y update 2.下载MongoDB安装包 3.上传安装包 上传目录 : /usr/local/ 2-配置MongoDB环境变量并启动 1.配置环境变量全局启动 vi ~/.bash_profile 使用i命令进入编辑模式 添加: export PATH/usr/local/mongodb/bin:$P…

centos 8.0 安装sysbench 1.0.17

序号步骤说明执行命令执行结果备注1 下载并解压sysbench-1.0.17.zip sysbench-1.0.17.zip2安装依赖文件 yum install automake libtool -y yum install /usr/include/libpq-fe.h 3安装sysbench cd sysbench-1.0.17 ./autogen.sh ./configure \ --prefix/sysbench \ --with-pgsq…

Javaweb之Mybatis的基础操作之删除的详细解析

1.3 删除 1.3.1 功能实现 页面原型: 当我们点击后面的"删除"按钮时,前端页面会给服务端传递一个参数,也就是该行数据的ID。 我们接收到ID后,根据ID删除数据即可。 功能:根据主键删除数据 SQL语句 -- 删除…

C语言中关于strcpy函数的理解

strcpy的功能是将源指向的字符串复制到另外一个字符串中 目标指向的数组的大小应该要足够长&#xff0c;避免让源字符串中的数据溢出 关于这个函数的具体用法&#xff0c;我们可以看看下面这个程序 注意&#xff1a;strcpy函数的头文件是<string.h>&#xff0c;我们在用…

【科研绘图】Origin科研绘图超快速上手指南

Origin教程 Part 1:Origin界面介绍项目管理器graph文件工具栏文字工具箭头工具&#xff0c;直线工具 菜单栏文件新建导出 图图表绘制 Part 2:绘图实例讲解1.创建工程2.导入数据到book3.创建空Graph&#xff0c;设置画布尺寸4. 添加坐标系&#xff0c;设置坐标系的位置与尺寸5.添…

教师技能干货:如何快速发布期末考试成绩

期末考试结束&#xff0c;随之而来的是成绩发布。对于教师而言&#xff0c;这是一项既重要又繁琐的工作。成绩的发布不仅是对学生一学期努力的肯定&#xff0c;也是对学生未来学习的指引。那么&#xff0c;如何快速、准确地发布期末考试成绩呢&#xff1f;下面将为您分享一些实…

Java-replaceAll()同时替换多个字符

今天复现了raplaceAll&#xff08;&#xff09;的用法&#xff0c;但是通常都是对一种字符进行替换&#xff0c;我就在想有没有操作可以一次性替换多个不同的字符&#xff0c;百度一搜&#xff0c;果然有。具体情况如下 首先是替换字的 String str1 "小明&#xff0c;小…

Win32 TEXT()宏学习

之前学习了_T()宏&#xff1b; _T()是MFC的&#xff1b; TEXT()是win32的&#xff1b; _T("")定义于tchar.h&#xff1b; TEXT宏是windows程序设计中经常遇到的宏&#xff0c;定义在 <winnt.h>中&#xff1b; 如果使用UNICODE字符集&#xff0c;则TEXT&…

02-微服务-Eureka注册中心

Eureka注册中心 假如我们的服务提供者user-service部署了多个实例&#xff0c;如图&#xff1a; 大家思考几个问题&#xff1a; order-service在发起远程调用的时候&#xff0c;该如何得知user-service实例的ip地址和端口&#xff1f;有多个user-service实例地址&#xff0c;…

什么是差值表达式

在Vue.js中&#xff0c;差值表达式是一种基本的数据绑定形式&#xff0c;用于将数据绑定到文档对象模型&#xff08;DOM&#xff09;上。差值表达式通常使用双大括号 {{ }} 来表示&#xff0c;这种语法非常直观。当Vue实例的数据发生变化时&#xff0c;差值表达式的内容也会相应…

【源码分析】 Calcite 处理流程详解:calcite架构、处理流程以及就一个运行示例进行源码分析

文章目录 一. Calcite整体架构二. Calcite处理流程三. 处理流程样例说明1. 样例demo1.1. 样例数据1.2. 使用calcite 2. 流程源码分析Step1: SQL 解析阶段&#xff08;SQL–>SqlNode&#xff09;Step2: SqlNode 验证&#xff08;SqlNode–>SqlNode&#xff09;1. 注册元数…