手把手教你用Yolov5 (v6.2) 训练分类模型 基于《Kaggle猫狗大战》案例

文章目录

*
0 前言
1 v6.2 项目结构改动
2 快速上手🌟

+ 2.1 train
+ 2.2 val
+ 2.3 predict
3 重要参数解析🚀

+ 3.1 “–data”🍀
+
* 3.1.1 划分数据集
* 3.1.2 修改超参数
+ 3.2 “–seed” 🍀
4 模型推理
5 Test集验证
🎉更多内容导航
有问题欢迎大家指正,如果感觉有帮助的话请点赞支持下👍📖🌟

0 前言

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

下一个版本 v6.3 计划于9月发布,将为 YOLOv5 带来官方实例分割支持,今年晚些时候将发布一个主要的 v7.0 版本,更新所有3个任务的架构——分类、检测和分割。

并且 Yolov5 官方同样提供了大量的预训练权重供大家选择;

权重都是在 ImageNet 数据集上训练 90 Epoch 后得到的,并且 YOLOv5 官方将所有型号导出到 ONNX FP32 进行 CPU 速度测试,导出到 TensorRT FP16 进行 GPU 速度测试,最终得到的各项指标如下图所示:

手把手教你用Yolov5 (v6.2) 训练分类模型 基于《Kaggle猫狗大战》案例

分类任务的工作流与先前版本的 检测任务工作流基本一致,所以熟悉 检测任务的同学应该会很容易上手 分类任务

; 1 v6.2 项目结构改动

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

手把手教你用Yolov5 (v6.2) 训练分类模型 基于《Kaggle猫狗大战》案例

2 快速上手🌟

YOLOv5分类训练支持使用 --data参数自动下载 MNISTFashion-MNISTCIFAR10CIFAR100ImagenetteImagewoofImageNet 数据集。
例如,要开始在 MNIST上进行训练,只需要给–data参数设置为” MNIST

2.1 train

Single-GPU
python classify/train.py --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128

Multi-GPU DDP
python -m torch.distributed.run --nproc_per_node 4 --master_port 1 classify/train.py
--model yolov5s-cls.pt --data imagenet --epochs 5 --img 224 --device 0,1,2,3

2.2 val

bash data/scripts/get_imagenet.sh --val  # download ImageNet val split (6.3G, 50000 images)
python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224  # validate

2.3 predict

python classify/predict.py --weights yolov5s-cls.pt --data data/images/bus.jpg

3 重要参数解析🚀

下面来看一下 train.py具体的参数信息

手把手教你用Yolov5 (v6.2) 训练分类模型 基于《Kaggle猫狗大战》案例
分类任务的参数与检测任务的参数差的并不是很多,大多数在参数的含义在 6.1 版本我已经讲过了,我这里就挑出几个重点的说一下

v6.1版本的参数解析可以参考我这两篇博文
手把手带你调参Yolo v5 (v6.1)(一)
手把手带你调参Yolo v5 (v6.1)(二)

; 3.1 “–data”🍀

Yolov5(v6.2)版本的分类数据集信息不再通过配置文件的形式载入,而是通过文件夹的名字自动匹配,官方提供了一些数据集的 url可以自行下载;

本篇博文数据集以 kaggle猫狗大战数据集为例子,从零开始训练自己的分类模型

3.1.1 划分数据集

手把手教你用Yolov5 (v6.2) 训练分类模型 基于《Kaggle猫狗大战》案例

kaggle猫狗大战数据集包含 12500张猫🐱图片与 12500张🐶狗图片,我按照如下方式划分

kaggle-DogVsCat
    ├─train
    │  ├─Cat 8750
    │  └─Dog 8750
    ├─val
    │  ├─Cat 2500
    │  └─Dog 2500
    └─test
        ├─Cat 1250
        └─Dog 1250

分类数据集的路径是自动匹配的,所以我们要按照这个命名规则划分,不然会提示你找不到数据集

3.1.2 修改超参数

手把手教你用Yolov5 (v6.2) 训练分类模型 基于《Kaggle猫狗大战》案例
划分好数据集后做如下改动: --data default=“你分类数据集的名字”

随后就可以训练了

分类模型较检测模型训练速度快非常多,可能是训练图像尺寸设置的比较小的原因;可以通过 --imgsz参数设置

手把手教你用Yolov5 (v6.2) 训练分类模型 基于《Kaggle猫狗大战》案例

; 3.2 “–seed” 🍀

这是 v6.2版本更新的一个非常重要的参数,使用 torch>=1.12.0的单 GPU训练完全可再现

4 模型推理

手把手教你用Yolov5 (v6.2) 训练分类模型 基于《Kaggle猫狗大战》案例
推理方式与检测任务几乎没有区别,修改一下 权重路径就好

分类任务推理出的图片是这样子的,会显示准确率 top5的类别

手把手教你用Yolov5 (v6.2) 训练分类模型 基于《Kaggle猫狗大战》案例

; 5 Test集验证

手把手教你用Yolov5 (v6.2) 训练分类模型 基于《Kaggle猫狗大战》案例
这里也没什么可说的,修改一下 权重路径数据集就好

不知道是不是我没用明白,还没看出来怎么修改网络结构,所以说出个分类模型的意义是什么?

