Mac YOLO V9本地训练(命令行模式)

环境:

Mac M1 (MacOS Sonoma 14.3.1)

Python 3.11+PyTorch 2.1.2

一、YOLO v9工程及模型准备

详见:Mac YOLO V9推理测试-CSDN博客

二、数据集准备

Roboflow Universe上有许多小规模的数据集,很适合用来进行目标检测。

首先安装依赖

pip install roboflow

其次编写以下Python代码下载football-players-detection数据集。

import roboflow

roboflow.login()
rf = roboflow.Roboflow()
project = rf.workspace("roboflow-jvuqo").project("football-players-detection-3zvbc")
version = project.version(8)
dataset = version.download("yolov9")

运行下载代码,首次Roboflow需要进行身份验证。

点击链接,注册/登录,方便起见可以使用Google账号登录。

登录后创建自己的workspace,创建workspace后创建一个Project。

此时,再回到Python下载代码,停止并重新运行一遍,控制台出现https://app.roboflow.com/auth-cli链接后再次点击,跳转后即可看到验证码。

将验证码复制到控制台上,按回车键,即可开始下载。

下载完后在yolov9目录下有football-players-detection-8文件夹。

三、开始训练

训练采用的预训练模型是yolov9-c.pt。

训练命令:

python train_dual.py --batch 16 --epochs 10 --img 640 --device mps --min-items 0 --close-mosaic 15 --data football-players-detection-8/data.yaml --weights /Users/zhujiahui/Local/model/yolov9/yolov9-c.pt --cfg models/detect/yolov9-c.yaml --hyp hyp.scratch-high.yaml

逐行模式:

python train_dual.py --batch 16 --epochs 10 --img 640 --device mps \
--min-items 0 --close-mosaic 15 \
--data football-players-detection-8/data.yaml \
--weights /Users/zhujiahui/Local/model/yolov9/yolov9-c.pt \
--cfg models/detect/yolov9-c.yaml \
--hyp hyp.scratch-high.yaml

yolov9-c.pt训练尽量采用train_dual.py

--batch_size:batch大小

--epochs:迭代次数

--img:统一输入图片大小为640,改变的是进入卷积操作时的图片大小

--device:GPU设备名,如果是Mac,设置为mps或cpu;如果有NVIDIA GPU,则可以设置为0/1/2之类的

--min-items:数据集batch最少数目

--close-mosaic:禁用mosaic增强的最后第几个轮次,Mosaic数据增强方法是YOLOV4论文中提出来的,主要思想是将四张图片进行随机裁剪,再拼接到一张图上作为训练数据。这样做的好处是丰富了图片的背景,并且四张图片拼接在一起变相地提高了batch_size。

--data:训练数据集的yaml文件

--weights:预训练模型路径

--cfg:预训练模型所在的配置文件

--hyp:内置超参数配置,类型为数据增强高。参考:YOLOv5内置--hyp超参配置文件对比_hyp.scratch-low.yaml-CSDN博客

跑起来正式进入训练前有如下信息输出:

训练进度:

内存/显存消耗(没有参考意义)

运行前:

运行中:

GPU占用(证明--device mps确实起作用了)

训练完毕后指标如下:

混淆矩阵和ROC曲线(训练次数较少,效果较差)

混淆矩阵 runs/train/exp/confusion_matrix.pngROC曲线  runs/train/exp/PR_curve.png

四、训练结果验证

训练完毕后,模型保存在yolov9/runs/train/ 中名为 exp、exp2、exp3… 的目录中。包含best.pt和last.pt两个模型。

运用以下命令进行推理:

python detect_dual.py --weights runs/train/exp/weights/best.pt --conf 0.1 --source football-players-detection-8/test/images/a9f16c_2_10_png.rf.cf607320fc980b28b6e14b14fed46e91.jpg --device cpu

结果如下:

检测效果马马虎虎,没有识别到守门员。

五、常见问题

1. AttributeError: 'FreeTypeFont' object has no attribute 'getsize'

