人工智能
YOLOv7:最先进的物体检测算法?

2022年7月6日将被载入史册,因为在这一天,YOLOv7正式发布。自发布以来,YOLOv7已经成为计算机视觉开发者社区中最热门的话题,并且有充分的理由。YOLOv7已经被认为是物体检测行业的一项里程碑式的成就。
在YOLOv7论文发表后不久,它就成为了最快、最准确的实时物体检测模型。但是什么使得YOLOv7比其前身更出色?是什么使得YOLOv7在执行计算机视觉任务时如此高效?
在本文中,我们将尝试分析YOLOv7模型,并试图找出为什么YOLOv7正在成为行业标准。但在我们能够回答这个问题之前,我们需要了解物体检测的简要历史。
什么是物体检测?
物体检测是计算机视觉的一个分支,它可以识别和定位图像或视频文件中的物体。物体检测是许多应用的基础,包括自动驾驶汽车、监控和机器人。
物体检测模型可以分为两类:单次检测器和多次检测器。
实时物体检测
要真正理解YOLOv7的工作原理,了解其主要目标“实时物体检测”是非常重要的。实时物体检测是现代计算机视觉的关键组成部分。实时物体检测模型尝试实时识别和定位感兴趣的物体。实时物体检测模型使得开发人员能够高效地跟踪视频或实时监控输入中的感兴趣物体。

实时物体检测模型本质上比传统的图像检测模型更先进。前者用于跟踪视频文件中的物体,而后者用于定位和识别静态帧中的物体。
因此,实时物体检测模型非常适合视频分析、自动驾驶、物体计数、多物体跟踪等应用。
什么是YOLO?
YOLO或“你只看一次”是一系列实时物体检测模型。YOLO概念最早是在2016年由Joseph Redmon引入的,它立即成为人们关注的焦点,因为它比现有的物体检测算法更快、更准确。YOLO算法很快就成为计算机视觉行业的标准。

YOLO算法的基本概念是使用一个端到端的神经网络,利用边界框和类别概率来实时进行预测。YOLO与之前的物体检测模型不同,它提出了一个不同的方法来执行物体检测,即重用分类器。
这种方法奏效了,YOLO很快就成为行业标准,因为它与其他实时物体检测算法相比具有显著的性能差距。但是什么使得YOLO如此高效?
与YOLO相比,过去的物体检测算法使用区域提议网络来检测感兴趣的区域。然后,对每个区域分别执行识别过程。因此,这些模型通常对同一图像执行多次迭代,从而导致缺乏准确性和更高的执行时间。另一方面,YOLO算法使用一个单独的全连接层来一次性执行预测。
YOLO如何工作?
有三个步骤可以解释YOLO算法的工作原理。
将物体检测重构为单个回归问题
YOLO算法尝试将物体检测重构为单个回归问题,包括图像像素、类别概率和边界框坐标。因此,算法只需查看图像一次即可预测和定位目标物体。
全局推理图像
此外,当YOLO算法进行预测时,它会全局推理图像。它与基于区域提议和滑动窗口的技术不同,YOLO算法在训练和测试期间可以看到整个图像,并能够编码有关类别及其出现方式的上下文信息。
在YOLO之前,Fast R-CNN是最流行的物体检测算法之一,但它无法看到图像的更大背景,因为它经常将图像中的背景块误认为是物体。YOLO与Fast R-CNN算法相比,在背景错误方面提高了50%的准确率。
泛化物体表示
最后,YOLO算法还旨在泛化图像中的物体表示。因此,当YOLO算法在具有自然图像的数据集上运行并测试其结果时,YOLO比现有的R-CNN模型有了显著的改进。它是因为YOLO具有高度的泛化性,使得它在实现于意外输入或新域时不容易出现问题。
YOLOv7:有什么新特性?
现在我们已经对实时物体检测模型和YOLO算法有了基本的了解,是时候讨论YOLOv7算法了。
优化训练过程
YOLOv7算法不仅尝试优化模型架构,还旨在优化训练过程。它使用优化模块和方法来提高物体检测的准确性,增强训练成本,同时保持干扰成本。这些优化模块可以被称为“可训练的免费袋”。
从粗到细的引导标签分配
YOLOv7算法计划使用新的从粗到细的引导标签分配方法,而不是传统的动态标签分配。它是因为动态标签分配在训练具有多个输出层的模型时会引起一些问题,其中最常见的问题是如何为不同分支及其输出分配动态目标。
模型重参数化
模型重参数化是物体检测中的一个重要概念,其使用通常伴随着一些问题。在训练期间,YOLOv7算法计划使用梯度传播路径来分析模型重参数化策略,这些策略适用于网络中的不同层。
扩展和复合缩放
YOLOv7算法还引入了扩展和复合缩放方法,以利用和有效地使用参数和计算来实现实时物体检测。

