一文了解YOLO家族技术演进史

发布时间:2023年12月22日

引言

在这里插入图片描述
YOLO 模型之所以出名,主要有两个原因:速度&准确性,以及快速可靠地检测图像中的对象的能力。

在这篇博文中,我分享阅读一篇 30 页篇幅的综述论文获得的见解 ,该论文深入研究了 YOLO 模型的技术演进历程,全面概述了 YOLO 框架的演变,涵盖了从最初的 YOLOv1 到最新的 YOLOv8 的所有 15 个模型。

目标检测任务相关背景知识

目标检测模型的解剖结构:backbone, neck, 和 head

在这里插入图片描述
物体检测器的架构分为三个部分:backbone, neck, 和 head

backbone 网络对于从输入图像中提取有价值的特征至关重要,通常使用在 ImageNet 等大规模图像分类任务上训练的卷积神经网络 (CNN)。backbone 捕获不同尺度的层次特征。在前面的层中提取较低级别的特征(边缘和纹理),并在较深层中删除较高级别的特征(如对象部分和语义信息)。

neck是连接backbone和head的中间部件。

目标检测模型性能度量指标和非极大值抑制 (NMS)

平均精度 (mAP) 是评估目标检测模型的指标。它测量所有类别的平均精度,提供单个值来比较不同的模型。那么,mAP 是如何工作的?
在这里插入图片描述
mAP 指标基于精确召回指标,处理多个对象类别,并使用交并集 (IoU) 定义正预测。

精确率和召回率是评估模型准确性的重要指标。mAP 提供平衡评估,而 IoU 则衡量边界框质量。非极大值抑制有助于过滤掉多余的边界框,以提高检测质量。

精确率和召回率

精确率衡量模型做出准确阳性预测的能力,而召回率衡量模型正确识别的实际阳性案例的比例。将精准度想象为神枪手,准确击中目标;将召回率想象为侦探,抓获所有犯罪嫌疑人。精确度和召回率之间存在权衡,因为检测更多对象会产生更多误报。

平均精度 (mAP) 指标计算精度-召回率曲线下的面积,以提供更平衡的评估。mAP 指标结合了精确率-召回率曲线,该曲线绘制了不同置信度阈值的精确率与召回率。它通过考虑精确率-召回率曲线下的面积来提供精确率和召回率的平衡评估。mAP 通过单独计算每个类别的平均精度并在所有类型中取平均值(因此称为 mAP)来处理多个目标类别。

IoU 指标通过比较预测边界框和Groundtruth边界框的交集和并集面积来衡量预测边界框的质量。
在这里插入图片描述
IoU 是预测边界框和真实边界框的交集面积与并集面积的比率。它测量真实边界框和预测边界框之间的重叠。IoU 是通过将两个框的交集除以框的并集来计算的。通过同时使用 mAP 和 IoU 指标,可以对模型的准确性进行更全面的评估。这对于确保模型在其预期用例中有效至关重要。

目标检测算法通常会在同一对象周围生成具有不同置信度分数的多个边界框。

非极大值抑制过滤掉冗余和不相关的边界框,只保留最准确的边界框。这减少了重叠边界框的数量并提高了整体检测质量。

在这里插入图片描述
NMS 算法的工作原理如下:

  1. 从一组预测框(“B”)及其置信度得分(“S”)开始。
  2. 设置 IoU(“tau”)和置信度阈值(“T”)。
  3. 任务:找到一组过滤框(“F”)。
  4. 启动算法:
    1. 将预测框保留在“B”中,其中置信度分数 > 阈值“T”。将“B”重新定义为经过过滤的一组框。
    2. 按置信度分数降序对“B”中的框进行排序。
    3. 为最终的框实例化一个空的“F”集。
    4. 当“B”中仍有剩余框时,请执行以下操作:
      1. 从“B”中选择置信度得分最高的框(“b”)。
      2. 将框“b”添加到集合“F”中
      3. 从集合“B”中删除“b”
      4. 对于“B”中的每个剩余框(称为“r”),执行以下操作:
      1. 计算“b”和“r”之间的 IoU。
      2. 如果 IoU >“tau”,则“r”与“b”重叠太多。因此,从集合“B”中删除“r”。
      3. 继续,直到“B”中没有任何框为止。
  5. 完成,“F”组现在包含你挑选的最好的框。

