引言
本文主要介绍如何使用YOLOv10训练自己的目标检测数据集并且进行模型的推理使用。本文所有代码及数据集都已打包好,供小伙伴们学习。需要的小伙伴可通过文末直接获取。
YOLOv10简介
YOLOv10 是清华大学研究人员在 UltralyticsPython 清华大学的研究人员在 YOLOv10软件包的基础上,引入了一种新的实时目标检测方法,解决了YOLO 以前版本在后处理和模型架构方面的不足。通过消除非最大抑制(NMS)和优化各种模型组件,YOLOv10 在显著降低计算开销的同时实现了最先进的性能。并用大量实验证明,YOLOv10 在多个模型尺度上实现了卓越的精度-延迟权衡。YOLOv10与其他SOTA模型的性能对比如下:
亮点
- 无 NMS 设计:利用一致的双重分配来消除对 NMS 的需求,从而减少推理延迟。
- 整体模型设计:从效率和准确性的角度全面优化各种组件,包括轻量级分类头、空间通道去耦向下采样和等级引导块设计。
- 增强的模型功能:纳入大核卷积和部分自注意模块,在不增加大量计算成本的情况下提高性能。
模型介绍
YOLOv10 有多种型号,可满足不同的应用需求:
YOLOv10-N:用于资源极其有限环境的纳米版本。
YOLOv10-S:兼顾速度和精度的小型版本。
YOLOv10-M:通用中型版本。
YOLOv10-B:平衡型,宽度增加,精度更高。
YOLOv10-L:大型版本,精度更高,但计算资源增加。
YOLOv10-X:超大型版本可实现最高精度和性能。
YOLOv10与v8结构对比
从结构上看添加了PSA
和在C2f结构中添加了CBI结构
。结构设计如下:
而且去掉了NMS:
下载源码
下载源码后解压,目录如下:
环境配置
使用conda 创建虚拟环境配置【输入命令前,需进入到项目目下】。命令如下:
conda create -n yolov10 python=3.9 conda activate yolov10 pip install -r requirements.txt pip install -e .
准备数据集
将需要训练的数据集,放入项目目录下,格式如下:
训练模型:
注意这个地方需要导入YOLOv10
模块,不是YOLO
模块。
训练代码如下:
#coding:utf-8 from ultralytics import YOLOv10 # 模型配置文件 model_yaml_path = "ultralytics/cfg/models/v10/yolov10n.yaml" #数据集配置文件 data_yaml_path = 'datasets/Data/data.yaml' #预训练模型 pre_model_name = 'yolov10n.pt' if __name__ == '__main__': #加载预训练模型 model = YOLOv10(model_yaml_path).load(pre_model_name) #训练模型 results = model.train(data=data_yaml_path, epochs=150, batch=4, name='train_v10')
点击运行后开始训练,打印的网路结构如下:
模型推理
模型推理代码如下:
from ultralytics import YOLOv10 # Load a pretrained YOLOv10n model model = YOLOv10("yolov10n.pt") # Perform object detection on an image # results = model("test1.jpg") results = model.predict("test1.jpg") # Display the results results[0].show()
运行后显示结果,会直接显示推理结果: