Yolov5 (v6.2) 使用自己的数据训练分类模型 基于ONNX TensorRT部署
创始人
2025-05-29 03:02:35
0

前言

之前文章已经讲过yolov5模型的训练,这一篇将说一下分类模型训练流程。
https://blog.csdn.net/qq_45066628/article/details/129470290

新版本简介

YOLOv5官方发布了v6.2版本,v6.2版本支持分类模型训练、验证、预测和导出;v6.2版本的推出使得训练分类器模型变得超级简单!

v6.2版本项目结构并无太大改变,主要是增加了classify文件夹以及predict.py train.py val.py 这三个文件;那么这三个文件也分别对应着分类模型的推理、训练和验证。
在这里插入图片描述

训练前准备工作🌟

模型下载

git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -qr requirements.txt

数据准备

这里数据集采用kaggle猫狗大战数据集
在这里插入图片描述
数据集下载地址:https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition/data
在这里插入图片描述

划分数据集

分类模型无需标注数据,只需要将训练的图片按类别文件夹划分即可

格式如下🍀:

在这里插入图片描述
示例:
在这里插入图片描述
划分脚本:

import os
from shutil import copy
import randomdef mkfile(file):if not os.path.exists(file):os.makedirs(file)# 获取data文件夹下所有文件夹名(即需要分类的类名)
file_path = '../test_set/'
flower_class = [cla for cla in os.listdir(file_path)]# 创建 训练集train 文件夹,并由类名在其目录下创建5个子目录
mkfile('data/train')
for cla in flower_class:mkfile('data/train/' + cla)# 创建 验证集val 文件夹,并由类名在其目录下创建子目录
mkfile('data/val')
for cla in flower_class:mkfile('data/val/' + cla)# 划分比例,训练集 : 验证集 = 8 : 2
split_rate = 0.2# 遍历所有类别的全部图像并按比例分成训练集和验证集
for cla in flower_class:cla_path = file_path + '/' + cla + '/'  # 某一类别的子目录images = os.listdir(cla_path)  # iamges 列表存储了该目录下所有图像的名称num = len(images)eval_index = random.sample(images, k=int(num * split_rate))  # 从images列表中随机抽取 k 个图像名称for index, image in enumerate(images):# eval_index 中保存验证集val的图像名称if image in eval_index:image_path = cla_path + imagenew_path = 'data/val/' + clacopy(image_path, new_path)  # 将选中的图像复制到新路径# 其余的图像保存在训练集train中else:image_path = cla_path + imagenew_path = 'data/train/' + clacopy(image_path, new_path)print("\r[{}] processing [{}/{}]".format(cla, index + 1, num), end="")  # processing barprint()print("processing done!")

下载权重文件

下载地址:https://github.com/ultralytics/yolov5
在这里插入图片描述
不同文件,使用产生的效果也不一样,这里使用YOLOv5s-cls

修改配置文件

到classify文件夹下,修改train.py
在这里插入图片描述
第一行设置自己下载的权重文件路径,第二行设置数据集路径,其余参数可根据自行需要修改。

开始训练🚀

  1. 方法一:
    运行classify下的train.py文件,这里由于cuda问题,暂时选用cpu进行训练演示。
    在这里插入图片描述
    运行后这里缺失模块产生了一个报错,若没有跳过,解决方法:

    pip install --upgrade protobuf

    然后重新运行train.py文件
    在这里插入图片描述

  2. 方法二:

    python classify/train.py --model yolov5s-cls.pt --data datasets/data–epochs 100 --batch-size 32 --imgsz 224

训练完成后,会在runs文件夹下看到模型
在这里插入图片描述

验证和推理

验证

  1. 方法一:

    python classify/val.py --weights runs/train-cls/exp4/weights/best.pt --data datasets/data

  2. 方法二:
    到classify文件夹下,修改val.py
    在这里插入图片描述
    第一行使用自己训练的模型文件,第二行修改数据集路径,其余参数可根据自行需要修改。

验证结果:
输出类别和正确率信息
在这里插入图片描述

推理

方法与上述类似,该文件或直接使用命令行

# 测试im1.jpg
python classify/predict.py --weights runs/train-cls/exp4/weights/best.pt --source im1.jpg# 测试im2.jpg
python classify/predict.py --weights runs/train-cls/exp4/weights/best.pt --source im2.jpg

推理结果:
可以到runs文件夹下的predict-cls文件夹下查看结果

在这里插入图片描述
在这里插入图片描述

导出

使用ONNX

执行命令导出onnx:

python export.py --weights runs/train-cls/exp4/weights/best.pt --include onnx

