前言
YOLO(You Only Look Once)是一种革命性的目标检测算法,以其快速和高效的性能而闻名。自2015年YOLOv1的首次推出以来,YOLO系列已经经历了多次迭代,每一次迭代都在速度、准确性和计算效率方面做出了显著的贡献。
版本号 | 年份 | 主要贡献与特点 |
---|---|---|
YOLOv1 | 2015 | 实时端到端物体检测,将检测视为回归问题,单次网络评估预测位置和类别 |
YOLOv2 | 2016 | 引入批量归一化,高分辨率分类器,全卷积网络,能检测超过9000个类别 |
YOLOv3 | 2018 | 使用更深的Darknet-53网络,引入特征金字塔网络提高多尺度目标检测能力 |
YOLOv4 | 2020 | 结合CSPNet、PANet、SAM等技术,提高特征提取和检测效率 |
YOLOv5 | 2020 | 使用Pytorch框架,不同大小模型版本适应不同环境,易用性和性能显著改进 |
YOLOv6 | 2021 | 多种不同尺寸模型适应工业应用,继续在YOLO系列基础上改进 |
YOLOv7 | 2022 | 架构变化和一系列免费包提高准确率,保持实时性 |
YOLOv8 | 2023 | 新功能和改进,包括新的骨干网络、Anchor-Free检测头和新损失函数,提升性能和灵活性 |
YOLOv9 | 2023 | 引入可编程梯度信息(PGI)和基于梯度路径规划的通用高效层聚合网络(GELAN)架构 |
YOLOv10 | 2024 | 通过消除非最大抑制(NMS-Free)和优化各种模型组件,实现了最先进的性能。 |
YOLO11 | 2024 | 采用C3K2模块更利于聚合特征,在注意力方面使用C2PSA模块的多头注意力机制提取全局特征 |
YOLOv12 | 2025 | 提出了以注意力为中心的实时目标检测框架,打破了传统CNN在YOLO系列中的主导地位。 |
YOLOv1
- 核心思想:
将目标检测任务视为一个回归问题,直接在整幅图像上进行边界框的预测和类别分类,一次性输出目标的位置和类别信息。 - 网络结构: 输入图像被 resize 到 448x448,经过一系列卷积层和全连接层处理。最后一个全连接层输出一个 7x7x30 的张量,其中 7x7 表示将图像划分为 7x7 的网格,每个网格对应 30 维的预测信息,包括 2 个边界框的位置(4 个值)、置信度(2 个值)和 20 类对象分类的概率。
- 优点: 检测速度快,能够在一张图像上同时预测多个目标的位置和类别;对背景的误检率相对较低,因为是基于整幅图像进行检测,能利用上下文信息。
- 缺点: 定位精度不够高,尤其是对于小目标的检测效果较差;每个网格只能预测一组类别概率,对于多个目标位于同一网格的情况处理能力有限;边界框的预测不够准确,召回率相对较低。
YOLOv2
- 改进之处:
- 输入尺度: 支持更高分辨率的输入,提高了对小目标的检测能力。
- 网络层改进:
- 在卷积和激活函数之间添加批量归一化(Batch Normalization),加快训练速度并提高准确率,减少了对 Dropout 层的依赖。
- 借鉴 ResNet 的思想,进行特征图的拼接操作,融合不同层次的特征信息,增强了模型对多尺度特征的表达能力。
- 输出结果处理:
- 引入先验框(Anchor Boxes)的概念,每个网格预先定义多个不同尺寸和比例的先验框,提高了对不同形状目标的适应性,虽然准确率略有下降,但召回率提升明显。
- 对边界框的预测值进行编码(Encode)处理,将预测值的范围控