存根 YOLOv7:最先进的物体检测算法? - 联合人工智能
关注我们.

人工智能

YOLOv7:最先进的物体检测算法?

mm

发布时间

 on

6 年 2022 月 7 日将被视为人工智能历史上的里程碑,因为这一天是 YOLOv7 发布的日子。自推出以来,YOLOv7 一直是计算机视觉开发者社区中最热门的话题,这是有原因的。 YOLOvXNUMX 已经被视为物体检测行业的里程碑。 

不久后, YOLOv7论文发表, 它被证明是最快、最准确的实时异议检测模型。 但 YOLOv7 如何超越其前辈呢? 是什么让 YOLOv7 在执行计算机视觉任务时如此高效? 

在本文中,我们将尝试分析YOLOv7模型,并试图找到为什么YOLOv7现在成为行业标准的答案? 但在回答这个问题之前,我们必须先回顾一下目标检测的简史。 

什么是物体检测?

物体检测是计算机视觉的一个分支 识别并定位图像或视频文件中的对象。 物体检测是许多应用的基础,包括自动驾驶汽车、监控,甚至机器人技术。 

对象检测模型可以分为两个不同的类别, 单次探测器, 多镜头探测器。 

实时物体检测

要真正理解 YOLOv7 的工作原理,我们必须了解 YOLOv7 的主要目标,“实时物体检测”。 实时目标检测是现代计算机视觉的关键组成部分。 实时对象检测模型尝试实时识别和定位感兴趣的对象。 实时对象检测模型使开发人员能够非常有效地跟踪视频或实时监控输入等移动帧中感兴趣的对象。 

实时目标检测模型本质上比传统图像检测模型领先一步。 前者用于跟踪视频文件中的对象,而后者则用于定位和识别静止帧(如图像)内的对象。 

因此,实时对象检测模型对于视频分析、自动驾驶车辆、对象计数、多对象跟踪等非常有效。 

什么是YOLO?

YOLO 或“你只看一次”是一系列实时目标检测模型。 YOLO 概念由 Joseph Redmon 于 2016 年首次提出,几乎立即成为热门话题,因为它比现有的目标检测算法更快、更准确。 不久之后,YOLO 算法就成为计算机视觉行业的标准。 

YOLO 算法提出的基本概念是使用使用边界框和类概率的端到端神经网络来实时进行预测。 YOLO 与之前的目标检测模型不同,它提出了一种通过重新利用分类器来执行目标检测的不同方法。 

由于 YOLO 与其他实时目标检测算法之间的性能差距很大,方法的改变很快就成为了行业标准。 但YOLO如此高效的原因是什么? 

与 YOLO 相比,当时的目标检测算法使用区域提议网络来检测可能感兴趣的区域。 然后分别对每个区域进行识别过程。 因此,这些模型经常对同一图像执行多次迭代,因此缺乏准确性,并且执行时间较长。 另一方面,YOLO 算法使用单个全连接层立即执行预测。 

YOLO 是如何工作的?

YOLO 算法的工作原理分为三个步骤。 

将目标检测重新定义为单一回归问题

YOLO 算法尝试将目标检测重新构建为单一回归问题,包括图像像素、类别概率和边界框坐标。 因此,该算法只需查看图像一次即可预测和定位图像中的目标对象。 

全球形象的原因

此外, YOLO算法进行预测时,会对图像进行全局推理。 它与基于区域提议和滑动技术不同,因为 YOLO 算法在数据集上的训练和测试期间看到完整的图像,并且能够对有关类的上下文信息及其显示方式进行编码。 

在 YOLO 之前,Fast R-CNN 是最流行的对象检测算法之一,但它无法看到图像中更大的上下文,因为它过去常常将图像中的背景块误认为是对象。 与 Fast R-CNN 算法相比,YOLO 准确率提高 50% 当涉及到后台错误时。 

概括对象的表示

最后,YOLO 算法还旨在概括图像中对象的表示。 因此,当 YOLO 算法在包含自然图像的数据集上运行并测试结果时,YOLO 大幅优于现有的 R-CNN 模型。 这是因为 YOLO 具有高度通用性,因此在意外输入或新领域实现时出现故障的可能性很小。 

YOLOv7:有什么新内容?

现在我们已经基本了解了什么是实时目标检测模型,什么是 YOLO 算法,现在是时候讨论 YOLOv7 算法了。 

优化培训流程

YOLOv7算法不仅试图优化模型架构,还旨在优化训练过程。 旨在利用优化模块和方法来提高目标检测的准确性,加强训练成本,同时保持干扰成本。 这些优化模块可以称为 可训练的免费赠品袋。 

从粗到细引导标签分配

