YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors

Abstract

YOLOv7在5 FPS到160 FPS的范围内,速度和精度都超过了所有已知的目标探测器,在GPU V100的实时目标探测器中具有最高的56.8% AP。YOLOv7-E6目标探测器(56 FPS V100,55.9%美联社)优于变压器探测器SWINL级联面具R-CNN(9.2FPS100,53.9%美联社)速度为509%和2%,和基于卷积探测器ConvNeXt-XL级联面具R-CNN(8.6FPS100,55.2%美联社)551%的速度和0.7%的精度,以及YOLOv7超越: YOLOR,YOLOX,比例,YOLOv5,DINO-5比例R50,视频适配器b和许多其他对象探测器的速度和准确性。此外,我们只在MS COCO数据集上开始训练YOLOv7,而没有使用任何其他数据集或预先训练的权重。源代码在https:// github.com/WongKinYiu/yolov7中发布。

1. Introduction

实时目标检测是计算机视觉中一个非常重要的课题,因为它通常是计算机视觉系统的必要组成部分。例如,多目标跟踪[94,93]、自动驾驶[40,18]、机器人[35,58]、医学图像分析[34,46]等。执行实时目标检测的计算设备通常是一些移动CPU或GPU,以及由主要制造商开发的各种神经处理单元(NPU)。例如,苹果的神经引擎(Apple)、神经计算棒(英特尔)、杰森AI边缘设备(英伟达)、边缘TPU(谷歌)、神经处理引擎(高通)、人工智能处理单元(联发科)和人工智能soc(Kneron)都是npu。上面提到的一些边缘设备专注于加速不同的操作,如普通卷积、深度卷积或MLP操作。在本文中,我们提出的实时目标探测器主要是希望它能够从边缘到云都支持移动的GPU和GPU设备。
近年来,实时目标探测器仍适用于不同的边缘设备。例如,开发MCUNet [49,48]和NanoDet [54]的选择专注于生产低功耗单片机,提高边缘CPU的推理速度。对于YOLOX [21]和YOLOR [81]等方法,他们专注于提高各种gpu的推理速度。近年来,实时目标探测器的发展主要集中在高效架构的设计上。对于可以用于CPU [54,88,84,83]的实时对象检测器,他们的设计主要基于MobileNet [28,66,27],ShuffleNet[92,55],或 GhostNet[25]。另一个主流的实时对象检测器是为GPU [81,21,97]开发的,它们主要使用ResNet [26]、DarkNet [63]或DLA [87],然后使用CSPNet [80]策略来优化架构。本文所提出的方法的发展方向不同于目前主流的实时目标探测器。除了架构优化外,我们提出的方法还将集中于训练过程的优化。我们的重点将是一些优化的模块和优化方法,这可以加强训练成本,以提高目标检测的准确性,但不增加推理成本。我们称所提出的模块和优化方法为可训练的免费赠品包。
近年来,模型重参数化[13,12,29]和动态标签分配[20,17,42]已成为网络训练和目标检测中的重要课题。主要是在提出上述新概念之后,目标检测器的训练发展出许多新的问题。在本文中,我们将提出一些我们已经发现的新问题,并设计出有效的方法来解决它们。对于模型再参数化,我们用梯度传播路径的概念分析了适用于不同网络中各层的模型再参数化策略,并提出了规划的再参数化模型。此外,当我们发现使用动态标签分配技术时,多输出层模型的训练会产生新的问题。也就是说:“如何为不同分支的输出分配动态目标?”针对这个问题,我们提出了一种新的标签分配方法,称为粗到细引导引导标签分配。
本文的贡献总结如下: (1)设计了几种可训练的免费赠品包方法,使实时目标检测能够在不增加推理成本的情况下大大提高检测精度;(2)对于目标检测方法的发展,我们发现了两个新的问题,即重新参数化模块如何取代原始模块,以及动态标签分配策略如何处理对不同输出层的分配。此外,我们还提出了解决这些问题产生的困难的方法;(3)对实时目标检测器提出“扩展”和“复合尺度”方法,可以有效利用参数和计算;(4)我们提出的方法可以有效减少现有实时目标检测器的40%参数和50%的计算,具有更快的推理速度和更高的检测精度。