YOLOv7:相关工作
实时物体检测
YOLO目前是行业标准,大多数实时物体检测模型都部署YOLO算法和FCOS(全卷积单阶段物体检测)。一个最先进的实时物体检测模型通常具有以下特征:
- 更强大、更快的网络架构。
- 有效的特征集成方法。
- 准确的物体检测方法。
- 强大的损失函数。
- 高效的标签分配方法。
- 高效的训练方法。
YOLOv7算法不使用自监督学习和蒸馏方法,这些方法通常需要大量数据。相反,YOLOv7算法使用可训练的免费袋方法。
模型重参数化
模型重参数化技术被认为是一种集成技术,它将多个计算模块合并到干扰阶段。该技术可以进一步分为两类:模型级集成和模块级集成。
为了获得最终的干扰模型,模型级重参数化技术使用两种实践。第一种实践使用不同的训练数据来训练多个相同的模型,然后平均训练模型的权重。另一种实践在不同迭代中平均模型的权重。
模块级重参数化近来越来越受欢迎,因为它在训练阶段将模块分成不同的模块分支或相同的分支,然后在干扰期间将这些不同的分支集成到一个等效的模块中。
然而,重参数化技术不能应用于所有类型的架构。这就是为什么YOLOv7算法使用新的模型重参数化技术来设计适用于不同架构的相关策略的原因。
模型缩放
模型缩放是指缩放现有模型以适应不同的计算设备。模型缩放通常使用诸如层数(深度)、输入图像大小(分辨率)、特征金字塔数量(阶段)和通道数量(宽度)等因素。这些因素在确保网络参数、干扰速度、计算和模型准确性之间的平衡交易中发挥着至关重要的作用。
最常用的缩放方法之一是NAS或网络架构搜索,它自动从搜索引擎中搜索合适的缩放因子,而无需复杂的规则。使用NAS的主要缺点是它是一种昂贵的方法,用于搜索合适的缩放因子。
几乎每个模型重参数化模型都独立分析和优化单独的缩放因子。因为NAS架构使用非相关的缩放因子。因此,当模型的深度因子被缩放时,块的输出通道也必须被缩放。