YOLOv7算法计划使用新的Coarse to Fine Lead Guided Label Asment来代替传统的 动态标签分配。 之所以如此,是因为通过动态标签分配,训练具有多个输出层的模型会导致一些问题,其中最常见的问题是如何为不同分支及其输出分配动态目标。 

模型重新参数化

模型重参数化是目标检测中的一个重要概念,其使用在训练过程中通常会遇到一些问题。 YOLOv7 算法计划使用以下概念 用于分析模型重参数化策略的梯度传播路径 适用于网络的不同层。 

扩展和复合缩放

YOLOv7算法还引入了 扩展和复合缩放方法 利用并有效地使用实时对象检测的参数和计算。 

YOLOv7:相关工作

实时物体检测

YOLO目前是行业标准,大多数实时目标检测器都部署YOLO算法和FCOS(全卷积单阶段目标检测)。 最先进的实时物体检测器通常具有以下特征

  • 更强更快的网络架构。 
  • 一种有效的特征集成方法。 
  • 一种精确的物体检测方法。 
  • 稳健的损失函数。 
  • 一种高效的标签分配方法。 
  • 一种高效的训练方法。 

YOLOv7算法不使用通常需要大量数据的自监督学习和蒸馏方法。 相反,YOLOv7 算法使用可训练的 bag-of-freebies 方法。 

模型重新参数化

模型重新参数化技术被视为一种在干扰阶段合并多个计算模块的集成技术。 该技术可以进一步分为两类, 模型级集成, 模块级集成。 

现在,为了获得最终的干扰模型,模型级重新参数化技术采用了两种做法。 第一种做法是使用不同的训练数据来训练众多相同的模型,然后对训练后的模型的权重进行平均。 或者,另一种做法是在不同迭代期间平均模型的权重。 

模块级重新参数化最近越来越受欢迎,因为它在训练阶段将模块拆分为不同的模块分支或不同的相同分支,然后在干扰的同时将这些不同的分支集成为等效模块。 

然而,重新参数化技术并不能应用于所有类型的架构。 这就是为什么 YOLOv7算法采用新的模型重参数化技术来设计相关策略 适合不同的架构。 

模型缩放

模型缩放是放大或缩小现有模型以使其适合不同计算设备的过程。 模型缩放通常使用多种因素,例如层数(深度),输入图像的大小(分辨率), 特征金字塔数量(阶段)和通道数(宽度)。 这些因素在确保网络参数、干扰速度、计算和模型准确性的平衡权衡方面发挥着至关重要的作用。 

最常用的缩放方法之一是 NAS 或网络架构搜索 自动从搜索引擎搜索合适的缩放因子,无需任何复杂的规则。 使用 NAS 的主要缺点是,它是一种搜索合适缩放因子的昂贵方法。 

几乎每个模型重新参数化模型都独立地分析个体和独特的缩放因子,甚至独立地优化这些因子。 这是因为 NAS 架构使用不相关的缩放因子。 

值得注意的是,基于串联的模型,例如 语音网络 or 密集网 当模型深度缩放时改变几层的输入宽度。 YOLOv7 基于提议的基于串联的架构,因此使用复合缩放方法。

上图对比了 扩展的高效层聚合网络 (电子ELAN)不同型号。 所提出的E-ELAN方法保持了原始架构的梯度传输路径,但旨在使用组卷积来增加添加特征的基数。 该过程可以增强不同地图学习到的特征,并可以进一步提高计算和参数的使用效率。 

YOLOv7 架构

YOLOv7 模型使用 YOLOv4、YOLO-R 和 Scaled YOLOv4 模型作为基础。 YOLOv7是在这些模型上进行实验的结果,旨在改进结果,并使模型更加准确。 

扩展高效层聚合网络或E-ELAN

E-ELAN 是 YOLOv7 模型的基本构建模块,它源自现有的网络效率模型,主要是 义隆。 

设计高效架构时的主要考虑因素是参数数量、计算密度和计算量。 其他模型还考虑了输入/输出通道比的影响、架构网络中的分支、网络干扰速度、卷积网络张量中的元素数量等因素。 

CSPVoNet 模型不仅考虑上述参数,还分析梯度路径,通过启用不同层的权重来学习更多样的特征。 该方法使干扰变得更快、更准确。 这 ELAN 架构旨在设计一个高效的网络来控制最短最长的梯度路径,使网络能够更有效地学习和收敛。 

无论计算块的堆叠数量和梯度路径长度如何,ELAN 都已达到稳定阶段。 如果计算块无限堆叠,稳定状态可能会被破坏,参数利用率会降低。 这 提出的 E-ELAN 架构可以解决该问题,因为它使用扩展、洗牌和合并基数 在保留原有梯度路径的同时不断增强网络的学习能力。 