2. Related work

2.1. Real-time object detectors

目前最先进的实时目标探测器主要基于YOLO [61,62,63]和FCOS [76,77],这是[3,79,81,21,54,85,23]。要想成为最先进的实时目标检测器,通常需要以下特点: (1)更快、更强的网络架构;(2)更有效的特征集成方法[22,97,37,74,59,30,9,45];(3)更准确的检测方法[76,77,69];(4)更鲁棒的损失函数[96,64,6,56,95,57];(5)更有效的标签分配方法[99,20,17,82,42];(6)更有效的训练方法。在本文中,我们不打算探索需要额外数据或大模型的自监督学习或知识蒸馏方法。相反,我们将为与上面提到的与(4)、(5)和(6)相关的最先进的方法设计新的可训练的免费赠品包方法。

2.2. Model re-parameterization

模型再参数化技术[71,31,75,19,33,11,4,24,13,12,10,29,14,78]在推理阶段将多个计算模块合并为一个计算模块。模型重参数化技术可以看作是一种集成技术,我们可以将其分为模块级集成和模型级集成两类。为了获得最终的推理模型,对于模型级重新参数化有两种常见的实践。一是用不同的训练数据训练多个相同的模型,然后对多个训练模型的权重进行平均。另一种方法是对不同迭代次数下的模型的权重进行加权平均。模块提升重参数化是近年来一个比较流行的研究课题。这种方法在训练过程中将一个模块分割为多个相同或不同的模块分支,并在推理过程中将多个分支模块集成到一个完全等价的模块中。然而,并不是所有提出的重新参数化的模块都可以完美地应用于不同的架构。考虑到这一点,我们开发了新的重新参数化模块,并为各种架构设计了相关的应用程序策略。

2.3. Model scaling

模型缩放[72,60,74,73,15,16,2,51]是一种扩大或缩小已经设计的模型,并使其适合于不同的计算设备的方法。模型缩放方法通常使用不同的缩放因子,如分辨率(输入图像大小)、深度(层数)、宽度(通道数)和阶段(特征金字塔数量),从而在网络参数的数量、计算、推理速度和精度方面实现很好的权衡。网络架构搜索(NAS)是目前常用的模型缩放方法之一。NAS可以在搜索空间中自动搜索合适的缩放因子,而无需定义太复杂的规则。模型缩放[72,60,74,73,15,16,2,51]是一种扩大或缩小已经设计的模型,并使其适合于不同的计算设备的方法。模型缩放方法通常使用不同的缩放因子,如分辨率(输入图像大小)、深度(层数)、宽度(通道数)和阶段(特征金字塔数量),从而在网络参数的数量、计算、推理速度和精度方面实现很好的权衡。网络架构搜索(NAS)是目前常用的模型缩放方法之一。NAS可以在搜索空间中自动搜索合适的缩放因子,而无需定义太复杂的规则。

3. Architecture

3.1. Extended efficient layer aggregation networks

在大多数关于设计高效架构的文献中,主要考虑的因素仅仅是参数的数量、计算量和计算密度。从内存访问成本的特点出发,Ma等[55]还分析了输入/输出信道比的影响、体系结构的分支数量以及网络推理速度的元素级操作。Doll‘ar等人。[15]在执行模型缩放时还考虑了激活,即更多地考虑卷积层的输出张量中的元素数量。图2 (b)中CSPVoVNet [79]的设计是VoVNet [39]的一个变体。除了考虑上述基本的设计问题外,CSPVoVNet [79]的体系结构还分析了梯度路径,以使不同层的权重能够学习更多样化的特征。上面描述的梯度分析方法使推断速度更快、更准确。图2 ©中的ELAN [1]考虑了以下设计策略——“如何设计一个高效的网络?”他们得出结论:通过控制最短最长梯度路径,更深的网络可以有效地学习和收敛。在本文中,我们提出了基于ELAN的扩展-ELAN(E-ELAN),其主要架构如图2 (d).所示
在大规模ELAN中,无论梯度路径长度和计算块的堆积数如何,它都已达到稳定状态。如果更多的计算块被无限地堆叠,这种稳定状态可能会被破坏,参数利用率也会降低。提议的E-ELAN采用扩展、洗牌、合并基数,实现了在不破坏原始梯度路径的情况下不断提高网络的学习能力。在体系结构方面,E-ELAN只改变了计算块中的体系结构,而过渡层的体系结构则完全不变。我们的策略是利用群卷积来扩展计算块的通道和基数。我们将应用相同的组参数和信道倍增器用于计算层的所有计算块。然后,将每个计算块计算出的特征图根据设置的组参数g整分为g组,然后将它们连接在一起。此时,每一组特征图中的通道数将与原始体系结构中的通道数相同。最后,我们添加了g组特征映射来执行合并基数。除了维护原始的ELAN设计架构外,E-ELAN还可以指导不同的计算块组来学习更多样化的特性。

3.2. Model scaling for concatenation-based models

模型缩放的主要目的是调整模型的一些属性,生成不同尺度的模型,以满足不同推理速度的需求。例如,高效网[72]的缩放模型考虑了宽度、深度和分辨率。对于缩放-yolov4[79],其缩放模型是调整阶段数。在[15]中,Doll‘ar等人分析了香草卷积和群卷积对参数量和计算量的影响,并据此设计了相应的模型缩放方法。上述方法主要用于诸如PlainNet或ResNet等架构中。当这些架构在执行放大或缩小过程时,每一层的内度和出度都不会发生变化,因此我们可以独立分析每个缩放因子对参数量和计算量的影响。然而,如果这些方法应用于基于连接的架构,我们会发现当扩大或缩小执行深度,基于连接的翻译层的计算块将减少或增加,如图3 (a)和(b).所示
从上述现象可以推断,我们不能对基于连接的模型分别分析不同的比例因子,而必须一起考虑。以放大深度为例,这样的动作会导致过渡层的输入通道和输出通道之间的比率变化,从而导致模型的硬件使用量的减少。因此,我们必须为一个基于连接的模型提出相应的复合模型缩放方法。当我们缩放一个计算块的深度因子时,我们还必须计算该块的输出通道的变化。然后,我们将对过渡层以相同的变化量进行宽度因子缩放,结果如图3 ©.所示我们提出的复合尺度方法可以保持模型在初始设计时的特性,并保持最优结构。

4. Trainable bag-of-freebies

4.1. Planned re-parameterized convolution

尽管RepConv [13]在VGG [68]上取得了优异的性能,但当我们已将它直接应用于ResNet [26]和DenseNet [32]和其他架构时,它的精度将显著降低。我们使用梯度流传播路径来分析重新参数化的卷积应该如何与不同的网络相结合。我们还相应地设计了计划中的重新参数化的卷积。
RepConv实际上结合了3×3卷积,1×1卷积,和在一个卷积层中的身份连接。通过分析RepConv与不同架构的组合和对应的性能,我们发现RepConv中的身份连接破坏了ResNet中的残差和DenseNet中的连接,这为不同的特征图提供了更多的梯度多样性。基于上述原因,我们使用没有身份连接的RepConv(RepConvN)来设计计划中的重新参数化卷积的体系结构。在我们的思维中,当具有残差或连接的卷积层被重新参数化的卷积所取代时,不应该存在身份连接。图4显示了我们在PlainNet和ResNet中使用的“计划重新参数化卷积”的一个示例。对于基于残差的模型和基于连接的模型中完整计划的再参数化卷积实验,它将在消融研究环节中提出。

4.2. Coarse for auxiliary and fine for lead loss

