【YOLO 系列】基于YOLO的工业自动化轴承缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】

前言

轴承作为机械设备中的关键部件,其性能直接影响到设备的稳定性和寿命。轴承缺陷的早期检测对于预防设备故障、减少维护成本和提高生产效率至关重要。然而,传统的轴承缺陷检测方法往往依赖于人工检查,这不仅效率低下,而且容易受到主观因素的影响。为了提高轴承缺陷检测的准确性和效率,我们开发了基于YOLO V8的轴承缺陷智能检测系统。该系统利用深度学习技术,能够自动识别和分类轴承缺陷,即使在缺陷不明显或环境复杂的情况下也能保持高准确度。

通过对轴承缺陷数据集的深入分析和标注,我们训练了YOLOV8模型,使其能够精确识别轴承表面的缺陷,如裂纹、磨损、腐蚀等。这一系统能够实时处理图像数据,为轴承缺陷检测提供了一种快速、准确、自动化的解决方案。

基于此项目,设计了一个使用Pyqt5库来搭建页面展示系统。本系统支持的功能包括训练模型的导入、初始化;置信度与IOU阈值的调节、图像上传、检测、可视化结果展示、结果导出与结束检测;视频的上传、检测、可视化结果展示、结果导出与结束检测;摄像头的上传、检测、可视化结果展示与结束检测;已检测目标信息列表、位置信息;以及推理用时。本博文提供了完整的Python代码和使用教程,适合新入门的朋友参考,完整代码资源文件请转至文末的下载链接

优势

  1. 高准确性:YOLOV8模型经过优化,能够准确识别各种轴承缺陷,即使在缺陷不明显的情况下。

  2. 实时性:系统能够快速处理图像数据,提供实时的缺陷检测结果,适合生产线上的快速检测需求。

  3. 鲁棒性:系统在不同环境和条件下都能保持较高的识别率,具有良好的鲁棒性。

  4. 可扩展性:系统设计考虑了不同类型和尺寸的轴承,具有良好的可扩展性,可以适应不同的检测需求。

  5. 降低成本:自动化的检测系统减少了人工检查的需求,从而降低了维护成本和人力资源消耗。

应用前景

  1. 工业自动化:系统可以集成到自动化生产线中,实现轴承缺陷的自动检测,提高生产效率和产品质量。

  2. 预测性维护:通过早期识别轴承缺陷,系统有助于实施预测性维护策略,减少意外停机和维修成本。

  3. 质量控制:系统可以作为质量控制的一部分,确保出厂产品的质量符合标准。

  4. 设备健康管理:系统可以用于监测设备健康状况,及时预警潜在的故障风险。

  5. 研究与开发:在轴承设计和材料研究中,系统可以提供关于缺陷分布和类型的重要数据,辅助研发工作。

  6. 教育与培训:系统可以作为教育工具,帮助学生和工程师了解轴承缺陷的类型和检测技术。


一、软件核心功能介绍及效果演示

软件主要功能

  1. 支持图片、图片批量、视频及摄像头进行检测,同时摄像头可支持内置摄像头和外设摄像头

  2. 可对检测结果进行单独分析,并且显示单个检测物体的坐标、置信度等;

  3. 界面可实时显示目标位置检测结果检测时间置信度检测结果回滚等信息;

  4. 支持图片视频摄像头的结果保存,将检测结果保持为excel文件;

界面参数设置说明

  1. 标签4 摄像头源/相机/网络源

  2. 标签5 交并比阈值:目标检测时的iou参数,只有目标检测框的交并比大于该值,结果才会显示;

  3. 标签6 置信度阈值:目标检测时的conf参数,只有检测出的目标置信度大于该值,结果才会显示;

  4. 标签7 显卡选择:在进行推理时是否使用显卡,默认勾选(使用显卡);

  5. 标签8 半精度选择:启用半精度(FP16)推理,可加快支持的 GPU 上的模型推理速度,同时将对精度的影响降至最低,默认不勾选(不使用半精度);

  6. 标签9 图片推理尺寸: 在推理时将推理图片固定的尺寸;

  7. 标签10 数据集的配置文件:数据集在训练时的配置文件(.yaml);

  8. 标签11 训练好的模型:最终要进行推理的模型,一般选择最优的一个模型;

  9. 标签12 类别名:该项目的所有类别,可以方便在后续查看某一个类别。

视频演示

工业自动化轴承缺陷检测系统

图片检测演示

  1. 点击打开图片按钮,选择需要检测的图片,或者点击打开文件夹按钮,选择需要批量检测图片所在的文件夹,操作演示如下:

  2. 点击表格中的指定行,界面会显示该行表格所写的信息内容。

