Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在自定义数据集上训练 YOLOv9

如何在自定义数据集上训练 YOLOv9

原创
作者头像
一点人工一点智能
修改于 2024-03-12 07:01:10
修改于 2024-03-12 07:01:10
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

2024 年 2 月 21 日,Chien-Yao Wang、I-Hau Yeh 和 Hong-Yuan Mark Liao 发布了“YOLOv9:Learning What You Want to Learn Using Programmable Gradient Information”论文,介绍了一种新的计算机视觉模型架构:YOLOv9。目前,源代码已开源,允许所有人训练自己的 YOLOv9 模型。

据项目研究团队称,在使用 MS COCO 数据集进行基准测试时,YOLOv9 实现了比现有流行的 YOLO 模型(如 YOLOv8、YOLOv7 和 YOLOv5)更高的 mAP。

在本文中,我们将展示如何在自定义数据集上训练 YOLOv9 模型。我们将通过一个训练视觉模型来识别球场上的足球运动员。话虽如此,您可以使用在本文中使用所需的任何数据集。

YOLOv9简介

YOLOv9 是由 Chien-Yao Wang、I-Hau Yeh 和 Hong-Yuan Mark Liao 开发的计算机视觉模型。Hong-Yuan Mark Liao 和 Chien-Yao Wang 还参与了 YOLOv4、YOLOOR 和 YOLOv7 等模型架构的开发。YOLOv9 引入了两个新的架构:YOLOv9 和 GELAN,这两个架构都在随论文一起发布的yolov9 Python 存储库中。

使用 YOLOv9 模型,您可以训练对象检测模型。目前不支持分段、分类和其他任务类型。

YOLOv9 有四种型号,按参数计数排序:

  • v9-S
  • v9-M型
  • v9-C
  • v9-E系列

在撰写本文时,v9-S 和 v9-M 的权重尚不可用。

最小的模型在MS COCO数据集的验证集上实现了46.8%的AP,而最大的模型实现了55.6%。这为物体检测性能奠定了新的技术水平。下图显示了YOLOv9研究团队的研究结果。

如何安装YOLOv9

YOLOv9被打包为一系列可以使用的脚本。在编写本文时,还没有官方的Python包或安装包可以用来与模型交互。

要使用YOLOv9,您需要下载项目存储库。然后,您可以从现有的COCO检查点运行训练作业或推理。

本文假设您在Google Colab中工作。如果您在笔记本环境之外的本地机器上工作,请根据需要调整命令。

YOLOv9中有一个错误,它阻止您在映像上运行推理,但Roboflow团队正在维护一个带有补丁的非官方分叉,直到修复程序发布。要从已修补的fork安装YOLOv9,请运行以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/SkalskiP/yolov9.git
cd yolov9
pip3 install -r requirements.txt -q

让我们设置一个HOME目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import os
HOME = os.getcwd()
print(HOME)

接下来,您需要下载模型权重。目前只有v9-C和v9-E权重可用。您可以使用以下命令下载它们:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
!mkdir -p {HOME}/weights
!wget -P {HOME}/weights -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-c.pt
!wget -P {HOME}/weights -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-e.pt
!wget -P {HOME}/weights -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/gelan-c.pt
!wget -P {HOME}/weights -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/gelan-e.pt

现在,您可以使用项目存储库中的脚本对YOLOv9模型进行推理和训练。

YOLOv9模型的运行推理

让我们在一个示例图像上使用v9-C COCO检查点来运行推理。创建一个新的数据目录,并将示例图像下载到笔记本中。您可以使用我们的狗狗图像作为示例,也可以使用您想要的任何其他图像。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
!mkdir -p {HOME}/data
!wget -P {HOME}/data -q https://media.roboflow.com/notebooks/examples/dog.jpeg
SOURCE_IMAGE_PATH = f"{HOME}/dog.jpeg"

我们现在可以对我们的图像进行推断:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
!python detect.py --weights {HOME}/weights/gelan-c.pt --conf 0.1 --source {HOME}/data/dog.jpeg --device 0
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Image(filename=f"{HOME}/yolov9/runs/detect/exp/dog.jpeg", width=600)

模型结果:

我们的模型能够成功地识别图像中的人、狗和车。话虽如此,但该模型将一条带子误认为手提包,未能检测到背包。