YOLO: You Only Look Once

在这里插入图片描述
YOLO 传奇的开始将我们带回到 2016 年 6 月一个炎热的星期一下午,在内华达州拉斯维加斯凯撒宫会议中心举行的 CVPR 会议上。

约瑟夫·雷德蒙 (Joseph Redmon) 上台发表了他的论文《 You Only Look Once: Unified, Real-Time Object Inspection》。本文介绍了一种突破性的端到端目标检测方法,可以进行实时处理。这对于计算机视觉社区来说是一个重大发展。

与之前的方法不同,YOLO 是一种高效的目标检测架构,仅需要一次网络传递。它消除了多次运行或两步过程的需要。该模型在 PASCAL VOC2007 数据集上的 mAP 达到了惊人的 63.4。

YOLO 是如何工作的?

YOLO 目标检测方法通过将输入图像划分为网格并使用每个网格元素的 C 类置信度分数来预测 B 个边界框,从而一次性检测所有边界框。

每个边界框预测都包含Pc,它反映了模型的置信度和准确性。box 和 by 坐标是框相对于网格单元的中心,bh 和 bw 是框相对于整个图像的高度和宽度。

输出是SxSx(Bx 5 + C)的张量,后面可以进行非极大值抑制以消除重复检测。
在这里插入图片描述

YOLO 的优点和局限性

尽管 YOLO 是一种快速目标检测器,但它也有一些局限性。YOLO 的定位误差比 Fast R-CNN 等最先进的方法更严重。这种限制可归因于三个主要原因:

  • YOLO 只能检测网格单元中最多两个同一类的对象,这限制了它预测附近事物的能力。
  • YOLO 很难预测训练数据中不存在的长宽比对象。
  • 由于下采样过程,YOLO 从粗糙的对象特征中学习。

YOLOv2:更好、更快、更强

2017年7月一个闷热的周二下午,雷德蒙再次走上舞台。

在演讲中,Redmon 分享了一篇题为 《YOLO9000: Better, Faster, Stronger 》的论文 ,并介绍了能够识别 9000 多个类别的物体检测系统。这个模型称为 YOLOv2,在 PASCAL VOC2007 数据集上表现出令人印象深刻的 78.6% 平均精度 (AP),优于其前身 YOLOv1,后者仅达到 63.4%。这些发现凸显了 YOLOv2 在目标检测和识别方面的先进能力,为计算机视觉的未来进步铺平了道路。

该系统在多个方面进行了改进。

这些改进包括对卷积层使用批量归一化来提高收敛性并减少过度拟合。添加了高分辨率分类器,从而为更高分辨率的输入带来更好的性能。该架构已更改为完全卷积层 - 包括名为DarkNet的主干网 ,其中包含 19 个卷积层和 5 个最大池层 - 并且锚框现在用于预测边界框。
在这里插入图片描述
最后,使用通过 k 均值聚类找到的合适先验来实现维度聚类,以使预测更加准确。

作者在同一篇论文中介绍了一种训练联合分类和检测的方法。

在训练过程中,他们组合了两个数据集,以便在使用检测训练图像时,它会反向传播检测网络。当使用分类训练图像时,它会反向传播架构的分类部分。

结果是 YOLO 模型能够检测 9000 多个类别,因此命名为 YOLO9000。

YOLOv3

2018 年 4 月 8 日,Joseph Redmon 和 Ali Farhadi 在 arXiv 上发表了一篇名为 YOLOv3: An Incremental Improvement 的论文。

当 YOLOv3 发布时,目标检测的基准已从 PASCAL VOC 更改为 Microsoft COCO。从现在开始,所有 YOLO 都会在 MS COCO 数据集中进行评估。论文中介绍的 YOLOv3-spp 变体在 20 FPS 下实现了 60.6% 的 mAP,达到了当时最先进的水平,速度提高了 2 倍。事实证明,这成为 Joseph Redmon 领导的最终 YOLO 版本。