视频检测演示

  1. 点击视频按钮图标,打开选择需要检测的视频,在点击开始运行会自动显示检测结果。再次点击停止按钮,会停止检测视频。

  2. 点击表格中的指定行,界面会显示该行表格所写的信息内容。

摄像头检测演示

  1. 选择相机源中输入需要检测的摄像头(可以是电脑自带摄像头,也可以是外接摄像头,视频流等方式),然后点击摄像头图标来固定选择的推理流方式,最后在点击开始运行即可开始检测,当点击停止运行时则关闭摄像头检测。

  2. 点击表格中的指定行,界面会显示该行表格所写的信息内容。

检测结果保存

点击导出数据按钮后,会将当前选择的图片【含批量图片】、视频或者摄像头的检测结果进行保存为excel文档,结果会存储在output目录下。

环境搭建

创建专属环境

conda create -n yolo python==3.8

 激活专属环境

conda activate yolo

安装torch-GPU库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple "torch-2.0.1+cu118-cp38-cp38-win_amd64.whl"

安装torchvision-GPU库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple "torchvision-0.15.2+cu118-cp38-cp38-win_amd64.whl"

安装ultralytics库

pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple

测试环境

yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'

 此时就表明环境安装成功!!!

安装图形化界面库 pyqt5

pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple

算法原理

YOLOv8是一种前沿的深度学习技术,它基于先前YOLO版本在目标检测任务上的成功,进一步提升了性能和灵活性,在精度和速度方面都具有尖端性能。在之前YOLO 版本的基础上,YOLOv8 引入了新的功能和优化,使其成为广泛应用中各种物体检测任务的理想选择。主要的创新点包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。

YOLOv8目标检测算法具有如下的几点优势:

(1)更友好的安装/运行方式;

(2)速度更快、准确率更高;

(3)新的backbone,将YOLOv5中的C3更换为C2F;

(4)YOLO系列第一次使用anchor-free;

(5)新的损失函数。

YOLO各版本性能对比

YOLOv8网络结构

YOLOv8模型的整体结构如下图所示:

YOLOv8与YOLOv5模型最明显的差异是使用C2F模块替换了原来的C3模块;另外Head 部分变化最大,从原先的耦合头变成了解耦头,并且从 YOLOv5 的 Anchor-Based 变成了 Anchor-Free

YOLOv8的网络架构包含了多个关键组件,这些组件共同工作以实现快速而准确的目标检测。首先是其创新的特征提取网络(Backbone),YOLOv8的Backbone采用了最新的网络设计理念,通过深层次的特征融合和精细的特征提取策略来增强对目标的识别能力。这一策略的成功关键在于其特征提取器能够充分捕获目标的细微特征,同时保持计算效率。

YOLOv8在训练策略上也进行了优化。与YOLOv7相比,YOLOv8采用了SPFF(Spatial Pyramid Fusion Fast)策略,该策略通过高效的多尺度特征融合提高了模型对不同大小目标的检测能力。此外,YOLOv8在训练过程中引入了一种名为Task Aligned Assigner的新技术,这种技术能够更精准地将预测框与真实目标对齐,从而提高检测的准确率。

在损失函数的设计上,YOLOv8进行了创新,采用了JFL(Joint Family Losses),这是一种集成了多个损失函数的复合损失函数,能够同时优化目标检测的多个方面。这些损失函数包括用于提升模型对目标位置和大小预测准确性的CIOU Loss,以及优化分类准确性的分类损失函数。JFL的设计允许YOLOv8更全面地考虑检测任务中的不同需求,通过协调各种损失来提升总体的性能。

YOLOv8的原理不仅在于其创新的技术点,更在于这些技术如何被综合应用于解决实际的目标检测问题。通过其精心设计的网络架构、高效的训练策略以及综合的损失函数设计,YOLOv8实现了在保持实时性的同时,提高了在复杂场景下的检测准确率。这些改进使得YOLOv8成为了一个强大的工具,适用于从自动驾驶到智能视频监控等多种应用场景。

四、模型的训练、评估与推理

数据集准备

本文使用的轴承缺陷数据集共包含3252张图片。各类标签的数量分别为:

imperfection-on-edges: 538

crack: 2368

normal: 1416

标签类别如下:['imperfection-on-edges', 'crack', 'normal']

图片数据集的存放格式如下:

  1. 运行splitDataset.py,用于划分数据集;

  2. 运行xml2txt.py,用于得到训练标注文件;

  3. 运行ViewCategory.py,用于查看一共有那些类别;

  4. mydata.yaml,用于填写模型训练的数据配置文件。

注意:在xml2txt.py和mydata.yaml中的类别名称的顺序要一致。

模型训练

数据准备完成后,通过调用train.py文件进行模型训练,epochs参数用于调整训练的轮数,代码如下:

from ultralytics import YOLO# build from YAML and transfer weights
model = YOLO('yolov8n.yaml').load('./weights/yolov8n.pt')# Train the model
model.train(data='./VOCData/mydata.yaml', epochs=100, imgsz=640)

训练结果分析

YOLOv8在训练结束后,可以在runs/目录下找到训练过程及结果文件,如下所示:

P_curve.png

confusion_matrix_normalized.png

训练 batch

验证 batch

模型推理

模型训练完成后,可以得到一个最佳的训练结果模型best.pt文件,在runs/trian/weights目录下。我们通过使用该文件进行后续的推理检测。

图片检测代码如下:

from ultralytics import YOLO# Load a model
model = YOLO('./runs/detect/train/weights/best.pt')# Run batched inference on a list of images
model.predict("./img", imgsz=640, save=True, device=0)

执行上述代码后,会将执行的结果直接标注在图片上,结果如下:

关于该系统涉及到的完整源码、UI界面代码、数据集、训练代码、测试图片视频等相关文件,均已打包上传,感兴趣的小伙伴可以通过下载链接自行获取。

五、获取方式

本文涉及到的完整全部程序文件:包括 python源码、数据集、训练好的结果文件、训练代码、UI源码、测试图片视频等(见下图),获取方式见文末:

注意:该代码基于Python3.8开发,运行界面的主程序为GUI.py,其他测试脚本说明见上图。为确保程序顺利运行,请按照requirements.txt配置软件运行所需环境。

【YOLO 系列】基于YOLO的工业自动化轴承缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】

硬性的标准其实限制不了无限可能的我们,所以啊!少年们加油吧!

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

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

相关文章

告别局域网限制:宝塔FTP结合内网穿透工具实现远程高效文件传输

文章目录 前言1. Linux安装Cpolar2. 创建FTP公网地址3. 宝塔FTP服务设置4. FTP服务远程连接小结 5. 固定FTP公网地址6. 固定FTP地址连接 前言 本文主要介绍宝塔FTP文件传输服务如何搭配内网穿透工具,实现随时随地远程连接局域网环境搭建的宝塔FTP文件服务并进行文件…

2024 前端面试题!!! html css js相关

常见的块元素、行内元素以及行内块元素,三者有何不同?​​​​​​​ HTML、XML、XHTML它们之间有什么区别?​​​​​​​ DOCTYPE(⽂档类型) 的作⽤ Doctype是HTML5的文档声明,通过它可以告诉浏览器,使用哪一个HTM…

业务逻辑与代码分离:规则引擎如何实现高效管理?

在这个快速变化、高度信息化的时代,软件系统和业务流程的复杂性日益增加。为了应对这种复杂性,越来越多的企业开始采用规则引擎来应对这种复杂性。我们这次结合JVS规则引擎来解析为什么越来越多人使用规则引擎。 规则引擎定义 规则引擎是一种用于管理和…

关键词排名技巧实用指南提升网站流量的有效策略

内容概要 在数字营销的世界中,关键词排名的影响不可小觑。关键词是用户在搜索引擎中输入的词语,通过精确选择和优化这些关键词,网站能够更轻松地被目标用户发现。提升关键词排名的第一步是了解基本概念,包括关键词的分类、重要性…

数据结构与算法——树与二叉树

树与二叉树 1.树的定义与相关概念 树的示例&#xff1a; 树的集合形式定义 Tree(K,R) 元素集合&#xff1a;K{ki|0<i<n,n>0,ki∈ElemType}&#xff08;n为树中结点数&#xff0c;n0则树为空&#xff0c;n>0则为非空树&#xff09; 对于一棵非空树&#xff0c…

51单片机应用开发---定时器(定时1S,LED以1S间隔闪烁)

实现目标 1、掌握定时器的配置流程&#xff1b; 2、掌握定时器初值的计算方法&#xff1b; 3、具体实现&#xff1a;&#xff08;1&#xff09;1mS中断1次&#xff0c;计数1000次中断&#xff0c;实现定时1S功能&#xff1b;&#xff08;2&#xff09;LED1每隔1S状态取反。 …

TCP/IP Attack Lab

网络拓扑&#xff1a; Task 1: SYN Flooding Attack 收到攻击之前&#xff0c;在Victim主机查看网络连接的状态: 在攻击之前使用User1主机(10.9.0.6)访问Victim(10.9.0.5)主机的 Telnet服务: Task 1.1: Launching the Attack Using Python 在Atacker上建立文件attack-1.py…

VictoriaMetrics 中文教程(10)集群版介绍

VictoriaMetrics 中文教程系列文章&#xff1a; VictoriaMetrics 中文教程&#xff08;01&#xff09;简介VictoriaMetrics 中文教程&#xff08;02&#xff09;安装VictoriaMetrics 中文教程&#xff08;03&#xff09;如何配置 Prometheus 使其把数据远程写入 VictoriaMetri…

