一、YOLO(You Only Look Once)
YOLO(You Only Look Once)是一种开创性的实时目标检测算法,由 Joseph Redmon 等人于 2015 年提出。核心思想是将目标检测任务转化为单次前向传播的回归问题,通过单个神经网络同时预测目标边界框和类别概率,显著提升了检测速度,适用于对实时性要求高的场景。
1. 核心原理与流程
(1)单次检测:YOLO 将输入图像一次性输入神经网络,直接输出所有目标的边界框和类别概率,无需生成候选区域(Region Proposal)的复杂流程。 (2)网格划分:输入图像被划分为 S×S 的网格,每个网格负责预测中心点落在该区域内的目标。每个网格预测多个边界框(早期版本为 2 个,后续版本引入锚点机制)及其置信度。 (3)边界框参数:每个边界框包含 5 个预测值:中心坐标 (x,y)(相对于网格左上角的偏移)、宽度 w 和高度 h(相对于图像尺寸的相对比例),以及置信度分数。 (4)非极大值抑制(NMS):通过 NMS 过滤重叠框,保留置信度最高的预测结果,提升检测精度。
2. 损失函数
YOLO 的损失函数由三部分组成: (1)定位损失:边界框坐标误差(早期版本使用均方误差,后续改进为 IoU 或广义 IoU)。 (2)置信度损失:区分目标是否存在的二元交叉熵损失。 (3)分类损失:目标类别的多元分类损失(如 Softmax 或独立逻辑回归)。
3. 优势与不足
- 优势
- 实时性:YOLO 的检测速度远超两阶段算法(如 R-CNN),基础版本可达 45 FPS,轻量级版本超过 150 FPS。
- 端到端训练:统一框架简化了训练流程,支持全局上下文信息的整合。
- 泛化能力强:在艺术图像等新领域表现优于传统方法。
- 不足
- 小目标检测困难:早期版本对密集或小目标(如群鸟)效果较差。
- 定位精度局限:因网格划分粗粒度,边界框回归误差较大。
4. YOLO 系列算法的版本演进
| 版本 | 提出时间 | 特点 | 性能 |
|---|---|---|---|
| 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 等),自适应锚框计算,网络结构改进 | 在易用性和性能方面带来显著改进,成为计算机视觉社区的热门选择 |


