【YOLO 系列】基于YOLO的工业自动化轴承缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】
前言
轴承作为机械设备中的关键部件,其性能直接影响到设备的稳定性和寿命。轴承缺陷的早期检测对于预防设备故障、减少维护成本和提高生产效率至关重要。然而,传统的轴承缺陷检测方法往往依赖于人工检查,这不仅效率低下,而且容易受到主观因素的影响。为了提高轴承缺陷检测的准确性和效率,我们开发了基于YOLO V8的轴承缺陷智能检测系统。该系统利用深度学习技术,能够自动识别和分类轴承缺陷,即使在缺陷不明显或环境复杂的情况下也能保持高准确度。
通过对轴承缺陷数据集的深入分析和标注,我们训练了YOLOV8模型,使其能够精确识别轴承表面的缺陷,如裂纹、磨损、腐蚀等。这一系统能够实时处理图像数据,为轴承缺陷检测提供了一种快速、准确、自动化的解决方案。
基于此项目,设计了一个使用Pyqt5库来搭建页面展示系统。本系统支持的功能包括训练模型的导入、初始化;置信度与IOU阈值的调节、图像上传、检测、可视化结果展示、结果导出与结束检测;视频的上传、检测、可视化结果展示、结果导出与结束检测;摄像头的上传、检测、可视化结果展示与结束检测;已检测目标信息列表、位置信息;以及推理用时。本博文提供了完整的Python代码和使用教程,适合新入门的朋友参考,完整代码资源文件请转至文末的下载链接。
优势
-
高准确性:YOLOV8模型经过优化,能够准确识别各种轴承缺陷,即使在缺陷不明显的情况下。
-
实时性:系统能够快速处理图像数据,提供实时的缺陷检测结果,适合生产线上的快速检测需求。
-
鲁棒性:系统在不同环境和条件下都能保持较高的识别率,具有良好的鲁棒性。
-
可扩展性:系统设计考虑了不同类型和尺寸的轴承,具有良好的可扩展性,可以适应不同的检测需求。
-
降低成本:自动化的检测系统减少了人工检查的需求,从而降低了维护成本和人力资源消耗。
应用前景
-
工业自动化:系统可以集成到自动化生产线中,实现轴承缺陷的自动检测,提高生产效率和产品质量。
-
预测性维护:通过早期识别轴承缺陷,系统有助于实施预测性维护策略,减少意外停机和维修成本。
-
质量控制:系统可以作为质量控制的一部分,确保出厂产品的质量符合标准。
-
设备健康管理:系统可以用于监测设备健康状况,及时预警潜在的故障风险。
-
研究与开发:在轴承设计和材料研究中,系统可以提供关于缺陷分布和类型的重要数据,辅助研发工作。
-
教育与培训:系统可以作为教育工具,帮助学生和工程师了解轴承缺陷的类型和检测技术。
一、软件核心功能介绍及效果演示
软件主要功能
-
支持
图片、图片批量、视频及摄像头
进行检测,同时摄像头可支持内置摄像头和外设摄像头; -
可对
检测结果进行单独分析
,并且显示单个检测物体的坐标、置信度等
; -
界面可实时显示
目标位置
、检测结果
、检测时间
、置信度
、检测结果回滚
等信息; -
支持
图片
、视频
及摄像头
的结果保存,将检测结果保持为excel文件;
界面参数设置说明
-
标签4 摄像头源/相机/网络源
; -
标签5 交并比阈值
:目标检测时的iou参数
,只有目标检测框的交并比大于该值,结果才会显示; -
标签6 置信度阈值
:目标检测时的conf参数
,只有检测出的目标置信度大于该值,结果才会显示; -
标签7 显卡选择
:在进行推理时是否使用显卡
,默认勾选(使用显卡); -
标签8 半精度选择
:启用半精度(FP16)推理
,可加快支持的 GPU 上的模型推理速度,同时将对精度的影响降至最低,默认不勾选(不使用半精度); -
标签9 图片推理尺寸
: 在推理时将推理图片固定的尺寸; -
标签10 数据集的配置文件
:数据集在训练时的配置文件(.yaml); -
标签11 训练好的模型
:最终要进行推理的模型,一般选择最优的一个模型; -
标签12 类别名
:该项目的所有类别,可以方便在后续查看某一个类别。
视频演示
工业自动化轴承缺陷检测系统
图片检测演示
-
点击
打开图片
按钮,选择需要检测的图片,或者点击打开文件夹
按钮,选择需要批量检测图片所在的文件夹,操作演示如下: -
点击表格中的指定行,界面会显示该行表格所写的信息内容。
视频检测演示
-
点击
视频按钮
图标,打开选择需要检测的视频,在点击开始运行
会自动显示检测结果。再次点击停止按钮
,会停止检测视频。 -
点击表格中的指定行,界面会显示该行表格所写的信息内容。
摄像头检测演示
-
在
选择相机源
中输入需要检测的摄像头(可以是电脑自带摄像头,也可以是外接摄像头,视频流等方式),然后点击摄像头图标
来固定选择的推理流方式,最后在点击开始运行
即可开始检测,当点击停止运行
时则关闭摄像头检测。 -
点击表格中的指定行,界面会显示该行表格所写的信息内容。
检测结果保存
点击导出数据
按钮后,会将当前选择的图片【含批量图片】、视频或者摄像头
的检测结果进行保存为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']
图片数据集的存放格式如下:
-
运行splitDataset.py,用于划分数据集;
-
运行xml2txt.py,用于得到训练标注文件;
-
运行ViewCategory.py,用于查看一共有那些类别;
-
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界面+数据集+训练代码】
硬性的标准其实限制不了无限可能的我们,所以啊!少年们加油吧!
相关文章:

【YOLO 系列】基于YOLO的工业自动化轴承缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】
前言 轴承作为机械设备中的关键部件,其性能直接影响到设备的稳定性和寿命。轴承缺陷的早期检测对于预防设备故障、减少维护成本和提高生产效率至关重要。然而,传统的轴承缺陷检测方法往往依赖于人工检查,这不仅效率低下,而且容易…...

Word中Normal.dotm样式模板文件
Normal.dotm文档 首先将自己电脑中C:\Users\自己电脑用户名\AppData\Roaming\Microsoft\Templates路径下的Normal.dotm文件做备份,在下载本文中的Normal.dotm文件,进行替换,重新打开word即可使用。 字体样式如下(可自行修改&#…...

生成式 AI 与向量搜索如何扩大零售运营:巨大潜力尚待挖掘
在竞争日益激烈的零售领域,行业领导者始终在探索革新客户体验和优化运营的新途径,而生成式 AI 和向量搜索在这方面将大有可为。从个性化营销到高效库存管理,二者在零售领域的诸多应用场景中都展现出变革性潜力,已成为保持行业领先…...

WonderWorld:斯坦福与 MIT 联手打造实时交互生成图像,单图秒变 3D 虚拟世界
❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦! 🥦 微信公众号ÿ…...

2024年【制冷与空调设备安装修理】考试内容及制冷与空调设备安装修理最新解析
题库来源:安全生产模拟考试一点通公众号小程序 制冷与空调设备安装修理考试内容是安全生产模拟考试一点通总题库中生成的一套制冷与空调设备安装修理最新解析,安全生产模拟考试一点通上制冷与空调设备安装修理作业手机同步练习。2024年【制冷与空调设备…...

PHP const 和 define主要区别
在PHP中,const 和 define 都用于定义常量,但它们有一些关键的区别。以下是它们之间的主要不同点: 定义方式: const:在定义常量时,不需要使用函数形式,而是直接赋值。 const MY_CONSTANT som…...

期中前学习复习总结
期中前终于把每一科的本质给搞明白了。这篇文章也将各学科剖分为两部分。 目录 本质 学法 从问题或条件出发思考问题 从条件出发思考问题 从结论/问题出发思考问题 整理知识与反向押题法 反向押题法 本质 作者是一个理科脑,什么都觉得只要我脑子够新东西我…...

K8S如何基于Istio重新实现微服务
K8S如何基于Istio重新实现微服务 认识 Istio前言Istio 的理念Istio 的架构数据平面控制平面服务与 Istio 的关系 Istio 实践环境准备安装 Helm安装Istio 使用 Istio 代理运行应用情感分析应用的架构使用 Istio 代理运行应用Sidecar 注入Ingress 网关网关资源VirtualService 资源…...

MediaPipe 与 OpenCV 的结合——给心爱的人画一个爱心吧~
目录 概要 实现思路 整体代码实现 效果展示 总结 概要 实时手部检测与绘图应用,通过摄像头捕捉视频流,使用 MediaPipe 识别手部关键点,判断食指是否伸展且其他手指是否弯曲,在满足条件时在画布上绘制圆点,并实时显…...

心觉:成大事,不怕慢,就怕站
Hi,我是心觉,带你用潜意识化解各种焦虑、内耗,建立无敌自信;教你财富精准显化的实操方法;关注我,伴你一路成长! 每日一省写作213/1000天 今天咱们聊聊一个不太花哨,但超重要的话题:…...

练习LabVIEW第二十三题
学习目标: 刚学了LabVIEW,在网上找了些题,练习一下LabVIEW,有不对不好不足的地方欢迎指正! 第二十三题: 建立一个枚举控件,其内容为张三、李四、王五共三位先生,要求当枚举控件显…...

集成对接案例分享:金蝶云与聚水潭数据对接
金蝶云星空与聚水潭的采购入库单数据集成案例分享 在企业信息化管理中,数据的高效流转和准确对接是提升业务效率的关键。本文将深入探讨如何通过轻易云数据集成平台,实现金蝶云星空中的采购入库单数据无缝对接到聚水潭系统中的其他入库单。 本次集成方…...

高级主题-灾难恢复与业务连续性
第一节:灾难恢复与业务连续性 灾难恢复与业务连续性概述 灾难恢复(Disaster Recovery, DR)和业务连续性(Business Continuity, BC)是确保企业能够在遭遇灾难或意外中断后迅速恢复正常运营的关键措施。以下是一些基本…...

R语言实现随机森林分析:从入门到精通
随机森林(Random Forest)是一种流行的机器学习算法,它通过集成多个决策树来提高预测的准确性和鲁棒性。在R语言中,我们可以使用randomForest包来实现随机森林分析。本文将详细介绍如何使用R语言进行随机森林分析,包括数…...

【vs2022】windows可用的依赖预编译库
ffmpeg 、x264 、x265 等。obs是基于qt6+vs2022+64bit obs的官网传统构建已经不用了obs的s2022构建OBS Deps Build 2024-09-12FFmpeg4.4 库,x64 可用。...

基础设施即代码(IaC):自动化基础设施管理的未来
随着云计算和大规模分布式系统的迅速发展,手动管理和配置基础设施的传统方式已逐渐跟不上快速迭代的步伐。于是,基础设施即代码(Infrastructure as Code,IaC)作为一种创新实践,成为现代运维管理的基础。IaC不仅提高了基础设施的配置速度,还提升了系统的一致性和可重复性…...

C# 创建型设计模式----原型模式
1、值类型与引用类型、深拷贝与浅拷贝。 在了解原型模式前得先对这四个知识点有些了解。我先简单介绍一下这四个知识点。 1.1 值类型与引用类型(C#仅有这两种数据类型) 值类型: 常见的值类型:int、long、short、byte、float、double、bool、char、Struct…...

Python数据分析NumPy和pandas(十五、pandas 数据加载、存储和文件格式)
大多数时候,我们要处理分析的数据是存储在不同格式的文件中的,有txt、csv、excel、json、xml以及二进制等磁盘文件格式,还有时候是从数据库以及从Web API中交互获取要处理的数据。现在开始学习如何用pandas从以上内容中输入和输出数据。 读取…...

正则表达式以及密码匹配案例手机号码脱敏案例
目录 正则表达式 什么是正则表达式 语法 定义变量 test方法 exec方法 replace方法 match方法 修饰符 元字符 边界符 单词边界 字符串边界 边界符:^ 边界符:$ 量词 * ? {n} {n,} {n,m} 字符类 []匹配字符集合 .匹配除换行符之外的…...

五、数组切片make
数组&切片&make 1. 数组2. 多维数组3. 切片3.1 直接声明新的切片函数构造切片3.3 思考题3.4 切片和数组的异同 4. 切片的复制5. map5.1 遍历map5.2 删除5.3 线程安全的map 6. nil7. new和make 1. 数组 数组是一个由固定长度的特定类型元素组成的序列,一个数…...

SSA-CNN-LSTM-MATT多头注意力机制多特征分类预测
SSA-CNN-LSTM-MATT多头注意力机制多特征分类预测 目录 SSA-CNN-LSTM-MATT多头注意力机制多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现SSA-CNN-LSTM-MATT麻雀算法优化卷积神经网络-长短期记忆神经网络融合多头注意力机制多特征分类预测&…...

51单片机完全学习——LCD1602液晶显示屏
一、数据手册解读 通过看数据手册我们需要知道,这个屏幕每个引脚的定义以及如何进行发送和接收。通过下面这张图我们就可以知道,这些引脚和我们的编程是有关的,需要注意的是,这里我们在接线的时候,一定要把DB0-DB7接到…...

【知识科普】今天聊聊前端打包工具webpack
文章目录 webpack概述1. 入口(Entry)2. 输出(Output)3. Loader4. 插件(Plugins)5. 模式(Mode)6. 浏览器兼容性(Browser Compatibility)7. 环境(En…...

雷池社区版中升级雷池遇到问题
关于升级后兼容问题 版本差距过大会可能会发生升级后数据不兼容导致服务器无法起来 跨多个版本(超过1个大版本号)升级做好数据备份,遇到升级失败可尝试重新安装解决 升级提示目录不对 在错误的目录下执行(比如 safeline 的子目…...

C++基础:constexpr,类型转换和选择语句
constexpr 提到constexpr,我们会发现它和const类比 常和const类比constexpr符号常量必须给定一个在编译时已知的值, 若某个变量初始化时的值在编译时未知,但初始化后绝不变。 #include<iostream> #include<vector> #include&l…...

STM32 RTC时间无法设置和读取
hal_stm32_RTC函数_stm32 hal rtc-CSDN博客 STM32入门HAL库-RTC实时时钟_hal rtc-CSDN博客 参考了这些博客,是调试发现无法读取正确的时间,日期可以 通过读hal库的文件找到原因 --RTC_BINARY_ONLY模式,只有 sTime->SubSeconds only is …...

go语言中defer用法详解
defer 是 Go 语言中的一个关键字,用于延迟执行某个函数或语句,直到包含它的函数返回时才执行。defer 语句在函数执行结束后(无论是正常返回还是由于 panic 返回)都将执行。 defer 的基本用法 延迟执行: 当你在一个函数…...

iOS 18.2开发者预览版 Beta 1版本发布,欧盟允许卸载应用商店
苹果今天为开发人员推送了iOS 18.2开发者预览版 Beta 1版本 更新(内部版本号:22C5109p),本次更新距离上次发布 Beta / RC 间隔 2 天。该版本仅适用于支持Apple Intelligence的设备,包括iPhone 15 Pro系列和iPhone 16系…...

【SQL】SQL函数
📢 前言 函数 是指一段可以直接被另一段程序调用的程序或代码。主要包括了以下4中类型的函数。 字符串函数数值函数日期函数流程函数 🎄 字符串函数 ⭐ 常用函数 函数 功能 CONCAT(S1,S2,...Sn) 字符串拼接,将S1,S2࿰…...

NSSCTF刷题篇web部分
源码泄露 [FSCTF 2023]寻找蛛丝马迹 这个源码泄露,可以记录一下,涉及的知识点比较多 打开环境 查看源码, 第一段flag 乱码,恢复一下 乱码恢复网站:乱码恢复 (mytju.com) 剩下的就只说方法 http://node4.anna.nss…...