目录
说明
本文参考该博主的文章,在已经有数据的情况,进行简单总结。感谢大佬!需要详细版见原文链接如下:YOLOV9保姆级教程-CSDN博客
1、下载代码+安装新的python环境
pycharm打开下载的yolov9的文件,点击Terminal。
先输入: conda deactivate 为了退出(base)
然后新建环境:conda create -n yolov9(环境名称) python=3.8
进入环境:conda activate yolov9
安装所需:pip install -r requirements.txt
此时我们安装的只是基础的CPU状态,如果需要使用GPU训练,需要在pytorch中找到适合自己的cuda版本的torch口令然后下载。(我用的原博主的,因为我自己选的有问题hhh)
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia
找到适合自己的cuda版本方法:①打开NVIDIA控制面板:
一般按照上面操作,环境就配好了。可以在train.py里面调试一下使用torch.cuda.is_available()来判断是否GPU成功可用。
2、准备数据
新建datasets文件,包含images和labels。
新建my_data.yaml,内容如下:path改为自己的datasets位置
path: D:\documents\yolov9-main\datasets # dataset root dir
train: images/train # train images (relative to 'path') 128 images
val: images/val # val images (relative to 'path') 128 images
test: images/test # test images (optional)
nc: 2
# Classes
names:
0: xxx
1: xxx
images和labels分别放置准备好训练集验证集测试集,labels是txt格式的数据
3、修改代码
–weights : 此处更改为下载的yolov9-c.pt的绝对路径
–cfg : 此处更改为yolov9-c.yaml的绝对路径
–data : 此处更改为自己新建的data.yaml的绝对路径
–hyp : 此处更改为data/hyps/hyp.scratch-high.yaml
原本是data/hyps/hyp.scratch-low.yaml但该文件内并未找到,,,猜测为YOLOv9作者调试过程中的小疏忽版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/heart_warmonger/article/details/136249119
--batch-size 2 (按照自己实际情况修改,我一个GPU,实事证明4不行,2可以)
--epochs 200(按照自己实际情况修改,一般200比较合适)
--device 0 (按照自己实际情况修改,我的是一个GPU)(不用GPU就不填)
左上角点击文件,点击设置,设置环境为新建的环境yolov9
最终设置结果:
在train.py中右键开始训练即可。
4、报错及解决
报错1、和原博主一样,以下为解决方案:(没有完全解决,快训练完的时候还是有,但不影响)
报错2、ImportError: cannot import name 'COMMON_SAFE_ASCII_CHARACTERS' from 'charset_normalizer.constant' (D:\Yan_jiu\Anaconda3\envs\yolov9\lib\site-packages\charset_normalizer\constant.py)
安装版本不兼容。解决:pip install --user --upgrade charset_normalizer
成功训练:
------------------更新--------------------
哎哎哎!没用GPU训练一个epoch要四个多小时
使用torch.cuda.is_available()判断发现问题,重新建环境,用上GPU就快了
5、验证
python val.py --data=datasets\my_data.yaml --weights=runs\train\exp12\weights\best.pt --batch-size=2 --device=0
报错3:\yolov9-main\utils\general.py", line 905, in non_max_suppression device = prediction.device AttributeError: 'list' object has no attribute 'device'
解决:找到\yolov9-main\utils\general.py,第903行改为:prediction = prediction[0][0]