超越YOLOv8?基于Gold YOLO的自定义数据集训练

09cb2ff222741de3484aa0cb6a4e3b68.png

Gold-YOLO的出色性能是对Noah's Ark Lab团队的奉献和专业知识的证明。它不仅超越了其前身YOLOv8,还为实时目标检测设定了新标准。凭借其闪电般快速的处理能力和出色的准确性,Gold-YOLO承诺革命化一系列应用,从自动驾驶车辆到监视系统等等。

我们将了解如何从roboflow训练自定义数据集的Gold-YOLO。在本文中,我们将能够在最后检查评估,然后将权重(.pt)导出到ONNX格式。

数据集来自Roblflow:https://universe.roboflow.com/roboflow-universe-projects/construction-site-safety

官方代码链接:https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO

920fe8693c9a1c8468d88143b2bc5080.png

第1步. 将运行时更改为GPU

点击RUNTIME,然后滚动更改运行时,选择T4 GPU,这是当前免费GPU,并点击保存。

24ad8550254c2caadf095025b464ee5c.png

第2步. 通过点击驱动符号,挂载你的Google Drive

99e7ca55cc0c55c727162ff5afea8b8d.png

标记成黄色

第3步. 克隆Gold YOLO的官方代码库

!git clone https://github.com/huawei-noah/Efficient-Computing.git

第4步. 更改目录

%cd '/content/drive/MyDrive/goldyolo/Efficient-Computing/Detection/Gold-YOLO'

第5步. 安装所需库

!pip install -r requirements.txt

第6步. 从Roboflow导入数据集

在这里,我以yolov6格式导入数据集。Gold Yolo实现是基于YOLOv6的,而一些实现是从Topformer借来的。

!pip install roboflow
from roboflow import Roboflow
rf = Roboflow(api_key="85eFUaSSbJwbBvNmOGlC")
project = rf.workspace("roboflow-100").project("construction-safety-gsnvb")
dataset = project.version(2).download("mt-yolov6")

第7步. 在data.yaml文件中进行更改

在Gold YOLO中,yaml文件的结构有点不同。

train: /content/drive/MyDrive/goldyolo/Efficient-Computing/Detection/Gold-YOLO/construction-safety-2/images/train # train images
val: /content/drive/MyDrive/goldyolo/Efficient-Computing/Detection/Gold-YOLO/construction-safety-2/images/valid
test: /content/drive/MyDrive/goldyolo/Efficient-Computing/Detection/Gold-YOLO/construction-safety-2/images/test
# whether it is coco dataset, only coco dataset should be set to True.
is_coco: False
# Classes
nc: 5   # number of classes
names: ['helmet','no-helmet', 'no-vest', 'person', 'vest']  # class names

如果你看到它写到is_coco: False。因为我们的数据集基于Yolo格式,确保将其设置为False。对于Coco数据集,你需要设置为True。正确设置训练、验证和测试图像路径。

第8步. 下载Gold YOLO的预训练模型并开始训练我们自定义数据集。在这一步,我们需要提供data.yaml文件的路径和批处理大小。

# Train yolo model
!wget -O Gold_n_dist.pt "https://drive.google.com/uc?export=download&id=1nJ9x8Q1Ic-DnCs0ruBh-Zy3t9-IyO9LR"
sed -i "s/pretrained=None/pretrained='.\/Gold_n_dist.pt'/g" ./configs/gold_yolo-n.py
!python tools/train.py --batch 16 --conf configs/gold_yolo-n.py --data "/content/drive/MyDrive/goldyolo/Efficient-Computing/Detection/Gold-YOLO/construction-safety-2/data.yaml" --epoch 50 --fuse_ab --device 0

我将批处理设置为16,时代设置为50。你可以根据需求更改时代。

Results saved to runs/train/exp2
Epoch: 48 | mAP@0.5: 0.9059034791884045 | mAP@0.50:0.95: 0.5014349282982402Epoch  iou_loss  dfl_loss  cls_loss49/49     0.727         0     1.204: 100% 63/63 [00:35<00:00,  1.76it/s]Training completed in 1.069 hours.

一旦训练完成,我们将在runs文件夹中获得三个权重文件(.pt)。

2fd9d015cb7aac76af841002aa6176a7.png

权重文件

第9步. 如果你想在我们的数据集上评估自定义模型

!python tools/eval.py --data "/content/drive/MyDrive/goldyolo/Efficient-Computing/Detection/Gold-YOLO/construction-safety-2/data.yaml" --batch 16 --weights /content/drive/MyDrive/goldyolo/Efficient-Computing/Detection/Gold-YOLO/runs/train/exp2/weights/best_ckpt.pt --task val --reproduce_640_eval

确保你正确给出了权重文件和yaml路径。

第10步. 用于视频和图像推理

