Contents

YOLO

📅 文档更新时间:2025 年 11 月 2 日

参考资料

概述

简介

YOLO(You Only Look Once) 是一类基于深度学习的 实时目标检测 算法
自 2015 年首次提出以来,已经历多次迭代,衍生出多条发展路线,每一次都在 速度‑精度‑易用性 之间实现更好的平衡

  • 核心思想
    • 在单次前向传递过程中同时完成物体分类和定位
    • 将输入图像划分为 $S \times S$ 的网格(grid),每个网格负责预测该区域内的目标

与 R‑CNN 系列的 两阶段 检测不同,YOLO 采用 单阶段回归,不需要进行多次区域生成和分类操作,因此在推理速度上拥有显著优势

网络结构

YOLO 通常 通常包括以下几个主要组成部分:

  • Backbone(骨干网络)

    负责 特征提取。从简单的定制卷积网络 Darknet 到引入 ResNet 思想的 Darknet-53,再到优化梯度流的 CSPDarknet53,其趋势是 更深、更高效、信息流动更顺畅

  • Neck(颈部)

    负责 多尺度特征融合。主流结构演进如下:

    • FPN:引入 自上而下 的路径,将高层语义强的特征与底层位置精确的特征结合,大大改善了小目标检测
    • PANet:在 FPN 基础上增加了 自下而上 的路径,进一步加强了位置信息的传递
    • (后续演进):出现了如 BiFPN 等结构,通过加权方式更高效地融合不同分辨率的特征
  • Head(头部)

    输出层。其 预测范式 发生了根本性变革:

    • Anchor-Based (v2-v7)

      基于预定义锚框,让网络学习偏移量。优点是 降低学习难度,训练稳定;缺点是 引入超参数,计算复杂

    • Anchor-Free (v8, v10)

      直接预测目标中心点或边界框顶点,使 Pipeline 更简洁,是当前的主流方向

