【YOLO 系列】基于YOLO V8的金属表面缺陷检测检测识别系统【python源码+Pyqt5界面+数据集+训练代码】

前言:

金属表面缺陷的及时检测对于保障产品质量和生产安全至关重要。然而,传统的人工检测方法往往效率低下、耗时长,并且容易受主观因素影响。为了解决这一问题,我们提出了基于深度学习技术的金属表面缺陷检测系统。

本项目采用了Yolov8算法,这是一种高效的目标检测算法,能够在图像中快速准确地检测出各种目标。我们将其应用于金属表面缺陷的检测,旨在实现对金属表面缺陷的自动化检测和识别。

数据集的选择是本项目成功的关键之一。我们收集了大量金属表面缺陷图像,这些数据为模型的训练提供了充分的支持,确保了模型在各种情况下的准确性和稳定性。

在训练过程中,我们采用了迁移学习的方法,利用预训练的Yolov8模型,并结合我们的金属表面缺陷数据集进行了进一步的微调和优化。通过这种方式,我们成功地提高了模型在金属表面缺陷检测任务上的性能和准确率。

本项目的最终目标是将训练好的模型应用于实际生产场景中,帮助金属制造行业实现缺陷检测的自动化和智能化,提高产品质量和生产效率,降低生产成本和安全风险。

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

优势:

  1. 高效准确: Yolov8算法能够快速准确地检测金属表面缺陷,提高了缺陷检测的效率和准确性。

  2. 自动化检测: 将深度学习技术应用于金属表面缺陷检测,实现了缺陷检测的自动化,降低了人力成本和生产风险。

  3. 多样性应用: 本项目涵盖了多种金属表面缺陷的检测,适用于不同类型和形态的金属制品,具有广泛的应用范围。

应用前景:

  1. 制造业: 在金属制造行业中,利用金属表面缺陷检测技术实现产品质量的提升和生产效率的提高,推动制造业向智能化、高效化发展。

  2. 质检领域: 在金属制品的质检领域中,应用金属表面缺陷检测技术,提高产品质量检测的准确性和效率,降低次品率和质检成本。

  3. 安全生产: 在金属生产过程中,及时发现和处理金属表面缺陷,提高生产设备的安全性和稳定性,保障生产安全和人员健康。


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

软件主要功能

  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 类别名:该项目的所有类别,可以方便在后续查看某一个类别。

视频演示

金属表面缺陷检测检测识别系统_哔哩哔哩_bilibili

图片检测演示

  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与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成为了一个强大的工具,适用于从自动驾驶到智能视频监控等多种应用场景。

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

数据集准备

GC10-DET是在真实工业中收集的表面缺陷数据集。一个真实的行业。它包含十种类型的表面缺陷,即冲孔(Pu)、焊缝(Wl)、新月形缝隙(Cg)、水斑(Water Spot)、油斑(Os)、丝斑(Ss)、夹杂物(In)、轧坑(Rp)、折痕(Cr)、腰部折痕 (Wf)。所收集的缺陷都在钢板的表面。该数据集包括3570张灰度图像。

  1. 冲孔:在钢带的生产线上,钢带需要根据产品规格进行冲孔。产品规格;机械故障可能导致不必要的冲孔,从而导致冲孔 缺陷。

  2. 焊接线:当带钢被更换时,需要对带钢的两卷进行焊接,并产生焊接线就产生了。严格说来,这不是一个缺陷,但需要自动 检测和跟踪,以便在后续切割中规避。

  3. 新月形缝隙:在钢带生产中,切割有时会产生缺陷,就像半个 一个圆。

  4. 水斑:水斑是由生产中的干燥产生的,在不同的产品和 不同的产品和工艺,对这种缺陷的要求是不同的。然而,由于水斑一般对比度较低,并且与油斑等其他缺陷相似,因此通常被视为 一般来说,水斑的对比度较低,而且与其他缺陷(如油斑)相似,所以它们通常会被误测。

  5. 油斑:油斑通常是由机械润滑剂的污染引起的,这将影响产品的外观。影响产品的外观。

  6. 丝斑。带材表面的局部或连续的波浪状斑块,可能出现在上、下表面,在整个带材长度方向上密度不均匀。在整个带材长度方向上,密度不均匀。一般来说。主要原因是辊子的温度不均匀和压力不均匀。

  7. 夹杂物:夹杂物是金属表面缺陷的一种典型缺陷,通常表现为小斑点。鱼鳞状、条状、块状不规则地分布在带钢的上、下表面全局或局部),并常伴有粗糙的麻点表面。有些内含物是松散,容易脱落,有的则被压入板中。

  8. 轧制坑:轧制凹坑是钢板表面的周期性隆起或凹坑,呈点状。片状,或条状。它们分布在整个带钢长度或截面上,主要是由工作辊或张力辊损坏造成的。工作辊或张力辊损坏造成的。

  9. 折痕:折痕是一种垂直的横向折痕,有规则的或不规则的间距,横跨带钢,或在带钢的边缘。在板带的边缘。主要原因是在开卷过程中,沿板带移动方向的局部屈服 在开卷过程中的局部屈服。

  10. 腰部褶皱:缺陷部位有明显的褶皱,比较流行,有点像皱纹,说明缺陷的局部变形太大。其原因是由于低碳。

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

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

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

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

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

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

模型训练

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

yolo detect train data=./VOCData/myvoc.yaml model=yolov8n.yaml pretrained=./weights/yolov8n.pt epochs=100 imgsz=640
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/myvoc.yaml', epochs=100, imgsz=640)

训练结果分析

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

P_curve.png

confusion_matrix_normalized.png

训练 batch

验证 batch

模型推理

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

图片检测代码如下:

yolo detect predict model=./runs/detect/train/weights/best.pt source=./img save=True device=0
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配置软件运行所需环境。

关注下方公众号:【AI算法与电子竞赛】,发送【YOLO系列源码】即可获取下载方式

六、链接作者

欢迎关注我的公众号:@AI算法与电子竞赛

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

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

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

相关文章

配置OpenSSH/stelnet

其他远程连接工具:telent、realVNC、RSH、RCP等,SSH更加安全可靠 一、配置OpenSSH/stelnet 1.配置服务端 # vim /etc/ssh/sshd_config //修改ssh配置文件 Port 22 //监听端口 AddressFamily any //使用哪种地址簇,any包含v4、v6&#xff0c…

目前市面上堡垒机厂家有哪些?会帮忙部署吗?

随着大家对于网络安全的重视,越来越多的企业准备采购堡垒机了。不少企业在问,目前市面上堡垒机厂家有哪些?会帮忙部署吗?这里我们小编就来简单为大家回答一下,仅供参考哈! 目前市面上堡垒机厂家有哪些&…

SAM轻量化应用Auto-SAM、Group-Mix SAM、RAP-SAM、STLM

1. Auto SAM(Auto-Prompting SAM for Mobile Friendly 3D Medical Image Segmentation) 1.1 面临问题 医学背景: (1)与自然图像相比,医学图像的尺寸更小,形状不规则,对比度更低。&…

接口测试用例设计思路(通俗易懂)