!sed -i "s/inferer = Inferer(source, weights, device, yaml, img_size, half)/inferer = Inferer(source, False, None, weights, device, yaml, img_size, half)/g" ./tools/infer.py
!python tools/infer.py --weights /content/drive/MyDrive/goldyolo/Efficient-Computing/Detection/Gold-YOLO/runs/train/exp2/weights/best_ckpt.pt --yaml "/content/drive/MyDrive/goldyolo/Efficient-Computing/Detection/Gold-YOLO/construction-safety-2/data.yaml" --source "/content/drive/MyDrive/goldyolo/Efficient-Computing/Detection/Gold-YOLO/ppe.mp4" --save-dir 'OutPutResults'

确保正确给出权重、yaml和图像/视频路径。

ddcc506a954034bf46748c72f8e8b44c.png

结果展示

第11步. 本文的最后一步是将best.pt转换为ONNX格式

!python deploy/ONNX/export_onnx.py --weights /content/drive/MyDrive/goldyolo/Efficient-Computing/Detection/Gold-YOLO/runs/train/exp2/weights/best_ckpt.pt --device 0 --simplify --batch 32

在这里,我们提供了权重文件路径。确保一切都在正确的目录中。希望这一步可以轻松将.pt文件转换为onnx格式。

结论

这篇教程提供了如何在Roboflow平台上训练Gold-YOLO自定义数据集的全面指南,以及运行各种任务,包括训练、评估、图像和视频推断,以及将最佳模型转换为ONNX格式。它涵盖了设置GPU环境、导入数据集、配置data.yaml文件、训练模型、评估性能以及部署实际用途的关键步骤。

·  END  ·

HAPPY LIFE

5f03e0edaad2dc356591f9174ac366a3.png

本文仅供学习交流使用,如有侵权请联系作者删除

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

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

相关文章

下载视频号安装,下载视频号安装到手机上?

在数字化时代&#xff0c;随着社交媒体的蓬勃发展&#xff0c;视频内容正成为品牌传播和用户吸引的重要方式。而作为当下最热门的短视频平台之一&#xff0c;视频号为用户提供了创作、分享和推广优质内容的机会。如果您还不了解视频号视频或想进一步了解如何下载视频号视频&…

随笔:使用Python爬取知乎上相关问题的所有回答

项目中数据分析的需要自己从知乎某个专门的问题上爬数据&#xff0c;但众所周知&#xff0c;知乎的问题的显示方式有点胃疼&#xff08;指滑动后下翻加载更多回答&#xff0c;还经常卡住&#xff09;&#xff0c;翻了翻网上的教程发现有的要么就是很老了要么就是付费的&#xf…

【Linux】Centos yum源替换

YUM是基于RPM包管理&#xff0c;能够从指定的服务器自动下载RPM包并且安装&#xff0c;可以自动处理依赖性关系&#xff0c;并且一次安装所有依赖的软件包&#xff0c;无须繁琐地一次次下载、安装。 CentOS 8操作系统版本结束了生命周期&#xff08;EOL&#xff09;&#xff0…

四、安装vmtools

1.介绍 1.vmtools安装后&#xff0c;可以让我们在windows下更好的管理vm虚拟机 2.可以设置windows和centos的共享文件 2.安装步骤 1.进入centos 2.点击vm菜单->install vmware tools 3.centos会出现一个vm安装包&#xff0c;xx.tar.gz 4.拷贝到/opt 5.使用解压命令tar&…

elementUI 特定分辨率(如1920*1080)下el-row未超出一行却换行

在1920*1080分辨率下&#xff0c; el-col 内容未超出 el-col 宽度&#xff0c;el-col 不足以占据一行&#xff0c;el-row 却自动换行了&#xff08;其他分辨率没有这个问题&#xff09;。 截图&#xff1a; 排查&#xff1a; el-col 内容没有溢出&#xff1b;没有多余的 pad…

【Overload游戏引擎细节分析】PBR材质Shader

PBR基于物理的渲染可以实现更加真实的效果&#xff0c;其Shader值得分析一下。但PBR需要较多的基础知识&#xff0c;不适合不会OpenGL的朋友。 一、PBR理论 PBR指基于物理的渲染&#xff0c;其理论较多&#xff0c;需要的基础知识也较多&#xff0c;我在这就不再写一遍了&#…

MS COCO数据集的评价标准以及不同指标的选择推荐(AP、mAP、MS COCO、AR、@、0.5、0.75、1、目标检测、评价指标)

目标检测模型性能衡量指标、MS COCO 数据集的评价标准以及不同指标的选择推荐 0. 引言 0.1 COCO 数据集评价指标 目标检测模型通过 pycocotools 在验证集上会得到 COCO 的评价列表&#xff0c;具体参数的含义是什么呢&#xff1f; 0.2 目标检测领域常用的公开数据集 PASCAL …

