文章目录
- YOLOv10简介
- 亮点
- 模型介绍
- 下载源码
- 环境配置
- 准备数据集
- 训练模型:
- 命令行
- py文件
- 验证
- 模型推理
- 参考文献
✨✨✨✨立志真正解决大家问题,只写精品博客文章,感谢关注,共同进步✨✨✨✨
YOLOv9还没捂热乎,YOLOv10就推出来了,太卷了,太快了,坐等YOLOv9000🤣🤣🤣🤣
标题:YOLOv10: Real-Time End-to-End Object Detection
论文:https://arxiv.org/pdf/2405.14458
源码:https://github.com/THU-MIG/yolov10
YOLOv10简介
YOLOv10 是清华大学研究人员在 UltralyticsPython 清华大学的研究人员在 YOLOv10软件包的基础上,引入了一种新的实时目标检测方法,解决了YOLO 以前版本在后处理和模型架构方面的不足。通过消除非最大抑制(NMS)和优化各种模型组件,YOLOv10 在显著降低计算开销的同时实现了最先进的性能。并用大量实验证明,YOLOv10 在多个模型尺度上实现了卓越的精度-延迟权衡。YOLOv10与其他SOTA模型的性能对比如下:
亮点
- 无 NMS 设计:利用一致的双重分配来消除对 NMS 的需求,从而减少推理延迟。
- 整体模型设计:从效率和准确性的角度全面优化各种组件,包括轻量级分类头、空间通道去耦向下采样和等级引导块设计。
- 增强的模型功能:纳入大核卷积和部分自注意模块,在不增加大量计算成本的情况下提高性能。
模型介绍
YOLOv10 有多种型号,可满足不同的应用需求:
Model | Test Size | #Params | FLOPs | APval | Latency |
---|---|---|---|---|---|
YOLOv10-N | 640 | 2.3M | 6.7G | 38.5% | 1.84ms |
YOLOv10-S | 640 | 7.2M | 21.6G | 46.3% | 2.49ms |
YOLOv10-M | 640 | 15.4M | 59.1G | 51.1% | 4.74ms |
YOLOv10-B | 640 | 19.1M | 92.0G | 52.5% | 5.74ms |
YOLOv10-L | 640 | 24.4M | 120.3G | 53.2% | 7.28ms |
YOLOv10-X | 640 | 29.5M | 160.4G | 54.4% | 10.70ms |
YOLOv10-N:用于资源极其有限环境的纳米版本。
YOLOv10-S:兼顾速度和精度的小型版本。
YOLOv10-M:通用中型版本。
YOLOv10-B:平衡型,宽度增加,精度更高。
YOLOv10-L:大型版本,精度更高,但计算资源增加。
YOLOv10-X:超大型版本可实现最高精度和性能。
下载源码
源码地址:https://github.com/THU-MIG/yolov10
下载源码后解压
环境配置
可选择使用conda 创建虚拟环境配置【输入命令前,需进入到项目目录下】。命令如下:
conda create -n yolov10 python=3.9
conda activate yolov10
pip install -r requirements.txt
pip install -e .
准备数据集
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: D:/**/**/** # dataset root dir 数据集根目录
train: train/images # train images (relative to 'path') 128 images
val: val/images # val images (relative to 'path') 128 images
test: test/images # test images (optional)
训练模型:
命令行
训练模型的话直接用命令行就可以了
yolo detect train data=custom_dataset.yaml model=yolov10s.yaml epochs=300 batch=8 imgsz=640 device=0,1
device:设备id,如果只有一张显卡,则device=0,如果有两张,则device=0,1,依次类推。
imgsz:图像放缩大小resize,默认是640,如果资源不够可以设置为320试试。
py文件
考虑到部分同学不喜欢使用命令行方式
注意这个地方需要导入YOLOv10
模块,不是YOLO
模块。
训练代码如下:
#coding:utf-8
from ultralytics import YOLOv10
# 模型配置文件
model_yaml_path = "ultralytics/cfg/models/v10/yolov10n.yaml"
#数据集配置文件
data_yaml_path = ''
#预训练模型
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=8,
name='train_v10')
点击运行后开始训练,打印的网路结构如下:
验证
yolo val model=yolov10s.pt data=coco.yaml batch=8
模型推理
模型推理测试((默认读取yolov10/ultralytics/assets文件夹下的所有图像)
yolo predict model=yolov10s.pt
如果测试别的路径下的文件可以在上面命令后面加上source=‘xxx/bus.jpg’,如果想测试视频,可以使用source=‘xxx/bus.mp4’。
或者模型推理代码如下:
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()
运行后会直接显示推理结果
参考文献
https://github.com/THU-MIG/yolov10
https://blog.csdn.net/qq_40734883/article/details/139194191