提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
一、模型训练
二、测试
三、踩坑记录
1、推理时设置的imgsz不生效
方法一:
方法二:
2、Windows下torchvision版本问题导致报错
总结
前言
近期,想尝试下yolov11-cls的实际效果,所以在网上随便找了个花分类的数据集测试了下。数据准备阶段可以参考我的另一篇博客进行处理,链接如下:数据准备参考链接。接下来的正文部分就是我的训练和踩坑记录。注意:虚拟环境里不要安装ultralytics库,否则改动的代码不会生效!!!
一、模型训练
代码链接为:yolov11
它的训练方式非常简单,查考yolov11官方文档即可,我的训练方法为:
from ultralytics import YOLO
model= YOLO("./yolo11n-cls.pt")
model.train(data="./datasets",epochs=100,imgsz=[256,256],batch=32)
其中,模型路径和数据集路径需要改为自己的,epochs、imgsz、batch等根据自己的机器情况设定。注意,数据集要根据我开头给的那个链接里的格式摆放,即在datasets下包含两级目录,如图:
然后,train和val下有每个类别的训练和测试数据。训练完成后,我们的模型默认存在./runs/classify下,如我的:
二、测试
我的测试代码如下:
from ultralytics import YOLO
model=YOLO('./runs/classify/train/weights/best.pt')
res=model("./test.jpg",imgsz=256,device="cuda")
print(res)
Linux下基本可以正常执行,其他涉及到的问题继续往下看
三、踩坑记录
1、推理时设置的imgsz不生效
用如上代码推理时,发现日志输出包含这个内容:
what???我设置的imgsz是256,为毛推理时还是224?估计是推理时尺寸强制用了训练时候的尺寸,如果你想在推理时更改尺寸,解决办法如下:
方法一:
根据这个issues的方法,在./ultralytics/engine/predictor.py里的setup_source函数(大概190行左右)进行更改,如下:
源代码:
更改后:
然后在执行推理即可。
方法二:
看到./ultralytics/models/yolo/classify/predict.py里的如下代码(注意红框里的代码):
由红框里的代码可以知道,当你的img是非tensor时才会去进行预处理,所以你提前给它处理成tensor不进行if下的数据操作即可,代码如下(预处理代码均是从官方预处理代码里拷贝的):
完整代码可以我提的issues里获取。
2、Windows下torchvision版本问题导致报错
和服务器同样的torch和torchvision版本,但是在我自己的windows下推理时,抛出了如下异常:
这个问题就是torchvision版本的问题,经过多次尝试,发现如下版本可以正常执行。另外该报错也可通过问题1的解决方案解决。
pip install torch==1.8.1+cpu torchvision==0.9.1+cpu torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
注意,上边那条命令安装的是cpu的,如果你要装gpu的,去官方文档里找对对应的命令即可。
总结
以上就是本篇的全部内容,如有问题,欢迎评论区交流,或+企鹅群:995760755交流;如觉得有用,欢迎三连