date
Oct 24, 2025
slug
2025-10-24-the-different-version-of-YOLOv5
status
Published
tags
YOLO
CNN
summary
本文基于模型规模、算法迭代、输出结构等各方面的维度,对YOLOv5模型的不同版本及其相互之间的差异进行了总结。
type
Post
category
AI
AI summary
本文基于模型规模、算法迭代、输出结构等各方面的维度,对YOLOv5模型的不同版本及其相互之间的差异进行了总结。
YOLOv5模型是由Ultralytics公司的Glenn Jocher推出的开源模型,在Github上的地址为:GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite。
模型规模
YOLOv5模型根据其参数量的多少可以分为nano(参数量1.9M)、small(参数量7.2M)、medium(参数量21.2M)、large(参数量46.5M)、X-large(参数量86.7M)五种类型,其参数量依次上升,效果自然也是越来越好。基本上如果是要部署在移动端或者嵌入式处理器的边缘计算节点,唯二可以选择的就是YOLOv5s和YOLOv5n。
- 模型的选择取决于对图像识别和检测的精度要求:对于简单的物体存在性检测,YOLOv5s可能已足够。但对于需要区分细微差别或检测小物体的复杂场景(如医学影像)而言,则需要选择更大的模型,例如YOLOv5l或YOLOv5x。

以上各个版本模型的差异,都源于YOLOv5源代码配置文件中两个核心参数的不同:depth_multiple(深度系数)和width_multiple(宽度系数)。这两个参数通过控制主干网络(Backbone)和颈部网络(Neck)中卷积层的通道数(即宽度)以及CSP块中残差层/卷积层的堆叠数量(即深度),来生成不同复杂度的YOLOv5模型(n, s, m, l, x)。
- width_multiple(宽度系数):这个系数主要用于控制网络特征图的通道数。系数越大,每一层卷积的通道数就越多,模型的宽度和参数容量就越大,学习能力更强,但计算量也随之增加。
- depth_multiple(深度系数):这个系数主要控制某些关键模块(如主干网络和颈部网络中的C3模块)的重复堆叠次数。系数越大,网络层数越多,模型的深度越深,就能提取更复杂的特征,当然也需要更多计算资源。
算法实现迭代
不同于YOLO模型的前几代,YOLOv5模型直接以一个基于Pytorch的软件项目推出,并且在2020年推出之后的几年中,该项目的具体实现不断更新和优化,从而形成了从v1.0到v7.0的算法实现迭代序列。
截止到目前为止,YOLOv5项目对应的几个软件版本、发布的时间线以及重点更新特性如下图所示。可以看到这些版本中,从模型结构角度上最大的更新是其中的v6.0版本。该版本中包含了:使用普通的步长为2的6x6卷积网络代替Focus模块,在主干网络末端输出的小分辨率特征图上使用SPPF替换了SPP,通过激活函数也是用SiLU替换到之前默认的LeakReLU。

目前对于新的项目和实际部署,建议直接使用v6.0或v7.0等最新版本。这些版本不仅包含了所有重要的架构优化,通常还具有更好的稳定性和更完善的文档支持。
输出结构
除了以上在模型规模和软件项目迭代版本的差异之外,YOLOv5还提供了两种输出结构配置(P5和P6),用于进一步平衡检测精度、模型大小和推理速度,以适应不同的应用场景和硬件条件。P6版本可以在计算资源充足的情况下(如智能驾驶,医疗影像等领域),为大量微小目标的检测和识别提供极致的检测精度。当然,目前在产业领域中最常用的仍然是P5版本。
P5和P6版本的差异如下图所示:

下图是YOLOv5l P5输出结构的网络架构图:

下图是YOLOv5l P6输出结构的网络架构图:

从架构图上可以看到,P5版本的默认输入为640x640x3分辨率图像,输出为三路经过8倍、16倍、32倍降采样的特征信息;而P6版本的默认输入为1280x1280x3分辨率的更高清图像,输出为四路分别经过8倍、16倍、32倍、64倍降采样的特征信息。
版本命名规则与任务类型
基于以上总结的YOLOv5模型在不同维度上的版本差异,在实际的使用中,YOLOv5的模型文件名就包含了这些维度的信息,其命名遵循一个清晰的命名规则:yolov5{规模}{输出结构}-{任务}.pt。
例如:
- yolov5s.pt:一个小规模(s)、P5输出结构、用于目标检测的模型。
- yolov5x6.pt:一个超大规模(x)、P6输出结构、用于目标检测的模型。
- yolov5m-seg.pt:一个中等规模(m)、P5输出结构、用于实例分割应用的模型。
以上提到的实例分割应用,是因为在YOLOv5的最新版本中,除了基本的目标检测功能以外,还通过不同的任务后缀支持图像分类(-cls) 和实例分割(-seg),这些变体通常基于P5结构开发。