YOLO-cls训练及踩坑记录

news2025/1/23 8:50:52

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

前言

一、模型训练

二、测试

三、踩坑记录

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交流;如觉得有用,欢迎三连

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android BitmapShader简洁实现马赛克,Kotlin(一)

Android BitmapShader简洁实现马赛克,Kotlin(一) 这一篇, Android使用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现马赛克效果,Kotlin(3)-CSDN博客 基于PorterDuffXfermode实现马…

全球化趋势与中资企业出海背景

1. 全球化趋势与中资企业出海背景 1.1 全球经济格局变化 全球经济格局正经历深刻变革,新兴经济体崛起,全球产业链重塑,中资企业出海面临新机遇与挑战。据世界银行数据,新兴市场和发展中经济体在全球 GDP 中占比已超 40%&#xff…

无人机在城市执法监管中的应用:技术革新与监管挑战

随着科技的不断进步,无人机技术在城市管理中的应用越来越广泛。无人机以其灵活性、高效性和低成本的优势,正在逐渐成为城市执法监管的得力助手。本文将探讨无人机在城市执法监管中的应用现状、技术优势以及面临的挑战。 无人机技术在城市执法监管中的应用…

总结6..

背包问题的解决过程 在解决问题之前,为描述方便,首先定义一些变量:Vi表示第 i 个物品的价值,Wi表示第 i 个物品的体积,定义V(i,j):当前背包容量 j,前 i 个物品最佳组合对应的价值,同…

【2024年 CSDN博客之星】我的2024年创作之旅:从C语言到人工智能,个人成长与突破的全景回顾

我的2024年创作之旅:从C语言到人工智能,个人成长与突破的全景回顾 引言 回望2024年,我不仅收获了技术上的成长,更收获了来自CSDN平台上无数粉丝、朋友以及网友们的支持与鼓励。在这条创作之路上,CSDN不仅是我展示技术成…

等变即插即用图像重建

大家读完觉得有帮助记得关注和点赞!!! 摘要 即插即用算法为解决反问题成像问题提供了一个流行的框架,该框架依赖于通过降噪器隐式定义图像先验。这些算法可以利用强大的预训练降噪器来解决各种成像任务,从而避免了在每…

MLCC电容、铝电解电容寿命计算及影响分析

如何评价MLCC的寿命 MLCC的寿命受温度条件和施加的DC电压条件影响,可以用下列加速方程式来表示。 例如,85oC,16V条件的高温负荷测试是比65oC4V环境高2,374.16倍的加速测试,MTTF(测试样本数40pcs,可信度60%情况下)预计为103,562,200h&#…

集成学习算法

集成学习算法 一、集成学习介绍 二、随机森林算法 1、Bootstrap随机抽样 2、Bagging 算法 3、训练算法 4、代码实现 三、Boosting 算法 AdaBoost 算法 1、强分类器与弱分类器 2、训练算法 3、代码实现 一、集成学习介绍 集成学习是通过多个模型的组合形成一个精度更…

算法6(力扣148)-排序链表

1、问题 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 2、采用例子 输入:head [4,2,1,3] 输出:[1,2,3,4] 3、实现思路 将链表拆分成节点,存入数组使用sort排序,再用reduce重建链接 4、具…

DNA结合之Motif_1:CNN

1,首先可以识别在KO前后的motif——》由CNN模型做出识别,看看这个有没有什么灵感 2,ZNF143等都可以使用来识别 3,暂时只使用单个peak文件,后期可以使用ENCODE中所有的对应的TF的peak文件 1,文件解压之后…

【unity游戏开发之InputSystem——02】InputAction的使用介绍(基于unity6开发介绍)

文章目录 一、InputAction简介1、InputAction是什么?2、示例 二、InputAction参数相关1、点击齿轮1.1 Actions 动作(1)动作类型(Action Type)(2)初始状态检查(Initial State Check&a…

机器学习 vs 深度学习

目录 一、机器学习 1、实现原理 2、实施方法 二、深度学习 1、与机器学习的联系与区别 2、神经网络的历史发展 3、神经网络的基本概念 一、机器学习 1、实现原理 训练(归纳)和预测(演绎) 归纳: 从具体案例中抽象一般规律…

Docker核心命令与Yocto项目的高效应用

随着软件开发逐渐向分布式和容器化方向演进,Docker 已成为主流的容器化技术之一。它通过标准化的环境配置、资源隔离和高效的部署流程,大幅提高了开发和构建效率。Yocto 项目作为嵌入式 Linux 系统构建工具,与 Docker 的结合进一步增强了开发…

Linux通过docker部署京东矩阵容器服务

获取激活码 将京东无线宝app升级到最新版,然后打开首页,点击号 选择添加容器矩阵,然后获取激活码 运行容器 read -p "请输入你的激活码: " ACTIVECODE;read -p "请输入宿主机的缓存路径: " src;docker rm -f cmatrix;docker run -d -it --name cmatrix …

vue视频流播放,支持多种视频格式,如rmvb、mkv

先将视频转码为ts ffmpeg -i C:\test\3.rmvb -codec: copy -start_number 0 -hls_time 10 -hls_list_size 0 -f hls C:\test\a\output.m3u8 后端配置接口 import org.springframework.core.io.Resource; import org.springframework.core.io.UrlResource; import org.spring…

【Solr分词器】

Solr分词器 一,什么是solr分词器? 前面已经提到过,Solr是一个高性能的全文检索服务,基于Apache Lucene的,Lucene是一个用Java编写的开源的信息检索库,为全文索引和搜索提供了基础功能。 在Solr中&#xf…

OS2.【Linux】基本命令入门(1)

目录 1.操作系统是什么? 2.好操作系统的衡量标准 3.操作系统的核心工作 4.在计算机上所有行为都会被转换为硬件行为 5.文件 6.简单介绍一些基本命令 1.clear 2.pwd 3.ls 1.ls -l 2.隐藏文件的创建 3.ls -al 4.ls -ld 5.ls -F(注意是大写) 4.cd 1.cd .. "…

LabVIEW处理复杂系统和数据处理

LabVIEW 是一个图形化编程平台,广泛应用于自动化控制、数据采集、信号处理、仪器控制等复杂系统的开发。它的图形化界面使得开发人员能够直观地设计系统和算法,尤其适合处理需要实时数据分析、高精度控制和复杂硬件集成的应用场景。LabVIEW 提供丰富的库…

激光雷达和相机早期融合

通过外参和内参的标定将激光雷达的点云投影到图像上。 • 传感器标定 首先需要对激光雷达和相机(用于获取 2D 图像)进行外参和内参标定。这是为了确定激光雷达坐标系和相机坐标系之间的转换关系,包括旋转和平移。通常采用棋盘格等标定工具&…

C++----STL(vector)

vector的介绍 vector的文档介绍:cplusplus.com/reference/vector/vector/ 1.基本概念 简单来说,vector是表示可以改变大小的数组的顺序容器。使用连续的存储位置来存储元素,因此可以通过常规指针的偏移量来高效访问。 2.内部机制 vector…