
一、什么是 YOLO?
YOLO 是 You Only Look Once 的缩写,中文常译为 "你只看一次" 。
它是一类非常著名的 目标检测(Object Detection)算法,主要用来回答三个问题:
📸 这张图片里有什么?
📍 它们在哪里?
🏷 它们是什么类别?
例如:
在一张马路照片中,YOLO 可以同时检测出 人、汽车、自行车、红绿灯,并给出它们在图像中的具体位置。
二、目标检测到底在做什么?
在计算机视觉中,目标检测 ≠ 图像分类。
| 任务 | 能力 |
|---|---|
| 图像分类 | 判断整张图属于什么(如:猫 / 狗) |
| 目标检测 | 找出图中 多个目标,并标出位置和类别 |
| 语义分割 | 给每一个像素打标签 |
目标检测的输出通常是一个个 "框" ,称为 边界框(Bounding Box):
[类别 + 置信度 + 位置坐标]
三、YOLO 的核心思想:一次完成所有事
在 YOLO 出现之前,目标检测算法普遍采用 "两阶段"方法:
-
先找"可能有目标的区域"
-
再对每个区域进行分类
📌 问题是:慢、复杂、计算量大
YOLO 的革命性思想 💡
把目标检测当成一个"回归问题",一次前向计算就完成所有预测。
YOLO 的工作流程可以理解为:
1️⃣ 把整张图片分成很多网格
2️⃣ 每个网格负责检测它"看到"的目标
3️⃣ 一次性输出:
-
目标位置
-
目标类别
-
置信度
所以叫:You Only Look Once。
四、YOLO 是如何"看图"的?
1️⃣ 网格划分思想
YOLO 会把输入图片划分成 S × S 的网格,例如:
7 × 7 或 13 × 13 或 19 × 19
每个网格负责预测:
-
是否有目标
-
目标的边界框(x, y, w, h)
-
目标类别概率
2️⃣ Anchor(锚框)机制(后续版本)
为了适应不同大小、不同形状的目标,YOLO 引入了 Anchor Box(锚框):
-
事先定义几种常见的框形状
-
网络只需预测"偏移量"
📌 这样可以更好地检测:
-
小目标
-
细长目标
-
密集目标
五、YOLO 为什么这么快?
YOLO 的速度优势主要来自三点:
⚡ 单阶段检测(One-stage)
⚡ 全卷积神经网络(CNN)结构
⚡ 端到端训练,无需复杂后处理
对比来看:
| 算法 | 速度 | 精度 | 适用场景 |
|---|---|---|---|
| Faster R-CNN | 慢 | 高 | 医学、遥感 |
| SSD | 中 | 中 | 移动端 |
| YOLO | 快 | 较高 | 实时场景 |
六、YOLO 系列的发展历程(简要)
| 版本 | 特点 |
|---|---|
| YOLOv1 | 首次提出"一次检测"思想 |
| YOLOv2 | 引入 Anchor、多尺度训练 |
| YOLOv3 | 多尺度预测,小目标更好 |
| YOLOv4 | 工程优化,性能提升 |
| YOLOv5 | 工程友好,应用广泛 |
| YOLOv7 | 训练与推理效率提升 |
| YOLOv8 | 结构更简洁,支持多任务 |
📌 实际教学和工程中,YOLOv5 / YOLOv8 使用比较多。
七、YOLO 能用在哪些地方?
YOLO 的"快 + 准"特性,使其非常适合 实时智能场景:
🚗 智能驾驶(行人、车辆检测)
📹 视频监控(异常行为识别)
🏭 工业质检(缺陷检测)
🤖 机器人视觉
🧑⚕ 医疗辅助(部分实时场景)
📱 移动端 / 边缘计算设备
八、YOLO 的不足在哪里?
虽然 YOLO 很强,但并非万能:
❌ 对极小目标 不如两阶段方法
❌ 高密度目标场景下可能漏检
❌ 精度极限略低于复杂模型
📌 实际应用中,常根据 "速度 vs 精度" 做权衡。
九、总结一句话理解 YOLO
YOLO 是一种把"找目标"这件事做得又快又直接的算法,
让机器像人一样,一眼就看懂整张图。