上述图表比较了不同模型的扩展高效层聚合网络(E-ELAN)。提出的E-ELAN方法保持了原始架构的梯度传输路径,但旨在使用组卷积来增加添加的特征的基数。该过程可以增强不同地图学习的特征,并可以进一步使计算和参数的使用更加高效。
YOLOv7架构
YOLOv7模型使用YOLOv4、YOLO-R和Scaled YOLOv4模型作为其基础。YOLOv7是通过对这些模型进行实验以改进结果并使模型更加准确而产生的。
扩展高效层聚合网络或E-ELAN
E-ELAN是YOLOv7模型的基本构建块,它源自现有的网络效率模型,主要是ELAN。
在设计高效架构时,主要考虑的因素是参数数量、计算密度和计算量。其他模型还考虑了输入/输出通道比、架构网络中的分支、网络干扰速度、卷积网络张量中的元素数量等因素。
CSPVoNet模型不仅考虑了上述参数,还分析了梯度路径,以便通过启用不同层的权重来学习更多样化的特征。这种方法允许干扰更快、更准确。ELAN架构旨在设计一个高效的网络来控制最短的最长梯度路径,以便网络在学习和收敛方面更加有效。
ELAN已经达到一个稳定的阶段,无论计算块的堆叠数量或梯度路径长度如何。稳定的状态可能会被破坏,如果计算块被无限堆叠,参数利用率将会降低。提出的E-ELAN架构可以解决这个问题,因为它使用扩展、洗牌和合并基数来不断增强网络的学习能力,同时保持原始的梯度路径。
此外,当比较E-ELAN和ELAN的架构时,唯一的区别在于计算块,而转换层的架构保持不变。
E-ELAN提议通过使用组卷积来扩展计算块的基数,并通过组参数将特征图计算和洗牌到组中。然后将这些组的特征图连接在一起。每个组中的通道数量将保持与原始架构相同。
模型缩放用于连接模型
模型缩放有助于调整模型的属性,以生成满足不同干扰速度要求的不同规模的模型。

图中讨论了用于不同连接模型的模型缩放。如图(a)和(b)所示,计算块的输出宽度会随着模型的深度缩放而增加。因此,传输层的输入宽度会增加。如果这些方法应用于连接架构,则缩放过程将在深度上执行,如图(c)所示。
因此,可以得出结论,对于连接模型来说,无法独立分析缩放因子,而必须一起考虑它们。因此,对于连接模型,使用相应的复合模型缩放方法是合适的。此外,当深度因子被缩放时,块的输出通道也必须被缩放。
可训练的免费袋
“免费袋”是一种开发人员用来描述一组可以改变训练策略或成本的方法或技术的术语。那么,YOLOv7中的可训练免费袋是什么?让我们来看看。
计划重参数化卷积
YOLOv7算法使用梯度流传播路径来确定如何理想地将网络与重参数化卷积相结合。这种方法是YOLOv7尝试对抗RepConv算法的尝试,尽管RepConv算法在VGG模型上表现良好,但当直接应用于DenseNet和ResNet模型时,表现较差。
为了识别卷积层中的连接,RepConv算法将3×3卷积和1×1卷积相结合。如果我们分析算法、其性能和架构,我们会发现RepConv会破坏DenseNet中的连接和ResNet中的残差。

上图显示了计划重参数化模型。可以看到,YOLOv7算法发现,具有连接或残余连接的网络层不应具有RepConv算法中的身份连接。因此,使用没有身份连接的RepConvN是可以接受的。
辅助头的粗略和精细损失
深度监督是计算机科学的一个分支,经常在深度网络的训练过程中使用。深度监督的基本原理是添加一个额外的辅助头到网络的中间层,沿 với浅层网络权重和辅助损失作为指导。YOLOv7算法将负责最终输出的头称为主头,将辅助训练的头称为辅助头。
继续,YOLOv7使用不同的标签分配方法。通常,标签分配用于通过直接引用真实值并根据一组规则生成标签。然而,近年来,预测输入的分布和质量在生成可靠标签方面发挥了重要作用。YOLOv7通过使用边界框和真实值的预测来生成物体的软标签。
此外,YOLOv7算法的新标签分配方法使用主头的预测来指导主头和辅助头。标签分配方法有两种提议的策略。
主头引导标签分配器
该策略根据主头的预测结果和真实值计算,然后使用优化来生成软标签。这些软标签然后用作主头和辅助头的训练模型。
该策略的工作原理是基于这样的假设:由于主头具有更大的学习能力,因此它生成的标签应该更具代表性,并且在源和目标之间相关联。
从粗到细的主头引导标签分配器
该策略也根据主头的预测结果和真实值计算,然后使用优化来生成软标签。然而,有一个关键的区别。在这种策略中,有两套软标签:粗略级别和精细标签。
粗略标签是通过放松正样本分配过程的约束来生成的,该过程将更多的网格视为正目标。这样做是为了避免由于辅助头的学习能力较弱而导致信息丢失的风险。