这篇论文包括重大变化和庞大的架构,以在保持实时性能的同时与最先进的技术相媲美。YOLOv3 使用逻辑回归为锚框分配对象分数。它训练二元分类器为同一个盒子提供多个标签。作者使用 k 均值来确定三种尺寸的三个先验框的边界框先验。

YOLOv4

在这里插入图片描述
约瑟夫·雷德蒙 (Joseph Redmon) 离开了计算机视觉研究,因为他担心军事应用和隐私侵犯。

在这里插入图片描述

就这样,全世界屏息以待了两年,直到 YOLO 的新版本问世。2020 年 4 月,Alexey Bochkovskiy 等人接续 Redmon 的工作,在 arXiv 上发布了一篇名为 《YOLOv4: Optimal Speed and Accuracy of Object Detection.》的研究论文。

YOLOv4 保留了相同的 YOLO 理念——实时、开源、single shot和 DarkNet 框架——并且改进非常令人满意,以至于社区迅速接受了这个版本作为官方 YOLOv4。

YOLOv4 试图通过试验许多被归类为bag-of-freebies 和 bag-of-specials 的变化来找到最佳平衡。

Bag-of-freebies 是只改变训练策略并增加训练成本但不会增加推理时间的方法,最常见的是数据增强。另一方面,bag-of-specials是稍微增加推理成本但显着提高准确性的方法。

这些方法的例子包括扩大感受野、组合特征和后处理等。

新的图像调整包括mosaic augmentation,它合并四个图像以实现更准确的目标检测,而不需要更大的小批量大小。对于正则化,他们使用 DropBlock,它取代了 Dropout,但用于卷积神经网络和类标签平滑。

YOLOv5

2020 年 6 月,也就是 YOLOv4 推出仅仅两个月后,来自 Ultralytics 的 Glenn Jocher 发布了 YOLOv5。

关于这个名字存在一些争议,但我们不会在这里深入探讨。YOLOv5 建立在 YOLOv4 的许多改进之上,但主要区别在于它是使用 PyTorch 而不是 DarkNet 开发的。

Ultralytics 积极维护 YOLOv5 作为一个开源项目,拥有超过 250 名贡献者并经常进行改进。它易于培训、部署和实施。在测试 MS COCO 数据集 test-dev 2017 时,YOLOv5x 在图像大小为 640 像素的情况下取得了令人印象深刻的 50.7% 的 AP。当批量大小为 32 时,它可以在 NVIDIA V100 上达到 200 FPS 的速度。

通过使用 1536 像素的更大输入尺寸,YOLOv5 可以实现 55.8% 的更高 AP。

Scaled-YOLOv4

在 CVPR 2021 中,YOLOv4 的作者介绍了 Scaled-YOLOv4,它是使用 Pytorch 而不是 DarkNet 创建的。

Scaled-YOLOv4的主要创新是放大和缩小技术的实现。放大会产生更准确的模型,但速度会降低,而缩小会产生更快的模型,但精度会降低。

缩小后的架构被称为 YOLOv4-tiny;它专为低端 GPU 设计,可以在 Jetson TX2 上以 46 FPS 运行,在 RTX2080Ti 上以 440 FPS 运行,在 MS COCO 上实现 22% 的 mAP。放大的模型架构被称为YOLOv4-large,其中包括三种不同尺寸的P5、P6和P7。该架构专为云 GPU 设计,实现了最先进的性能,在 MS COCO 上以 56% 的 mAP 超越了之前的所有模型。

YOLOR

《You Only Learn One Representation: Unified Network for Multiple Tasks》 (YOLOR) 由 YOLOv4 的同一研究团队于 2021 年 5 月在 ArXiv 上发表。

作者采取的方法有所不同。他们创建了一种多任务学习方法,为各种任务(例如分类、检测和姿势估计)开发单一模型。他们通过学习通用表示并使用子网络生成特定于任务的表示来实现这一目标。

