YOLO8不仅仅可以胜任目标检测任务,目前YOLO8还支持图片分类、实例分割、人体关键点检测。本篇文章介绍如何使用YOLO8训练一个自己的图片分类模型。 YOLO8训练目标检测模型的方法参见本人主页的另外一篇文章:如何使用YOLOV8训练自己的目标检测模型
首先准备好ImageNet格式的数据集,我这里以81类水果图片分类数据集为例。ImageNet数据集应该具有一下目录结构
train
├── 类别1|——图片1
|——图片2
|——......
└── 类别2|——图片1
|——图片2
|——......
........
val
├── 类别1|——图片1
|——图片2
|——......
└── 类别2|——图片1
|——图片2
|——......
准备好数据集之后,还需要配置YOLO8的运行环境,详见本人主页的这篇文章。
按照上面的文章在anaconda中配置好虚拟环境之后,我们就可以着手开始训练,训练的方式有很多,我们这里选择python程序训练。在训练之前,文件目录如下面图片所示
datas文件夹下是数据集图片,trian.py是训练脚本,yolov8m-cls.pt是模型模型(我们这里选择使用yolov8m-cls基础模型),yolov8n.pt是模型训练过程中做混合精度验证用到的。这些模型权重都可以在ultralytics官网下载
train.py文件代码如下:
from ultralytics import YOLO
#这里使用的是linux系统进行训练 配置好YOLO8环境,一键运行该文件即可自动训练
# Load a model
#model = YOLO('yolov8n-cls.yaml') # build a new model from YAML
model = YOLO('yolov8m-cls.pt') # load a pretrained model (recommended for training)
#model = YOLO('yolov8n-cls.yaml').load('yolov8n-cls.pt') # build from YAML and transfer weights
# Train the model
#data参数指定数据集路径(文件夹),
#注意workers在windows系统中指定为0
results = model.train(data='datas', batch=32,workers=16,epochs=250,imgsz=224)
之后即可在conda虚拟环境中的YOLO8环境下开展训练(我这里的环境名称为pytorch_learn)
之后,控制台窗口会有一系列的日志输出
经过一段时间等待之后,在目录下的runs文件夹下会自动生成训练过程记录,包含模型权重、混淆矩阵、PR曲线、loss曲线等