此外,在比较E-ELAN和ELAN的架构时, 唯一的区别在于计算块,而过渡层的架构没有改变。 

E-ELAN提出扩展计算块的基数,并通过使用 群卷积。 然后将计算特征图,并根据组参数将其分组,然后将其连接在一起。 每组中的通道数量将与原始架构中的通道数量保持不变。 最后,将添加特征图组以执行基数。 

基于串联的模型的模型缩放

模型缩放有助于 调整模型的属性 这有助于根据要求生成不同尺度的模型,以满足不同的干扰速度。 

该图讨论了不同基于串联的模型的模型缩放。 正如图 (a) 和 (b) 中所示,计算块的输出宽度随着模型深度缩放的增加而增加。 结果,传输层的输入宽度增加。 如果这些方法是在基于串联的架构上实现的,则缩放过程将深入执行,如图 (c) 所示。 

因此可以得出结论,对于基于串联的模型,不可能独立分析缩放因子,而必须将它们一起考虑或分析。 因此,对于基于串联的模型, 适合使用相应的复合模型缩放方法。 此外,当深度因子缩放时,块的输出通道也必须缩放。 

可训练的免费赠品袋 

一袋免费赠品是开发人员用来描述的术语 一组可以改变培训策略或成本的方法或技术 试图提高模型的准确性。 那么 YOLOv7 中这些可训练的免费赠品包是什么? 我们来看一下。 

计划重参数化卷积

YOLOv7算法使用梯度流传播路径来确定 如何理想地将网络与重新参数化卷积结合起来。 YOLov7 的这种方法是一种反击 RepConv算法 虽然在 VGG 模型上表现平稳,但直接应用于 DenseNet 和 ResNet 模型时表现不佳。 

为了识别卷积层中的连接, RepConv算法结合了3×3卷积和1×1卷积。 如果我们分析算法、其性能和架构,我们将观察到 RepConv 破坏了 DenseNet 中的串联,以及 ResNet 中的残差

上图描绘了计划的重新参数化模型。 可以看出,YOLov7算法发现网络中具有级联或残差连接的层不应该在RepConv算法中具有恒等连接。 因此,在没有身份连接的情况下使用 RepConvN 进行切换是可以接受的。 

粗为辅助,细为失铅

深度督导 是计算机科学的一个分支,经常在深度网络的训练过程中发挥作用。 深度监管的根本原则是 在网络的中间层添加一个额外的辅助头 以及以辅助损失为指导的浅层网络权重。 YOLOv7算法将负责最终输出的head称为lead head,辅助head为辅助训练的head。 

接下来,YOLOv7 使用不同的方法进行标签分配。 传统上,标签分配已用于通过直接参考基本事实并基于给定的一组规则来生成标签。 然而,近年来,预测输入的分布和质量对于生成可靠的标签起着重要作用。 YOLOv7生成对象的软标签 通过使用边界框和地面实况的预测。 

此外,YOLOv7算法的新标签分配方法使用引导头的预测来指导引导头和辅助头。 标签分配方法有两种建议的策略。 

引导头引导标签分配器

该策略根据线索头的预测结果和地面实况进行计算,然后使用优化来生成软标签。 然后将这些软标签用作主头和辅助头的训练模型。 

该策略的工作原理是这样的:由于主导头具有更强的学习能力,因此它生成的标签应该更具代表性,并且在源和目标之间具有关联性。 

从粗到细的引导头引导标签分配器

该策略还根据引导头的预测结果和地面实况进行计算,然后使用优化来生成软标签。 然而,有一个关键的区别。 在这个策略中,有两组软标签, 粗级, 精美标签。 

粗标签是通过放松正样本的约束来生成的

将更多网格视为积极目标的分配过程。 这样做是为了避免由于副头学习强度较弱而导致信息丢失的风险。 

上图解释了 YOLOv7 算法中可训练免费赠品包的使用。 副头描绘粗,主导头描绘细。 当我们将带有辅助头的模型(b)与正常模型(a)进行比较时,我们会发现(b)中的模式有一个辅助头,而(a)中则没有。 

图(c)描绘了常见的独立标签分配器,而图(d)和图(e)分别代表了Lead Guided分配器和YOLOv7使用的Coarse-toFine Lead Guided分配器。  

其他可训练的免费赠品袋

除了上面提到的之外,YOLOv7 算法还使用了额外的免费赠品包,尽管它们最初并不是由他们提出的。 他们是

  • Conv-Bn-激活技术中的批量归一化: 该策略用于将卷积层直接连接到批量归一化层。 
  • YOLOR 中的隐性知识: YOLOv7将该策略与卷积特征图结合起来。 
  • EMA型号: EMA 模型在 YOLOv7 中用作最终参考模型,尽管其主要用途是在平均教师方法中使用。 