输出:

Detect: python classify/predict.py --weights runs/train-cls/exp4/weights/best.onnx
Validate: python classify/val.py --weights runs/train-cls/exp4/weights/best.onnx
PyTorch Hub: model = torch.hub.load(‘ultralytics/yolov5’, ‘custom’, ‘runs/train-cls/exp4/weights/best.onnx’) # WARNING ⚠️ ClassificationModel not yet supported for PyTorch Hub AutoShape inference
Visualize: https://netron.app

使用TensorRT

执行命令导出engine:

python export.py --weights runs/train-cls/exp4/weights/best.pt --include engine --device 0

输出:

Detect: python classify/predict.py --weights runs/train-cls/exp4/weights/best.engine
Validate: python classify/val.py --weights runs/train-cls/exp4/weights/best.engine
PyTorch Hub: model = torch.hub.load(‘ultralytics/yolov5’, ‘custom’, ‘runs/train-cls/exp/weights/best.engine’) # WARNING ⚠️ ClassificationModel not yet supported for PyTorch Hub AutoShape inference
Visualize: https://netron.app

相关内容

热门资讯

为什么做IT的容易猝死 为什么做IT的容易猝死it行业用脑的时间占一天的大多数,因为长期的精神紧张,对于大脑的磨损也很大。不...
雨是怎样形成的? 雨是怎样形成的?我已经知道云由许水滴冰晶组雨滴雪花由增变水滴冰晶云内增变呢?  水云云滴都水滴主要靠...
滑动窗口编程题集合(leetc... 滑动窗口是双指针的一种应用,形象点说就是维护一个窗口,在窗口滑动的过程中...
谁有以“我爱文学”的电子手抄报... 谁有以“我爱文学”的电子手抄报,一定要有关于主题的内容!读书的乐趣 读书,对我来说是一种享受,我想这...
铁棒磨成针的译文是什么? 铁棒磨成针的译文是什么?寓言故事 铁杵磨针 (王明清·日记故事) 李白,少读书,未成,弃去,道逢...
用小鸡,小狗,小白兔和小猫写个... 用小鸡,小狗,小白兔和小猫写个故事  有一天早上,一只小鸡在外面郊游,在途中,它看见一只小狗。于是它...
新华财经早报:5月30日 转自:新华财经•中办、国办印发文件:到2027年碳排放权、用水权交易制度基本完善 排污权交易制度建立...
什么是边缘化? 什么是边缘化?边缘化就是不再有人关注、重视,淡出、远离了人们视野,说白了就去边上凉快。在一个团体内,...
南非央行降息至7.25% 拟... 中新社约翰内斯堡5月29日电 (记者 孙翔)南非储备银行(央行)货币政策委员会29日宣布,将基准利率...
【中原计算机】润泽科技(300... (转自:中原证券研究所)投资要点:公司发布2024年报:全年实现收入43.65亿元,同比增长0.32...
自动化测试Java+Selen... 近日自动化测试在项目中开始推行,于是翻看起来,前期有篇(自...
【国元研究】每日复盘:2025... (转自:国元研究)文 |  朱定豪   黄雯瑜2025年5月29日A股三大指数全日震荡走强,计算机设...
长镜头|让阅读成为成长的光 转自:河北新闻网让阅读成为成长的光——数智化时代儿童阅读生态大家谈“蹉跎莫遣韶光老,人生唯有读书好。...
特朗普为什么要搞垮美国旅游业? 一个旅游大国的自我冷却实验背后。▲栏目 | 文旅商业评论领域 | 出境游01昨天,美国特朗普政府声称...
你认为毕业意味着什么? 你认为毕业意味着什么?毕业,就是你有另外一种身份了,也是新的开始
推荐一些像《终极一家》,《黑糖... 推荐一些像《终极一家》,《黑糖群侠传》,《萌学园之萌骑士传奇》之类的电视剧《黑糖玛奇朵》《终极一班》...
Gap首季营收同比增2%至34... (转自:观点网)观点网讯:5月30日,Gap发布业绩报告,预计关税损失最多1.5亿美元,但不会大幅提...
中国能建两月揽海内外大单293... 长江商报消息 能源建设国家队中国能建(601868.SH)再度中标重大工程。5月28日晚间,中国能建...
瞄准取代“阵风”战机,印度官宣 据俄罗斯《导报》网站5月28日报道,印度国防部发表声明称,该部门27日批准了第五代双发战斗机——“先...
美的集团获瑞银增持15.76万... .ct_hqimg {margin: 10px 0;} .hqimg_wrapper {text-a...