YOLOR 的开发是为了对神经网络的隐式知识进行编码,以应用于多项任务,就像人类如何利用过去的经验来解决新问题一样。

YOLOR 在 MS COCO 数据集 test-dev 2017 上进行了评估,在 NVIDIA V100 上以 30 FPS 的速度实现了 55.4% 的 mAP 和 73.3% 的 mAP50。

YOLOX

在这里插入图片描述

《YOLOX:2021年超越YOLO系列》于 2021年7月在ArXiv上发表,由旷视科技研究团队以Ultralytics的YOLOv3为起点,在Pytorch中开发。

YOLOX 对其前身 YOLOv3 进行了多项更改。

一项重大变化是它是无锚的,简化了训练和解码。为了弥补锚点的缺失,YOLOX 使用中心采样,其中中心 3×3 区域被指定为正值。它还将分类和回归任务分为两个部分,以避免错位。

此外,YOLOX 采用 MixUP 和 mosaic augmentation,人们发现这比 ImageNet 预训练更有益。

YOLOX 在 MS COCO 上平衡了速度和准确性,mAP 为 50.1%。

YOLOv6

在这里插入图片描述

美团视觉人工智能部于2022年9月在ArXiv上发布了《YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications》的单阶段目标检测框架。

与YOLOv4和YOLOv5类似,它为工业应用提供了各种不同尺寸的模型。跟随基于锚点的方法的趋势,YOLOv6 采用了无锚点检测器。YOLOv6-L 在 NVIDIA Tesla T4 上以大约 50 FPS 的速度实现了 52.5% 的 AP 和 70% 的 AP50。

YOLOv7

在这里插入图片描述

2022 年 7 月,YOLOv4 和 YOLOR 的同一作者在ArXiv发布了 《 YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors》。

该物体检测器在检测 5 FPS 至 160 FPS 物体的速度和准确性方面超越了所有其他检测器。与 YOLOv4 一样,YOLOv7 仅在 MS COCO 数据集上进行训练,而不使用预先训练的主干网。

YOLOv7 架构拥有三个主要功能:用于高效学习的 E-ELAN、针对不同大小的模型缩放以及用于提高准确性和效率的“bag-of-freebies”方法。E-ELAN 控制深度模型的梯度路径,而模型缩放则调整硬件使用的属性。

“bag-of-freebies”方法包括重参数化,从而提高了模型的性能。

最新的YOLOv7模型比YOLOv4表现更好,参数减少了75%,计算量减少了36%,同时平均精度提高了1.5%。YOLOv7-tiny 还分别将参数和计算量减少了 39% 和 49%,而没有影响 mAP。

与YOLOR相比,YOLOv7的参数数量和计算量分别显着减少了43%和15%,AP略有增加0.4%。

YOLOv7-E6 在 NVIDIA V100 上具有 50 FPS 的快速处理速度,并在输入大小为 1280 像素的 MS COCO 数据集 test-dev 2017 上实现了 55.9% 的 AP 和 73.5% 的 AP50。

DAMO-YOLO

2022年11月,阿里巴巴集团在ArXiv上发布了一篇题为 《DAMO-YOLO : A Report on Real-Time Object Detection Design》的论文 。

本文概述了提高实时视频处理中目标检测精度的几种技术。这些技术包括使用阿里巴巴 MAE-NAS 方法的神经架构搜索、受 GiraffeDet 启发的名为 Efficient-RepGFPN 的独特通道设计,以及利用大、小neck来提高性能的 ZeroHead 方法。此外,作者还介绍了 AlignedOTA 标签分配方法,该方法解决了分类和回归损失之间的错位问题,并使用预测和真实框的 IoU 作为软标签。最后,采用知识蒸馏来进一步提高准确性。

YOLOv8

在这里插入图片描述
YOLOv5 背后的公司 Ultralytics 于 2023 年 1 月发布了 YOLOv8。

目前,还没有讨论 YOLOv8 架构的论文,因此我们必须依靠见解将其与 YOLO 之前版本进行比较。YOLOv8 是无锚的,预测的框更少,并且具有更快的非极大值抑制 (NMS) 过程。在训练期间,YOLOv8 使用mosaic augmentation,但该技术在最后 10 个 epoch 中被禁用,因为如果在整个训练过程中使用它可能是有害的。

