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

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

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速度测试,最终得到的各项指标如下图所示:

8800f888e4b84ee684c9a6741889f288.png

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

1 v6.2 项目结构改动


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

image.png

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

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 重要参数解析🚀


f0698aa02f7e474f814ada9a652870f0.png

分类任务的参数与检测任务的参数差的并不是很多,大多数在参数的含义在6.1版本我已经讲过了,我这里就挑出几个重点的说一下


v6.1版本的参数解析可以参考我这两篇博文

手把手带你调参Yolo v5 (v6.1)(一)

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

3.1 "–data"🍀


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


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

3.1.1 划分数据集


image.png

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

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

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

3.1.2 修改超参数


image.png

划分好数据集后做如下改动:--data default=“你分类数据集的名字”

随后就可以训练了

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

image.png

3.2 “–seed” 🍀


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

4 模型推理


image.png

推理方式与检测任务几乎没有区别,修改一下权重路径就好

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

image.png

5 Test集验证


f0698aa02f7e474f814ada9a652870f0.png

这里也没什么可说的,修改一下权重路径和数据集就好

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

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

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
2月前
|
人工智能 JSON 数据可视化
yolov8+动物+姿态识别(训练教程+代码)
yolov8+动物+姿态识别(训练教程+代码)
84 0
|
4月前
|
机器学习/深度学习 算法 TensorFlow
【Python深度学习】Tensorflow对半环形数据分类、手写数字识别、猫狗识别实战(附源码)
【Python深度学习】Tensorflow对半环形数据分类、手写数字识别、猫狗识别实战(附源码)
54 0
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
基于深度学习的图像分类:使用卷积神经网络实现猫狗分类器
基于深度学习的图像分类:使用卷积神经网络实现猫狗分类器
56 0
|
9天前
|
机器学习/深度学习 数据采集
机器学习练手项目-猫狗分类器
机器学习练手项目-猫狗分类器
14 0
|
2月前
|
机器学习/深度学习 数据可视化 TensorFlow
基于tensorflow深度学习的猫狗分类识别
基于tensorflow深度学习的猫狗分类识别
61 1
|
6月前
|
机器学习/深度学习 算法框架/工具 计算机视觉
【深度学习】实验11 使用Keras预训练模型完成猫狗识别
【深度学习】实验11 使用Keras预训练模型完成猫狗识别
73 0
|
机器学习/深度学习 PyTorch 算法框架/工具
从零开始学Pytorch(十九)之Kaggle上的狗品种识别
从零开始学Pytorch(十九)之Kaggle上的狗品种识别
|
10月前
|
机器学习/深度学习 数据采集 测试技术
Kaggle实战之 房价预测案例
Kaggle实战之 房价预测案例
|
11月前
|
机器学习/深度学习 算法
GloVe词嵌入(IMDB电影评论情感预测项目实战)
GloVe词嵌入(IMDB电影评论情感预测项目实战)
|
机器学习/深度学习 存储 自然语言处理
文本分类毕设:基于python实现的上市公司新闻文本分析与分类预测
文本分类毕设:基于python实现的上市公司新闻文本分析与分类预测
226 0