YOLO发展之路
Yolo v1~v3是YOLO架构的创新期,奠定了“分而治之”的检测思路,v3后主干和检测头基本定型。v3是“奠基之作”,v3 之后没有出现像从 R-CNN 到 Fast R-CNN 那种级别的颠覆性创新,后面则是“百花齐放”的优化与演进:
- v4:汇总了当时最先进的Bag-of-Freebies技巧,大幅提升了工程实用性
- v5~v11:引入了更高效的Anchor-Free、Transformer、梯度解耦等机制,在小目标、轻量化、精度上都有实质性突破
下面展开说说,先从 YOLO v1 说起。v1 的核心思想是把目标检测当作一个回归问题来解决。它把图片分成 S×S 的网格,每个网格负责预测固定数量的边界框和类别概率。这种方式速度极快,但缺点也很明显:对小物体检测效果差,每个网格只能预测两个框,对挨得近的物体无能为力,定位也不够准。
v2 的主要贡献是引入了 Anchor Box(锚点框)机制。它不再让网格随意预测框的大小,而是预先设定一些常见形状的框作为参考,让模型去预测偏移量,这大大降低了学习难度。同时 v2 使用了新的骨干网络 Darknet-19,并且做了多尺度训练,让模型能适应不同分辨率的输入。
v3 是公认的转折点。它吸收了当时很多先进思想:采用了类似特征金字塔的结构,从三个不同尺度的特征图上做预测,有效改善了对大小不同物体的检测能力。骨干网升级为 Darknet-53,并借鉴了残差网络,可以做得更深。v3 在速度和精度之间取得了极佳的平衡,YOLO 系列的很多核心组件(比如多尺度预测、Anchor 机制、骨干+检测头的结构)在 v3 就基本定型了。
v4 是一个重要的里程碑。它更像一个“集大成者”和“工程优化手册”。作者系统地试验并组合了当时最先进的技巧,比如 Mosaic 数据增强、自对抗训练、CSPNet(跨阶段局部网络)、PANet(路径聚合网络)等。v4 并没有提出全新的检测理论,但它把一堆散落的技巧融合成一个强大、稳定的工程实践方案,证明了“缝合”得好,也能产生巨大价值,至今仍有不少项目在用。
v5 的贡献更多在工程和易用性层面。虽然官方没有发表论文,但它的代码结构清晰,部署灵活,提供了从 nano 到 x 的多个版本,适应不同硬件。它引入了自适应锚框计算、Focus 结构等,使得训练和落地变得非常友好。可以说,v5 极大推动了 YOLO 在工业界的普及。
v6 是美团团队开发的,它的核心目标很明确:为工业应用打造一个硬件友好、便于部署的检测器。v6 做了几个很实在的改进:一是引入了重参数化结构(RepVGG),在训练时用多分支学得更丰富,推理时再合并成单一路径,提速明显。二是设计了双向级联模块(BiC),让高低层特征融合得更充分,对小目标有好处。三是提出了锚点辅助训练策略(AAT),训练时用锚点框帮忙收敛,推理时又变成无锚点方式,兼顾了精度和效率。同时,v6 非常在意模型量化到 INT8 后的性能,很适合部署到手机这类低功耗设备上。
v7 在 2022 年推出,它的亮点是在速度和精度上同时做到了当时的极致,而且不挑硬件。它引入了几个关键设计:一是高效层聚合网络(ELAN),通过堆叠和融合来强化特征学习。二是动态标签分配,不再死板地定正负样本标准,而是根据训练过程自适应调整,解决了样本不平衡问题。三是大量使用重参数化结构,让模型在推理时更轻快。此外,它对损失函数也做了优化,定位更精准。在实际应用中,v7 特别能打,常被用在自动驾驶、工业质检这些要求又准又快的场景。
v8 是 Ultralytics 公司在 2023 年初推出的,它不是某个机构的论文,而是一个工程化做得极其完善、生态非常友好的框架。v8 的变化比较大:主干从 v5 的 C3 模块换成了更轻量的 C2f 模块。检测头换成了解耦头,分类和回归任务分两条路走,训练收敛更快。它正式转向了 Anchor-Free(无锚点框)范式,简化了设计。样本匹配用 TaskAligned 方法,更关注任务对齐。v8 最大的贡献在于代码结构清晰,训练部署一套流程走到底,还自带了给开发者用的 GUI 工具,所以它在工业界和学术界都成了“标配”,很多人上手 YOLO 就是从 v8 开始的。
v9 在 2024 年出现,它试图从信息论和梯度流动的角度解决深度网络的信息丢失问题。它提出了可编程梯度信息(PGI)这个概念,本质是用一个辅助网络生成梯度,保证主干网络在反向传播时能拿到足够的监督信号,防止信息瓶颈。另一个核心是通用高效层聚合网络(GELAN),它通过灵活的模块组合,在轻量化和精度之间找平衡。总的来说,v9 更侧重于理论上的探索,试图让模型在更深更复杂的情况下依然能学好。
v10 在 2024 年中推出,主打在保证精度的前提下继续压缩模型,特别是针对智能驾驶这类场景。它的改进思路更精细:设计了多尺度柔性卷积(MSFC),在一个卷积里同时抓不同尺度的信息,减少网络层数。颈部改成了带辅助融合的结构,让浅层和深层信息交互得更高效。检测头也加了注意力机制,让特征提取得更多样。最终效果是模型体积小了,但精度反而涨了,很适合往车机上放。
v11 是 Ultralytics 在 2024 年底到 2025 年初发布的最新版本。它不是一个纯粹的检测器,而是一个多任务的大一统模型。除了目标检测,它原生支持实例分割、姿态估计、旋转框检测、图像分类和跟踪。架构上做了进一步打磨,特征提取更精细,官方数据显示,在同样精度下,v11 的参数比 v8 少了 22%,推理速度比 v10 还快一点。它延续了 v8 建立的生态优势,上手极快,支持各种硬件和部署环境,属于“拿来就能用,用起来还更好”的类型。
YOLO发展到今天,已经不是一个人在战斗了,而是变成了一个多方参与的"接力赛"。从v1到v3是Joseph Redmon和他的导师Ali Farhadi,这是正统的学术派。但到了v4,换成了Alexey Bochkovskiy,他是俄罗斯的开发者。v5又变成了Ultralytics的Glenn Jocher,这是一家商业公司。后面更热闹了,v6是美团的,v7又回到台湾的Chien-Yao Wang团队,v8是Ultralytics,v9是Chien-Yao Wang他们又回来了,v10是清华的,v11又是Ultralytics,再到现在的YOLO26还是Ultralytics。
为什么会这样?因为YOLO这个名字太响亮了,但没有被谁注册成商标。所以各个团队都可以发自己的"YOLO某某版本"。有点像开源世界的命名混战,谁做出重大改进,谁就有话语权命名下一个数字。但现实是,现在大家认的是"谁发的"。你发了可能没人用,因为生态已经被Ultralytics牢牢抓住了。你看Ultralytics多聪明,他们发v5的时候,发现v4已经被占了,就跳过去叫v5。后来想发v7,结果被王建尧抢先了。他们干脆发v8,而且从v8开始,他们不再只用一个数字命名,而是同时维护v5、v8、YOLO11、YOLO26等多个版本,全放在ultralytics这个统一的库里。这招很高明——无论你叫什么数字,只要你想用起来最顺手的工具,就得用我的框架。
- 点赞
- 收藏
- 关注作者
评论(0)