让我们试试参数最多的v9-E模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
!python detect.py --weights {HOME}/weights/yolov9-e.pt --conf 0.1 --source {HOME}/data/dog.jpeg --device 0
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Image(filename=f"{HOME}/yolov9/runs/detect/exp2/dog.jpeg", width=600)

模型结果:

该模型能够成功识别人、狗、车和背包。

如何训练一个YOLOv9模型

您可以使用YOLOv9项目目录中的train.py文件来训练YOLOv9模型。

步骤#1:下载数据集

要开始训练模型,您需要一个数据集。在本文中,我们将使用足球运动员的数据集。由此产生的模型将能够识别球场上的足球运动员。

如果你没有数据集,请查看Roboflow Universe,这是一个公开共享了20多万个计算机视觉数据集的社区。你可以找到涵盖从书脊到足球运动员再到太阳能电池板的所有数据集。

运行以下代码下载我们将在本文中使用的数据集:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
%cd {HOME}/yolov9

roboflow.login()

rf = roboflow.Roboflow()

project = rf.workspace("roboflow-jvuqo").project("football-players-detection-3zvbc")
dataset = project.version(1).download("yolov7")

当您运行此代码时,将要求您使用Roboflow进行身份验证。按照终端中显示的链接进行身份验证。如果您没有帐户,您将被带到一个可以创建帐户的页面。然后,再次单击链接以使用Python包进行身份验证。

此代码下载YOLOv7格式的数据集,该数据集与YOLOv9模型兼容。

您可以将任何以YOLOv7格式格式化的数据集与本指南一起使用。

步骤#2:使用YOLOv9Python脚本来训练模型

让我们在数据集上训练20个epochs的模型。我们将使用GELAN-C架构来实现这一点,这是作为YOLOv9 GitHub存储库的一部分发布的两个架构之一。GELAN-C训练速度快。GELAN-C推理时间也很快。

您可以使用以下代码执行此操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
%cd {HOME}/yolov9

!python train.py \
--batch 16 --epochs 20 --img 640 --device 0 --min-items 0 --close-mosaic 15 \
--data {dataset.location}/data.yaml \
--weights {HOME}/weights/gelan-c.pt \
--cfg models/detect/gelan-c.yaml \
--hyp hyp.scratch-high.yaml

你的模型将开始训练。随着模型的训练,您将看到每个epoch的训练指标。

一旦您的模型完成了训练,您就可以借助YOLOv9生成的图形来评估训练结果。

运行以下代码以查看您的训练图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Image(filename=f"{HOME}/yolov9/runs/train/exp/results.png", width=1000)

运行以下代码以查看您的混淆矩阵(confusion matrix):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Image(filename=f"{HOME}/yolov9/runs/train/exp/confusion_matrix.png", width=1000)

运行以下代码集中查看验证一批图像的模型结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Image(filename=f"{HOME}/yolov9/runs/train/exp/val_batch0_pred.jpg", width=1000)

步骤#3:在自定义模型上运行推理

既然我们有了一个经过训练的模型,我们就可以进行推理了。为此,我们可以使用YOLOv9存储库中的detect.py文件。

运行以下代码以对验证集中的所有图像运行推理:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
!python detect.py \
--img 1280 --conf 0.1 --device 0 \
--weights {HOME}/yolov9/runs/train/exp/weights/best.pt \
--source {dataset.location}/valid/images

import glob
from IPython.display import Image, display

for image_path in glob.glob(f'{HOME}/yolov9/runs/detect/exp4/*.jpg')[:3]:
      display(Image(filename=image_path, width=600))
      print("\n")

我们在640大小的图像上训练了我们的模型,这使我们能够用较少的计算资源训练模型。在推理过程中,我们将图像大小增加到1280,使我们能够从模型中获得更准确的结果。

以下是我们模型的三个结果示例:

我们的模型成功地识别了球员、裁判和守门员。

如何部署YOLOv9模型

使用经过训练的YOLOv9模型,在将模型投入正式使用之前还有一项任务:模型部署。

