码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 手把手教你用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速度测试,最终得到的各项指标如下图所示:

    在这里插入图片描述

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


    1 v6.2 项目结构改动

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

    在这里插入图片描述


    2 快速上手🌟

    YOLOv5分类训练支持使用--data参数自动下载MNIST、Fashion-MNIST、CIFAR10、CIFAR100、Imagenette、Imagewoof 和 ImageNet 数据集。
    例如,要开始在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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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
    
    • 1
    • 2

    2.3 predict

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

    3 重要参数解析🚀

    下面来看一下train.py具体的参数信息
    在这里插入图片描述
    分类任务的参数与检测任务的参数差的并不是很多,大多数在参数的含义在6.1版本我已经讲过了,我这里就挑出几个重点的说一下

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

    3.1 "–data"🍀

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

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

    3.1.1 划分数据集

    请添加图片描述

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

    kaggle-DogVsCat
    	├─train
    	│  ├─Cat 8750
    	│  └─Dog 8750
    	├─val
    	│  ├─Cat 2500
    	│  └─Dog 2500
    	└─test
    	    ├─Cat 1250
    	    └─Dog 1250
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    3.1.2 修改超参数

    在这里插入图片描述
    划分好数据集后做如下改动:--data default=“你分类数据集的名字”

    随后就可以训练了

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

    在这里插入图片描述

    3.2 “–seed” 🍀

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


    4 模型推理

    在这里插入图片描述
    推理方式与检测任务几乎没有区别,修改一下权重路径就好

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


    5 Test集验证

    在这里插入图片描述
    这里也没什么可说的,修改一下权重路径和数据集就好


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

    🎉更多内容导航

    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.持续更新中


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

  • 相关阅读:
    redis三(3-1)
    【HTML-CSS】总结-6种实现元素 上下左右居中 方法--附演示效果
    记录一下在Pycharm中虚拟环境的创建
    【情感识别】BP神经网络语音情感识别【含Matlab源码 349期】
    鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统
    spring boot整合 Redis
    树形模拟+随机函数+二分
    java动态代理-jdk动态代理原理解析
    设计模式-中介者模式
    ch552g下载时遇到的可能问题
  • 原文地址:https://blog.csdn.net/weixin_43694096/article/details/126550915
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号