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

news2024/11/17 21:30:51

请添加图片描述在这里插入图片描述

项目介绍

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

算法模型:
    yolov8

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

数据集:
    东北大学(NEU)表面缺陷数据集

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

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

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

如果需要yolov5版本的系统,见此链接:https://blog.csdn.net/qq_28949847/article/details/134492438


项目简介

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

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

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

目录

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

效果展示:

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

钢铁表面缺陷检测系统


🌟一、环境安装

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

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

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


🌟二、数据集介绍

东北大学(NEU)表面缺陷数据集,收集了热轧带钢6种典型的表面缺陷,即轧内垢(RS)、斑块(Pa)、裂纹(Cr)、点蚀面(PS)、夹杂物(In)和划痕(Sc)。该数据库包括1800张灰度图像:6种不同类型的典型表面缺陷各300个样本。

下图为6种典型表面缺陷的样本图像,每张图像的原始分辨率为200×200像素。从图中,我们可以清楚地观察到类内缺陷在外观上存在较大差异,例如划痕(最后一列)可能是水平划痕、垂直划痕和倾斜划痕等。与此同时,类间缺陷也具有相似的特征,如滚积垢、裂纹和坑状表面。此外,由于光照和材料变化的影响,类内缺陷图像的灰度会发生变化。总之,NEU表面缺陷数据库包含两个难题,即类内缺陷存在较大外观差异,类间缺陷具有相似方面,缺陷图像受到光照和材料变化的影响。
在这里插入图片描述


🌟三、 目标检测介绍

yolov8相关介绍

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

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

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

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

在这里插入图片描述

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


四、 yolov8训练步骤

此代码的训练步骤极其简单,不需要修改代码,直接通过cmd就可以命令运行,命令都已写好,直接复制即可,命令如下图:
在这里插入图片描述
下面这条命令是 训练 添加 CBAM 注意力机制的命令,复制下来,直接就可以运行,看到训练效果。

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需要变为自己想要测试的模型路径。

python ./val.py --data  data/coco_NEU-DET.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站

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

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

相关文章

SRR参考设计中SRR_DSS_mmWaveTask函数源码分析

相应的说明都已注释的形式写出来。 上面两个中断是在初始化的时候注册的,在SRR_DSS_initTask函数中,如下所示 后面会接着分析函数MmwDemo_processChirp和MmwDemo_interFrameProcessing。

寒冬不再寒冷:气膜体育馆如何打造温馨运动天地

取暖季即将来临,随着气温逐渐下降,人们在寒冷的冬季里如何保持运动热情和身体的健康成为了一项挑战。而在这个时候,气膜体育馆成为了运动爱好者们的理想场所,提供如春般温暖舒适的运动环境。那么,让我们一起揭秘气膜体…

树根互联如何建造灯塔“灯塔工厂”?

一、项目背景:经历了行业周期阵痛,三一下决心通过智能制造来降本增效 关键点1:内部-制造业市场多变 (1)制造业8年或10年一个经营低谷周期; (2)市场变化巨大,如何快速高效应对; 关键点2:外部-市场快速发展紧逼 (1)通过向先进工厂对比,发现自身不足; (2)通过…

应用架构——集群、分布式、微服务的概念及异同

一、什么是集群? 集群是指将多台服务器集中在一起, 每台服务器都实现相同的业务,做相同的事;但是每台服务器并不是缺 一不可,存在的主要作用是缓解并发能力和单点故障转移问题。 集群主要具有以下特征: …

IP地址定位技术:追踪位置、识别风险

随着互联网的普及,IP地址定位技术逐渐成为网络安全领域的一项重要工具。通过追踪IP地址位置,可以识别潜在的风险用户,加强网络安全。本文将深入研究IP地址定位技术的原理、应用以及相关的风险与防范。 1. IP地址定位技术的原理: …

基于微群机器人的二次开发

请求URL: http://域名地址/modifyGroupName 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明wId是String登录实例标识chatRoom…

VUE学习二、创建一个前端项目

1.创建一个vue项目 使用命令 vue ui启动vue脚手架 vue ui 等待项目创建好 可以来任务栏启动项目 参数那里可以设置启动端口等参数 启动成功 成功访问 2. 用webstorm 打开项目 脚手架页面可安装基本依赖 比如路由 使用ws打开项目 启动项目 npm run serve 3.修改启动…

SpringAOP专栏一《使用教程篇》

