配置YOLOV9环境并训练自定义数据集

本文详细记录了YOLOv9的安装步骤,包括环境配置(如使用Anaconda创建和激活环境,安装PyTorch等),以及如何训练自定义数据集,过程中遇到的常见问题和解决方案。
摘要由CSDN通过智能技术生成

YOLOv9如期而至,现记录安装过程,大家放心走路,我先埋坑为敬:

首先附上YOLOv9的官方下载地址:https://github.com/WongKinYiu/yolov9?tab=readme-ov-file

用一下官方图(os:读书人不能叫Tou,用好叭)

一、环境配置

首先安装环境:我这里直接用anaconda(不会的自行百度,不多介绍):

官方要求的torch版本:

这里为了方便我直接统一用自己的版本

1.1创建环境:

conda create -n YOLOV9 python=3.9.17 

//(我自己其他用的是这个版本,用其他版本也可,出错不怪我)

                                                         达成甩锅达人称号

1.2激活环境(一定不要忘记,否则环境会乱掉):

conda activate YOLOV9

可以看到,原来是处于base环境,激活刚才创建的YOLOV9环境再来装其他包

1.3安装pytorch(注意这个cuda,30系的显卡必须使用11+版本,其他显卡,自己酌情选择版本

conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia

这是赌狗的官方源下载,碰到网络问题就G了,可以参考大佬的换源文章,寻找每一个包,我个人感觉有点麻烦,所以直接赌狗。附上大佬帖Conda 替换镜像源方法尽头,再也不用到处搜镜像源地址_conda换源-CSDN博客

conda临时换源用 -c命令,但是我自己实测,这几个包好像只有官方能一次性下下来,上面大佬方法是逐个包去找估计能找到

2000 years later...

可以看一下有没有安装成功

conda list

看到包好像是有了,测试一下

终端命令:

python
import torch
torch.cuda.is_available()

 返回True一般没啥问题了

1.4安装剩余的包,我直接先用pytorch打开工程再说

打开工程,我喜欢直接往脸上拖代码 

                                               达成铁头娃称号

 

 我直接给他叉了,看右下角配置解释器:,

点击这个No interpreter--->Add NEW Interpreter----> 添加本地解释器,服务器玩家点On SSH配置刚才创建的环境,其实都差不多

选中刚才创建的环境,看图选中YOLOV9,点击ok

 可以看到右下角已经有解释器了

打开pycharm里面的终端,安装剩下的包

可以看到是在工程目录下,直接pip

pip install -r .\requirements.txt

linux是/,windows用\ ,下不了可以换源(这里如果用pip慢的话,要换pip源,自行百度)

附上几个源吧:pip临时换源一般用-i 源地址

https://pypi.tuna.tsinghua.edu.cn/simple
https://mirrors.aliyun.com/pypi/simple/
https://mirrors.163.com/pypi/simple/ 

使用举例(注意这只是临时换源):

pip install -r .\requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

环境到这里就告一段落了

二、训练自定义数据集

2.1数据集: 

我用了自己的数据集:注意组织数据集的形式,

原来的yolo格式的数据格式也能训练(我用的yolo格式,如下)

这两个cache不是

但注意一下数据集data.yaml注意和其他版本有某些区别,nc一项不在这个文件中配置。

比如我只有fall一个类,尽可能用绝对路径吧

然后配置nc,比如我想使用models/detect/yolov9.yaml配置文件,可以看到nc在这里,配置成自己的类别数就好了

2.2训练

使用train.py会报错  AttributeError: 'list' object has no attribute 'view',

,官网上说用train_dual.py,目测没有问题,警告的话不用在意

 主要改:

cfg:这个是调模型大小的,就是model-->detect中的三个,

weights:默认不使用预训练模型,要的话去github上下载,填进去即可

yolov9.yaml,yolov9-c.yaml,yolov9-e.yaml,

测了一下三个分别模型是50,60,70M左右,

与宣传有一点不符合(版本问题也不能差这么大吧)估计测试参数和flops这里有bug,这里先不讨论

                              small和tiny作者本人说的是文章接受再释放,可以理解

data:就是刚才要注意的data.yaml这个文件

hyp:超参数,注意目录下只有hyp.scratch-high.yaml,刚才用train.py用的是low.yaml,但是代码没有提供。

epoch:训练的轮次,跑两个意思一下

batch-size和image-size,我用的是3090,所以直接用16,640能跑,如果显存不够出现out ofMemory将batch或者imgsz调小即可

调好之间右键RUN就ok啦,喜欢命令行的自己输入一下,我比较喜欢右键

跑了两轮:

测试一下:best.pt

2.3验证(不出图)

直接用这个val.py试了一下也有问题,AttributeError: 'list' object has no attribute 'device'

那还是用这个val_dual.py吧

和刚才改的差不多,主要改

data(不说了)

batch和imgsz(出现out of memory调小这两个参数,默认32,我估计跑不动,我用的16)

device(我这里只有一张显卡,所以填0)

右键,run

 精度很低毕竟就跑了两个epoch,自己试吧。

这里跑的也是验证集,要跑测试集的把val里的改成test即可

(为了严谨:训练的时候还是改成val,测试改成test吧)

2.4检测(有图)

好吧,头铁试一下detect.py,不出所料:AttributeError: 'list' object has no attribute 'device'

直接试这个detect_dual.py吧,

看下效果:

就训练了两个epoch能标出一个框可以了,哈哈。

随手记录,如果有帮助记得三连支持一波,谢谢!!!

补充

        1、

        烦人的警告:AttributeError: 'FreeTypeFont' object has no attribute 'getsize' 

        解决方案:pip install Pillow==9.5.0

  • 28
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值