🎉更多内容导航

  1. 手把手带你调参Yolo v5 (v6.2)(一)🌟强烈推荐

  2. 手把手带你调参Yolo v5 (v6.2)(二)🚀

  3. 如何快速使用自己的数据集训练Yolov5模型

  4. 手把手带你Yolov5 (v6.1)添加注意力机制(一)(并附上30多种顶会Attention原理图)🌟

  5. 手把手带你Yolov5 (v6.1)添加注意力机制(二)(在C3模块中加入注意力机制)

  6. Yolov5如何更换激活函数?

  7. Yolov5 (v6.1)数据增强方式解析

  8. Yolov5更换上采样方式( 最近邻 / 双线性 / 双立方 / 三线性 / 转置卷积)

  9. Yolov5如何更换EIOU / alpha IOU / SIoU?

  10. Yolov5更换主干网络之《旷视轻量化卷积神经网络ShuffleNetv2》🍀

  11. YOLOv5应用轻量级通用上采样算子CARAFE🍀

  12. 空间金字塔池化改进 SPP / SPPF / ASPP / RFB / SPPCSPC🍀

  13. 用于低分辨率图像和小物体的新 CNN 模块SPD-Conv🍀

14.持续更新中

有问题欢迎大家指正,如果感觉有帮助的话请点赞支持下👍📖🌟

Original: https://blog.csdn.net/weixin_43694096/article/details/126550915
Author: 迪菲赫尔曼
Title: 手把手教你用Yolov5 (v6.2) 训练分类模型 基于《Kaggle猫狗大战》案例

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/786927/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 从零搭建完整python自动化测试框架(UI自动化和接口自动化 )——持续更新

    本自动化测试框架采用python + unittest 的基础来搭建,采用PO模式、数据驱动的思想,通过selenium来实现WEB UI自动化,通过request来实现接口自动化…

    Python 2023年8月1日
    061
  • Anaconda+flask+uwsgi服务器环境搭建

    回答1: 在 +pycharm环境下配置pytorch可以按照如下步骤进行: 1. 打开 ,创建一个新的虚拟环境,例如命名为”pytorch_env”。 2…

    Python 2023年8月12日
    055
  • pandas中loc与iloc的用法

    初衷 由于个人不经常使用这个常见的pandas函数,所以总是用到的时候不熟练需要百度一下,所以本文对函数用法做一个详细的笔记以比便于自己记忆。 从名称来区别loc与iloc 从字母…

    Python 2023年8月19日
    077
  • pytest学习笔记

    目录 1、虚拟环境准备 2、安装pytest 3、pytest使用约束 4、执行方式 5、pytest常用运行参数介绍 6、解决大批量执行测试case问题多进程 7、失败重跑机制(…

    Python 2023年9月13日
    049
  • Matplotlib条形图

    目录 一、什么是条形图 二、简单条形图 垂直条形图: 水平条形图: 三、 复式条形图 多组条形图: 堆积条形图: 有for循环的堆积条形图: 对称条形图 一、什么是条形图 条形图(…

    Python 2023年9月2日
    075
  • Unity API Random类

    Random[class in UnityEngine] using UnityEngine; 描述:用于生成随机数据的静态类 静态变量 变量名functioninsideUnit…

    Python 2023年11月7日
    025
  • Python创建/读取 Excel表

    学习心得: 一 通过pandas创建Excel 1.需要import pandas as pd 库来操作 2.通过 pandas.DataFrame()创建一个数据框datafra…

    Python 2023年8月16日
    055
  • Python在线考试系统源代码

    Python在线考试系统,采用django框架开发,可微信登录,内含使用说明 。 系统环境 Linux发行版(Ubuntu16.04 / CentOS等) MySQL 5.5以上版…

    Python 2023年8月5日
    076
  • django系列13 – 部署代码到云服务器上

    yum update mkdir /opt/vhosts/portainer cd /opt/vhosts/portainer touch docker-compose.yml v…

    Python 2023年8月6日
    045
  • Python-爬虫基础十一(POST请求百度翻译)

    一、POST请求数据流程 以百度翻译网页进行分析。使用场景为:用户填入信息,页面对其进行翻译。 按 F12 打开控制台,依次点击 Network > XHR(此为异步加载的网…

    Python 2023年6月12日
    074
  • Java多线程(4):ThreadLocal

    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 为了提高CPU的利用率,工程师们创造了多线程。但是线程们说:要有光!(为了减少线程创建(T1启动)和销毁(T3切换)的时间)…

    Python 2023年10月17日
    055
  • 什么是注意力机制及其应用(self attention)?

    一、引言 注意力机制是自深度学习快速发展后广泛应用于自然语言处理、统计学习、图像检测、语音识别等领域的核心技术,例如将注意力机制与RNN结合进行图像分类,将注意力机制运用在自然语言…

    Python 2023年10月9日
    038
  • 可路由计算引擎实现前置数据库

    ❤️作者主页:小虚竹❤️作者简介:大家好,我是小虚竹。Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆,51CTO专家博主🏆❤️技…

    Python 2023年11月5日
    031
  • 业聚医疗港交所上市:市值76亿港元 为钱永勋家族企业

    雷递网 雷建平 12月23日 血管介入器械公司――业聚医疗集团有限公司(OrbusNeich Medical Group Limited)(简称”业聚医疗”…

    Python 2023年9月29日
    069
  • 数据可视化分析之新技能——魔数图

    数据可视化分析之新技能——魔数图 大家在使用数据可视化工具进行数据设计的时候,有没有遇到过这些设计场景:部门人员的履历细信息、工厂各个产线的生产状态和生产信息、公司各个部门的KPI…

    Python 2023年10月15日
    054
  • m1 mac 安装和使用 homebrew 解决 scrapy 运行时OpenSSL的问题

    背景 最近需要在 m1 mac 上用 scrapy 爬点数据,用 miniconda 装了个虚拟环境后,运行 scrapy shell 测试 https 请求时,报错如下: bui…

    Python 2023年10月1日
    038
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球