在b站跟着黑马程序员学习SpringAOP时记的笔记。 面向切面编程AOP是 Spring的两大核心之一。 AOP概述 AOP是什么 AOP英文全称:Aspect Oriented Programming(面向切面编程、面向方面编程),其实说白了,面向切面编程就是…

《算法通关村——盘点面试大热门之区间问题》

《算法通关村——盘点面试大热门之区间问题》 LeetCode252 给定一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] [starti, endi] ,请你判断一个人是否能够参加这里面的全部会议。 示例 1:: 输入: …

2024年SEO策略:如何优化您的知识库?

如今很多人在遇到问题时都会求助于谷歌。谷歌已经成为提供解决方案不可或缺的工具。作为全球搜索引擎的巨头,拥有大量用户流量。这就是为什么确保您的产品和服务在谷歌搜索结果中排名靠前是至关重要的,如果您想获得更多的客户,SEO是一个非常关…

IC入门必看| 数字IC前端设计学习路线与方法(内附学习视频)

众所周知,数字前端设计对于工程师的能力要求比较高,不仅有学历上的要求,还要求掌握很多的知识技能。 数字前端到底是什么? 集成电路设计(Integrated Circuit,简称IC)一般分为数字IC设计、模拟…

NestJs的基础使用

初始化项目 创建项目 // 安装脚手架(只需要安装一次,因为这个是全局的) npm i -g nestjs/cli // 创建项目 nest new project-name // (该过程有个选择包管理工具的,我选的yarn)启动项目 yarn run start:dev // 可以在浏览器访问localhost:3000 输出helloWorld控制器和路由 …

为什么Java程序员需要掌握多线程?揭秘并发编程的奥秘

为什么Java程序员需要掌握多线程?揭秘并发编程的奥秘 个人简介前言多线程对于Java的意义📌1.提高程序性能:📌2 提高用户体验:📌3支持并发处理:📌4 资源共享和同步:&#…

从 0 到 100TB,MatrixOne 助您轻松应对

作者:邓楠MO产品总监 导读 随着传感器和网络技术的大规模应用,海量 IoT 设备产生了巨量数据,传统数据库方案难以满足这些数据的存储和处理需求。MatrixOne 是一款强大的云原生超融合数据库,具备优秀的流式数据写入和加工能力&am…

Python中的range()函数详解:掌握迭代的利器

更多资料获取 📚 个人网站:ipengtao.com Python中的range()函数是一个强大的工具,用于生成一系列的数字,常用于循环操作。虽然看似简单,但其灵活性和功能却不容小觑。在本文中,将深入研究range()函数&…

神经网络训练、验证、测试集

在配置训练、验证和测试数据集的过程中做出正确决策会在很大程度上帮助大家创建高效的神经网络。训练神经网络时,需要做出很多决策,例如: 神经网络分多少层 每层含有多少个隐藏单元 学习速率是多少 各层采用哪些激活函数 创建新应用的过程…

Github与Gitlab

学习目标 能够使用GitHub创建远程仓库并使用能够安装部署GitLab服务器能够使用GitLab创建仓库并使用掌握CI/CD的概念掌握蓝绿部署, 滚动更新,灰度发布的概念 GitHub是目前最火的开源项目代码托管平台。它是基于web的Git仓库,提供公有仓库和私有仓库,但私…

Leetcode—198.打家劫舍【中等】

2023每日刷题(五十二) Leetcode—198.打家劫舍 算法思想 具体思路 首先,我们从上面的题目描述中抽象出题意。 ● 从一个非负整数数组中找到一个子序列,并且该子序列的和最大 ● 子序列中每个数的位置不能够相邻。举例来讲&…

yolo目标检测+目标跟踪+车辆计数+车辆分割+车道线变更检测+速度估计

这个项目使用YOLO进行车辆检测,使用SORT(简单在线实时跟踪器)进行车辆跟踪。该项目实现了以下任务: 车辆计数车道分割车道变更检测速度估计将所有这些详细信息转储到CSV文件中 车辆计数是指在道路上安装相应设备,通过…

有哪些值得分享的销售拓客技巧?

拓客对于销售的重要性 拓客(Toker)是一个商业上的名词,核心就是提高售前服务、市场推广的水平,从而挖掘出潜在客户的隐形需求(或称软需求)。 拓客的核心,其实就是提高售前服务、市场推广的水平…