一、为什么要把 YOLOv2 到 YOLOv5 放在一起看
YOLO 系列是目标检测领域最具影响力的单阶段检测器之一。从 YOLOv2 到 YOLOv5,短短几年时间里,这个系列在精度、速度、工程可用性上完成了多次跃迁。把它们放在一起对比,能清楚地看到目标检测技术演进的几条主线:更强的骨干网络、更精细的多尺度特征、更丰富的训练技巧,以及越来越成熟的工程化落地能力。
本文不贴代码,只从设计思想、网络结构、训练策略和实际表现四个维度,梳理 YOLOv2、YOLOv3、YOLOv4、YOLOv5 之间的差异,并在最后给出选型建议。
二、四个版本的核心定位
YOLOv2:从"能用"到"好用"
YOLOv1 速度很快,但定位精度和召回率都不理想。YOLOv2 的核心任务是补齐这些短板。它提出了 Better、Faster、Stronger 三个方向:用 Batch Normalization、高分辨率分类器、Anchor Boxes、维度聚类、细粒度特征、多尺度训练等手段提升精度;用 Darknet-19 骨干网络提升速度;用联合训练机制让模型能检测更多类别。
YOLOv2 最重要的贡献是引入了 Anchor 机制 和 维度聚类,让检测框的初始尺寸更贴合真实数据分布,这一步直接影响了后续所有版本的设计思路。
YOLOv3:多尺度检测的里程碑
YOLOv3 的最大变化是引入了 FPN 式的多尺度预测,在三个不同尺度的特征图上分别做检测,大幅提升了对小目标的检测能力。骨干网络换成了更深的 Darknet-53,并借鉴残差结构缓解深层网络的退化问题。
此外,YOLOv3 把分类损失从 Softmax 换成了 Logistic 分类器,支持多标签分类,这对存在类别重叠的数据集更友好。整体上,YOLOv3 在保持实时性的同时,把精度推到了一个新高度,成为工业界长期使用的基线模型。
YOLOv4:训练技巧的集大成者
YOLOv4 的定位不是提出某个颠覆性结构,而是把当时目标检测领域大量有效的技巧系统性地整合起来,并验证它们在单 GPU 训练条件下的可用性。它的两大关键词是 Bag of Freebies (不增加推理成本、只提升精度的训练技巧)和 Bag of Specials(少量增加推理成本但显著提升精度的模块)。
结构上,YOLOv4 使用 CSPDarknet53 作为骨干,配合 SPP 模块和 PANet 路径聚合结构,形成更强的特征金字塔。训练侧引入了 Mosaic 数据增强、CIoU 损失、CmBN、SAT 自对抗训练等。最终 YOLOv4 在 COCO 上实现了精度与速度的良好平衡,被认为是"工程上最实用的一代"。
YOLOv5:工程化与易用性的代表
YOLOv5 由 Ultralytics 团队推出,严格来说它并非学术论文产物,而是对前代思想的工程化重构。它的核心价值在于 极佳的易用性:基于 PyTorch 实现,提供从数据准备、训练、验证到导出部署的完整工具链,并给出 n/s/m/l/x 五种不同规模的模型,方便按算力选择。
结构上,YOLOv5 延续了 CSP 骨干和 PANet 颈部,引入了 Focus 切片结构(后续版本调整为卷积)、自适应 Anchor 计算、自动学习边界框回归等改进。它的精度与 YOLOv4 相当甚至略优,但训练和部署体验明显更好,因此在工业界迅速普及。
三、关键维度横向对比
| 对比维度 | YOLOv2 | YOLOv3 | YOLOv4 | YOLOv5 |
|---|---|---|---|---|
| 发布年份 | 2016 | 2018 | 2020 | 2020 |
| 骨干网络 | Darknet-19 | Darknet-53 | CSPDarknet53 | CSP 结构(可调规模) |
| 检测头 | 单尺度 Anchor | 三尺度多 Anchor | 三尺度 + SPP + PANet | 三尺度 + PANet |
| 特征融合 | 直连细粒度特征 | FPN 上采样融合 | SPP + PANet 双向融合 | PANet 双向融合 |
| 分类方式 | Softmax | Logistic 多标签 | Logistic 多标签 | Logistic 多标签 |
| 数据增强 | 常规增强 | 常规增强 | Mosaic、SAT 等 | Mosaic、MixUp 等 |
| 损失函数 | 均方误差为主 | 交叉熵 + MSE | CIoU Loss | CIoU / GIoU 可选 |
| 框架生态 | Darknet | Darknet | Darknet | PyTorch |
| 工程易用性 | 一般 | 一般 | 中等 | 很高 |
1. 骨干网络:从浅到深,从深到高效
YOLOv2 的 Darknet-19 只有 19 层卷积,追求极致速度;YOLOv3 的 Darknet-53 加深到 53 层并引入残差,精度显著提升;YOLOv4 的 CSPDarknet53 通过跨阶段部分连接减少重复梯度,在保持深度的同时降低计算量;YOLOv5 则把 CSP 思想进一步模块化,并提供不同宽度和深度的模型变体。
这条演进线的本质是:在有限算力下,如何让网络既深又高效。
2. 多尺度检测:小目标检测的分水岭
YOLOv2 只有单一尺度的检测输出,小目标检测能力较弱。YOLOv3 引入三尺度预测后,小目标召回率明显改善,这是它被长期使用的重要原因。YOLOv4 和 YOLOv5 在此基础上加入 SPP 和 PANet,让不同尺度的特征双向流动,进一步增强了特征表达能力。
3. 训练技巧:从结构创新到技巧整合
YOLOv2 和 YOLOv3 的改进更多体现在结构层面;YOLOv4 则系统性地整合了数据增强、损失函数、正则化等训练技巧,证明了"组合拳"的威力;YOLOv5 把这些技巧工程化、默认化,让使用者无需深入调参就能获得不错的效果。
4. 工程生态:决定落地成败的关键
从 Darknet 到 PyTorch 的转变,是 YOLOv5 迅速流行的关键。PyTorch 生态意味着更丰富的预训练模型、更成熟的部署工具(ONNX、TensorRT、TorchScript)以及更活跃的社区。对于实际项目而言,这一点的价值往往不亚于精度提升。
四、精度与速度的权衡
在 COCO 数据集上,从 YOLOv2 到 YOLOv5,mAP 呈现持续上升的趋势,而推理速度在同等硬件条件下保持在同一量级。需要强调的是,不同版本、不同模型规模之间的对比必须放在相同输入分辨率、相同硬件和相同评测协议下才有意义。
一个实用的判断方式是:
- 追求极致速度:YOLOv2 或 YOLOv5n 这类轻量模型仍有价值。
- 平衡精度与速度:YOLOv4 和 YOLOv5s/m 是常见选择。
- 追求更高精度:YOLOv5l/x 或后续版本更合适。
五、各版本的局限与适用场景
YOLOv2 的局限
单尺度检测、骨干较浅,小目标和密集场景表现一般。适合算力极度受限、目标尺寸较大的场景,如今更多作为教学和理解演进脉络的参考。
YOLOv3 的局限
结构相对固定,缺乏系统的训练技巧整合,在复杂场景下的精度上限有限。但由于实现成熟、资料丰富,仍是很多工业项目的稳定基线。
YOLOv4 的局限
基于 Darknet 框架,生态相对封闭,部署和二次开发的门槛高于 PyTorch 方案。技巧众多也意味着调参空间大,对使用者的经验有一定要求。
YOLOv5 的局限
并非严格意义上的学术创新,部分改进来自对前代方法的工程优化。此外版本迭代较快,不同小版本之间存在接口差异,需要固定版本以保证复现性。
六、总结
回顾 YOLOv2 到 YOLOv5 的演进,可以提炼出三条主线:
- 结构上,从单尺度到多尺度、从简单骨干到 CSP 高效骨干,特征表达能力持续增强。
- 训练上,从单一损失到多种损失组合,从常规增强到 Mosaic 等强增强,训练策略越来越系统。
- 工程上,从专用框架走向主流深度学习生态,易用性和可部署性成为核心竞争力。
如果今天要启动一个新项目,YOLOv5 及之后的版本通常是更务实的选择;如果目标是理解目标检测的设计思想,从 YOLOv2 和 YOLOv3 读起会更有收获。技术演进从来不是简单的"新版替代旧版",而是在精度、速度、成本之间不断寻找更优的平衡点。