深度监督[38]是一种常用于训练深度网络的技术。其主要概念是在网络的中间层增加额外的辅助磁头,以及以辅助损失为导向的浅层网络权值。即使对于像ResNet [26]和DenseNet [32]这样通常收敛得很好的体系结构,深度监督[70,98,67,47,82,65,86,50]仍然可以显著提高模型在许多任务上的性能。图5 (a)和(b)分别显示了“没有”和“有”深度监督的目标检测器架构。在本文中,我们将负责最终输出的头称为引导头,将用于辅助训练的头称为辅助头。
接下来,我们想讨论一下标签分配的问题。过去,在深度网络的训练中,标签分配通常直接指地面真相,并根据给定的规则生成硬标签。然而,近年来,如果我们以目标检测为例,研究者经常利用网络预测输出的质量和分布,然后结合地面真相考虑,使用一些计算和优化方法来生成可靠的软标签[61,8,36,99,91,44,43,90,20,17,42]。例如,YOLO [61]使用边界盒回归预测和地面真实的IoU作为客观性的软标签。在本文中,我们将将网络预测结果与地面真相一起考虑,然后将软标签分配为“标签分配者”的机制。
无论辅助头或领导头的情况如何,都需要对目标目标进行深度监督培训。在软标签分配人相关技术的开发过程中,我们偶然发现了一个新的衍生问题,即“如何将软标签分配给辅助头和铅头?”据我们所知,相关文献迄今尚未对这一问题进行探讨。目前最常用的方法的结果如图5 ©所示,即将辅助头和铅头分离,然后利用它们自己的预测结果和地面真相执行标签分配。本文提出的方法是一种新的标签分配方法,通过铅头预测来引导辅助头和铅头。换句话说,我们使用铅头预测作为指导,生成从粗到细的层次标签,分别用于辅助头和铅头的学习。所提出的两种深度监督标签分配策略分别如图5 (d)和(e)所示。
铅头引导标签分配器主要根据铅头的预测结果和地面真实值进行计算,并通过优化过程生成软标签。这组软标签将作为辅助头和铅头的目标训练模型。这样做的原因是铅头具有相对较强的学习能力,因此由此产生的软标签应该更能代表源数据与目标之间的分布和相关性。此外,我们还可以将这种学习看作是一种广义剩余学习。通过让较浅的辅助头直接学习铅头已经学习到的信息,铅头将更能专注于学习尚未学习到的残余信息。
从粗到细的铅头引导标签分配人也使用铅头的预测结果和地面真相来生成软标签。然而,在此过程中,我们生成了两组不同的软标签,即粗标签和细标签,其中细标签与铅头引导标签分配者生成的软标签相同,粗标签是通过允许更多的网格被视为积极样本分配过程的约束而生成的。原因是一个辅助头的学习能力不是那么强大的领导头,为了避免失去需要学习的信息,我们将专注于优化召回辅助头的目标检测任务。对于铅头的输出,我们可以从高查全率结果中过滤高精度结果作为最终输出。然而,我们必须注意到,如果粗标签的额外重量接近于对于精细标签,它可能在最终预测时产生不良的先验。因此,为了使这些超粗的正网格的影响更小,我们在解码器中进行了限制,从而使超粗的正网格不能完美地产生软标签。上述机制允许在学习过程中动态调整细标签和粗标签的重要性,并使细标签的可优化上界始终高于粗标签。

4.3. Other trainable bag-of-freebies

在本节中,我们将列出一些可训练的包。这些免费赠品是我们在训练中使用的一些技巧,但最初的概念并不是由我们提出的。这些免费赠品的训练细节将在附录中详细阐述,包括(1)conv-bn激活拓扑中的批处理归一化:这部分主要将批处理归一化层直接连接到卷积层。其目的是将推理阶段批量归一化的均值和方差整合到卷积层的偏差和权重中。(2)YOLOR[81]中的隐式知识结合卷积特征映射和乘法方式:YOLOR中的隐式知识可以通过推理阶段的预计算简化为向量。这个向量可以与之前或随后的卷积层的偏差和权重相结合。(3) EMA模型: EMA是在平均教师[75]中使用的一种技术,在我们的系统中,我们纯粹使用EMA模型作为最终的推理模型。

5. Experiments

5.1. Experimental setup

