YOLOv8(n/s/m/l/x)&YOLOv7(yolov7-tiny/yolov7/yolov7x)&YOLOv5(n/s/m/l/x)不同模型参数/性能对比(含训练及推理速度)

0.引言

由于YOLOv5/YOLOv7使用的设备不尽相同,考虑控制变量法,特此写一篇博客记录一下各模型的横向对比(由于时间有限,因此只针对640尺寸的模型进行训练测试)

1.软硬件配置

(1)硬件配置

(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.后记

猜你喜欢

转载自blog.csdn.net/weixin_45921929/article/details/128654191