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

news2024/9/22 7:35:53

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.5014349282982402


     Epoch  iou_loss  dfl_loss  cls_loss
     49/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.coloradmin.cn/o/1153085.html

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

相关文章

影响产品开发决策的认知偏见

认知偏见存在于每个人的内心&#xff0c;并在不断影响人们的工作和生活。认识并承认自己有偏见&#xff0c;并寻求相应的解决方案&#xff0c;可以帮助我们更好的做出产品决策、团队建设和架构设计。原文: The cognitive biases that influence product development decisions …

某国产中间件企业:提升研发安全能力,助力数字化建设安全发展

​某国产中间件企业是我国中间件领导者&#xff0c;国内领先的大安全及行业信息化解决方案提供商&#xff0c;为各个行业领域近万家企业客户提供先进的中间件、信息安全及行业数字化产品、解决方案及服务支撑&#xff0c;致力于构建安全科学的数字世界&#xff0c;帮助客户实现…

解决谷歌浏览器翻译插件不能用的问题

Chrome浏览器右键翻译页面现在已经不能用了 这是因为谷歌关闭了大陆内的谷歌翻译服务&#xff0c; 所以我们需要将Chrome浏览器的翻译域名指向国内可以用的域名 首先ping一下谷歌cn域名 ping google.cn PING google.cn (108.177.97.100) 56(84) bytes of data. 64 字节&#xf…

PHP在线客服系统平台系统源码+完全开源 带完整的搭建教程

在线客服系统已经成为企业与用户进行实时沟通的重要工具。PHP作为一种流行的服务器端脚本语言&#xff0c;具有高效、稳定和易用性等优点&#xff0c;因此被广泛应用于在线客服系统的开发。今天罗峰来给大家介绍一款PHP在线客服系统平台系统源码&#xff0c;源码完全开源&#…

js实现groupby

初始结果是一个数组&#xff0c;最终得到一个对象。 let arr [{sex: male,name: xiaomi }, {sex: male,name: lisi }, {sex: female,name: zhangsan }]最终得到&#xff1a; 代码&#xff1a; const groupBy (list, key) > {const obj {};list.map(item > {if (!ob…

如何在Instagram和kol展开合作

网红营销已经演变成一个由品牌、MCN机构、红人和消费者组成的复杂生态系统&#xff0c;并在某种程度上重新定义了当今社交媒体时代营销和广告的本质。在这个情况下&#xff0c;品牌找红人进行营销推广已经成为大势&#xff0c;而最能体现网红营销发展的莫过于Instagram这个平台…

简析有源滤波器应用在光伏发电系统中

叶根胜 安科瑞电气股份有限公司 上海嘉定201801 摘要:阐述了有源滤波器在光伏行业的应用&#xff0c;介绍了有源滤波器的原理和HTQF有源滤波器的技术优势&#xff0c;并展示了HTQF有源滤波器的应用效果。 关键词:太阳能;有源滤波器;单晶炉线锯 0前言 面对日益迫切的能源危…

GC8549直流电机驱动芯片解决方案,可替代LV8548/LV8549/ONSEMI

GC8549 是一款双通道 12V 直流电机驱动芯片&#xff0c; 为摄像机、消费类产品、玩具和其他低压或者电池 供电的运动控制类应用提供了集成的电机驱动解 决方案。芯片一般用来驱动两个直流电机或者驱动 一个步进电机。它可以工作在 3.8~12V 的电源电压上&#xff0c;每 通道能提…

Go语言Gin框架Logrus日志管理和token身份验证

文章目录 Logrus日志管理Logrus基本用法实现日志切割和过期删除 token身份验证Hash消息认证签名实现tokenRSA签名实现token椭圆曲线数字签名算法&#xff08;ECDSA&#xff09;方式生成token Logrus日志管理 Logrus是一个结构化的Go日志框架&#xff0c;功能强大&#xff0c;具…

机器学习2:决策树--基于信息增益的ID3算法

1.决策树的简介 建立决策树的过程可以分为以下几个步骤: 计算每个特征的信息增益或信息增益比,选择最优的特征作为当前节点的划分标准。根据选择的特征将数据集划分为不同的子集。对每个子集递归执行步骤 1 和步骤 2,直到满足终止条件。构建决策树,并输出。基于信息增益的…

