Skip to content

YOLO介绍

1. 什么是YOLO算法

YOLO(You Only Look Once)是一组实时目标检测机器学习算法。

它将目标检测任务当作回归问题处理。其核心是将输入图像划分成多个网格,每个网格负责预测物体的边界框和类别概率。

YOLO YOLO 的特点包括:

  • 实时性能:YOLO设计用于实时检测,因此在速度方面具有优势。
  • 单次检测:它只需要对图像进行一次网络传递即可完成检测。
  • 统一框架:YOLO将检测视为一个回归问题,直接在图像上进行边界框和类别概率的预测。
  • 准确性:尽管速度快,YOLO在准确性方面也相当不错,尤其是随着版本迭代,如YOLOv2、YOLOv3、YOLOv4和YOLOv5等,性能不断提高。

CNN 是任何 YOLO 模型的基础。YOLO 模型是开源的。这些模型从一个版本到另一个版本都在不断改进,从而提高了准确性、性能和附加功能.

2. 应用场景

  • 自动驾驶: 实时监测交通信号灯、车辆、行人等
  • 视频监控: 监控摄像头实时检测异常行为、目标移动等
  • 无人机: 无人机实时检测目标、导航等
  • 工业质检: 工业生产过程中实时检测产品缺陷、异常等

3. YOLO的版本

从2016年YOLOv1提出到今天,YOLO架构已经经历了多次重要演进。 由不同的人和团队,多线并行的持续迭代。

从技术发展的角度来看,YOLO的演进其实围绕三个核心问题:

  • 检测精度
  • 小目标识别能力
  • 推理速度与工程效率
👉︎ YOLO v1:将目标检测变成一个回归问题

JosephRedmon和Ai Farhadi等人于2015年提出的基于单个神经网络口的目标检测系统。

早期的目标检测方法通常采用两阶段结构,例如:R-CNN ,Fast R-CNN 这类方法需要先生成候选框,再进行分类,计算成本较高。

YOLOv1 的核心思想是: 将目标检测视为一个端到端的回归问题。 模型直接从整张图像预测:

  • 目标类别
  • 边界框位置

这样做的优势是:

  • 推理速度极快
  • 网络结构简单
👉︎ YOLO v2:引入 Anchor 机制

YOLOv2 的主要改进集中在定位精度和稳定性。

👉︎ YOLO v3:多尺度检测

JosephRedmon 的最后一个版本, 因为YOLO被用在战争中,所以宣布停止研究。

YOLOv3 的重要改进是: 多尺度特征检测。 模型会在不同特征层上进行预测:

  • 高分辨率特征 → 小目标
  • 低分辨率特征 → 大目标

这一设计显著提升了小目标检测能力。

Ultralytics(一家公司名字,后续成为YOLO的主要维护者)提供了YOLOv3的Pytorch版本仓库。 Pytorch版本的YOLOv3仓库已经有了10.6k的star,成为目标检测在工程应用上的hello world。

👉︎ YOLO v4:工程优化的集大成者

YOLOv4 并没有改变整体框架,而是整合了大量训练技巧

这些改进主要提升了:

  • 检测精度
  • 训练稳定性
👉︎ YOLO v5:工程化与结构优化

在YOLOv4发布两个月后,Ultralytics YOLOv5出现了。 YOLOv5没有论文支撑,也并非学术体系内的自然延续,但它直接占用了v5这个版本号。

👉︎ YOLO v8:统一的Python接口和CLI工具。

作为Ultralytics继YOLOv5后的全新架构,YOLOv8在检测、分割、分类等任务上提供了统一的Python接口和CLI工具,极大地简化了模型的使用和部署。

👉︎ YOLO v11: 2024-09-30

Ultralytics还在持续耕耘,在吸收YOLOv8和学术成果的基础上,于2024年9月发布了YOLOv11。由Ultralytics和JingQiu共同设计,在多任务上取得SOTA性能,同时大幅减少模型参数量,提升了速度和部署效率。

👉︎ YOLO v26: 2026-01-14

2026年初,Pytorch几乎成了深度学习的默认框架.

最近的YOLO26,仍由Ultralytics推进,从头开始专为边缘和低功耗设备而设计。它引入了简化的设计,消除了不必要的复杂性,同时集成了有针对性的创新,以实现更快、更轻、更易于访问的部署。 CPU推理提速43%

4. 模型尺寸n s m l x

这就好比是同一款衣服的不同尺码。尺码不同,受众也不同。

YOLO(You Only Look Once)系列模型中的 n, s, m, l, x 是模型尺寸/复杂度的标识符,主要用于区分同一代YOLO架构下不同大小的模型(如YOLOv5YOLOv8等)。这些字母代表模型在深度(层数)、宽度(通道数)和输入分辨率上的差异,直接影响模型的性能、速度和资源消耗。

YOLOv26为例:

尺寸参数量CPU 推理速度精度 (mAP)典型应用场景
n (Nano)2.4M38.9ms40.9边缘设备、移动端、实时性要求高
s (Small)9.5M87.2ms48.6轻量级服务器、嵌入式设备
m (Medium)20.4M220.0ms53.1精度与速度平衡
l (Large)24.8M286.2ms55.0精度优先场景
x (X-Large)55.7M525.8ms57.5最高精度需求

简单决策流程:

  • 你的硬件是什么?(手机/树莓派 -> n/s; 中端显卡/边缘盒子 -> s/m; 高端显卡/服务器 -> m/l/x)
  • 你需要多快?(毫秒级实时 -> n/s; 秒级可接受 -> m/l/x)
  • 你需要多准?(允许少量误检/漏检 -> n/s/m; 要求极高精度 -> l/x)
  • 生产环境平衡:选 yolo26m

5. 支持的任务类型

任务模型后缀说明作用
目标检测无后缀yolo26n.pt找出目标位置(矩形框)+ 给出类别 + 置信度
实例分割-segyolo26n-seg.pt在目标检测的基础上,额外输出每个目标的精确轮廓掩码(像素级边界)
图像分类-clsyolo26n-cls.pt判断整张图片属于哪个类别,不定位具体位置
姿态估计-poseyolo26n-pose.pt检测人体并定位关键骨骼点(眼睛、肩膀、手肘、手腕、膝盖等 17 个关键点)
旋转目标检测-obbyolo26n-obb.pt用带角度的旋转矩形框定位目标,比水平矩形框更贴合倾斜物体

6. YOLO完整训练流程

0
安装环境
conda + pip install ultralytics
0
采集图片
用与推理一致的截图方式(推荐 ADB 截图),覆盖各种场景
0
标注数据
LabelImg(YOLO 格式)或 Roboflow
0
整理数据
images/ + labels/ 目录结构
0
配置文件
编写 data.yaml
0
开始训练
model.train(data='data.yaml', epochs=100)
0
评估验证
model.val() 查看 mAP 等指标
0
模型推理
model('test.jpg') 使用训练好的模型
0
导出部署
model.export(format='onnx') 部署到目标平台

京ICP备2024093538号-1