如何在忘记手机密码或图案时重置 Android 手机?

忘记手机密码或图案是 Android 用户一生中不得不面对的最令人沮丧的事情之一。恢复 Android 设备的唯一方法是在 Android 设备上恢复出厂设置。但许多用户不使用此方法&#xff0c;因为此过程会擦除您设备上可用的所有个人数据。 但是&#xff0c;有一种方法可以在不丢失任何数…

笔记43:ResNet 结构详解

笔记本地地址&#xff1a;D:\work_file\DeepLearning_Learning\03_个人笔记\2.图像处理任务\ResNet网络学习 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a

LeetCode 1465. 切割后面积最大的蛋糕:纵横分别处理

【LetMeFly】1465.切割后面积最大的蛋糕&#xff1a;纵横分别处理 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/ 矩形蛋糕的高度为 h 且宽度为 w&#xff0c;给你两个整数数组 horizontalCut…

智能问答技术在百度搜索中的应用

作者 | Xiaodong 导读 本文主要介绍了智能问答技术在百度搜索中的应用。包括机器问答的发展历程、生成式问答、百度搜索智能问答应用。欢迎大家加入百度搜索团队&#xff0c;共同探索智能问答技术的发展方向&#xff0c;文末有简历投递方式。 全文6474字&#xff0c;预计阅读时…

常见的云测试策略及重要性

随着云计算技术的快速发展&#xff0c;云服务已经成为了现代应用程序开发和部署的核心组成部分。然而&#xff0c;随之而来的是对云系统性能和质量的不断追求&#xff0c;这使得云测试变得至关重要。本文将探讨云测试的概念、重要性以及一些常见的云测试策略和工具。 一、云测试…

新能源下半场要拼“电池”,欣旺达动力胜算几何?

如今&#xff0c;续航焦虑、里程焦虑是新能源汽车避不开的话题。因此&#xff0c;电池作为续航的核心硬件&#xff0c;其质量的好坏自然也就成为了市场颇为关心的话题&#xff0c;与之相关的新能源电池厂商也受到了越来越多的关注。 其中&#xff0c;新能源电池厂商中的新秀—…

Vue---监听div元素宽高改变时echart图表重新resize

一、需求描述 当点击上图的红色框时&#xff0c;echart的div元素宽会改变但是无法触发echarts图表的resize重新渲染&#xff0c;对于浏览器而言&#xff0c;浏览器具有window.resize方法监听浏览器窗口大小的改变&#xff0c;而div元素没有监听宽高改变的方法。 二、解决方案 …

SpringCloud复习:(7)@EnableZuulProxy注解的作用

使用zuul时&#xff0c;需要加EnableZuulProxy注解&#xff0c;这个注解定义如下&#xff1a; 可以看到&#xff0c;它引入了一个配置类ZuulProxyMarkerConfiguration,这个类代码如下&#xff1a; 其中定义了一个类型为ZuulProxyMarkerConfiguration.Marker类型的bean. 这个…

【目标跟踪】多目标跟踪测距

文章目录 前言python代码&#xff08;带注释&#xff09;main.pysort.pykalman.pydistance.py 结语 前言 先放效果图。目标框内左上角&#xff0c;显示的是目标距离相机的纵向距离。目标横向距离、速度已求出&#xff0c;没在图片展示。这里不仅仅实现对目标检测框的跟踪&#…

什么是React中的高阶组件(Higher Order Component,HOC)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

Hover:借贷新势力崛起,在经验与创新中找寻平衡

复苏中的Cosmos 如果让我选择一个最我感到可惜的区块链项目&#xff0c;我会选择Cosmos。 Cosmos最早提出并推动万链互联的概念&#xff0c;希望打通不同链之间的孤岛&#xff0c;彼时和另一个天王项目Polkadot号称跨链双雄。其跨链技术允许不同的区块链网络互相通信&#xf…

语雀宕机8小时,是否说明现在高可用架构很脆弱?

系列文章目录 高并发架构去重难&#xff1f;架构必备技能 - 布隆过滤器 当Dubbo遇到高并发&#xff1a;探究流量控制解决方案 主从选举机制&#xff0c;架构高可用性的不二选择 面试Dubbo &#xff0c;却问我和Springcloud有什么区别&#xff1f; 消息队列选型——为什么选择R…

浅谈中国汽车充电桩行业市场状况及充电桩选型的介绍

安科瑞虞佳豪 车桩比降低是完善新能源汽车行业配套的一大重要趋势&#xff0c;目前各国政府都在努力推进政策&#xff0c;通过税收减免、建设补贴等措施提升充电桩建设速度&#xff0c;以满足新能源汽车需求。 近年来&#xff0c;在需求和技术的驱动下&#xff0c;充电桩的平…