损失函数

  • 分类损失

    衡量 预测类别概率真实标签 的差距(常用 Cross Entropy 或 Focal Loss)

  • 坐标损失

    衡量预测框与真实框的几何误差(从 MSE 发展到 IoU 系列 (GIoU, DIoU, CIoU)

    • MSE:独立优化四个坐标,未考虑相关性,且对尺度敏感
    • IoU Loss:直接反映检测效果的度量,但无法处理不相交的情况
    • GIoU Loss:解决了不相交时无法优化的问题
    • DIoU/CIoU Loss:进一步考虑了中心点距离和宽高比,收敛更快、定位更准
  • 置信度损失

    衡量预测框中是否真的包含 目标物体(通常也用二元交叉熵损失)

应用领域

  • 自动驾驶: 实时监控路况和识别障碍物
  • 视频监控: 实时检测和跟踪多个目标
  • 机器人: 导航、避障和物体抓取
  • 手机应用: 实时摄像头辅助的增强现实应用(AR)

优势和不足

  • 优势

    • 速度快,适合实时性要求高的应用
    • 端到端训练,结构相对简单、易于工程化部署
  • 劣势

    • 小物体密集物体 的检测性能曾是瓶颈(后续版本已大幅改进)
    • 定位精度在早期版本中略逊于两阶段方法

迭代时间线以及主要改进点

版本 发表年份 核心贡献者/机构 关键创新与特点
v1 2015 Joseph Redmon, etc. 开创性工作:将检测定义为单一回归问题。速度快,但定位不准,召回率低。
v2 2016 Joseph Redmon, etc. 迈向实用:引入 BNAnchor 机制、多尺度训练。在速度和精度间取得更好平衡。
v3 2018 Joseph Redmon, etc. 成熟之作:更深的主干网络 Darknet-53(含残差连接)、多尺度预测(类似 FPN)。成为当时最均衡的选择。
v4 2020 Alexey Bochkovskiy, etc. “工程集大成者”:CSPDarknet53 主干、PANet 颈部、Mosaic 数据增强、CIoU Loss、SAT 自对抗训练等,整合了大量 SOTA 技巧。
v5 2020 Ultralytics “易用性之王”:基于 PyTorch,提供极其友好的训练/部署流水线。优化了数据增强、超参数等。
v6 2022 美团 工业导向:重新设计的网络(RepVGG 风格 backbone),并推出了 Anchor-Free 的范式。
v7 2022 Chien-Yao Wang, etc. 效率革新:提出 E-ELAN 架构、复合模型缩放计划重参数化 等,在不增加推理成本下提升精度。
v8 2023 Ultralytics 新一代标杆:彻底抛弃 Anchor 机制,转为 Anchor-Free;使用 解耦头(Decoupled Head)C2f 模块
发展主线 代表版本与关键技术 核心目标
Backbone 强化 v3 (Darknet-53), v4 (CSPDarknet53) 提升特征提取能力
Neck 结构优化 v3 (FPN-like), v4 (PANet), 后续(BI-FPN) 优化多尺度特征融合
Loss 函数精细化 v4 (CIoU) 提升边框回归精度
训练策略 & 数据增强 v4 (Mosaic, SAT), v5 (自适应锚框) 提升模型鲁棒性与泛化能力
Head & 预测范式革命 v1-v7 (Anchor-Based) -> v8, v10 (Anchor-Free) 简化流程,摆脱超参数,更接近本质回归
工程化与部署便利 v5, v8, v11 (Ultralytics 框架) 降低使用门槛,促进落地

YOLOv1 (2015)

将目标检测问题转换为一个单次回归问题
相较于之前的 Region Proposal-based 方法(例如 R-CNN 系列),YOLOv1 显著提升了检测速度,能够实现实时处理

  • 主要改进点
    • 将图片划分成 $S \times S$ 的网格,每个格子预测两个边界框和相应的置信度评分
    • 每个格子还预测固定数量的类别概率
    • 简化的网络结构,使用 24 层卷积层和 2 层全连接层

YOLOv2 (2016)

在保持速度的同时,显著提升了检测精度
引入了多尺度训练,提高了模型对不同尺度物体的检测能力

  • 主要改进点
    • 引入了 Batch Normalization,稳定了训练过程并减少了过拟合
    • 使用了高分辨率分类器进行微调
    • Anchor 机制:引入了 预定义的 Anchor Box 以改善物体定位
    • 使用了更快的 Backbone 网络(Darknet-19)

YOLOv3 (2018)

利用 残差连接 和更深的网络,提升了模型的特征提取能力
通过多尺度特征融合,进一步改善了对不同尺度物体的检测效果

  • 主要改进点
    • 引入了 Darknet-53 作为新的 Backbone,具有更深的网络和残差连接
    • 使用了 三尺度预测 结构(类似 FPN),实现了多尺度特征融合
    • 分类器改用多个独立的 Logistic 分类器代替 Softmax,解决多标签分类(一个物体属于多个类别)的问题,而非传统的互斥多分类

YOLOv4 (2020)

在模型精度和速度之间找到了更好的权衡点,进一步提升了实时性能
吸收多种前沿技术,是一个“免费大礼包(Bag of Freebies)”和“特殊技巧库(Bag of Specials)”的集大成者

  • 主要改进点
    • 使用了 CSPDarknet53 作为 Backbone,增强了特征提取能力并减少了计算量
    • 引入了 CIoU(Complete IoU)损失函数,改善了边界框回归效果
    • 数据增强方法:采用了 MosaicSelf-Adversarial Training (SAT) 等先进的数据增强技术
    • 采用了 DropBlock 正则化和 Label Smoothing 等技术提高模型的泛化能力

YOLOv5 (2020)

Ultralytics 公司 于 2020 年发布的 PyTorch 实现,以其 极致的易用性和工程化水平 闻名

  • 主要改进点
    • 工程化优先:提供了完整的训练、验证、导出和部署管道,代码非常友好
    • 优化了数据增强策略,如 Mosaic自适应锚框计算
    • 使用更高效的优化器和学习率调度器
    • 提供了多种预设的模型规模(n, s, m, l, x),满足不同性能和速度的需求

YOLOv6 (2022)

美团 团队提出,专注于工业应用的高效检测器

  • 主要改进点
    • 引入了新的 Anchor-Free 检测机制
    • 使用了 RepVGG/CSPBep 风格的 Backbone,兼顾表现与速度
    • 设计了更高效的 Rep-PAN Neck 结构
对比 Anchor Anchor-Free
思想 预先设定一系列不同大小、比例的候选框(Anchors),让网络去学习修正这些候选框的位置和判断其内是否有物体 不依赖预定义 Anchors,直接预测目标中心点或边界框相对于网格点的偏移量
优点 简化了学习难度,训练更稳定 简化 pipeline,减少超参数,更适合形状怪异的目标
不足 需要聚类分析数据来确定 Anchor 尺寸,引入了超参数,计算量大

YOLOv7 (2022)

Chien-Yao Wang 和 Alexey Bochkovskiy 等人发布,在精度和速度上达到了新的 state-of-the-art

  • 主要改进点
    • 提出了 E-ELAN 架构,通过分组卷积和通道 shuffle 来提升网络的学习能力
    • 引入了 计划重参数化(Planned Re-parameterization) 来创建无需额外推理成本的更强大模型
    • 采用了 复合模型缩放(Compound Model Scaling) 方法

YOLOv8 (2023)

Ultralytics 公司发布的新一代标杆模型,在设计理念上做了根本性的改变,旨在提供最佳的速度-精度权衡和最友好的用户体验

  • 主要改进点
    • Anchor-Free 设计彻底移除了复杂的 Anchor 机制,简化了训练流程并减少了超参数
    • 解耦头(Decoupled Head)将分类和边界框回归任务分开,提升了训练效率和最终精度
    • 新的骨干网络和 Neck:使用更高效的 C2f 模块 替换了 C3 模块,在保持性能的同时丰富了梯度流
    • 先进的标签分配策略:采用 Task-Aligned Assigner,动态选择高质量的正样本
    • 损失函数优化:结合使用了 Distribution Focal LossCIoU Loss
    • 开发者友好:提供了从分类、检测、分割到姿态估计的统一框架

标签分配策略
用于决定 哪个预测框负责匹配哪个真实物体 的规则,对性能至关重要
早期使用静态规则,如 IoU 阈值
现代 (如 v8 的 Task-Aligned Assigner) 使用动态策略,同时考虑分类得分和预测框质量(IoU),为每个真值框选择综合分数最高的预测框作为正样本

YOLOv9 (2024 年 2 月)

  • 核心创新

    • 可编程梯度信息 (PGI)解决深度网络中信息丢失 的关键问题,通过生成可靠的梯度,确保模型能够有效学习并产出准确的预测
    • 广义高效层聚合网络 (GELAN):一种高效轻量的网络架构,优化了参数利用率与计算效率
    • 高性能表现:其最大变体 YOLOv9-E 在 COCO 数据集上取得了领先的 mAP 分数,树立了高精度的新标准
  • 理想应用场景

    适用于对 检测精度要求极高 的场合,例如精密机器人、卫星图像分析以及自动驾驶等关键安全系统

YOLOv10 (2024 年 5 月)

  • 核心创新
    • 在训练中采用 一致性双重分配 策略,无需非极大值抑制 NMS 后处理,简化了部署流程,降低了推理延迟
    • 对模型进行了自上而下的全面优化,包括使用 轻量级分类头空间通道解耦下采样 以及 秩引导块设计,旨在消除计算冗余

YOLOv11 (2024 年 10 月)

作为 Ultralytics 在 2024 年推出的收官之作,同样是集成了目标检测、图像分割、姿态估计等多种任务的统一框架

YOLOv8.3.133 (2025 年 5 月)

这个版本是 YOLOv8 分支的一个重要的 工程化维护更新,着重于提升开发体验和部署稳定性

  • 关键改进点
    • 更严格的数据集校验:当数据集中没有发现有效图片或标注时,会 直接抛出错误并停止训练,有效避免了在无效数据上浪费时间与算力
    • NVIDIA Jetson 设备支持强化:通过了官方的持续集成测试,显著提升在边缘设备上的兼容性与运行稳定性
    • 模型导出与训练优化:为 Intel CPU 用户增加了 OpenVINO 导出建议提示

实际应用

迁移训练

官方给出的 YOLO 模型(如 YOLOv8)默认使用 COCO 数据集预训练,能识别 80 种物体
要识别其他物体,我们需要进行迁移学习(Transfer Learning)或自定义训练

基本流程如下:
1、准备数据集:收集包含目标物体的图片
2、数据标注:使用工具(如 LabelImg, CVAT, Roboflow)对图片中的物体进行框选标注,生成标准的格式(如 YOLO 格式的 .txt 文件)
3、组织数据结构:按照要求划分训练集、验证集和测试集(images 和 labels 文件夹)
4、配置模型:选择一个预训练的权重文件(如 yolov8n.pt)并根据需求修改配置文件(如指定类别数)
5、执行训练:使用官方提供的训练脚本启动训练过程
6、获得模型:训练完成后会生成新的模型权重文件(如 best.pt),其中包含了针对你的任务学到的参数

如何选择合适的 YOLO 版本?

考量维度 推荐选择 理由
快速上手/教学 YOLOv8 文档最完善,API 最统一,社区活跃。
工业部署/平衡 YOLOv5 / YOLOv8 历经考验,生态成熟,资源和精度平衡性好。
移动端/边缘设备 YOLOv8n, YOLOv5n 参数量少,计算量小,延迟低。
追求极致精度、研究与追踪 关注最新论文和官方库 吸收了更多前沿的架构和训练技巧,算法领域迭代飞快,SOTA 不断被刷新。
  • 关于 “落地首选 v5/v8” 的原因
    • 生态与易用性:完善的文档、清晰的 API、丰富的教程
    • 经过实践检验:v5/v8 经过大量公司和项目的实战考验,稳定性和可靠性有保障
    • 性价比:对于大多数业务场景,v5/v8 系列提供的精度已经足够,而它们的速度和资源消耗更为友好