一、接口测试的流程: 需求分析(需求文档、开发提供接口文档)→测试设计→测试用例评审→测试执行→验收→预发布→上线 二、基本功能流程测试: 冒烟测试(主业务的正向流程)、正常流程覆盖测试(正常分支的业务流程进行覆盖→分支覆盖、路径覆盖、业务场…

零基础怎么快速进行单细胞分析?

近一段时间正在努力学习单细胞相关的理论知识,发现单细胞测序和普通的真核细胞的转录组非常相似。两者之间的最大的区别在于,一个测的是单个细胞的表达,一个测的是一堆细胞的表达之和。所以从这里就可以理解,为什么网上很多教程都…

【c++算法篇】双指针(下)

🔥个人主页:Quitecoder 🔥专栏:算法笔记仓 朋友们大家好啊,本篇文章我们来到算法的双指针的第二部分 目录 1.有效三角形的个数2.查找总价格为目标值的两个商品3.三数之和4.四数之和5.双指针常见场景总结 1.有效三角形…

解决 SyntaxError: Unexpected token ‘.‘ 报错问题

这个报错一般是编译问题&#xff0c;浏览器的版本过低没通过代码 解决办法&#xff1a; 在package.json文件中加上这个 "browserslist": ["> 1%","last 2 versions","not dead","not ie < 6","Android > 4&…

98、技巧-颜色分类

思路 这道题的思路是什么&#xff0c;首先典型荷兰国旗问题&#xff1a; 该问题的关键在于我们要将所有的0放到数组的前部&#xff0c;所有的1放在中间&#xff0c;所有的2放在后部。这可以通过使用两个指针&#xff0c;一个指向数组开头的“0”的最后一个位置&#xff0c;另…

如何确保UDP文件传输工具有最低稳定的传输速度?

在当前日新月异的数字时代背景下&#xff0c;文件传输工具已经成为我们日常生活与工作中不可或缺的一部分&#xff0c;尤其针对那些频繁涉及即时数据交互与多媒体流通的场景。 UDP协议&#xff0c;以其突出的高速传输与低延迟特性&#xff0c;脱颖而出成为众多用户的首选。不过…

Python管理PVE(Proxmox VE)云平台--节点资源统计

一、前言 写本脚本的初衷是因手动查看统计已分配的PVE资源过于耗时&#xff0c;因此写一个脚本一劳永逸&#xff0c;具体实现方法&#xff1a;利用Python的paramiko模块进行远程命令查看、统计PVE平台各节点已分配的cpu、内存、磁盘空间。 二、步骤 1.构建shell脚本 1.1 统计…

Ubuntu系统下编译OpenCV4.8源码

OpenCV4.8源码编译与安装 其实很简单&#xff0c;只要三步即可搞定&#xff0c;第一步是下载指定版本的源码包&#xff1b;第二步是安装OpenCV4.8编译需要的编译器与第三方库支持&#xff1b;第三步就是编译OpenCV源码包生成安装文件并安装。 01下载OpenCV4.8源码包 在Ubunt…

解锁楼宇自动化新维度西门子Insight+BACnet IP I/O控制器

数字城市的楼宇自动化已不再是一个遥不可及的概念&#xff0c;而是成为了现代建筑的标配。特别是在大型商业综合体、高端写字楼和公共设施中&#xff0c;高效的楼宇管理系统是确保环境舒适度与能源效率的关键。当提及楼宇自动化领域的佼佼者&#xff0c;西门子Insight楼宇自动化…

KMeans,KNN,Mean-shift算法的学习

1.KMeans算法是什么&#xff1f; 在没有标准标签的情况下&#xff0c;以空间的k个节点为中心进行聚类&#xff0c;对最靠近他们的对象进行归类。 2.KMeans公式&#xff1a; 2. 1.关键分为三个部分&#xff1a; 1.一开始会定义n个中心点&#xff0c;然后计算各数据点与中心点…

jenkins使用gitLab(极狐)认证登陆

jenkins安装 GitLab Authentication插件 我因为java版本和最新GitLab Authentication 1.19版本不兼容&#xff0c;选择了本地安装 找个历史版本1.13版本&#xff0c;然后下载到电脑上 - 本地上传插件并安装 在极狐上创建一个应用 - 配置应用信息 应用名&#xff1a;jenkinsLo…

你以为是个黄金程序员,结果是个王者

玩过王者荣耀的同学都知道&#xff0c;从青铜到王者&#xff0c;过程中需要步步修炼&#xff0c;可以说等级的提升是胜利的积累&#xff0c;也可以说是技术的提升。 而程序员行业也是这样&#xff0c;技术越高段位越高&#xff0c;当然段位越高技术也越高&#xff0c;这个行业大…

Oracle -在线回缩表

conn scott/tiger DROP TABLE EMP1 PURGE; CREATE TABLE EMP1 AS SELECT * FROM EMP; alter table emp1 enable row movement; -- 启动回缩特性 insert into emp1 select * from emp1; / / commit; -- 增加到14000行 -- 分析表的结构 analyze table emp1 comput…

小程序如何确定会员身份并批量设置会员积分或余额

因为一些原因&#xff0c;商家需要从其它系统里面批量导入会员&#xff0c;确定会员身份&#xff0c;然后给他们设置对应的账户余额。下面&#xff0c;就具体介绍如何进行这种操作。 一、客户进入小程序并绑定手机号 进入小程序&#xff1a;客户打开小程序&#xff0c;系统会自…

交友软件源码-源码+搭建+售后,上线即可运营聊天交友源码 专业语聊交友app开发+源码搭建-快速上线

交友小程序源码是一种可以帮助开发者快速搭建交友类小程序的代码模板。它通常包括用户注册、登录、个人信息编辑、匹配推荐、好友聊天等常见功能&#xff0c;以及与后台数据交互的接口。使用这种源码可以极大地缩短开发时间&#xff0c;同时也可以根据自己的需求进行二次开发和…

从0到1开发一个vue3+ts项目(一)

1. 环境配置 1.1 安装node 使用官方安装程序 前往 Node.js 官网&#xff1a;访问 Node.js 官网&#xff0c;下载适合你操作系统的安装程序。运行安装程序&#xff1a;下载完成后&#xff0c;双击安装程序并按照提示进行安装。验证安装&#xff1a;安装完成后&#xff0c;在终…

C++对象的拷贝构造函数

如果一个构造函数的第一个参数是类本身的引用,且没有其它参数(或者其它的参数都有默认值),则该构造函数为拷贝构造函数。 拷贝(复制)构造函数:利用同类对象构造一个新的对象 ●1.函数名和类同名 (构造函数) ●2.没有返回值 (构造函数) ●3.第一个参数必…