您可以使用Roboflow Inference(一个开源的计算机视觉推理服务器)来完成这项任务。使用Roboflow Inference,您可以使用Python SDK在应用程序逻辑中引用模型,或者在Docker容器中运行模型,该容器可以作为微服务进行部署。在本文中,我们将展示如何使用推理Python SDK部署您的模型。

在开始的时候,您需要将您的模型权重上传到Roboflow。这将使云API可用于您的模型,并允许您将权重带入本地推理部署。你需要在你的Roboflow账户中有一个项目,以便上传你的权重。

在您的Roboflow帐户中创建一个新项目,然后上传您的数据集。单击侧边栏中的“生成”以生成数据集版本。准备好数据集版本后,您可以上传模型权重。

要上传模型权重,请运行以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from roboflow import Roboflow

rf = Roboflow(api_key='YOUR_API_KEY')
project = rf.workspace('WORKSPACE').project('PROJECT')

version = project.version(1)
version.deploy(model_type="yolov9", model_path=f"{HOME}/yolov9/runs/train/exp")

上面,设置您的Roboflow工作区ID、模型ID和API密钥。

· 查找您的工作空间和型号ID

· 查找您的API密钥

一旦你运行了上面的代码,你的权重将在你的Roboflow帐户中可用,用于你的本地推理部署。

要将您的模型部署到您的设备,请首先安装推理和监督:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install inference supervision

然后,您可以使用以下代码来运行您的模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from inference import get_model

model = get_model(model_id="model-id/version", api_key="API_KEY")

image_paths = sv.list_files_with_extensions(
    directory=f"{dataset.location}/valid/images",
    extensions=['png', 'jpg', 'jpeg']
)
image_path = random.choice(image_paths)
image = cv2.imread(image_path)

result = model.infer(image, confidence=0.1)[0]
detections = sv.Detections.from_inference(result)

label_annotator = sv.LabelAnnotator(text_color=sv.Color.BLACK)
bounding_box_annotator = sv.BoundingBoxAnnotator()

annotated_image = image.copy()
annotated_image = bounding_box_annotator.annotate(scene=annotated_image, detections=detections)
annotated_image = label_annotator.annotate(scene=annotated_image, detections=detections)

sv.plot_image(annotated_image)

上面,设置您的Roboflow模型ID和API密钥。

· 查找您的型号ID

· 查找您的API密钥

在上面的代码中,我们在数据集中的一个随机图像上运行我们的模型。以下是输出示例:valid

我们已经成功地在我们自己的硬件上使用推理部署了我们的模型。

要了解有关使用推理部署模型的更多信息,请参阅推理文档。

