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_sizeparam/MillionFLOPs/Gweight_size/MBP/%R/%mAP50/%mAP50-95/%train_time/hSpeed/ms
yolov5n2561.74.33.991.988.193.953.20.68211.0
yolov5s2567.016.014.592.790.394.855.60.70513.0
yolov5m12820.948.342.393.189.494.255.01.009816.8
yolov5l6446.2108.392.993.188.894.355.01.75125.6
yolov5x3286.2204.8173.292.689.494.555.43.06840.4
yolov7-tiny5126.0313.212.364.461.268.829.11.13011.5
yolov712837.2105.274.992.091.994.954.91.91230.4
yolov7x12870.9189.0142.293.491.094.654.92.66842.3
yolov8n2563.18.26.391.988.494.155.61.64114.7
yolov8s12811.128.722.591.189.094.256.11.86213.9
yolov8m12825.979.152.191.690.094.656.42.22820.3
yolov8l6443.6165.487.792.189.194.656.62.97430.7
yolov8x6468.2258.2136.891.890.395.056.83.65840.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模型,并调用接口进行摄像头推理预测