YOLO 目标检测算法简介及 YOLO v1 模型流程详解
YOLO 是一种实时目标检测算法,将检测任务转化为回归问题,通过单次前向传播预测边界框和类别概率。相比两阶段算法,YOLO 速度更快但小目标检测较弱。本文详细介绍了 YOLO v1 的核心原理、网格划分、损失函数设计、网络结构及训练策略,并梳理了从 v1 到 v11 的版本演进历程。

YOLO 是一种实时目标检测算法,将检测任务转化为回归问题,通过单次前向传播预测边界框和类别概率。相比两阶段算法,YOLO 速度更快但小目标检测较弱。本文详细介绍了 YOLO v1 的核心原理、网格划分、损失函数设计、网络结构及训练策略,并梳理了从 v1 到 v11 的版本演进历程。

YOLO(You Only Look Once)是一种开创性的实时目标检测算法,由 Joseph Redmon 等人于 2015 年提出。核心思想是将目标检测任务转化为单次前向传播的回归问题,通过单个神经网络同时预测目标边界框和类别概率,显著提升了检测速度,适用于对实时性要求高的场景。
(1)单次检测:YOLO 将输入图像一次性输入神经网络,直接输出所有目标的边界框和类别概率,无需生成候选区域(Region Proposal)的复杂流程。 (2)网格划分:输入图像被划分为 S×S 的网格,每个网格负责预测中心点落在该区域内的目标。每个网格预测多个边界框(早期版本为 2 个,后续版本引入锚点机制)及其置信度。 (3)边界框参数:每个边界框包含 5 个预测值:中心坐标 (x,y)(相对于网格左上角的偏移)、宽度 w 和高度 h(相对于图像尺寸的相对比例),以及置信度分数。 (4)非极大值抑制(NMS):通过 NMS 过滤重叠框,保留置信度最高的预测结果,提升检测精度。
YOLO 的损失函数由三部分组成: (1)定位损失:边界框坐标误差(早期版本使用均方误差,后续改进为 IoU 或广义 IoU)。 (2)置信度损失:区分目标是否存在的二元交叉熵损失。 (3)分类损失:目标类别的多元分类损失(如 Softmax 或独立逻辑回归)。
| 版本 | 提出时间 | 特点 | 性能 |
|---|---|---|---|
| YOLOv1 | 2016 | 首次提出单阶段目标检测思想,将目标检测视为一个回归问题,直接从图像像素到边界框坐标和类别概率的映射 | 检测速度快,标准版本的 YOLO 可以每秒处理 45 张图像;YOLO 的极速版本每秒可以处理 150 帧图像,但定位精度相对较低 |
| YOLOv2 | 2017 | 引入锚框(anchor box)概念,提高了边界框预测的灵活性;提高了系统运行的分辨率,能够检测超过 9000 个物体类别 | 精度显著提高,尤其在小物体检测和复杂场景中表现更好,保持了实时检测的速度优势 |
| YOLOv3 | 2018 | 采用多尺度预测和更深的网络架构(Darknet-53),更好地检测较小的物体 | 在 Pascal Titan X 上处理 608x608 图像速度可以达到 20FPS,在 COCO test-dev 上 [email protected] 达到 57.9% |
| YOLOv4 | 2020 | 融合了 CSP 连接和 Mosaic 数据增强等功能,优化了网络结构 | 与 YOLOv3 相比,平均精度(AP)和每秒帧数(FPS)分别提高了 10% 和 12% |
| YOLOv5 | 2020 | 使用 PyTorch 框架实现,提供了不同大小的模型版本(如 YOLOv5s、YOLOv5m 等),自适应锚框计算,网络结构改进 | 在易用性和性能方面带来显著改进,成为计算机视觉社区的热门选择 |
| YOLOv6 | 2022 | 采用无锚点的检测器,对 Backbone 和 Neck 进行了重新设计,提高了硬件效率 | 模型压缩策略优化,适合在资源受限的环境中运行,检测精度和速度均优于以前最先进的模型 |
| YOLOv7 | 2023 | 提出模型结构重参化和动态标签分配问题的优化,进一步减少了参数量和计算量 | 在模型结构和训练策略上进行了创新,进一步提升了模型性能 |
| YOLOv8 | 2023 | 无锚点,具有更快的 NMS 过程,提供不同大小的模型选择 | 在检测、分割、姿态估计等任务中提供先进的性能 |
| YOLOv9 | 2024 | 提出可编程梯度信息(PGI)的概念,设计了基于梯度路径规划的通用高效层聚合网络(GELAN) | 在模型结构和训练策略上进行了创新,进一步提升了模型性能,参数量和计算量进一步减少 |
| YOLOv10 | 2024 | 采用无 NMS 训练和效率 - 精度驱动架构 | 在效率和精度之间取得了更好的平衡 |
| YOLOv11 | 2025 | 以注意力机制为核心,进一步优化模型结构和训练策略 | 综合性能强大,适用于多种复杂场景 |
目标检测中物体检测过程影响因素很多,比如一张图片中物体数量多,物体有不同的外观、形状、颜色、数据集大小、图像标注质量、训练参数等有很大的关系等因素,因此目标检测算法有一定的难度,在处理定位、识别等需要慢慢的进步发展。 One-stage 和 two-stage 其实很简单,顾名思义,区别在于是一步到位还是两步到位(定位、识别)。深度学习发展以来,物体检测发展主要集中在两个方向。One stage 检测器大大简化了 two stage 的框架,将定位和分类全部交给 RPN 独自完成,包含的 RoI pooling 等,提升了推理速度、简化了训练步骤。
直接通过单个神经网络对输入图像进行全局处理,一次性完成目标定位和分类,无需中间步骤生成候选区域(Proposal)。典型算法 YOLO(You Only Look Once)、SSD(Single Shot MultiBox Detector)等。
第一阶段:生成候选区域(Region Proposals),筛选可能包含目标的区域。 第二阶段:对候选区域进行精细化分类和边界框回归。 典型算法:R-CNN 系列(如 Faster R-CNN、Cascade R-CNN)。
论文网址 You Only Look Once:Unified, Real-Time Object Detection 作者:Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi 发表会议:CVPR 2016 核心贡献:首次提出 单阶段目标检测框架(YOLO),将检测任务转化为端到端的回归问题,实现实时检测。
我们提出了 YOLO,一种新的目标检测方法。先前的目标检测工作是将分类器重新用于执行检测。相反,我们将目标检测框架视为一个回归问题,以空间分离的边界框和相关的类别概率为目标。一个神经网络直接从完整图像中预测边界框和类别概率,仅需一次评估。由于整个检测流程是一个单一的网络,因此可以在检测性能上进行端到端的优化。 我们的统一架构速度非常快。我们的基础 YOLO 模型实时处理图像,每秒 45 帧。一个更小的网络版本 Fast YOLO 每秒处理惊人的 155 帧,同时仍然实现其他实时检测器的两倍 mAP。与最先进的检测系统相比,YOLO 的定位错误更多,但在背景上预测假阳性的可能性较小。最后,YOLO 学习非常一般的物体表示。在从自然图像到其他领域(如艺术作品)的泛化方面,YOLO 的表现优于其他检测方法,包括 DPM 和 R-CNN。
将检测建模为一个回归问题。它将图像划分为 SS 的网格,并为每个网格单元预测 B 个边界框、这些框的置信度和 C 个类别概率。这些预测被编码为一个 SS(B * 5+C)张量。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online