赞
踩
本文来源公众号“3D视觉工坊”,仅用于学术分享,侵权删,干货满满。
在前面的两篇文章和江大白 | 目标检测YOLOv9算法,重磅开源!(附论文及源码)集智书童 | YOLOv9开源 | 架构图&模块改进&正负样本匹配&损失函数解读,5分钟即可理解YOLOv9,建议收藏!中,我们介绍了YOLOv9的理论部分,接下来我们看一下YOLOv9的实践操作吧 !
今天笔者为大家分享国外的James Gallagher和Piotr Skalski编写的YOLOv9使用教程!原博客链接为https://blog.roboflow.com/train-yolov9-model。
YOLOv9开源了一种新的CV模型架构,比现有流行的YOLO模型(YOLOv8、YOLOv7和YOLOv5)在MS COCO数据集上取得了更高的mAP。
本指南展示了如何在自定义数据集上训练YOLOv9模型,将通过一个训练视觉模型的例子来识别一个球场上的足球运动员。有了这一点,可以用这个指南使用你想要的任何数据集。
话不多说,让我们开始!
YOLOv9是由Chien-Yao Wang, I-Hau Yeh, and Hong-Yuan Mark Liao开发的计算机视觉模型。Hong-Yuan Mark Liao和Chien-Yao Wang还对YOLOv4、YOLOR和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在撰写本指南时没有官方许可证。截至2023年2月22日,一位主要研究人员指出:"我认为应该是GPL3,我会检查并更新许可文件。"。这表明许可证将很快确定。
YOLOv9被打包为一系列脚本,您可以使用这些脚本进行工作。在撰写本指南时,没有官方的Python包或包装器可供您与模型进行交互。
要使用YOLOv9,您需要下载项目存储库。然后,您可以运行训练作业或从现有的COCO检查点进行推理。
本教程假定您正在使用Google Colab。如果您在笔记本环境之外的本地机器上工作,请根据需要调整命令。
YOLOv9中存在一个错误,阻止您对图像进行推理,但Roboflow团队正在维护一个非官方的分支,其中包含一个补丁,直到修复发布。要从我们的补丁分支安装YOLOv9,请运行以下命令:
- git clone https://github.com/SkalskiP/yolov9.git
-
- cd yolov9
-
- pip3 install -r requirements.txt -q
让我们设置一个HOME目录来工作:
- import os
- #获取当前路径
- HOME = os.getcwd()
-
- print(HOME)
接下来,需要下载模型权重。目前只有v9 - C和v9 - E权重可用。可以使用以下命令进行下载:
- !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模型上运行推理和训练。
在示例图像上使用v9 - C COCO检查点进行推理。创建一个新的数据目录,并将示例图像下载到您的笔记本中。你可以用我们的狗图片作为例子,也可以用你想要的任何其他图片。
- !mkdir -p {HOME}/data
-
- !wget -P {HOME}/data -q https://media.roboflow.com/notebooks/examples/dog.jpeg
-
- SOURCE_IMAGE_PATH = f"{HOME}/dog.jpeg"
我们现在可以在我们的图像上进行推理:
- !python detect.py --weights {HOME}/weights/gelan-c.pt --conf 0.1 --source {HOME}/data/dog.jpeg --device 0
-
- Image(filename=f"{HOME}/yolov9/runs/detect/exp/dog.jpeg", width=600)
我们的模型能够成功地识别出图像中的人、狗和汽车。有鉴于此,该模型错误地将背带识别为手提包,并且未能检测到背包。
让我们试试参数最多的v9 - E模型:
- !python detect.py --weights {HOME}/weights/yolov9-e.pt --conf 0.1 --source {HOME}/data/dog.jpeg --device 0
-
- Image(filename=f"{HOME}/yolov9/runs/detect/exp2/dog.jpeg", width=600)
该模型能够成功识别人、狗、汽车和背包。
您可以使用YOLOv9项目目录中的train.py文件来训练YOLOv9模型。
要开始训练模型,您将需要一个数据集。对于本指南,我们将使用一个关于足球运动员的数据集。生成的模型将能够在场地上识别足球运动员。
如果您没有数据集,请查看Roboflow Universe(Roboflow Universe: Open Source Computer Vision Community),这是一个共享了超过200,000个计算机视觉数据集的社区。您可以找到涵盖从书脊到足球运动员再到太阳能电池板的数据集。
运行以下代码来下载我们在本指南中使用的数据集:
- %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格式格式化的数据集来进行此操作。
让我们为我们的数据集训练一个模型,训练20个epochs。我们将使用GELAN-C架构进行此操作,该架构是YOLOv9 GitHub仓库发布的两种架构之一。GELAN-C的训练速度快。GELAN-C的推理时间也很快。
您可以使用以下代码进行此操作:
- %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生成的图来评估训练结果。
运行下面的代码来查看你的训练图:
Image(filename=f"{HOME}/yolov9/runs/train/exp/results.png", width=1000)
运行下面的代码来查看你的混淆矩阵:
运行以下代码,查看您的模型在验证集中的一批图像上的结果:
- Image(filename=f"{HOME}/yolov9/runs/train/exp/val_batch0_pred.jpg",
-
- width=1000)
既然我们有了一个训练好的模型,我们就可以进行推理。为此,我们可以使用YOLOv9库中的detection.py文件。
运行以下代码对验证集中的所有图像进行推理:
- !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是由Chien-Yao Wang, I-Hau Yeh, and Hong-Yuan Mark Liao发布的一种新的计算机视觉模型架构。可以使用YOLOv9架构训练目标检测模型。
在本指南中,我们演示了如何在自定义数据集上运行推理和训练YOLOv9模型。我们克隆了YOLOv9项目代码,下载了模型权重,然后使用默认的COCO权重进行推理。然后,我们使用足球运动员检测数据集训练了一个微调的模型。我们回顾了训练图和混淆矩阵,然后在来自验证集的图像上测试了模型。
THE END!
文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。