Traceback (most recent call last):

  File "/opt/anaconda3/lib/python3.11/threading.py", line 1038, in _bootstrap_inner

    self.run()

  File "/opt/anaconda3/lib/python3.11/threading.py", line 975, in run

    self._target(*self._args, **self._kwargs)

  File "/Users/zhujiahui/Local/PycharmProjects/yolov9/utils/plots.py", line 300, in plot_images

    annotator.box_label(box, label, color=color)

  File "/Users/zhujiahui/Local/PycharmProjects/yolov9/utils/plots.py", line 86, in box_label

    w, h = self.font.getsize(label)  # text width, height

           ^^^^^^^^^^^^^^^^^

AttributeError: 'FreeTypeFont' object has no attribute 'getsize'

原因:Pillow版本太高,原先安装的是10.0.0,该版本没有getsize函数。

解决方案:将Pillow降级,改为9.5。

pip install Pillow==9.5

参考:【计算机视觉】YOLOv9代码使用示例(含代码)_yolov9运行代码数据集下载-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NVIDIA 配置 Jetson 扩展针座

系列文章目录 前言 每个 Jetson 开发套件包括多个扩展接头和连接器(统称 "接头"): 40 针扩展接头: 可让您将 Jetson 开发套件连接到现成的 Raspberry Pi HAT(顶部附加硬件),如 Seee…

echarts-gl 离线3D地图

1、安装依赖 echarts-gl 与 echarts 版本关系: "echarts": "^5.2.0", "echarts-gl": "^2.0.8"# 执行安装 yarn add echarts-gl2、下载离线地图 免费下载实时更新的geoJson数据、行政区划边界数据、区划边界坐标集合_…

笨方法自学python(一)

