0


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

文章目录


0 前言

**在8月17日晚上,

  1. YOLOv5

官方发布了

  1. v6.2

版本,

  1. v6.2

版本支持分类模型训练、验证、预测和导出;

  1. v6.2

版本的推出使得训练分类器模型变得超级简单!**

**下一个版本

  1. v6.3

计划于9月发布,将为

  1. YOLOv5

带来官方实例分割支持,今年晚些时候将发布一个主要的

  1. v7.0

版本,更新所有3个任务的架构——分类、检测和分割。**

**并且

  1. Yolov5

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

**权重都是在

  1. ImageNet

数据集上训练

  1. 90 Epoch

后得到的,并且

  1. YOLOv5

官方将所有型号导出到

  1. ONNX FP32

进行

  1. CPU

速度测试,导出到

  1. TensorRT FP16

进行

  1. GPU

速度测试,最终得到的各项指标如下图所示:**

在这里插入图片描述

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


1 v6.2 项目结构改动

  1. v6.2

版本项目结构并无太大改变,主要是增加了

  1. classify

文件夹以及

  1. predict.py
  1. train.py
  1. val.py

这三个文件;那么这三个文件也分别对应着分类模型的

  1. 推理

  1. 训练

  1. 验证

在这里插入图片描述


2 快速上手🌟

  1. YOLOv5

分类训练支持使用

  1. --data

参数自动下载

  1. MNIST

  1. Fashion-MNIST

  1. CIFAR10

  1. CIFAR100

  1. Imagenette

  1. Imagewoof

  1. ImageNet

数据集。
例如,要开始在

  1. MNIST

上进行训练,只需要给–data参数设置为“

  1. MNIST

2.1 train

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

2.2 val

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

2.3 predict

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

3 重要参数解析🚀

下面来看一下

  1. train.py

具体的参数信息
在这里插入图片描述
**分类任务的参数与检测任务的参数差的并不是很多,大多数在参数的含义在

  1. 6.1

版本我已经讲过了,我这里就挑出几个重点的说一下**

  1. v6.1

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

3.1 "–data"🍀

  1. Yolov5(v6.2)

版本的分类数据集信息不再通过配置文件的形式载入,而是通过文件夹的名字自动匹配,官方提供了一些数据集的

  1. url

可以自行下载;

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

3.1.1 划分数据集

请添加图片描述

kaggle猫狗大战数据集包含

  1. 12500

张猫🐱图片与

  1. 12500

张🐶狗图片,我按照如下方式划分

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

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

3.1.2 修改超参数

在这里插入图片描述
划分好数据集后做如下改动:

  1. --data
  1. default=“你分类数据集的名字”

随后就可以训练了

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

  1. --imgsz

参数设置

在这里插入图片描述

3.2 “–seed” 🍀

这是

  1. v6.2

版本更新的一个非常重要的参数,使用

  1. torch>=1.12.0

的单

  1. GPU YOLOv5

训练现在完全可再现,所以说。。你懂的🤡。。


4 模型推理

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

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

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


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


本文转载自: https://blog.csdn.net/weixin_43694096/article/details/126550915
版权归原作者 迪菲赫尔曼 所有, 如有侵权,请联系我们删除。

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

还没有评论