我们使用微软的COCO数据集进行了实验,并验证了我们的目标检测方法。我们所有的实验都没有使用预先训练过的模型。也就是说,所有的模型都是从头开始训练的。在开发过程中,我们使用train 2017集进行训练,然后使用val 2017集进行验证和选择超参数。最后,我们展示了在2017测试集上的目标检测性能,并将其与最先进的目标检测算法进行了比较。详细的训练参数设置详见附录。
我们为edge GPU、普通GPU和云GPU设计了基本模型,它们分别被称为YOLOv7-tity、YOLOv7和YOLOv7-W6。同时,我们还使用基本模型对不同的服务需求进行模型缩放,并得到不同类型的模型。对于YOLOv7,我们在颈部上进行堆栈缩放,并使用所提出的复合缩放方法对整个模型的深度和宽度进行缩放,并使用它获得YOLOv7-X。对于YOLOv7-W6,我们使用新提出的化合物缩放方法得到了YOLOv7-E6和YOLOv7-D6。此外,我们为YOLOv7-E6使用了建议的EELAN,从而完成了YOLOv7- E6E。由于YOLOv7-tincy是一个面向gpu的边缘架构,因此它将使用泄漏的ReLU作为激活函数。对于其他模型,我们使用SiLU作为激活函数。我们将在附录中详细描述每个模型的比例因子。

5.2. Baselines

我们选择先前版本的YOLO [3,79]和状态下最先进的对象检测器YOLOR [81]作为我们的基线。表1显示了我们提出的YOLOv7模型和那些在相同设置下训练的基线的比较。
从结果中我们可以看出,如果与YOLOv4相比,YOLOv7的参数减少了75%,计算量减少了36%,AP提高了1.5%。如果与最先进的YOLOR-CSP相比,YOLOv7的参数少了43%,计算量少了15%,AP高了0.4%。在微型模型的性能中,与YOLOv4-tiny-31相比,YOLOv7-tini减少了39%的参数数量和49%的计算量,但保持相同的AP。在云GPU模型上,我们的模型仍然可以有更高的AP,同时减少了19%的参数数量和33%的计算量。

5.3. Comparison with state-of-the-arts

我们将所提出的方法与现有的通用gpu和移动gpu的对象检测器进行了比较,结果如表2所示。从表2的结果中我们知道,所提出的方法具有最好的速度-精度权衡。如果我们将YOLOv7-tity-SiLU与YOLOv5-N(r6.1)进行比较,我们的方法在AP上的速度提高了127 fps,准确率提高了10.7%。此外,YOLOv7在帧率为161帧时有51.4%的AP,而相同AP的PPYOLOE-L只有78帧率。在参数使用方面,YOLOv7比PPYOLOE-L少41%。如果我们将YOLOv7-X和YOLOv7-X与99 fps的5-L(r6.1)进行比较,YOLOv7-X可以提高3.9%的AP。如果将YOLOv7- X与类似规模的YOLOv5-X(r6.1)进行比较,那么YOLOv7- X的推理速度要快31 fps。此外,在参数量和计算量方面,与YOLOv5-X(r6.1)相比,YOLOv7-X减少了22%的参数量和8%的计算量,但提高了AP2.2%。
如果我们使用输入分辨率1280将YOLOv7与YOLOR进行比较,YOLOv7-W6的推理速度比YOLOR-P6快8 fps,检测率也提高了1% AP。对于YOLOv7-E6与YOLOv5-X6(r6.1)的比较,前者的AP增益比后者低0.9%,参数减少了45%,计算量减少了63%,推理速度提高了47%。YOLOv7-D6的推理速度与YOLOR-E6接近,但将AP提高了0.8%。YOLOv7-E6E的推理速度与YOLOR-D6接近,但将AP提高了0.3%。

5.4. Ablation study

5.4.1 Proposed compound scaling method

表3显示了在使用不同的模型扩展策略进行放大时获得的结果。其中,我们提出的复合尺度方法是将计算块的深度放大1.5倍,将过渡块的宽度放大1.25倍。如果将我们的方法与只扩大宽度的方法进行比较,我们的方法可以用更少的参数和计算量将AP提高0.5%。如果将我们的方法与只扩大深度的方法进行比较,我们的方法只需要增加2.9%的参数数,计算量增加1.2%,这可以提高0.2%的AP。从表3的结果中可以看出,我们提出的复合缩放策略可以更有效地利用参数和计算

5.4.2 Proposed planned re-parameterized model

