YOLOv10训练自己的数据集(交通标志检测)
- 前言
- 相关介绍
- 前提条件
- 实验环境
- 安装环境
- 项目地址
- Linux
- Windows
- 使用YOLOv10训练自己的数据集进行交通标志检测
- 准备数据
- 进行训练
- 进行预测
- 进行验证
- 参考文献
前言
- 由于本人水平有限,难免出现错漏,敬请批评改正。
相关介绍
- YOLOv10是由清华大学的研究人员基于Ultralytics Python包构建的,引入了一种实时目标检测的新方法,解决了之前YOLO版本中后处理和模型架构的缺陷。通过消除非最大抑制(NMS)和优化各种模型组件,YOLOv10在显著降低计算开销的同时实现了最先进的性能。大量的实验证明了它在多个模型尺度上的优越的准确性和延迟性权衡。
- [1] YOLOv10 源代码地址:https://github.com/THU-MIG/yolov10.git
- [2] YOLOv10 论文地址:https://arxiv.org/abs/2405.14458
- 概述
实时目标检测的目的是在低延迟的情况下准确预测图像中目标的类别和位置。YOLO系列由于其在性能和效率之间的平衡,一直处于这项研究的前沿。然而,对NMS的依赖和体系结构的低效率阻碍了最佳性能。YOLOv10通过为无nms的训练和整体效率-精度驱动的模型设计策略引入一致的双重任务来解决这些问题。- 体系结构
YOLOv10的架构建立在以前的YOLO模型的优势之上,同时引入了几个关键的创新。模型体系结构由以下组件组成:
- Backbone:YOLOv10中的主干负责特征提取,使用增强版的CSPNet (Cross Stage Partial Network)来改善梯度流,减少计算冗余。
- Neck :颈部的设计目的是将不同尺度的特征聚合在一起,并将它们传递到头部。它包括PAN (Path Aggregation Network)层,用于有效的多尺度特征融合。
- One-to-Many Head:在训练过程中对每个对象生成多个预测,提供丰富的监督信号,提高学习精度。
- One-to-One Head: 在推理期间为每个对象生成一个最佳预测,以消除对NMS的需求,从而减少延迟并提高效率。
- 关键特性
- NMS-Free Training:利用一致的双重分配来消除对NMS的需求,减少推理延迟。
- Holistic Model Design:从效率和准确性的角度对各个组件进行全面优化,包括轻量级分类头、空间通道解耦下采样和秩导块设计。
- Enhanced Model Capabilities:结合了大核卷积和部分自关注模块,在没有显著计算成本的情况下提高了性能。
- Model Variants(模型变量):YOLOv10有多种型号,以满足不同的应用需求:
- YOLOv10-N: 用于资源极度受限环境的Nano版本.
- YOLOv10-S: Small version 平衡速度和精度.
- YOLOv10-M: Medium version for general-purpose use(适用于多种不同的目的或用途).
- YOLOv10-B: Balanced version with increased width for higher accuracy.
- YOLOv10-L: Large version for higher accuracy at the cost of increased computational resources.
- YOLOv10-X: Extra-large version for maximum accuracy and performance.
前提条件
- 熟悉Python
实验环境
torch==2.0.1
torchvision==0.15.2
onnx==1.14.0
onnxruntime==1.15.1
pycocotools==2.0.7
PyYAML==6.0.1
scipy==1.13.0
onnxsim==0.4.36
onnxruntime-gpu==1.18.0
gradio==4.31.5
opencv-python==4.9.0.80
psutil==5.9.8
py-cpuinfo==9.0.0
huggingface-hub==0.23.2
safetensors==0.4.3
安装环境
pip install ultralytics
# 或者
pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple # 国内清华源,下载速度更快
项目地址
- YOLOv10 源代码地址:https://github.com/THU-MIG/yolov10.git
Linux
git clone https://github.com/THU-MIG/yolov10.git
cd yolov10
# conda create -n yolov10 python=3.9
# conda activate yolov10
pip install -r requirements.txt
pip install -e .
Cloning into 'yolov10'...
remote: Enumerating objects: 4583, done.
remote: Counting objects: 100% (4583/4583), done.
remote: Compressing objects: 100% (1270/1270), done.
remote: Total 4583 (delta 2981), reused 4576 (delta 2979), pack-reused 0
Receiving objects: 100% (4583/4583), 23.95 MiB | 1.55 MiB/s, done.
Resolving deltas: 100% (2981/2981), done.
Windows
请到
https://github.com/THU-MIG/yolov10.git
网站下载源代码zip压缩包。
cd yolov10
# conda create -n yolov10 python=3.9
# conda activate yolov10
pip install -r requirements.txt
pip install -e .
使用YOLOv10训练自己的数据集进行交通标志检测
准备数据
本文所使用数据集免费下载地址:
进行训练
yolo detect train data=../datasets/Road_Sign_VOC_and_YOLO_datasets/road_sign.yaml model=yolov10n.yaml epochs=100 batch=4 imgsz=640 device=0
进行预测
yolo predict model=runs\detect\train4\weights\best.pt source=E:/mytest/datasets/Road_Sign_VOC_and_YOLO_datasets/testset/images
进行验证
yolo detect val data=../datasets/Road_Sign_VOC_and_YOLO_datasets/road_sign.yaml model=runs\detect\train4\weights\best.pt batch=4 imgsz=640 device=0
参考文献
[1] YOLOv10 源代码地址:https://github.com/THU-MIG/yolov10.git
[2] YOLOv10 论文地址:https://arxiv.org/abs/2405.14458