YOLOv8 提供五种不同缩放版本:YOLOv8n(nano)、YOLOv8s(小型)、YOLOv8m(中型)、YOLOv8l(大型)和 YOLOv8x(超大)。在 MS COCO 数据集 test-dev 2017 上进行测试时,YOLOv8x 在图像大小为 640 像素的情况下实现了令人印象深刻的 53.9% 的 AP,而 YOLOv5 在相同输入大小上的 AP 为 50.7%。此外,它的速度也很快。

百度飞桨YOLO系列

PP-YOLO

PaddlePaddle (PP) 系列与 YOLO 型号一起,包括 PP-YOLO、PP-YOLOv2 和 PP-YOLOE。这些模型对 YOLO 的发展做出了重大贡献。百度研究人员 于2020年7月在ArXiv上发表了基于YOLOv3的《PP-YOLO: An Effective and Efficient Implementation of Object Detector》。

PP-YOLO 利用 PaddlePaddle 深度学习平台,并添加了十个新技巧,以在不牺牲速度的情况下提高准确性。它采用与 YOLOv4 不同的技术,并且任何重叠方法都使用不同的实现。与 YOLOv3 相比,PP-YOLO 的关键修改包括新的主干架构、更大的批量大小、DropBlock 应用、IoU 损失和预测分支、网格敏感方法、Matrix NMS、CoordConv 和空间金字塔池。

PP-YOLO 使用混合训练、随机颜色失真、随机扩展、随机裁剪和翻转、RGB 通道 z 分数归一化以及多种图像尺寸进行增强和预处理。在 MS COCO 数据集 test-dev 2017 上进行评估时,PP-YOLO 取得了令人印象深刻的结果,在 NVIDIA V100 上的 AP 为 45.9%、AP50 为 65.2%、73 FPS。

PP-YOLO是百度公司研究人员利用PaddlePaddle深度学习平台开发的基于YOLOv3的模型。它引入了十个新技巧来提高准确性,同时保持速度,并在 MS COCO 数据集上进行测试时显示出显着的结果。

PP-YOLOv2

《PP-YOLOv2: A Practical Object Detector》 于 2021 年 4 月在 ArXiv 上发布,并对 PP-YOLO 添加了四项改进,将 NVIDIA V100 上 69 FPS 的性能从 45.9% AP 提高到 49.5% AP

PP-YOLOv2 与其前身 PP-YOLO 相比发生了一些变化。

首先,主干网从ResNet50升级到ResNet101。其次,路径聚合网络(PAN)取代了 FPN,与 YOLOv4 类似。第三,Mish激活函数已在检测neck实现,而YOLOv4和YOLOv5则全程使用它。第四,输入大小增加到 768,每个 GPU 的批量大小减少到 12 个图像,从而在较小的物体上获得更好的性能。

最后,IoU-aware分支进行了修改,IoU-aware损失计算现在使用软标签格式而不是软权重格式。

PP-YOLOE

《PP-YOLOE: An evolved version of YOLO》于 2022 年 3 月发布,基于 PP-YOLOv2 构建,在 NVIDIA V100 上具有令人印象深刻的 51.4% AP 和 78.1 FPS。

它拥有无锚架构,这在当时是一种趋势,这要归功于多部有影响力的作品。

研究人员还从 TreeNet 中汲取灵感,实现了新的脊柱和颈部。他们利用 RepResBlocks 合并残差连接和密集连接,以实现更有效的设计。任务对齐学习 (TAL) 是另一个关键功能,它解决了 YOLOX 首先强调的任务错位问题。

除了 TAL 之外,PP-YOLOE 还具有高效任务对齐头 (ET-head),这是一个基于 TOOD 的单头,可提高速度和准确性。最重要的是,变焦 (VFL) 和分布焦点损失 (DFL) 优先考虑高质量样本,并确保训练和推理之间的一致性。

