YOLOv10模型训练指南

YOLOv10是由清华大学的研究人员开发的一系列YOLO模型的最新成员。截至2024年5月,YOLOv10在对象检测领域代表了最先进的技术,与之前的YOLO模型相比,它在保持相似准确度的同时,实现了更低的延迟和更少的参数。在性能方面,YOLOv10的论文指出:“YOLOv10-S在COCO数据集上与RT-DETR-R18相比,在相似的AP下速度提高了1.8倍,同时参数数量和FLOPs减少了2.8倍。与YOLOv9-C相比,YOLOv10-B在保持相同性能的同时,延迟减少了46%,参数减少了25%。”

要开始使用YOLOv10,需要从源代码安装模型。YOLOv10没有官方的Python包,因此将从源代码安装模型。创建了一个Colab笔记本,其中包含了按照本指南操作所需的所有步骤。要安装模型,请运行以下命令:

!pip install -q git+https://github.com/THU-MIG/yolov10.git

然后,需要下载模型权重以与模型一起使用。可以使用以下命令来实现:

!mkdir -p {HOME}/weights !wget -P {HOME}/weights -q https://github.com/jameslahm/yolov10/releases/download/v1.0/yolov10n.pt !wget -P {HOME}/weights -q https://github.com/jameslahm/yolov10/releases/download/v1.0/yolov10s.pt !wget -P {HOME}/weights -q https://github.com/jameslahm/yolov10/releases/download/v1.0/yolov10m.pt !wget -P {HOME}/weights -q https://github.com/jameslahm/yolov10/releases/download/v1.0/yolov10b.pt !wget -P {HOME}/weights -q https://github.com/jameslahm/yolov10/releases/download/v1.0/yolov10x.pt !wget -P {HOME}/weights -q https://github.com/jameslahm/yolov10/releases/download/v1.0/yolov10l.pt !ls -lh {HOME}/weights

这些权重是使用Microsoft COCO数据集训练的。YOLOv10基于Ultralytics的模型代码,并包含了他们代码的分支用于推理。因此,将在本指南中看到来自ultralytics的导入,这些导入使用了之前通过pip安装的YOLOv10仓库中包含的自定义ultralytics代码库。不需要运行任何额外的命令来使用这个分支代码。

模型安装和权重准备就绪后,下一步是准备用于训练的数据集。如果还没有数据集,可以在Roboflow Universe上找到超过250,000个公共数据集,用于训练模型。对于本指南,将在Roboflow Universe上可用的足球运动员检测数据集上训练模型。如果已经有标记好的数据,请确保数据是YOLOv8 PyTorch TXT格式,这是YOLOv10使用的格式。可以使用Roboflow将数据转换为YOLOv8 PyTorch TXT格式。了解如何转换数据。

要从Universe下载数据集,可以使用以下代码:

!mkdir {HOME}/datasets %cd {HOME}/datasets !pip install -q roboflow from roboflow import Roboflow ROBOFLOW_API_KEY = “” rf = Roboflow(api_key=ROBOFLOW_API_KEY) project = rf.workspace("roboflow-jvuqo").project("football-players-detection-3zvbc") dataset = project.version(1).download("yolov8")

在上面的代码中,用Roboflow API密钥替换ROBOFLOW_API_KEY,用Roboflow工作区ID替换"Roboflow-jvuqo",用Roboflow模型ID替换"Football-players-detection-3zvbc",用Roboflow模型版本ID替换1。了解如何获取Roboflow API密钥。了解如何获取Roboflow工作区和模型ID。这段代码将下载用于训练模型的数据集。

有了准备好的数据集,可以开始训练模型。为此,可以使用随YOLOv10源代码提供的YOLO命令行界面:

%cd {HOME} !yolo task=detect mode=train epochs=25 batch=32 plots=True \ model={HOME}/weights/yolov10n.pt \ data={dataset.location}/data.yaml

在上面的命令中,使用自定义数据集启动了一个25个周期的训练作业。当运行此代码时,将看到命令行的长输出,并且训练将开始。可以在模型训练时监控训练作业的性能。模型在25个周期上达到了62%的mAP。建议训练100个周期以获得最佳性能。在上面为了测试目的训练了25个周期。

可以使用模型训练完成后生成的评估图来评估模型。让查看混淆矩阵:

%cd {HOME} Image(filename=f'{HOME}/runs/detect/train/confusion_matrix.png', width=600)

这是数据集的混淆矩阵。还可以使用训练图来分析模型训练

%cd {HOME} Image(filename=f'{HOME}/runs/detect/train/results.png', width=600)

从上面的训练图中可以清楚地看出,模型在继续减少损失。25个周期太早停止训练作业了,因为模型没有足够的机会收敛。因此,建议训练100个周期以获得最佳性能。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485