最近这半年,我几乎每隔几天就会在群里看到同一类问题:新手一上来就问"YOLOv5和YOLOv8到底该学哪个",做项目的问"v8都出了要不要把v5的代码全换了",还有更具体的,比如"鸟类检测数据集去哪搞""肺结节能用YOLO直接跑吗""在AGX Orin上搭建YOLO环境怎么弄"。这些问题看着是版本选择、数据集、部署环境,本质上全是同一个问题:你手里的任务到底需要YOLO的哪个能力,而你知不知道这个能力是从哪个版本、哪个问题里长出来的。所以我把这套"YOLO目标检测这十年"系列的第0集,专门用来做一件事:把从YOLO1到YOLO26——准确说是26个具有代表性的YOLO节点——各自要解决的不同问题一次性讲清楚,给后面每一期的技术拆解先立好坐标。
这套系列不是给你念论文,也不是照着仓库README翻译一遍。我更想做的,是沿着时间线把每个版本的"问题背景、结构改动、损失函数、实验取舍"串起来,让你看完之后真正敢拍板:我这个项目到底该用哪个YOLO,为什么。下面这段,就是整个系列的地图。
1. 为什么第0集先谈思路:YOLO的十年,本质是"问题驱动"的十年
1.1 模型会过时,问题不会
很多初学者最大的误区,是把YOLO当成一个"越新越好"的算法家族,以为学了v11就不用看v1了。但只要你认真读过哪怕一篇原始论文就会发现,YOLO的每一次版本迭代,都是针对一个非常具体的痛点在做手术。
YOLOv1解决的是"目标检测能不能摆脱两阶段框架、直接回归出目标位置";YOLOv2解决的是"召回率太低、尺度变化扛不住";YOLOv3解决的是"小目标和重叠目标检测稀烂";YOLOv4解决的是"训练技巧能不能系统化地总结出来";YOLOv5解决的是"普通人能不能不写底层代码就训练部署";YOLOv8解决的是"一套代码能不能同时做检测、分割、姿态估计";YOLOv10则直接冲着"端到端部署能不能去掉NMS"去。
你把这些串起来看,会发现一条清晰的主线:每一个版本都是上一代的"问题补丁"。如果你只学最新版,你看到的只是一个结果,你不知道这个结果是为了补哪个洞。而恰恰是这个"洞",才决定了一个模型在你的场景里到底好不好用。
1.2 一个反直觉的事实:YOLO的版本号乱象,本身就是十年演进的缩影
先给个心理建设:YOLO的版本号非常混乱。网上经常有人问"YOLO6和YOLOv6是不是一回事"——抱歉,还真不是。YOLOv1到YOLOv3是Joseph Redmon的原创三连;v4来自Alexey Bochkovskiy;v5是Ultralytics的工程仓库,没有对应论文;v6是美团的工业部署版本;v7是WongKinYiu团队;v8和v11又回到了Ultralytics。中间还混着YOLOX、YOLOR、PP-YOLO、Gold-YOLO、YOLO-NAS这些研究变体,以及YOLO-Seg、YOLO-Pose、YOLO-OBB、YOLO-World这些任务扩展。
所以"YOLO1到YOLO26"这个说法,并不是官方真发布了26个大版本,而是我按过去十年实际存在的问题,把主流仓库、代表性论文、任务扩展和轻量部署方案归成了26个节点。这个归法本身就是在告诉你:YOLO早就不是一个单一算法,而是一套围绕"实时目标检测"生长出来的生态品牌。搞清楚这个生态是怎么长出来的,比背住某个版本的参数量有用一百倍。
1.3 整个系列的拆解范式:每一期只回答一个核心问题
后面每一集,我都会固定用同一套范式拆解一个节点:它出现时上一代已经解决了什么、还缺什么;它的核心结构改在哪、为什么要这么改;它的损失函数和标签分配做了什么调整;作者用了什么数据集、跑了哪些实验来证明自己;最后是我自己复现时踩到的坑和结论。
你可能会觉得这种格式重复,但请相信我,当你看完十期之后,你会自然建立起一种"模型比较思维"——看到一个新模型出来,你第一反应不再是"哇好厉害",而是"它解决了什么问题、动了哪几根骨头"。这才是这套系列想给你的东西。
2. 十年九代:从YOLOv1到最新代,每个里程碑到底在解决什么难题
2.1 2016-2018:Redmon三连,把目标检测从"分两步"改成"看一眼就出结果"
2016年CVPR上,Joseph Redmon提出YOLOv1的时候,目标检测界的主流还是R-CNN那一套"先提候选区域、再逐区域分类回归"的两阶段范式,精度高但速度感人。YOLOv1最狠的一刀,是把检测彻底重构成一个回归问题:把图片划分成S×S的网格,每个网格直接预测边界框和类别概率。在当年的Titan X上能跑到45 FPS(快速版155 FPS),速度炸裂,代价是精度比两阶段方法低一截,而且小目标、密集目标经常漏。
YOLOv2在2017年补的洞是"召回率"。它引入了批量归一化、高分辨率分类预训练、带先验的锚框,还搞了多尺度训练,VOC 2007上AP从63.4直接干到76.8。同篇论文里的YOLO9000更是用层级分类的思想联合训练了9000类,这是"开放词表检测"最早的影子之一。
YOLOv3在2018年主要修两个问题:小目标检测和重叠目标。它做了三种尺度的特征图预测,用类似特征金字塔的结构把浅层细节和高层语义融合,分类从softmax换成了多个独立logistic,让一个锚框可以同时贴多个标签。那一年YOLOv3的mAP超过了不少两阶段模型,还能维持实时帧率。Redmon做完这三代就退出了,但YOLO这个名字已经站稳了。
2.2 2020-2022:v4/v5/v6/v7,工程化与工业部署的混战
Redmon退了之后,YOLO进入"百家争鸣"阶段。YOLOv4是Alexey带着CSPDarknet53、Mish激活、PANet路径聚合、Mosaic数据增强、CIoU损失这些"训练技巧全家桶"打出来的,直接把"Bag of Freebies / Bag of Specials"系统化,尺度缩放版的Scaled-YOLOv4还把模型性能推向更高。同一时期Ultralytics发布YOLOv5,没有论文,但把训练、导出、部署的体验做到了极致:模型全家桶s/m/l/x随意缩放,自动锚框、PyTorch生态、导出ONNX和TensorRT只需要几行命令。
如果说v5解决的是"好不好用",那美团YOLOv6解决的就是"工业端好不好部署":它针对硬件做了RepVGG风格的重参数化骨干和高效解耦头,量化友好,那时候很多公司把线上模型从其他方案迁到v6,图的就是边缘设备上的稳定性。YOLOv7则回到精度竞赛,提出了E-ELAN结构、可训练的BoFbag-of-freebies技巧,配合辅助训练头做粗到细监督,在实时模型里把精度压榨到了很极致。
2.3 2023-2025:v8/v9/v10/v11与任务扩展,从检测走向全任务
进入2023年之后,YOLO的关注点从"单任务检测精度"转向"通用视觉基础能力"。YOLOv8把Anchor-Free变成默认配置,用C2f结构替换了C3,还一口气内置了检测、实例分割、姿态估计、旋转框、分类五种任务,训练接口统一成一行命令;YOLOv9从梯度信息流动的角度分析深度网络的信息瓶颈,提出可编程梯度信息;YOLOv10则重构了标签分配,用双标签分配实现免NMS推理,端到端延迟明显下降;YOLOv11继续在Ultralytics体系里做精度和速度的平衡。
同时期那些不按数字命名的项目把边界推得更远:YOLO-World让模型具备开放词表检测能力,输入一句文本就能检测任意类别的物体;Gold-YOLO用"聚集-分发"机制解决特征融合的冗余;YOLO-NAS用神经结构搜索自动搜出部署友好的骨干。整个方向已经从"一个算法"变成了"一个解决实时视觉任务的工具箱"。
这里放一张我按问题主线整理的速查表,后面每一集都会往这张表里填细节:
| 时间 | 版本节点 | 核心问题 | 关键答案 |
|---|---|---|---|
| 2016 | YOLOv1 | 检测能否实时单阶段完成 | 检测即回归,网格直接预测 |
| 2017 | YOLOv2/YOLO9000 | 召回率低、尺度变化大 | 锚框、多尺度训练、层级分类 |
| 2018 | YOLOv3 | 小目标与重叠目标差 | 多尺度预测、多标签logistic |
| 2020 | YOLOv4/Scaled-YOLOv4 | 训练技巧能否系统化 | BoF/BoS、CSPDarknet、Mosaic |
| 2020-2021 | YOLOv5 | 普通人能否快速上手 | 全流程工具链、模型缩放 |
| 2021 | YOLOX/YOLOR/PP-YOLO | 检测头与表示学习 | Decoupled head、SimOTA、统一表征 |
| 2022 | YOLOv6/v7 | 工业部署与极致精度 | 重参数化、E-ELAN、可训练BoF |
| 2023 | YOLOv8/Gold-YOLO/YOLO-NAS | 全任务统一与结构搜索 | Anchor-free、C2f、GAD、NAS |
| 2024-2025 | v9/v10/v11/YOLO-World | 梯度安全、免NMS、开放词表 | PGI、双标签分配、Text-Encoder |
3. 真正决定YOLO好不好用的是"外围战场":数据集、损失函数与部署
很多刚入门的人以为学会模型结构就等于学会了YOLO,结果做项目时被三个东西卡死:没有像样的数据集、看不懂损失函数改了什么、模型训完上不了线。从热搜词就能看出来,大家在搜"鸟类目标检测的数据集""遥感目标检测""yolo肺结节""学生专注度检测yolo v8",说明真实需求根本不是复现COCO,而是拿YOLO解决自己手里那一撮垂直数据。"yolo损失函数"和"在agx orin上搭建yolo环境""一键部署脚本yolo最新版本更新内容"这类高频词,更印证了外围能力才是落地分水岭。
3.1 数据集:COCO是标杆,但你的任务全在自定义数据上
COCO是YOLO所有论文的基准,但实际项目里几乎没人用COCO训练生产模型。做鸟类识别要自己标注几百到几千张不同姿态的鸟;做肺结节检测要用医疗影像切片做预处理,还要处理类别极度不均衡;做遥感目标检测面对的更多是俯视小目标,车辆船只一个像素一个像素地抠。我的建议是:从YOLOv8开始起步,它的标注格式和训练接口最友好,配合LabelImg或CVAT先做300张种子数据,跑通闭环,再考虑扩大数据量和数据增强策略。数据集质量的第一原则不是多,而是"覆盖你真实场景里的角度、距离、光线变化"。
3.2 损失函数演进:从IoU到CIoU,从边界框回归到标签分配
YOLO系列一半的技术含量在损失函数。早期v1用的是简单的和方差坐标损失,v2/v3引入IoU系损失;v4把CIoU和DIoU-NMS带火;到了YOLOX和v8,又流行起SimOTA和TaskAlignedAssigner这类动态标签分配,让"哪个锚框负责哪个目标"变成优化问题而不是拍脑袋;YOLOv10为了免NMS,设计了双标签分配策略,训练时一对多、推理时一对一。你如果理解不了Focal Loss、GIoU/CIoU、DFL这些词,后面看任何一版YOLO都会像看天书。第3集我会专门拿一期讲损失函数的来龙去脉,每个版本的公式推导都会落地成代码对照。
3.3 部署侧:PyCharm跑通环境,AGX Orin上做边缘端推理
训练只是第一步,上线才是硬仗。入门阶段,用PyCharm建一个虚拟环境装Ultralytics包,跑通官方权重做一次推理,是成本最低的起步路径。但真正拿到项目里,你要么得导出ONNX再接不同的推理后端,要么图省事用一键部署脚本直接拉取最新版本镜像。边缘端是另一个高频场景,比如在AGX Orin上搭建YOLO环境,涉及JetPack版本、TensorRT、TensorRT的精度校准和动态batch配置,这一步比训练模型坑多得多——同样一个YOLOv8n,桌面GPU上跑得好好的,搬到Orin上可能先踩CUDA算子不匹配,再踩内存带宽。后面系列里部署专题会专门拆解"训练环境、导出链路、边缘端优化"三段式流程。
4. YOLO1到YOLO26:26个节点的拆解路线图与每期范式
4.1 26个节点怎么数出来的:官方代际+研究变体+任务扩展
我先把这套系列的目录定下来,后面你跟着走就行。26个节点分四类:
| 类别 | 节点 | 数量 |
|---|---|---|
| 代际主干 | v1、v2/YOLO9000、v3、v4、Scaled-YOLOv4、v5、v6、v7、v8、v9、v10、v11、v12 | 13 |
| 研究变体 | YOLOX、YOLOR、PP-YOLO、PP-YOLOv2、PP-YOLOE、Gold-YOLO | 6 |
| 任务扩展 | YOLO-Seg、YOLO-Pose、YOLO-OBB、YOLO-World | 4 |
| 轻量部署 | YOLOv4-tiny、YOLOv5n/YOLOv8n轻量族、YOLO-Fastest族 | 3 |
注意,这个划分是按"问题"划的,不是按发布时间严格排的。比如YOLOv5和YOLOX几乎同期,但一个解决工程可用性,一个研究解耦头和标签分配,放不同类里更方便对比。有些节点还会互相引用,比如YOLOv8的损失设计明显吸收了YOLOX和v7的思路,这种"串门"我会在对应集里点出来。
4.2 每期统一拆解范式:问题背景、结构图、损失函数、实验取舍
每一集我会保证以下六块内容齐全:
- 核心问题:这一版出现的直接原因是什么,上代哪里不够用。
- 结构图解读:手动画出主干、颈部、检测头的改动,标出哪些是新增、哪些是删减。
- 损失函数与标签分配:公式逐行解释,同时给出对应代码位置。
- 数据集与实验:作者用什么基准、跟谁比、涨了几个点,以及这个涨点到底有没有说服力。
- 代码复现:最小可运行示例,包含训练、验证、导出的完整命令。
- 踩坑记录:我在复现过程中遇到的版本冲突、显存问题、精度对不上的情况。
这个模板不是为了凑字数,而是让你在每期里都可以对照自己的项目问一遍:我的问题跟它同构吗?它的答案在我的数据上还成立吗?
4.3 建议的观看顺序:先主干后支线,别乱跳
如果你完全零基础,我建议按主干线先看v1、v3、v4、v5、v8、v10这六集,把"检测问题-结构-训练"的骨架搭起来;然后回头补v2和Scaled-YOLOv4,理解多尺度与缩放;再看YOLOX和YOLOR,理解研究圈在争论什么;最后再进任务扩展和轻量部署专题。这样的顺序下,你看YOLOv8和YOLOv10时会明显感觉到"原来每个设计都是被问题逼出来的"。如果你已经做过几个项目,可以直接从研究变体或损失函数专题切入,补的是系统化的盲区。
5. 跟上系列的最小准备:工具、资料与心态
5.1 硬件与软件的最低门槛
我理解很多人看到目标检测就担心硬件。其实把环境分两类看就行:
- 学习/训练阶段:一块RTX 3060级别6GB显存的GPU够跑YOLOv8n/s的量级;没有GPU就用Colab免费T4,跑通官方示例绰绰有余。
- 部署/项目阶段:AGX Orin这类边缘设备是重点,但不必一开始就买,先用TensorRT在本地显卡上模拟导出和推理流程,理解INT8量化对精度的影响,再迁移上板。
软件上固定一套就好:Python 3.10、PyTorch 2.x、Ultralytics包,PyCharm或VS Code都行。别在环境上花太多时间纠结,能跑通yolo predict就达标了。
5.2 我给新手的三个学习建议
第一,别纠结"学v5还是v8",先定位你的任务类型:纯检测选v8起步,边缘端部署看v5n或v8n,实例分割直接走v8-seg,开放词表需求直接YOLO-World。第二,每看完一集,把论文里的结构图画一遍,再跑一遍代码,双线对照;只看图不跑代码,你对损失函数的理解永远是虚的。第三,准备一个自己的自定义数据集,哪怕只有100张猫狗照片,走一遍标注、训练、评估、导出、部署全流程,这比刷十篇论文都管用。
5.3 最后一件事:先跑起来,再谈理解
这套系列能给你的是一张完整的地图,但地图不是风景。我看过太多人收藏了一堆教程,最后倒在第一步。你现在的任务只有一个:装好环境,下载一个YOLOv8权重,对着一张自己的生活照做一次推理。这件事做完,后面26集你才算真正"上车"了。下一集我们回到2016年,从YOLOv1那个划时代的深夜开始拆。