深度学习(五):语音处理领域的创新引擎(5/10)

一、深度学习在语音处理中的崛起 在语音处理领域&#xff0c;传统方法如谱减法、维纳滤波等在处理复杂语音信号时存在诸多局限性。这些方法通常假设噪声是平稳的&#xff0c;但实际噪声往往是非平稳的&#xff0c;导致噪声估计不准确。同时&#xff0c;为了去除噪声&#xff0…

https和http的区别,及HTTPS的工作流程

HTTP&#xff08;HyperText Transfer Protocol&#xff09;和HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;都是超文本传输协议&#xff0c;但它们之间的关键区别在于安全性。 安全性&#xff1a; HTTP&#xff1a;数据以明文传输&#xff0c;没有加密&…

阿里云 SAE 应用引擎可观测性最佳实践

SAE 简介 Serverless 应用引擎 SAE&#xff08;Serverless App Engine&#xff09;是一款零代码改造、极简易用、自适应弹性的应用全托管平台。SAE 能够让用户免运维 IaaS 和 Kubernetes&#xff0c;秒级完成从源代码、代码包、Docker 镜像部署任意语言的在线应用&#xff08;…

Windows环境 ffmpeg 命令使用介绍

记录一下纯命令操作ffmpeg的用法&#xff01; 目录 一、FFmpeg查询命令帮助文档 1.ffmpeg、ffplay、ffprobe的区别 2.ffmpeg命令查看帮助文档 3.ffplay命令查看帮助文档 4.ffprobe命令查看帮助文档 二、FFmpeg音视频处理流程 三、FFmpeg命令分类查询 1.命令参数 2.查看…

深入理解Java虚拟机(五)

介绍垃圾收集器的算法及引用详解 1、引用计数器 引用计数器在对象中添加一个引用计数器&#xff0c;当一个地方引用的时候&#xff0c;计数器1&#xff0c;当引用失效时&#xff0c;计数器值就-1。 但是在Java里面存在对象循环引用&#xff1a;objA 和 objB都有字段instance…

Linux系统操作篇 one -文件指令及文件知识铺垫

Linux操作系统入门-系统篇 前言 Linux操作系统与Windows和MacOS这些系统不同&#xff0c;Linux是黑屏的操作系统&#xff0c;操作方式使用的是指令和代码行来进行&#xff0c;因此相对于Windows和MacOS这些带有图形化界面的系统&#xff0c;Linux的入门门槛和上手程度要更高&…

PostgreSQL的奥秘:表结构、TOAST与大对象

PostgreSQL&#xff08;以下简称PSQL&#xff09;因其灵活性和强大的功能深受欢迎。本文将详细介绍PSQL的内部结构&#xff0c;特别是页面缓冲机制&#xff0c;包括表结构、TOAST技术、大对象&#xff08;BLOB/CLOB&#xff09;&#xff0c;以及页面缓冲表的工作原理。同时&…

SQL Server 可观测最佳实践

SQL Server 简介 SQL Server 是微软公司开发的一款关系数据库管理系统&#xff0c;支持企业 IT 环境中的各种事务处理、商业智能和分析应用程序。它支持多种操作系统平台&#xff0c;而无论是物理还是虚拟形式&#xff0c;自建部署环境还是在云环境中&#xff0c;运行的操作系…

MySQL8 安装配置及卸载教程

MySQL8 安装配置及卸载教程 0 卸载 MySQL 如果之前没安过 MySQL &#xff0c;或者卸载干净了不用看这个。 如果安装中出现以下问题&#xff0c;有可能是为之前安装 MySQL 不成功&#xff0c;有残留的安装程序等文件程序或者是卸载 MySQL 不成功。 0.1 停止服务 首先进入服务…

大数据-194 数据挖掘 机器学习理论 有监督、无监督、半监督、强化学习

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

Java最全面试题->数据库/中间件->KafKa面试题

文章目录 KafKaKafka中的ISR、AR代表什么?ISR的伸缩指什么?kafka中的broker 是干什么的?kafka中的 zookeeper 起到什么作用?kafka follower如何与leader同步数据?kafka 为什么那么快?kafka producer如何优化打入速度?kafka producer发送数据,ack为0,1,-1分别是什么意…

兼容Lodash的真正替代者

大家好&#xff0c;我是农村程序员&#xff0c;独立开发者&#xff0c;前端之虎陈随易。 这是我的个人网站&#xff1a;https://chensuiyi.me&#xff0c;欢迎一起交朋友~ 今天给大家分享一个前端工具库 Lodash 的替代品 es-toolkit。 仓库地址&#xff1a;https://github.com…