Sqlserver两个服务器数据库拷贝

一.当前条件&#xff1a; serverA 为源服务器 serverB 为目标服务器 想把serverA中的数据库test拷贝到serverB上。 方法一&#xff1a; 1.在serverB上建立空数据库test 2.右键点击serverA上的test &#xff0c;任务——导出数据&#xff0c;之后填写目标服务器就行

[论文阅读]Voxel R-CNN——迈向高性能基于体素的3D目标检测

Voxel R-CNN Voxel R-CNN: Towards High Performance Voxel-based 3D Object Detection 迈向高性能基于体素的3D目标检测 论文网址&#xff1a;Voxel R-CNN 论文代码&#xff1a;Voxel R-CNN 简读论文 该论文提出了 Voxel R-CNN&#xff0c;这是一种基于体素的高性能 3D 对象…

一文读懂什么是新一代BPM

什么是BPM 业务流程管理 (Business Process Management&#xff0c;简称BPM)&#xff0c;是一门学科&#xff0c;它通过分析、建模、执行、监控、优化等流程来改进业务流程&#xff0c;使企业核心业务流程最优化。BPM系统即根据业务环境的变化&#xff0c;推进人与人之间、人与…

Modelsim 使用教程(1)——概述

目录 一、概述 二、设计优化&#xff08;Design Optimizations&#xff09; 三、基本仿真流程&#xff08;Basic simulation flow&#xff09; 3.1 创建工作库&#xff08;create a working library&#xff09; 3.2 编译设计&#xff08;Compiling Your Design&#xff09…

MAXENT模型的生物多样性生境模拟与保护优先区甄选、自然保护区布局优化评估

随着生物多样性全球大会的举办&#xff0c;不论是管理机构及科研单位、高校都在积极准备&#xff0c;根据国家林草局最新工作指示&#xff0c;我国将积极整合、优化自然保护地&#xff0c;加快推进国家公园体制试点&#xff0c;构建以国家公园为主体的自然保护地体系。针对我国…

电脑剪辑完成的视频怎么传到手机

现今手机基本上可以完成电脑的所有操作&#xff0c;甚至功能会更加丰富&#xff0c;但是对于需要剪辑视频的用户来说&#xff0c;电脑无疑仍然是最佳选择&#xff0c;毕竟屏幕大&#xff0c;对于视频细节的把控更到位&#xff0c;查看整体效果不容易出现问题&#xff0c;然而当…

Asset private data

其使用的java链码是基于gradle7.0的。相比于其他环境下的java代码&#xff0c;多了一些限制&#xff1a; (1)逗号后面必须有空格&#xff0c;花括号前面必须有空格&#xff0c;运算符前后必须有空格 &#xff08;2&#xff09;类里面的set方法参数不能和类里面的成员变量名字…

深入了解Python类与面向对象编程

在编程世界中&#xff0c;面向对象编程&#xff08;OOP&#xff09;是一种强大的编程范式&#xff0c;而Python是一门优雅而强大的编程语言。本文将带你深入探讨Python中的类与面向对象&#xff0c;为你揭示面向对象编程的奇妙世界。 类与对象的概念 1.什么是类&#xff1f; …

21款奔驰E300L升级HUD抬头显示 直视仪表信息

随着科技飞速地发展&#xff0c;从汽车领域就可以看出&#xff0c;尤其是汽车的抬头显示器&#xff0c;一经推出就吸引了很多的车主。 升级HUD抬头显示&#xff0c;HUD与汽车系统进行完整的数据信息连接&#xff0c;整合成大数据&#xff0c;然后将一些重要信息映射到车窗玻璃上…

Netflix app客户端有哪些优势?稳定奈飞安装包

Netflix app客户端软件是一款提供海量高质量影视内容的视频播放软件&#xff0c;用户可以轻松浏览和观看电影、电视剧、纪录片等&#xff0c;享受高清画质和个性化推荐服务&#xff0c;同时支持多设备使用&#xff0c;为用户带来优质的观影体验。 Netflix app客户端软件的优势…