YOLOv7:实验

实验装置

YOLOv7算法使用 用于训练和验证的 Microsoft COCO 数据集 他们的对象检测模型,并且并非所有这些实验都使用预先训练的模型。 开发人员使用 2017 年的训练数据集进行训练,并使用 2017 年的验证数据集来选择超参数。 最后,将 YOLOv7 目标检测结果的性能与最先进的目标检测算法进行比较。 

开发人员设计了一个基本模型 边缘 GPU (YOLOv7-tiny)、普通 GPU (YOLOv7) 和云 GPU (YOLOv7-W6)。 此外,YOLOv7算法还利用基础模型,根据不同的业务需求进行模型缩放,得到不同的模型。 对于 YOLOv7 算法,堆栈缩放是在颈部完成的,并且所提出的化合物用于扩大模型的深度和宽度。 

基准线

YOLOv7算法使用之前的YOLO模型,并以YOLOR目标检测算法作为其基线。

上图将YOLOv7模型的baseline与其他物体检测模型进行了对比,结果相当明显。 当与 YOLOv4算法,YOLOv7不仅使用的参数减少了75%,计算量也减少了15%,并且精度提高了0.4%。 

与最先进的物体检测器模型的比较

上图显示了 YOLOv7 与移动和通用 GPU 最先进的对象检测模型进行比较的结果。 可以观察到,YOLOv7算法提出的方法具有最佳的速度-准确度权衡分数。 

消融研究:建议的复合缩放方法

上图比较了使用不同策略扩展模型的结果。 YOLOv7模型中的缩放策略将计算块的深度缩放1.5倍,将宽度缩放1.25倍。 

与仅扩大深度的模型相比,YOLOv7 模型在使用更少的参数和计算能力的情况下,性能提高了 0.5%。 另一方面,与仅扩大深度的模型相比,YOLOv7的精度提高了0.2%,但参数数量需要扩大2.9%,计算量增加1.2%。 

拟议的重新参数化模型

为了验证其提出的重新参数化模型的通用性, YOLOv7算法在基于残差和基于串联的模型上使用它进行验证。 对于验证过程,YOLOv7算法使用 3层堆叠ELAN 用于基于串联的模型,CSPDarknet 用于基于残差的模型。 

对于基于级联的模型,该算法用 RepConv 替换 3-stacked ELAN 中的 3×3 卷积层。 下图显示了 Planned RepConv 和 3-stacked ELAN 的详细配置。 

此外,在处理基于残差的模型时,YOLOv7算法使用反向暗块,因为原始暗块没有3×3卷积块。 下图显示了反转 CSPDarknet 的架构,反转了 3×3 和 1×1 卷积层的位置。 

拟议的辅助主管助理损失

对于辅助头的辅助损失,YOLOv7模型比较了辅助头和引导头方法的独立标签分配。 

上图包含了对所提出的辅助头的研究结果。 可以看出,模型的整体性能随着辅助损失的增加而提高。 此外,YOLOv7 模型提出的引导引导标签分配比独立引导分配策略表现更好。 

YOLOv7 结果

基于上述实验,以下是 YOLov7 与其他目标检测算法相比的性能结果。 

上图是YOLOv7模型与其他物体检测算法的对比,可以明显观察到YOLOv7在 平均精度 (AP) vs 批量干扰

此外,下图比较了 YOLOv7 与其他实时物体检测算法的性能。 YOLOv7 在整体性能、准确性和效率方面再次超越了其他模型。 

以下是 YOLOv7 结果和性能的一些额外观察结果。 

  1. YOLOv7-Tiny 是 YOLO 系列中最小的模型,拥有超过 6 万个参数。 YOLOv7-Tiny 的平均精度为 35.2%,在参数相当的情况下优于 YOLOv4-Tiny 模型。 
  2. YOLOv7 模型拥有超过 37 万个参数,其性能优于 YOLov4 等参数更高的模型。 
  3. YOLOv7模型在5至160 FPS范围内具有最高的mAP和FPS率。 

结论

YOLO 或 You Only Look Once 是现代计算机视觉中最先进的对象检测模型。 YOLO算法以其高精度、高效率而著称,因此在实时目标检测行业得到了广泛的应用。 自 2016 年推出第一个 YOLO 算法以来,开发人员通过实验不断改进模型。 

YOLOv7 模型是 YOLO 系列中的最新成员,也是迄今为止最强大的 YOLo 算法。 在本文中,我们讨论了 YOLOv7 的基础知识,并试图解释是什么让 YOLOv7 如此高效。 

“职业工程师,心灵作家”。 Kunal 是一位技术作家,对人工智能和机器学习有着深厚的热爱和理解,致力于通过他引人入胜且信息丰富的文档来简化这些领域的复杂概念。