为了验证我们所提出的规划再参数化模型的通用性,我们将其分别应用于基于连接的模型和基于残差的模型上进行验证。我们选择的基于连接的模型和基于残差的模型分别为3堆叠的ELAN和CSPDarknet。
在基于连接的模型实验中,我们用RepConv将3堆叠ELAN中不同位置的3×3卷积层替换,详细配置如图6所示。从表4所示的结果中,我们可以看到,所有更高的AP值都出现在我们提出的计划的再参数化模型中。
在处理基于残差的模型的实验中,由于原始的暗块没有3×3 卷积块符合我们的设计策略,我们另外为实验设计了一个反向暗块,其体系结构如图7所示。由于带有暗块和反向暗块的CSPDarknet具有完全相同数量的参数和操作,所以比较起来是公平的。如表5所示的实验结果完全证实了所提出的计划再参数化模型对基于残差的模型同样有效。我们发现RepCSPResNet [85]的设计也符合我们的设计模式。

5.4.3 Proposed assistant loss for auxiliary head

在辅助头实验的辅助损失中,我们比较了铅头和辅助头方法的一般独立标签分配,并比较了所提出的两种铅引导标签分配方法。我们在表6中显示了所有的比较结果。从表6中列出的结果可以清楚地看出,任何增加助手损失的模型都可以显著提高整体性能。此外,在AP、AP50和AP75中,我们提出的引导引导标签分配策略比一般的独立标签分配策略具有更好的性能。对于我们提出的粗标签分配策略和细标签分配策略,它在所有情况下都得到最好的结果。在图8中,我们展示了不同方法在辅助头和铅头预测的客观图。从图8中我们发现,如果辅助头学习引导引导软标签,它确实有助于引导头从一致的目标中提取剩余信息。
在表7中,我们进一步分析了所提出的从粗到细的铅引导标签分配方法对辅助水头解码器的影响。也就是说,我们比较了引入/不引入上界约束的结果。从表中的数字来看,通过距离目标中心的距离来约束目标性的上界的方法可以获得更好的性能。
由于所提出的YOLOv7使用多个金字塔来联合预测目标检测结果,因此我们可以直接将辅助头连接到中间层的金字塔上进行训练。这种类型的训练可以弥补在下一级金字塔预测中可能丢失的信息。基于上述原因,我们在所提出的E-ELAN架构中设计了部分辅助水头。我们的方法是在合并基数之前将一组特征图之后连接辅助头,这种连接可以使新生成的特征图集的权重不会被辅助丢失直接更新。我们的设计允许每个金字塔的铅头仍然从不同大小的物体中获取信息。表8显示了使用两种不同的方法获得的结果,即粗到细的铅引导方法和部分粗到细的铅引导方法。显然,部分从粗到细的导铅法具有较好的辅助效果。

6. Conclusions

本文提出了一种新的实时目标检测器的体系结构和相应的模型缩放方法。此外,我们还发现,目标检测方法的发展过程产生了新的研究课题。在研究过程中,我们发现了重新参数化模块的替换问题和动态标签分配的分配问题。为了解决这一问题,我们提出了一种可训练的免费赠品包方法来提高目标检测的精度。基于此,我们开发了YOLOv7系列的目标检测系统,并获得了最先进的结果。

8. More comparison

YOLOv7在速度和精度从5 FPS到160 FPS的范围内超过了所有已知的目标探测器,在GPU V100已知的实时目标探测器中具有最高的56.8% AP测试/AP或更高。YOLOv7-E6对象探测器(56 FPS V100,55.9%美联社)优于变形探测器双级联面具R-CNN(9.2 FPS A100,53.9%美联社)速度为509%和2%,和基于卷积探测器ConvNeXt-XL级联面具R-CNN(8.6FPS100,55.2%美联社)速度551%和0.7%,精度和YOLOv7超越: YOLOR,YOLOX,比例4,YOLOv5,数据,DINO-5规模-r50,视频适配器b和许多其他对象探测器的速度和准确性。更重要的是,从头开始,我们只在MS COCO数据集上训练YOLOv7,而不使用任何其他数据集或预先训练的权重。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值