Appearance
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架构下不同大小的模型(如YOLOv5、YOLOv8等)。这些字母代表模型在深度(层数)、宽度(通道数)和输入分辨率上的差异,直接影响模型的性能、速度和资源消耗。
以YOLOv26为例:
| 尺寸 | 参数量 | CPU 推理速度 | 精度 (mAP) | 典型应用场景 |
|---|---|---|---|---|
| n (Nano) | 2.4M | 38.9ms | 40.9 | 边缘设备、移动端、实时性要求高 |
| s (Small) | 9.5M | 87.2ms | 48.6 | 轻量级服务器、嵌入式设备 |
| m (Medium) | 20.4M | 220.0ms | 53.1 | 精度与速度平衡 |
| l (Large) | 24.8M | 286.2ms | 55.0 | 精度优先场景 |
| x (X-Large) | 55.7M | 525.8ms | 57.5 | 最高精度需求 |
简单决策流程:
- 你的硬件是什么?(手机/树莓派 -> n/s; 中端显卡/边缘盒子 -> s/m; 高端显卡/服务器 -> m/l/x)
- 你需要多快?(毫秒级实时 -> n/s; 秒级可接受 -> m/l/x)
- 你需要多准?(允许少量误检/漏检 -> n/s/m; 要求极高精度 -> l/x)
- 生产环境平衡:选 yolo26m
5. 支持的任务类型
| 任务 | 模型后缀 | 说明 | 作用 |
|---|---|---|---|
| 目标检测 | 无后缀 | yolo26n.pt | 找出目标位置(矩形框)+ 给出类别 + 置信度 |
| 实例分割 | -seg | yolo26n-seg.pt | 在目标检测的基础上,额外输出每个目标的精确轮廓掩码(像素级边界) |
| 图像分类 | -cls | yolo26n-cls.pt | 判断整张图片属于哪个类别,不定位具体位置 |
| 姿态估计 | -pose | yolo26n-pose.pt | 检测人体并定位关键骨骼点(眼睛、肩膀、手肘、手腕、膝盖等 17 个关键点) |
| 旋转目标检测 | -obb | yolo26n-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') 部署到目标平台