YOLOv8&YOLOv7&YOLOv5不同模型参数/性能对比
- 0.引言
- 1.软硬件配置
-
- (1)硬件配置
- (2)软件配置
- 2.数据集配置
- 3.不同模型性能对比表
- 4.结论
- 5.后记
0.引言
由于YOLOv5/YOLOv7使用的设备不尽相同,考虑控制变量法,特此写一篇博客记录一下各模型的横向对比(由于时间有限,因此只针对640尺寸的模型进行训练测试)
1.软硬件配置
(1)硬件配置
- CPU:英特尔E5-2640 v3@2.6GHz
- GPU:Tesla P40 24G*4
- 内存:64G
(2)软件配置
- Ubuntu18.04
- cuda11.3
- pytorch:1.11.0
- torchvision:0.12.0
2.数据集配置
2020年kaggle小麦检测数据集,包含3187张图片,各类标签的数量分别为:
- arvalis_1: 42962
- arvalis_2: 4022
- arvalis_3: 15715
- rres_1: 19077
- ethz_1: 48606
- usask_1: 5605
- inrae_1: 3540
3.不同模型性能对比表
每种算法均按默认配置,使用小麦检测数据集训练100轮,batch_size按显存最大来设置,img_size均为640*640,使用train.py进行4卡训练,使用detect.py进行单卡预测。加粗的表示最优结果。
算法 | batch_size | param/Million | FLOPs/G | weight_size/MB | P/% | R/% | mAP50/% | mAP50-95/% | train_time/h | Speed/ms |
---|---|---|---|---|---|---|---|---|---|---|
yolov5n | 256 | 1.7 | 4.3 | 3.9 | 91.9 | 88.1 | 93.9 | 53.2 | 0.682 | 11.0 |
yolov5s | 256 | 7.0 | 16.0 | 14.5 | 92.7 | 90.3 | 94.8 | 55.6 | 0.705 | 13.0 |
yolov5m | 128 | 20.9 | 48.3 | 42.3 | 93.1 | 89.4 | 94.2 | 55.0 | 1.0098 | 16.8 |
yolov5l | 64 | 46.2 | 108.3 | 92.9 | 93.1 | 88.8 | 94.3 | 55.0 | 1.751 | 25.6 |
yolov5x | 32 | 86.2 | 204.8 | 173.2 | 92.6 | 89.4 | 94.5 | 55.4 | 3.068 | 40.4 |
– | – | – | – | – | – | – | – | – | – | – |
yolov7-tiny | 512 | 6.03 | 13.2 | 12.3 | 64.4 | 61.2 | 68.8 | 29.1 | 1.130 | 11.5 |
yolov7 | 128 | 37.2 | 105.2 | 74.9 | 92.0 | 91.9 | 94.9 | 54.9 | 1.912 | 30.4 |
yolov7x | 128 | 70.9 | 189.0 | 142.2 | 93.4 | 91.0 | 94.6 | 54.9 | 2.668 | 42.3 |
– | – | – | – | – | – | – | – | – | – | – |
yolov8n | 256 | 3.1 | 8.2 | 6.3 | 91.9 | 88.4 | 94.1 | 55.6 | 1.641 | 14.7 |
yolov8s | 128 | 11.1 | 28.7 | 22.5 | 91.1 | 89.0 | 94.2 | 56.1 | 1.862 | 13.9 |
yolov8m | 128 | 25.9 | 79.1 | 52.1 | 91.6 | 90.0 | 94.6 | 56.4 | 2.228 | 20.3 |
yolov8l | 64 | 43.6 | 165.4 | 87.7 | 92.1 | 89.1 | 94.6 | 56.6 | 2.974 | 30.7 |
yolov8x | 64 | 68.2 | 258.2 | 136.8 | 91.8 | 90.3 | 95.0 | 56.8 | 3.658 | 40.2 |
4.结论
- 从同一模型来看,模型的准确率和召回率并没有随着模型的加深而提高,相反,有着一定的降低,这主要是由于数据集量相比COCO数据集小得多,模型中有着大量的冗余参数,导致模型的各项指标下降;因此,对于量较小的数据集,选用参数量较少的模型,不光可以提高准确率,降低训练时间,还能在预测速度上有着比较大的优势;
- 对比不同模型来看,yolov8相较yolov5和yolov7在准确率方面确实有一定的提升(仅限于大模型l/x),在本文使用的数据集上提升大概在1个点左右;而小模型(n/s)其实差距不大,甚至yolov7-tiny远低于正常水平(不知道是否是训练的时候出问题了,后续需要再测一下),这是我没有想到的;
- 需要根据实际情况挑选自己的模型,没有最好的模型,只有最适合自己数据集的模型。
5.后记
- 如果还不会使用yolov8进行训练的朋友可以移步这篇文章:
YOLOv8系列教程:一、使用自定义数据集训练YOLOv8模型(详细版教程),包含环境搭建/数据准备/模型训练/预测/验证/导出等 - 如果想使用yolov7进行训练的朋友可以看下这几篇文章:
YOLOv7系列教程:一、基于自定义数据集训练专属于自己的目标检测模型(保姆级教程,含数据集预处理),包含对train.py/test.py/detect.py/export.py详细说明
YOLOv7系列教程:二、使用onnx导出成tensorrt模型,实现高性能部署,包含opencv多线程、图像队列存取、自动保存xml和jpg等模块
YOLOv7系列教程:三、使用onnx导出成openvino模型,并调用接口进行摄像头推理预测