【YOLOv10改进实战】**【4】YOLOv10训练自己的【数据集】:保姆级教程🥤🥤
文章目录
提示:喜欢本专栏的小伙伴,请多多关注支持。本文仅供学习使用,创作不易,未经作者允许,不得搬运或转载!!!
前言✈️✈️
本文主要介绍如何运用YOLOv10训练自己的数据集,包括【环境配置】-【数据导入】-【模型训练】-【模型评估】-【模型预测】-【模型导出】。
一、环境配置✈️✈️
1. 项目下载🪂🪂
截至目前,yolov10提供了v1.0和v1.1两个版本供大家选择,GitHub项目地址如下:
https://github.com/THU-MIG/yolov10 #yolov10项目地址
2. 安装环境🪂🪂
如果已有YOLOv8的训练环境,此步骤可跳过。
建议大家使用anaconda3虚拟环境。安装步骤如下:
打开 开始菜单栏,点击Anaconda3 -> Anaconda Prompt 进入命令行窗口:
逐条输入以下命令,创建一个新环境用以支持YOLOv10运行:
conda create -n yolov10 python=3.9 #yolov10为我们创建的环境名,可自己按喜好更改;
conda activate yolov10 #激活环境
pip install -r requirements.txt #安装requirements.txt文件中的扩展库(requirements.txt文件可在yolov10项目中查看)
pip install -e . #注:pip install -e . 的含义是:在当前目录下安装一个包,并创建一个软连接引用该包(而不是将包复制到 site-packages 目录下)。
conda list #查看已安装扩展库
到此,环境配置完毕!
二、模型训练\验证\预测\导出✈️✈️
1. 导入数据集🪂🪂
在项目中新建文件datasets用以存放数据集(位置不固定自己喜欢就好),数据划分格式可参考下图(images里全为图片文件,labels里全为标签文件),参考其他up主的方式也没问题。
2. yaml文件指南🪂🪂
2.1 数据集yaml文件
以我的cat数据集为例,我使用的是绝对路径加相对路径(怕训练时找不到数据路径):
以下是coco128数据集的yaml文件,使用的是相对路径。当然还有其他方式,感兴趣的同学可以自己查找。
2.2 yolov10n-x.yaml文件
位置:ultralytics/cfg/models/v10,使用时nc需换成自己数据集的物体类别数。
3. 模型训练🪂🪂
yolov10同yolov8一样提供了两种训练方式:
终端运行指令(CLI) 和 python文件指令。相关超参数可到default.yaml文件中设置。
CLI指令:
yolo detect train data=coco.yaml model=yolov10n/s/m/b/l/x.yaml epochs=500 batch=256 imgsz=640 device=0,1,2,3,4,5,6,7
python指令可参考yolov8:
from ultralytics import YOLOv10
# Load a model # 三选一
model = YOLOv10('yolov10n.yaml')
model = YOLOv10('yolov10n.pt')
model = YOLOv10('yolov10n.yaml').load('yolov10n.pt')
# Train the model
model.train(data="coco8.yaml", epochs=3)
训练完毕后会得到如下文件:
4. 验证模型🪂🪂
CLI指令:
yolo val model=runs/detect/train/weights/best.pt data=.../cat.yaml
python指令:
from ultralytics import YOLOv10
model = YOLOv10("yolov10n.pt")
metrics = model.val()
验证后会得到如下文件:
5. 模型预测🪂🪂
CLI指令:
yolo predict model=yolov10n/s/m/b/l/x.pt source=data/images device=0 save=True
python指令:
from ultralytics import YOLOv10
model = YOLOv10("yolov10n.pt")
results = model('.../images/bus.jpg')
预测结果示例:
6. 模型导出🪂🪂
CLI指令:
# End-to-End ONNX
yolo export model=yolov10n/s/m/b/l/x.pt format=onnx opset=13 simplify
# End-to-End TensorRT
yolo export model=yolov10n/s/m/b/l/x.pt format=engine half=True simplify opset=13 workspace=16
# Or
trtexec --onnx=yolov10n/s/m/b/l/x.onnx --saveEngine=yolov10n/s/m/b/l/x.engine --fp16
python指令:
from ultralytics import YOLOv10
model = YOLOv10("yolov10n.pt")
model.export(format='onnx')#onnx或engine
本文至此结束,文章持续更新中!!!
使用更详细的 python指令、超参数解释,后续推出,敬请期待!!!
下一篇:YOLOv10XX方向改进🥤🥤(预告)