上图解释了YOLOv7算法中可训练免费袋的使用。它显示了辅助头的粗略标签和主头的精细标签。当我们比较具有辅助头的模型(b)与正常模型(a)时,我们会发现(b)中的模式具有辅助头,而(a)中没有。
图(c)显示了常见的独立标签分配器,而图(d)和图(e)分别代表YOLOv7使用的主头引导分配器和从粗到细的主头引导分配器。
其他可训练的免费袋
除了上述的以外,YOLOv7算法还使用了额外的免费袋,尽管它们不是由他们最初提出的。这些包括:
- Conv-Bn-Activation技术中的批量归一化:该策略用于将卷积层直接连接到批量归一化层。
- YOLOR中的隐式知识:YOLOv7将该策略与卷积特征图相结合。
- EMA模型:EMA模型被用作YOLOv7的最终参考模型,尽管其主要用途是用于均值教师方法。
YOLOv7:实验
实验设置
YOLOv7算法使用Microsoft COCO数据集进行训练和验证其物体检测模型,并非所有实验都使用预训练模型。开发人员使用2017年训练数据集进行训练,并使用2017年验证数据集选择超参数。最后,YOLOv7物体检测结果的性能与最先进的物体检测算法进行比较。
开发人员为边缘GPU(YOLOv7-tiny)、普通GPU(YOLOv7)和云GPU(YOLOv7-W6)设计了一个基本模型。此外,YOLOv7算法还使用基本模型进行模型缩放,以满足不同的服务要求,并获得不同的模型。对于YOLOv7算法, neck上的堆叠缩放和提议的复合体用于缩放模型的深度和宽度。
基线
YOLOv7算法使用以前的YOLO模型和YOLOR物体检测算法作为基线。

上图比较了YOLOv7模型与其他物体检测模型的基线,结果非常明显。当与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叠ELAN中的3×3卷积层。下图显示了计划RepConv和3叠ELAN的详细配置。

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

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

上图包含了关于提出的辅助头的研究结果。可以看到,随着辅助损失的增加,模型的整体性能也会增加。此外,YOLOv7模型提出的主头引导标签分配比独立的主头分配策略表现更好。
YOLOv7结果
根据上述实验,以下是YOLOv7的性能结果与其他物体检测算法相比。

上图比较了YOLOv7模型与其他物体检测算法,并且可以清楚地看到YOLOv7在平均精度(AP)与批次干扰方面超越了其他物体检测模型。
此外,下图比较了YOLOv7与其他实时物体检测算法的性能。再次,YOLOv7在整体性能、准确率和效率方面超越了其他模型。

以下是YOLOv7结果和性能的其他一些观察结果。
- YOLOv7-Tiny是YOLOv7家族中最小的模型,具有超过600万个参数。YOLOv7-Tiny的平均精度为35.2%,并且在具有可比参数的情况下超越了YOLOv4-Tiny模型。
- YOLOv7模型具有超过3700万个参数,并且在具有更多参数的模型中表现更好,例如YOLOv4。
- YOLOv7模型在5到160 FPS范围内具有最高的mAP和FPS率。
结论
YOLO或“你只看一次”是现代计算机视觉中最先进的物体检测模型。YOLO算法以其高准确率和效率而闻名,因此在实时物体检测行业中得到了广泛的应用。自2016年首次引入YOLO算法以来,实验使得开发人员能够不断改进模型。YOLOv7模型是YOLO家族的最新成员,也是迄今为止最强大的YOLO算法。在本文中,我们讨论了YOLOv7的基础,并尝试解释了YOLOv7的高效之处。
自2016年以来,实验使得开发人员能够不断改进模型。YOLOv7模型是YOLO家族的最新成员,也是迄今为止最强大的YOLO算法。在本文中,我们讨论了YOLOv7的基础,并尝试解释了YOLOv7的高效之处。