PP-YOLOE 是一种先进的目标检测模型,具有无锚架构、创新的backbone和neck、TAL、ET-head 以及 VFL 和 DFL,可实现训练一致性并优先考虑高质量样本。

YOLO技术演变小结

YOLO 演变中的关键模式包括锚点的使用和放弃、从 Darknet 到 PyTorch 和 PaddlePaddle 框架的切换、主干架构的变化以及注重平衡实时对象检测的速度和准确性。

锚点在 YOLO 的发展中发挥了重要作用,YOLOv2 结合了锚点来提高边界框预测的准确性。然而YOLOX的无锚点方法取得了state-of-the-art的结果,导致后续YOLO版本中放弃了锚点。

框架方面,YOLO最初依赖于Darknet框架,但在Ultralytics移植YOLOv3后转向PyTorch,引发了一波增强。PaddlePaddle是百度开源的框架,是YOLO开发中使用的另一种深度学习语言。

在主干架构方面,YOLO模型经历了重大变化。他们从 Darknet 架构开始,转向 YOLOv4 中的跨阶段部分连接,YOLOv6 和 YOLOv7 中的重新参数化,最后是 DAMO-YOLO 中的神经架构搜索。

最后,YOLO 模型优先考虑平衡速度和准确性,而不是仅仅关注准确性。这种权衡对于跨各种应用程序的实时对象检测至关重要。

YOLO系列平衡了速度和准确性,专注于实时性能而不牺牲检测质量。通过提供不同的模型规模来适应各种应用和硬件需求,这种权衡在 YOLO 版本之间进行了微调。

YOLO 系列始终优先考虑平衡速度和准确性,以在不影响检测质量的情况下提供实时性能。这种权衡在 YOLO 的发展过程中反复出现,每个版本都以不同的方式优化这些目标。

最初的YOLO模型强调高速目标检测。后来的 YOLO 版本,例如 YOLOv2,合并了锚框和passthrough layers,以增强对象定位并提高准确性,同时保留实时功能。YOLOv3 使用多尺度特征提取架构提高了性能,以更好地跨不同尺度进行对象检测。

随着 YOLO 框架的进步,速度和准确性之间的权衡变得更加精细。YOLOv4 和 YOLOv5 等模型引入了新的网络主干、增强的数据增强技术和优化的训练策略。

官方 YOLO 模型通过提供各种模型规模来适应特定应用和硬件要求,从而微调速度和准确性之间的平衡。例如,这些版本通常包括针对边缘设备优化的轻量级模型,牺牲准确性以降低计算复杂性和加快处理时间。

YOLO的未来

YOLO 的未来取决于更苛刻的基准、模型和应用程序的激增、新领域的扩展以及对不同硬件平台的适应性。

基准演进

随着对象检测模型变得更加先进和准确,当前的 COCO 2017 基准可能会被更具挑战性的基准所取代。这是继前两个 YOLO 版本中使用的 VOC 2007 基准的转变之后,说明对基准要求越来越高的需求。

我们在Roboflow 100 (RF100)基准测试中看到了这种情况 ,这是一个众包的开源对象检测基准测试。它包含 100 个数据集、7 个图像域、224,714 张图像和 829 个类别标签,标注时长超过 11,170 个小时。

YOLO 模型和应用的激增

我们预计每年发布的 YOLO 模型数量将会不断增加,应用范围也将更加广泛。随着该框架变得更加通用和强大,它可能会被用于从家用电器到自动驾驶汽车的各个领域。

扩展到新领域

YOLO 模型可以将其功能扩展到对象检测和分割之外,探索视频中的对象跟踪和 3D 关键点估计等领域。

对不同硬件的适应性

YOLO 模型可能会涵盖从物联网设备到高性能计算集群的各种硬件平台。这种适应性将使 YOLO 模型能够在多个上下文中部署,具体取决于应用程序的要求和约束。此外,通过定制模型以适应不同的硬件规格,YOLO对于用户和行业来说可以变得更加易于使用和实用。

文章来源:https://blog.csdn.net/GarryWang1248/article/details/135144679
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。