(https://inference.roboflow.com/?ref=blog.roboflow.com)

结论

YOLOv9是一个新的计算机视觉模型体系结构,由Chien-Yao Wang, I-Hau Yeh和Hong-Yuan Mark Liao共同发布。您可以使用YOLOv9体系结构来训练对象检测模型。

在本文中,我们演示了如何在自定义数据集上运行推理和训练YOLOv9模型。我们克隆了YOLOv9项目代码,下载了模型权重,然后使用默认的COCO权重进行推理。然后,我们使用足球运动员检测数据集训练了一个微调模型。我们回顾了训练图和混淆矩阵,然后在验证集的图像上测试了模型。

参考链接:https://blog.roboflow.com/train-yolov9-model/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
实战 | 基于YOLOv9+SAM实现动态目标检测和分割(步骤 + 代码)
本文主要介绍基于YOLOv9+SAM实现动态目标检测和分割,并给出详细步骤和代码。
Color Space
2024/04/12
2.7K0
实战 | 基于YOLOv9+SAM实现动态目标检测和分割(步骤 + 代码)
实战 | YOLOv10 自定义数据集训练实现车牌检测 (数据集+训练+预测 保姆级教程)
本文主要介绍如何使用YOLOv10在自定义数据集训练实现车牌检测 (数据集+训练+预测 保姆级教程)。
Color Space
2024/06/05
5.3K0
实战 | YOLOv10 自定义数据集训练实现车牌检测 (数据集+训练+预测 保姆级教程)
YOLO系列算法全家桶——YOLOv1-YOLOv9详细介绍 !!
YOLO系列的核心思想就是把目标检测转变为一个回归问题,利用整张图片作为网络的输入,通过神经网络,得到边界框的位置及其所属的类别。
JOYCE_Leo16
2024/04/09
31.8K1
YOLO系列算法全家桶——YOLOv1-YOLOv9详细介绍 !!
YOLOv8已至,精度大涨!教你如何在自定义数据集上训练它
丰色 发自 凹非寺 量子位 | 公众号 QbitAI 很快啊—— 目标检测经典模型YOLO的第八个版本就已经发布了。 这次升级不少,包括命令行界面、Python API、backbone结构等,精度相比YOLOv5高了一大截(速度官方还没公布)。 下面是网友实测,几个不同规模的变体在目标检测、实例分割和图像分类三项任务上的涨点最高达到了33.21%。 不知道YOLOv8这一出,v5版本还会“苟”多久? oh我们还发现已经有人用它在自定义数据集上完成了一波训练,效果是这样滴: 这精准度和稳定性,让网友狠
量子位
2023/02/28
4.1K0
YOLOv8已至,精度大涨!教你如何在自定义数据集上训练它
YOLOv9如何训练自己的数据集(NEU-DET为案列)
💡💡💡 2024年计算机视觉顶会创新点适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏文章提供每一步步骤和源码,轻松带你上手魔改网络 !!!
AI小怪兽
2024/03/26
1.1K0
来了,使用YOLOv11目标检测教程
YOLO11 在 2024 年 9 月 27 日的 YOLO Vision 2024 活动中宣布:https://www.youtube.com/watch?v=rfI5vOo3-_A。
小白学视觉
2024/10/10
2.4K0
来了,使用YOLOv11目标检测教程
YOLO家族系列模型的演变:从v1到v8(下)
昨天的文章中,我们回顾了 YOLO 家族的前 9 个架构。本文中将继续总结最后3个框架,还有本月最新发布的YOLO V8.
deephub
2023/02/01
2.8K0
基于YOLOv8 + BotSORT实现球员和足球检测与跟踪 (步骤 + 源码)
本文主要介绍基于YOLOv8和BotSORT实现球员和足球检测与跟踪 ,并给出步骤和代码。
Color Space
2024/01/11
1.5K0
基于YOLOv8 + BotSORT实现球员和足球检测与跟踪 (步骤 + 源码)
杀疯了!YOLO再突破,提速20倍!!
YOLO再一次突破,新变体YOLO-World在目标检测领域的表现非常的出色。开集检测速度提升20倍!
Python编程爱好者
2024/04/12
1.1K0
杀疯了!YOLO再突破,提速20倍!!
实战|YOLOv10 自定义目标检测
由清华大学的研究团队基于 Ultralytics Python 包研发的 YOLOv10,通过优化模型结构并去除非极大值抑制(NMS)环节,提出了一种创新的实时目标检测技术。这些改进不仅实现了行业领先的检测性能,还降低了对计算资源的需求。大量实验结果证明,YOLOv10 在不同规模的模型上都能提供卓越的准确率和延迟之间的平衡。
数据科学工厂
2024/06/21
9600
实战|YOLOv10 自定义目标检测
YOLOv9开源 | 架构图&模块改进&正负样本匹配&损失函数解读,5分钟即可理解YOLOv9
YOLOv9提出了新网络架构——GELAN。GELAN通过结合两种神经网络架构,即结合用梯度路径规划(CSPNet)和(ELAN)设计了一种广义的高效层聚合网络(GELAN);GELAN综合考虑了轻量级、推理速度和准确度。
集智书童公众号
2024/02/23
10.4K0
YOLOv9开源 | 架构图&模块改进&正负样本匹配&损失函数解读,5分钟即可理解YOLOv9
基于yolov11的手语检测 | 附数据集+代码
YOLO11是Ultralytics YOLO系列实时目标检测器的最新迭代,它重新定义了尖端精度、速度和效率的可能性。在以往YOLO版本的令人印象深刻的进步基础上,YOLO11在架构和训练方法上引入了重大改进,使其成为广泛计算机视觉任务的多功能选择。
小白学视觉
2024/12/09
7040
基于yolov11的手语检测 | 附数据集+代码
目标检测新SOTA:YOLOv9问世,新架构让传统卷积重焕生机
继 2023 年 1 月 YOLOv8 正式发布一年多以后,YOLOv9 终于来了!
机器之心
2024/02/26
1.2K0
目标检测新SOTA:YOLOv9问世,新架构让传统卷积重焕生机
Scaled-YOLOv4 快速开始,训练自定义数据集
下载 CUDA Toolkit ,其版本也注意对应 Nvidia 驱动版本。下一步需要。命令参考:
GoCoding
2021/05/06
1.6K0
Scaled-YOLOv4 快速开始,训练自定义数据集
YOLOv5 实现目标检测(训练自己的数据集实现猫猫识别)
2020年6月10日,Ultralytics在github上正式发布了YOLOv5。YOLO系列可以说是单机目标检测框架中的潮流前线了,YOLOv5并不是一个单独的模型,而是一个模型家族,包括了YOLOv5s(最小)、YOLOv5m、YOLOv5l、YOLOv5x(最大)。目前v6.0版本又新增一层YOLOv5n模型,代替YOLOv5s成为最小模型,在所有模型中速度更快但精度也更低。
全栈程序员站长
2022/07/01
5.1K0
YOLOv5 实现目标检测(训练自己的数据集实现猫猫识别)
【yolov5目标检测】使用yolov5训练自己的训练集
首先得准备好数据集,你的数据集至少包含images和labels,严格来说你的images应该包含训练集train、验证集val和测试集test,不过为了简单说明使用步骤,其中test可以不要,val和train可以用同一个,因此我这里只用了一个images
叶茂林
2023/10/23
1.3K0
【yolov5目标检测】使用yolov5训练自己的训练集
YOLO v9
当今的深度学习方法专注于设计最合适的目标函数,以使模型的预测结果与实际情况最接近。同时,必须设计一个合适的架构,以便获取足够的信息进行预测。现有方法忽略了一个事实,即当输入数据经过逐层特征提取和空间变换时,大量信息将会丢失。本文将深入探讨当数据通过深度网络传输时的数据丢失重要问题,即信息瓶颈和可逆函数。我们提出了可编程梯度信息(PGI)的概念,以处理深度网络所需的各种变化,以实现多个目标。PGI可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息以更新网络权重。此外,基于梯度路径规划设计了一种新的轻量级网络架构——广义高效层聚合网络(GELAN)。GELAN的架构证实了PGI在轻量级模型上取得了优异的结果。我们在基于MS COCO数据集的目标检测上验证了提出的GELAN和PGI。结果显示,GELAN仅使用常规卷积算子即可实现比基于深度卷积开发的最先进方法更好的参数利用率。PGI可用于各种模型,从轻量级到大型。它可用于获取完整信息,使得从头开始训练的模型可以获得比使用大型数据集预训练的最先进模型更好的结果。
为为为什么
2024/03/22
3480
YOLO v9
YOLO 系列目标检测大合集
YOLO(You Only Look Once,你只看一次)是一系列开创性的实时目标检测模型,它们彻底改变了计算机视觉领域。由Joseph Redmon开发,后续版本由不同研究人员迭代,YOLO模型以其在图像中检测对象的高速度和准确性而闻名。以下是对每个YOLO版本的详细查看:
小白学视觉
2024/11/01
4730
YOLO 系列目标检测大合集
干货 | YOLOv7目标检测论文解读与推理演示
本文主要介绍简化的YOLOv7论文解读和推理测试以及YOLOv7与 YOLO系列的其他目标检测器的比较。(公众号:OpenCV与AI深度学习)
Color Space
2022/09/26
5.6K0
YOLOv7上线:无需预训练,5-160 FPS内超越所有目标检测器
机器之心报道 编辑:小舟、泽南 在 5-160 FPS 范围内速度和精度超过所有已知目标检测器。 在 YOLOv6 推出后不到两个星期,提出 YOLOv4 的团队就发布了更新一代的版本。 本周三,YOLOv7 的论文被提交到了预印版论文平台 arXiv 上,其三位作者 Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao 是 YOLOv4 的原班人马。 论文链接:https://arxiv.org/abs/2207.02696 GitHub 链接:
机器之心
2022/07/12
10.3K0
YOLOv7上线:无需预训练,5-160 FPS内超越所有目标检测器
推荐阅读
相关推荐
实战 | 基于YOLOv9+SAM实现动态目标检测和分割(步骤 + 代码)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验