我觉得python和c语言有很多相似之处,如果有c语言基础的话学习python也不是很难。这一系列主要是学习例题来学习python;我用的python版本是3.12 代码编辑器我用的是notepad,运行py程序用cmd 现在开始写第一个程序: print ("…

Photoshop中绘图及图像修饰工具的应用

Photoshop中绘图及图像修饰工具的应用 Photoshop中的颜色设置与取样前景色与背景色颜色取样 Photoshop中的颜色替换工具Photoshop中的渐变工具Photoshop中的描边命令Photoshop中的填充工具采用油漆桶进行填充采用填充命令进行填充 Photoshop中的擦除工具 Photoshop中的颜色设置…

图像是AI画的吗?OpenAI新神器帮你一键识破!|TodayAI

OpenAI宣布即将推出一款新的AI图像检测工具,此举意在帮助用户辨认图像是否由其开发的DALL-E图像生成器制作,并监控由该技术生成的内容。同时,该公司还计划为这些AI生成的图像加入新的水印,以便用户更容易识别这些作品是否出自DALL…

深度学习课程论文精读——ESRGAN

目录 1.研究概述 2.论文创新 2.1 改进生成器的网络框架 2.2 改进判别器 2.3 改进感知损失 2.4 网络插值 3.实验 3.1 评价指标 3.2 训练细节 3.3 对比实验 3.4 消融实验 3.5 网络插值 4.总结 5.阅读参考 文章标题:《ESRGAN: Enhanced Super-Resolution…

Redis经典问题:缓存穿透

【更多精彩内容,欢迎关注小米的微信公众号“软件求生”】 大家好,我是小米,今天和大家分享一个在分布式系统和缓存应用中非常经典的问题——缓存穿透。在如今的互联网时代,缓存是一种非常常用且重要的技术手段,它能够有效提高系统的性能、稳定性和响应速度。然而,在使用…

ARM(2)ARMv8基础知识

目录 一、异常 1.1异常等级的定义 1.2异常的种类 1.2.1同步异常和异步异常 1.3改变异常等级 1.4异常后的处理 1.4.1异常处理相关寄存器 1.4.2系统调用 1.4.3对EL2/EL3的系统调用 1.4.4异常返回 1.4.5异常处理流程 二、安全状态 三、执行状态 本文介绍以下内容&…

KUKA机器人X11投入运行模式

KUKA机器人出厂时有个X11外部安全插头,外部急停和安全门就是从其中引出双回路接线。正常使用时需要将插头内部短接,不短接则会出现外部安全停止等报警信息,导致机器人无法上使能,不能转动。 通过设置【投入运行模式】可以暂时屏蔽…

Linux 操作系统TCP、UDP

1、TCP服务器编写流程 头文件&#xff1a; #include <sys/socket.h> 1.1 创建套接字 函数原型&#xff1a; int socket(int domain, int type, int protocol); 参数&#xff1a; domain: 网域 AF_INET &#xff1a; IPv4 AF_INET6 &a…

大数据面试题 —— 数据库

目录 关系型数据库与非关系型数据库的区别数据库三范式MySQL中 drop、delete、truncate的区别MySQL中 char和 varchar 的区别MySQL中inner join、left join、right join以及full join的区别MySQL中 having 和 where 的区别count(*)、count(1)、count(列名)的区别MySQL中视图和表…

【C++】-类模板-002

1创建类模板 &#xff08;1&#xff09;新建工程 &#xff08;2&#xff09; &#xff08;3&#xff09; &#xff08;4&#xff09; &#xff08;5&#xff09;模板运行结果 2【UI】设计器 &#xff08;1&#xff09;跳转到【UI】设计器 &#xff08;2&#xff09;添加…

神经网络中的归一化

我们今天介绍一下神经网络中的归一化方法~ 之前学到的机器学习中的归一化是将数据缩放到特定范围内&#xff0c;以消除不同特征之间的量纲和取值范围差异。通过将原始数据缩放到一个特定的范围内&#xff0c;比如[0,1]或者[-1,1]&#xff0c;来消除不同特征之间的量纲和取值范围…

Ti雷达CFG阅读技巧

Ti雷达CFG阅读技巧 使用TI雷达测量数据前&#xff0c;需要考虑不同的设计参数之间的区别&#xff0c;虽然Ti雷达的说明文档非常清晰&#xff0c;直接查询mmwave_sdk_user_guide文档就可以了&#xff0c;但是用的多了&#xff0c;参数都知道可能是什么含义&#xff0c;来回查询…

Springboot集成Mybatispuls操作mysql数据库-04

MyBatis-Plus&#xff08;简称MP&#xff09;是一个MyBatis的增强工具&#xff0c;在MyBatis的基础上只做增强而不做改变。它支持所有MyBatis原生的特性&#xff0c;因此引入MyBatis-Plus不会对现有的MyBatis构架产生任何影响。MyBatis-Plus旨在简化开发、提高效率&#xff0c;…

商务分析方法与工具(七):Python的趣味快捷-异常处理结构

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

布局全球内容生态,酷开科技Coolita AIOS以硬核品质亮相

当前&#xff0c;全球产业链供应链格局持续重构&#xff0c;成为影响中国对外经济发展的重要因素。2024年4月15至5月5日&#xff0c;历史久、规模大、层次高&#xff0c;作为中国外贸风向标的第135届中国进出口商品交易会&#xff08;即广交会&#xff09;在美丽的广州隆重举行…

matlab打开文件对话框

在使用matlab GUI制作时&#xff0c;为了便于用户交互使用&#xff0c;经常设置文件打开对话框&#xff0c;让用户根据实际需要选择打开的文件。下面以打开一张图片为例&#xff0c;matlab代码如下&#xff1a; [temp_filepath,temp_filename]uigetfile(*.jpg,请选择要打开的图…

探秘Tailwind CSS:前端开发的加速器(TailwindCSS让CSS编写更简洁)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 Tailwind CSS 📒📝 快速体验📝 深入学习⚓️ 相关链接 ⚓️📖 介绍 📖 在这个快速迭代的互联网时代,前端开发效率和设计质量的双重要求,使得开发者们不断寻求更高效的工具和方法。今天,我们要介绍的是一个能够极大…

如何在Python中调用系统命令或执行外部程序?详细教程来了!

基本原理 在Python中执行程序或调用系统命令是一项非常实用的技能&#xff0c;这允许Python脚本与操作系统进行交互&#xff0c;执行各种外部程序。Python提供了多种方法来实现这一功能&#xff0c;包括os.system(), subprocess模块等。 示例代码 示例1&#xff1a;使用os.s…
最新文章