YOLO
YOLO
v1
YOLO 模型的本质是将目标检测视为回归问题。YOLO 方法是将卷积神经网络 (CNN) 应用于整个图像。该网络将图像划分为区域并预测每个区域的边界框和概率。这些边界框由预测概率加权。然后可以对这些权重进行阈值处理,以仅显示高分检测。
YOLOv1 将输入图像划分为网格 (SxS),每个网格单元负责预测边界框和其中对象的类别概率。每个边界框预测都包含一个置信度score,表示目标出现在框中的可能性。使用交并比(IOU) 等技术计算置信度score,这些技术可用于过滤部分预测。
24 个卷积层和 2 个全连接层组成。网络的初始卷积层从图像中提取特征,而全连接层则预测输出概率和坐标。这意味着边界框和分类都发生在一个步骤中。
v2
YOLO9000
- 层次分类:YOLO9000 中使用的基于 WordTree 结构的方法,可以增强对未见物体的泛化,并增加物体的词汇量或范围
- 架构变化:YOLO9000 引入了一些变化,例如使用批量归一化来加快训练速度和稳定性、使用锚框或滑动窗口方法,并使用 Darknet-19 作为 backbone。Darknet-19 是一个具有 19 层的 CNN,旨在实现准确和快速
- 联合训练:一种允许模型利用分层分类框架并从COCO和ImageNet等分类和检测数据集中学习的算法
v3
仍然使用滑动窗口方法,但 YOLOv3 也有一些增强。YOLOv3 引入了多尺度预测,它可以预测三个不同尺度的边界框。这意味着它可以更有效地检测不同大小的物体。
- Backbone:由 53 层组成的 Darknet-53,是 Darknet-19 和深度学习残差网络(Resnets)的混合方法,但比 ResNet-101 或 ResNet-152 更高效
- 跨尺度预测:YOLOv3 以三种不同的尺度预测边界框,类似于特征金字塔网络。这使模型能够更有效地检测各种尺寸的物体
- 分类器:使用独立的逻辑分类器代替softmax函数,允许每个盒子有多个标签。
- 数据集:研究人员仅在 COCO 数据集上训练 YOLOv3
v4
虽然 YOLOv4 仍然是单阶段对象检测网络,但该架构涉及 3 个主要组件,即 backbone、head 和 neck
Backbone 是特征提取部分,通常是跨层学习特征的 CNN。然后,neck 细化并组合从 backbone 的不同层提取的特征,从而创建丰富且信息丰富的特征表示。最后,head 进行实际预测,并输出边界框、类概率和对象性分数。
- Backbone:CSPDarknet53 是一个卷积神经网络和用于对象检测的 backbone,它使用采用跨阶段部分网络 (CSPNet) 策略的 DarkNet-53。
- neck:YOLOv4 采用了改进的空间金字塔池化 (SPP) 和路径聚合网络 (PAN),使得特征提取更细粒度,训练效果更佳,性能更佳。
- head:YOLOv4 采用 YOLOv3 的 (基于锚点的) 架构作为 YOLOv4 的 head。
YOLOv4 模型附带了两种方法包:Bag of Freebies (BoF) 和 Bag of Specials (BoS)。这些方法对 YOLOv4 的性能起到了重要作用
- 马赛克数据增强:将 4 张训练图像合并为一张,使模型能够学习在更广泛的环境中检测物体,并减少对大批量大小的需求。研究人员将其用作 BoF 的一部分,用于 backbone 训练。
- 自对抗训练 (SAT):一种两阶段数据增强技术,其中网络欺骗自己并修改输入图像以认为没有物体。然后,它在此修改后的图像上进行训练以提高鲁棒性和泛化能力。研究人员将其用作检测器或网络 head 的 BoF 的一部分。
- 交叉小批量标准化 (CmBN):交叉迭代批量标准化 (CBN) 的修改版本,使训练更适合单个 GPU。研究人员将其用作检测器 BoF 的一部分。
- 改进的空间注意力模块(SAM):研究人员将原来的 SAM 从空间注意力(spatial-wisetention)修改为点注意力(point-wisetention),在不增加计算成本的情况下增强了模型对重要特征的关注能力。用作 BoS 的一部分,作为网络检测器的附加块。
v5
没有论文,工程
Ultralytics 设计的 YOLOv5 更易于实施,文档更详细,支持多种语言
v6
专注于工业应用
- backbone:研究人员使用 EfficientRep 构建 backbone,这是一个硬件感知的 CNN,具有用于小型模型(N 和 S)的 RepBlock 和用于大型模型(M 和 L)的 CSPStackRep Block。
- neck:使用 Rep-PAN 拓扑,通过 RepBlocks 或 CSPStackRep Blocks 增强了 YOLOv4 和 YOLOv5 中修改后的 PAN 拓扑。这可以从 backbone 的不同层级更高效地聚合特征。
-
head:YOLOv6 引入了高效解耦 head,简化了设计以提高效率。它采用混合通道策略,减少中间 3×3 卷积层的数量,并与 backbone 和 neck 一起缩放宽度。
- 标签分配:利用任务对齐学习(TAL)来解决分类和框回归任务之间的不一致问题。
- 自我提炼:它将自我提炼应用于分类和回归任务,进一步提高准确性。
- 损失函数:它采用 VariFocal Loss 进行分类,并采用 SIoU 和 GIoU Loss 的组合进行回归
v7
YOLOv6 是在YOLOv7之前推出的,但 YOLOv6 的生产版本是在 YOLOv7 之后推出的,并且在性能上超越了 YOLOv7
YOLOv7 引入了一个新概念,称为可训练免费包 (BoF),包括一系列细粒度的改进,而不是彻底的改革。改进主要集中在优化训练过程和增强模型学习有效表征的能力,而不会显著增加计算成本
- 模型重新参数化:提出了计划的重新参数化模型,利用梯度传播路径的概念适用于不同网络层的策略。
- 动态标签分配:具有多个输出层的模型的训练提出了一个新问题:“如何为不同分支的输出分配动态目标?”为了解决这个问题,YOLOv7 引入了一种新的标签分配方法,称为由粗到细的引导标签分配。
- 扩展和复合缩放:YOLOv7 为对象检测器提出了“扩展”和“复合缩放”方法,可以有效利用参数和计算。
v8
无论文,由 Ultralytics 开发的 YOLOv8 引入了新功能和优化
- 先进的 backbone 和 neck 架构
- 无锚分割 Ultralytics head:YOLOv8 采用无锚分割 Ultralytics head,与基于锚的方法相比,这有助于提高准确性和提高检测过程的效率
v9
引入了可编程梯度信息 (PGI) 的概念和一种称为广义高效层聚合网络 (GELAN) 的新架构,以解决信息瓶颈问题并确保训练期间可靠的梯度流
- PGI,这是一种使用辅助可逆分支生成可靠梯度的新方法。此辅助分支为计算目标函数提供了完整的输入信息,从而确保用于更新网络权重的梯度更具信息量。辅助分支的可逆性质确保在前馈过程中不会丢失任何信息
- GELAN,这是一种新的轻量级架构,旨在最大化信息流并促进获取相关信息进行预测。GELAN 是 ELAN 架构的通用版本,可以利用任何计算块,同时尽可能保持效率和性能。研究人员基于梯度路径规划设计了它,确保信息在网络中高效流动
v10
YOLOv10的推出对于实时端到端目标检测具有革命性意义。YOLOv10 超越了之前所有的速度和准确度基准,实现了真正的实时目标检测。YOLOv10 通过 NMS-Free 检测消除了非最大抑制 (NMS) 后处理的需要
- NMS–Free 检测:YOLOv10 基于一致的双重分配提供了一种新颖的 NMS-Free 训练策略。它采用双重标签分配(一对多和一对一)和一致的匹配度量,在训练期间提供丰富的监督,同时在推理期间消除 NMS。在推理过程中,仅使用一对一的 head,从而实现 NMS-Free 检测。
- 整体效率-准确度驱动设计:YOLOv10 采用整体方法进行模型设计,优化各个组件以提高效率和准确度。它引入了轻量级分类 head、空间通道解耦下采样和等级引导块设计,以降低计算成本。
v11
架构增强。引入了 C3k2 块和 C2PSA 块等新组件,有助于改进特征提取和处理。这导致性能略有提高,但模型的参数却少得多
- C3k2 块:YOLO11 引入了 C3k2 块,这是跨阶段部分 (CSP) 瓶颈的计算高效实现。它取代了 backbone 和 neck 中的 C2f 块,并使用两个较小的卷积代替一个大卷积,从而缩短了处理时间。
- C2PSA 块:在空间金字塔池化 - 快速 (SPPF) 块之后引入跨阶段部分空间注意 (C2PSA) 块,以增强空间注意。这种注意机制使模型能够更有效地关注图像中的重要区域,从而有可能提高检测准确性。