YOLOv7在5 FPS到160 FPS的速度和精度上都超过了所有已知的目标检测器,在GPU V100的实时目标检测器中具有最高的56.8% AP。YOLOv7-E6目标检测器(56 FPS V100,55.9%AP)比基于transformer的检测器SWINL Cascade-Mask R-CNN(9.2 FPS A100,53.9%AP)在速度上提高了509%,在精度上提高了2%;比基于卷积检测器的ConvNeXt-XL Cascade-Mask R-CNN(8.6 FPS A100,55.2%AP)在速度上提高了551%,在精度上提高了0.7%。YOLOv7在速度和精度上都优于YOLOR,YOLOX,Scaled-YOLOv4,YOLOv5,DERT, Deformable DETR, DINO-5scale-R50, ViT-Adapter-B和很多其他的检测器。此外,作者只在MS COCO数据集上开始训练YOLOv7,而没有使用任何其他数据集或预先训练的权重。源代码在https:// github.com/WongKinYiu/yolov7中发布。
实时目标检测是计算机视觉中一个非常重要的课题,因为它通常是计算机视觉系统的要组成部分。例如,多目标跟踪、自动驾驶、机器人、医学图像分析等。执行实时目标检测的计算设备通常是一些移动CPU或GPU,以及由主要制造商开发的各种神经处理单元(NPU)。例如,苹果的神经引擎(Apple)、神经计算棒(英特尔)、Jeston AI边缘设备(英伟达)、边缘TPU(谷歌)、神经处理引擎(高通)、人工智能处理单元(联发科)和人工智能soc(Kneron)都是NPU。上面提到的一些边缘设备专注于加速不同的操作,如普通卷积、深度卷积或MLP操作。在本文中,我们提出的实时目标检测器主要是希望它能够从边缘到云都支持移动GPU和GPU设备。
近年来,实时目标检测器仍适用于不同的边缘设备。例如,MCUNet和NanoDet的开发重点是生产低功耗的单片机,提高边缘CPU的推理速度。对于YOLOX 和YOLOR等方法,他们专注于提高各种GPU的推理速度。近年来,实时目标检测器的发展主要集中在高效架构的设计上。对于可以在CPU上使用的实时对象检测器,他们的设计主要基于MobileNet 、 ShuffleNet或 GhostNet。另一个主流的实时对象检测器是为GPU开发的,它们主要使用ResNet、DarkNet或DLA ,然后使用CSPNet 策略来优化架构。本文所提出的方法的发展方向不同于目前主流的实时目标检测器。除了架构优化外,我们提出的方法还将集中于训练过程的优化。我们的重点将是一些优化的模块和优化方法,这可以加强训练成本,以提高目标检测的准确性,但不增加推理成本。我们称所提出的模块和优化方法为可训练的免费包。
图1:与其他实时对象检测器的比较,我们提出的方法达到了最先进的性能。
近年来,模型再参数化和动态标签分配已成为网络训练和目标检测中的重要课题。主要是在提出上述新概念之后,目标检测器的训练发展出许多新的问题。在本文中,我们将提出一些我们已经发现的新问题,并设计出有效的方法来解决它们。对于模型再参数化,我们用梯度传播路径的概念分析了适用于不同网络中各层的模型再参数化策略,并提出了规划的再参数化模型。此外,当我们发现使用动态标签分配技术时,多输出层模型的训练会产生新的问题。也就是说:“如何为不同分支的输出分配动态目标?”针对这个问题,我们提出了一种新的标签分配方法,称为粗到细引导引导标签分配。
本文的贡献总结如下: (1)设计了几种可训练的免费包方法,使实时目标检测能够在不增加推理成本的情况下大大提高检测精度;(2)对于目标检测方法的发展,我们发现了两个新的问题,即重新参数化模块如何取代原始模块,以及动态标签分配策略如何处理对不同输出层的分配。此外,我们还提出了解决这些产生的困难问题的方法;(3)对实时目标检测器提出“扩展”和“复合尺度”方法,可以有效利用参数和计算;(4)我们提出的方法可以有效减少现有实时目标检测器的40%参数和50%的计算,具有更快的推理速度和更高的检测精度。
目前最先进的实时目标检测器主要基于YOLO和FCOS 。要想成为最先进的实时目标检测器,通常需要以下特点: (1)更快、更强的网络架构;(2)更有效的特征集成方法;(3)更准确的检测方法;(4)更鲁棒的损失函数;(5)更有效的标签分配方法;(6)更有效的训练方法。在本文中,我们不打算探索需要额外数据或大模型的自监督学习或知识蒸馏方法。相反,我们将设计新的可训练的、针对与(4)、(5)和(6)相关的最先进的方法的免费包方法。
模型再参数化技术在推理阶段将多个计算模块合并为一个计算模块。模型重参数化技术可以看作是一种集成技术,我们可以将其分为模块级集成和模型级集成两类。为了获得最终的推理模型,对于模型级重新参数化有两种常见的类别。一是用不同的训练数据训练多个相同的模型,然后对多个训练模型的权重进行平均。另一种方法是对不同迭代次数下的模型的权重进行加权平均。模块级别的重参数化是近年来一个比较流行的研究课题。这种方法在训练过程中将一个模块分割为多个相同或不同的模块分支,并在推理过程中将多个分支模块集成到一个完全等价的模块中。然而,并不是所有提出的重新参数化的模块都可以完美地应用于不同的架构。考虑到这一点,我们开发了新的重新参数化模块,并为各种架构设计了相关的应用程序策略。
模型缩放是一种扩大或缩小已经设计的模型,并使其适合于不同的计算设备的方法。模型缩放方法通常使用不同的缩放因子,如分辨率(输入图像大小)、深度(层数)、宽度(通道数)和阶段(特征金字塔数量),从而在网络参数的数量、计算、推理速度和精度方面实现很好的权衡。网络架构搜索(NAS)是目前常用的模型缩放方法之一。NAS可以在搜索空间中自动搜索合适的缩放因子,而无需定义太复杂的规则。NAS的缺点是它需要非常昂贵的计算来完成对模型缩放因子的搜索。研究者分析了缩放因子与参数和操作的数量之间的关系,试图直接估计一些规则,从而得到模型缩放所需的缩放因子。通过查阅文献,我们发现几乎所有的模型缩放方法都独立分析单个尺度因子,甚至复合缩放类别中的方法也独立优化了尺度因子。这样做的原因是因为大多数流行的NAS体系结构处理的比例因子的相关性不是很大。我们观察到,所有基于连接的模型,如DenseNet 或VoVNet,当这些模型的深度被缩放时,都会改变某些层的输入宽度。由于所提出的架构是基于连接的,我们必须为该模型设计一种新的复合缩放方法。
在大多数关于设计高效架构的文献中,主要考虑的因素仅仅是参数的数量、计算量和计算密度。从内存访问成本的特点出发,Ma等人还分析了输入/输出信道比的影响、架构分支的数量以及对网络推理速度的元素级操作。Dollar等人在执行模型缩放时还考虑了激活,即更多地考虑卷积层的输出张量中的元素数量。图2 (b)中CSPVoVNet的设计是VoVNet的一个变体。除了考虑上述基本的设计问题外,CSPVoVNet的体系结构还分析了梯度路径,以使不同层的权重能够学习更多样化的特征。上面描述的梯度分析方法使推断速度更快、更准确。图2 ©中的ELAN 考虑了以下设计策略——“如何设计一个高效的网络?”他们得出结论:通过控制最短最长梯度路径,更深的网络可以有效地学习和收敛。在本文中,我们提出了基于ELAN的扩展-ELAN(E-ELAN),其主要架构如图2 (d)所示。
图2:扩展高效的层聚合网络。所提出的扩展ELAN(E-ELAN)根本没有改变原体系结构的梯度传输路径,而是使用群卷积来增加所添加特征的基数,并以拆分和合并基数的方式组合不同群的特征。这种操作方法可以增强不同特征映射所学习到的特征,提高参数和计算的使用能力。
在大规模ELAN中,无论梯度路径长度和计算块的堆积数如何,它都已达到稳定状态。如果更多的计算块被无限地堆叠,这种稳定状态可能会被破坏,参数利用率也会降低。所提出的E-ELAN利用扩展、混乱、合并基数来实现在不破坏原有梯度路径的情况下,持续增强网络学习能力的能力。在体系结构方面,E-ELAN只改变了计算块中的体系结构,而过渡层的体系结构则完全不变。我们的策略是利用群卷积来扩展计算块的通道和基数。我们将应用相同的组参数和信道倍增器,用于一个计算层的所有计算块。然后,将每个计算块计算出的特征图根据设置的组参数整分为g组,然后将它们连接在一起。此时,每一组特征图中的通道数将与原始体系结构中的通道数相同。最后,我们添加了g组特征映射来执行合并基数。除了维护原始的ELAN设计架构外,E-ELAN还可以指导不同的计算块组来学习更多样化的特性。
模型缩放的主要目的是调整模型的一些属性,生成不同尺度的模型,以满足不同推理速度的需求。例如,EfficientNet的缩放模型考虑了宽度、深度和分辨率。对于Scaled-yolov4,其缩放模型是调整阶段数。Dollar等人分析了常规卷积和群卷积对参数量和计算量的影响,并据此设计了相应的模型缩放方法。
上述方法主要用于诸如PlainNet或ResNet等架构中。当这些架构在执行放大缩放或缩小缩放时,每一层的入度和出度都不会发生变化,因此我们可以独立分析每个缩放因子对参数量和计算量的影响。然而,如果这些方法应用于基于连接的架构,我们会发现在深度上执行扩大或缩小操作时,基于连接的过渡层的计算块将减少或增加,如图3 (a)和(b)所示。
图3:基于连接的模型的模型缩放。从(a)到(b),我们观察到,当在基于连接的模型上进行深度缩放时,计算块的输出宽度也会增加。这种现象会导致后续传输层的输入宽度增加。因此,我们提出了©,即在基于连接的模型上进行模型缩放时,只需要调整计算块中的深度,并对剩余的传输层进行相应的宽度缩放。
从上述现象可以推断,我们不能对基于连接的模型分别分析不同的比例因子,而必须一起考虑。以放大深度为例,这样的动作会导致过渡层的输入通道和输出通道之间的比率变化,从而导致模型的硬件使用量的减少。因此,我们必须为一个基于连接的模型提出相应的复合模型缩放方法。当我们缩放一个计算块的深度因子时,我们还必须计算该块的输出通道的变化。然后,我们将对过渡层以相同的变化量进行宽度因子缩放,结果如图3 ©所示。我们提出的复合尺度方法可以保持模型在初始设计时的特性,并保持最优结构。
尽管RepConv在VGG 上取得了优异的性能,但当我们将它直接应用于ResNet 和DenseNet 和其他架构时,它的精度将显著降低。我们使用梯度流传播路径来分析重新参数化的卷积应该如何与不同的网络相结合。我们还相应地设计了计划中的重新参数化的卷积。
RepConv实际上结合了3×3卷积,1×1卷积,和在一个卷积层中的直接连接。通过分析RepConv与不同架构的组合和对应的性能,我们发现RepConv中的直接连接破坏了ResNet中的残差和DenseNet中的合并连接,这为不同的特征图提供了更多的梯度多样性。基于上述原因,我们使用没有直接连接的RepConv(RepConvN)来设计计划中的重新参数化卷积的体系结构。在我们的思维中,当具有残差或合并连接的卷积层被重新参数化的卷积所取代时,不应该存在直接连接。图4显示了我们在PlainNet和ResNet中使用的“计划重新参数化卷积”的一个示例。对于基于残差的模型和基于串联的模型中完整计划的再参数化卷积实验,它将在消融研究环节中提出。
图4:计划中的重新参数化的模型。在提出的计划再参数化模型中,我们发现一个具有残余或合并连接的层,它的RepConv不应该具有直接连接。在这些情况下,它可以被不包含直接连接的RepConvN替换。
深度监督是一种常用于训练深度网络的技术。其主要概念是在网络的中间层增加额外的辅助头,以及以辅助损失为导向的浅层网络权值。即使对于像ResNet 和DenseNet这样通常收敛得很好的体系结构,深度监督仍然可以显著提高模型在许多任务上的性能。图5 (a)和(b)分别显示了“没有”和“有”深度监督的目标检测器架构。在本文中,我们将负责最终输出的头称为引导头,将用于辅助训练的头称为辅助头。
图5:粗辅助头与细引导头的标签分配器。与普通模型(a)相比,(b)中的图式有辅助头。与通常的独立标签分配器©不同,我们提出了(d)引导指导的标签分配器和(e)从粗到细的引导指导的标签分配器。通过引导头预测真实目标和背景,对所提出的标签分配器进行优化,同时得到训练的引导头和辅助头的标签。详细的从粗到细的实现方法和约束设计细节将在附件附录中详细阐述。
接下来,我们想讨论一下标签分配的问题。过去,在深度网络的训练中,标签分配通常直接指目标和背景,并根据给定的规则生成硬标签。然而,近年来,如果我们以目标检测为例,研究者经常利用网络预测输出的数值和分布,然后结合目标和背景考虑,使用一些计算和优化方法来生成可靠的软标签。例如,YOLO使用边界盒回归预测和地面真实的IoU作为客观性的软标签。在本文中,我们将网络预测结果与真实标签一起考虑,然后将软标签分配为标签分配的机制。
无论辅助头或引导头的情况如何,都需要对目标任务进行深度监督培训。在软标签分配器相关技术的开发过程中,我们偶然发现了一个新的衍生问题,即“如何将软标签分配给辅助头和引导头?”据我们所知,相关文献迄今尚未对这一问题进行探讨。目前最流行的方法的结果如图5©所示,将辅助头和引导头分开,然后利用各自的预测结果和真值进行标签赋值。本文提出的方法是一种新的标签分配方法,通过引导头预测来引导辅助头和引导头。换句话说,我们使用引导头预测作为指导,生成从粗到细的层次标签,分别用于辅助头和引导头的学习。所提出的两种深度监督标签分配策略分别如图5 (d)和(e)所示。
引导头指导标签分配器主要根据引导头的预测结果和真实值进行计算,并通过优化过程生成软标签。这组软标签将作为辅助头和引导头的目标训练模型。这样做的原因是引导头具有相对较强的学习能力,因此由此产生的软标签应该更能代表源数据与目标之间的分布和相关性。此外,我们还可以将这种学习看作是一种广义残差学习。通过让较浅的辅助头直接学习引导头已经学习到的信息,引导头将更能专注于学习尚未学习到的残差信息。
从粗到细的引导头引导标签分配器也使用引导头的预测结果和真值来生成软标签。然而,在此过程中,我们生成了两组不同的软标签,即粗标签和细标签,其中细标签与引导头引导标签分配器生成的软标签相同,粗标签是通过允许更多的网格被当作积极样本分配过程的约束来生成的。原因是一个辅助头的学习能力不是和引导头一样强大,为了避免丢失需要学习的信息,我们将专注于优化召回辅助头的目标检测任务。对于引导头的输出,我们可以从高查全率结果中过滤高精度结果作为最终输出。但必须注意的是,如果粗标签附加权重接近细标附加权重,则可能在最终预测时产生较差的先验效果。因此,为了使这些超粗的正网格的影响更小,我们在解码器中进行了限制,从而使超粗的正网格不能完美地产生软标签。上述机制允许在学习过程中动态调整细标签和粗标签的重要性,并使细标签的可优化上界始终高于粗标签。
表1:与基准目标检测器的比较
Model | #Param. | FLOPs | Size | A P v a l AP^{val} APval | A P 50 v a l AP^{val}_{50} AP50val | A P 75 v a l AP^{val}_{75} AP75val | A P S v a l AP^{val}_{S} APSval | A P M v a l AP^{val}_{M} APMval | A P L v a l AP^{val}_{L} APLval |
---|---|---|---|---|---|---|---|---|---|
YOLOv4 | 64.4M | 142.8G | 640 | 49.7% | 68.2% | 54.3% | 32.9% | 54.8% | 63.7% |
YOLOR-u5(r6.1) | 46.5M | 109.1G | 640 | 50.2% | 68.7% | 54.6% | 33.2% | 55.5% | 63.7% |
YOLOv4-CSP | 52.9M | 120.4G | 640 | 50.3% | 68.6% | 54.9% | 34.2% | 55.6% | 65.1% |
YOLOR-CSP | 52.9M | 120.4G | 640 | 50.8% | 69.5% | 55.3% | 33.7% | 56.0% | 65.4% |
YOLOv7 | 36.9M | 104.7G | 640 | 51.2% | 69.7% | 55.5% | 35.2% | 56.0% | 66.7% |
improvement | -43% | -15% | - | +0.4 | +0.2 | +0.2 | +1.5 | = | +1.3 |
YOLOR-CSP-X | 96.9M | 226.8G | 640 | 52.7% | 71.3% | 57.4% | 36.3% | 57.5% | 68.3% |
YOLOv7-X | 71.3M | 189.9G | 640 | 52.9% | 71.1% | 57.5% | 36.9% | 57.7% | 68.6% |
improvement | -36% | -19% | - | +0.2 | -0.2 | +0.1 | +0.6 | +0.2 | +0.3 |
YOLOv4-tiny | 6.1 | 6.9 | 416 | 24.9% | 42.1% | 25.7% | 8.7% | 28.4% | 39.2% |
YOLOv7-tiny | 6.2 | 5.8 | 416 | 35.2% | 52.8% | 37.3% | 15.7% | 38.0% | 53.4% |
improvement | +2% | -19% | - | +10.3 | +10.7 | +11.6 | +7.0 | +9.6 | +14.2 |
YOLOv4-tiny-3I | 8.7 | 5.2 | 320 | 30.8% | 47.3% | 32.2% | 10.9% | 31.9% | 51.5% |
YOLOv7-tiny | 6.2 | 3.5 | 320 | 30.8% | 47.3% | 32.2% | 10.0% | 31.9% | 52.2% |
improvement | -39% | -49% | - | = | = | = | -0.9 | = | +0.7 |
YOLOR-E6 | 115.8M | 683.2G | 1280 | 55.7% | 73.2% | 60.7% | 40.1% | 60.4% | 69.2% |
YOLOv7-E6 | 97.2M | 515.2G | 1280 | 55.9% | 73.5% | 61.1% | 40.6% | 60.3% | 70.0% |
improvement | -19% | -33% | - | +0.2 | +0.3 | +0.4 | +0.5 | -0.1 | +0.8 |
YOLOR-D6 | 151.7M | 935.6G | 1280 | 56.1% | 73.9% | 61.2% | 42.4% | 60.5% | 69.9% |
YOLOv7-D6 | 154.7M | 806.8G | 1280 | 56.3% | 73.8% | 61.4% | 41.3% | 60.6% | 70.1% |
YOLOv7-E6E | 151.7M | 843.2G | 1280 | 56.8% | 74.4% | 62.1% | 40.8% | 62.1% | 70.6% |
improvement | = | -11% | - | +0.7 | +0.5 | +0.9 | -1.6 | +1.6 | +0.7 |
在本节中,我们将列出一些可训练的免费包。这些免费包是我们在训练中使用的一些技巧,但最初的概念并不是由我们提出的。这些免费包的训练细节将在附录中详细阐述,包括(1)conv-bn激活拓扑中的批归一化:这部分主要将批归一化层直接连接到卷积层。其目的是将推理阶段批量归一化的均值和方差整合到卷积层的偏差和权重中。(2)YOLOR中的隐式知识结合卷积特征映射和乘法方式:YOLOR中的隐式知识可以通过推理阶段的预计算简化为向量。这个向量可以与之前或后续卷积层的偏置和权重相结合。(3) EMA模型: EMA是在平均教师[75]中使用的一种技术,在我们的系统中,我们纯粹使用EMA模型作为最终的推理模型。
我们使用微软的COCO数据集进行了实验,并验证了我们的目标检测方法。我们所有的实验都没有使用预先训练过的模型。也就是说,所有的模型都是从头开始训练的。在开发过程中,我们使用train 2017集进行训练,然后使用val 2017集进行验证和选择超参数。最后,我们展示了在test 2017年集上的目标检测性能,并将其与最先进的目标检测算法进行了比较。详细的训练参数设置详见附录。
我们为边缘端GPU、普通GPU和云GPU设计了基本模型,它们分别被称为YOLOv7-tity、YOLOv7和YOLOv7-W6。同时,我们还使用基本模型对不同的服务需求进行模型缩放,并得到不同类型的模型。对于YOLOv7,我们在颈部上进行堆栈缩放,使用所提出的复合缩放方法对整个模型的深度和宽度进行缩放,获得YOLOv7-X。对于YOLOv7-W6,我们使用新提出的复合缩放方法得到了YOLOv7-E6和YOLOv7-D6。此外,我们为YOLOv7-E6使用了建议的E-ELAN,从而完成了YOLOv7- E6E。由于YOLOv7-tiny是一个面向边缘端GPU的架构,因此它将使用ReLU作为激活函数。对于其他模型,我们使用SiLU作为激活函数。我们将在附录中详细描述每个模型的比例因子。
表2:最先进的实时目标检测器的比较
Model | #Param. | FLOPs | Size | FPS | A P t e s t / A P v a l AP^{test}/AP^{val} APtest/APval | A P 50 t e s t AP^{test}_{50} AP50test | A P 75 t e s t AP^{test}_{75} AP75test | A P S t e s t AP^{test}_{S} APStest | A P M t e s t AP^{test}_{M} APMtest | A P L t e s t AP^{test}_{L} APLtest |
---|---|---|---|---|---|---|---|---|---|---|
YOLOX-S | 9.0M | 26.8G | 640 | 102 | 40.5%/40.5% | - | - | - | - | - |
YOLOX-M | 25.3M | 73.8G | 640 | 81 | 47.2%/46.9% | - | - | - | - | - |
YOLOX-L | 54.2M | 155.6G | 640 | 69 | 50.1% /49.7% | - | - | - | - | - |
YOLOX-X | 99.1M | 281.9G | 640 | 58 | 51.5%/51.1% | - | - | - | - | - |
PPYOLOE-S | 7.9M | 17.4G | 640 | 208 | 43.1%/42.7% | 60.5% | 46.6% | 23.2% | 46.4% | 56.9% |
PPYOLOE-M | 23.4M | 49.9G | 640 | 123 | 48.9%/48.6% | 66.5% | 53.0% | 28.6% | 52.9% | 63.8% |
PPYOLOE-L | 52.2M | 110.1G | 640 | 78 | 51.4%/50.9% | 68.9% | 55.6% | 31.4% | 55.3% | 66.1% |
PPYOLOE-X | 98.4M | 206.6G | 640 | 45 | 52.2%/51.9% | 69.9% | 56.5% | 33.3% | 56.3% | 66.4% |
YOLOv5-N (r6.1) | 1.9M | 4.5G | 640 | 159 | -/28.0% | - | - | - | - | - |
YOLOv5-S (r6.1) | 7.2M | 16.5G | 640 | 156 | -/37.4% | - | - | - | - | - |
YOLOv5-M (r6.1) | 21.2M | 49.0G | 640 | 122 | -/45.4% | - | - | - | - | - |
YOLOv5-L (r6.1) | 46.5M | 109.1G | 640 | 99 | -/49.0% | - | - | - | - | - |
YOLOv5-X (r6.1) | 86.7M | 205.7G | 640 | 83 | -/50.7% | - | - | - | - | - |
YOLOR-CSP | 52.9M | 120.4G | 640 | 106 | 51.1%/50.8% | 69.6% | 55.7% | 31.7% | 55.3% | 64.7% |
YOLOR-CSP-X | 96.9M | 226.8G | 640 | 87 | 53.0%/52.7% | 71.4% | 57.9% | 33.7% | 57.1% | 66.8% |
YOLOv7-tiny-SiLU | 6.2M | 13.8G | 640 | 286 | 38.7%/38.7% | 56.7% | 41.7% | 18.8% | 42.4% | 51.9% |
YOLOv7 | 36.9M | 104.7G | 640 | 161 | 51.4%/51.2% | 69.7% | 55.9% | 31.8% | 55.5% | 65.0% |
YOLOV7-X | 71.3M | 189.9G | 640 | 114 | 53.1%/52.9% | 71.2% | 57.8% | 33.8% | 57.1% | 67.4% |
YOLOv5-N6 (r6.1) | 3.2M | 18.4G | 1280 | 123 | -/36.0% | - | - | - | - | - |
YOLOv5-S6 (r6.1) | 12.6M | 67.2G | 1280 | 122 | -/44.8% | - | - | - | - | - |
YOLOv5-M6 (r6.1) | 35.7M | 200.0G | 1280 | 90 | -/51.3% | - | - | - | - | - |
YOLOv5-L6 (r6.1) | 76.8M | 445.6G | 1280 | 63 | -/53.7% | - | - | - | - | - |
YOLOv5-X6 (r6.1) | 140.7M | 839.2G | 1280 | 38 | -/55.0% | - | - | - | - | - |
YOLOR-P6 | 37.2M | 325.6G | 1280 | 76 | 53.9%/53.5% | 71.4% | 58.9% | 36.1% | 57.7% | 65.6% |
YOLOR-W6 | 79.8G | 453.2G | 1280 | 66 | 55.2%/54.8% | 72.7% | 60.5% | 37.7% | 59.1% | 67.1% |
YOLOR-E6 | 115.8M | 683.2G | 1280 | 45 | 55.8%/55.7% | 73.4% | 61.1% | 38.4% | 59.7% | 67.7% |
YOLOR-D6 | 151.7M | 935.6G | 1280 | 34 | 56.5%/56.1% | 74.1% | 61.9% | 38.9% | 60.4% | 68.7% |
YOLOv7-W6 | 70.4M | 360.0G | 1280 | 84 | 54.9%/54.6% | 72.6% | 60.1% | 37.3% | 58.7% | 67.1% |
YOLOv7-E6 | 97.2M | 515.2G | 1280 | 56 | 56.0%/55.9% | 73.5% | 61.2% | 38.0% | 59.9% | 68.4% |
YOLOv7-D6 | 154.7M | 806.8G | 1280 | 44 | 56.6%/56.3% | 74.0% | 61.8% | 38.8% | 60.1% | 69.5% |
YOLOv7-E6E | 151.7M | 843.2G | 1280 | 36 | 56.8%/56.8% | 74.4% | 62.1% | 39.3% | 60.5% | 69.0% |
1.我们的FLOPs是由矩形输入分辨率计算的,如640×640或1280×1280。
2.我们的推理时间是通过使用信箱调整输入图像的大小,使其长边等于640或1280。
我们选择先前版本的YOLO 和状态下最先进的对象检测器YOLOR作为我们的基线。表1显示了我们提出的YOLOv7模型和那些在相同设置下训练的基线的比较。
从结果中我们可以看出,如果与YOLOv4相比,YOLOv7的参数减少了75%,计算量减少了36%,AP提高了1.5%。如果与最先进的YOLOR-CSP相比,YOLOv7的参数少了43%,计算量少了15%,AP高了0.4%。在微型模型的性能中,与YOLOv4-tiny-31相比,YOLOv7-tiny减少了39%的参数数量和49%的计算量,但保持相同的AP。在云GPU模型上,我们的模型仍然可以有更高的AP,同时减少了19%的参数数量和33%的计算量。
我们将所提出的方法与现有的通用GPU和移动GPU的对象检测器进行了比较,结果如表2所示。从表2的结果中我们知道,所提出的方法具有最好的速度-精度权衡。如果我们将YOLOv7-tity-SiLU与YOLOv5-N(r6.1)进行比较,我们的方法在速度提高了127 fps,在AP上的准确率提高了10.7%。此外,YOLOv7在161fps帧率下有51.4%的AP,而相同AP的PPYOLOE-L只有78fps的帧率。在参数使用方面,YOLOv7比PPYOLOE-L少41%。如果我们将114 fps的推理速度的YOLOv7-X与99 fps推理速度的YOLOv5-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%的计算量,但提高了AP 2.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%。
表3显示了使用不同的模型扩展策略进行放大时获得的结果。其中,我们提出的复合尺度方法是将计算块的深度放大1.5倍,将过渡块的宽度放大1.25倍。如果将我们的方法与只扩大宽度的方法进行比较,我们的方法可以用更少的参数和计算量将AP提高0.5%。如果将我们的方法与只扩大深度的方法进行比较,我们的方法只需要增加2.9%的参数数,计算量增加1.2%,这可以提高0.2%的AP。从表3的结果中可以看出,我们提出的复合缩放策略可以更有效地利用参数和计算。
表3:本文提出的模型缩放的消融研究
Model | #Param. | FLOPs | Size | A P v a l AP^{val} APval | A P 50 v a l AP^{val}_{50} AP50val | A P 75 v a l AP^{val}_{75} AP75val |
---|---|---|---|---|---|---|
base (v7-X light) | 47.0M | 125.5G | 640 | 51.7% | 70.1% | 56.0% |
width only (1.25 ω \omega ω ) | 73.4M | 195.5G | 640 | 52.4% | 70.9% | 57.1% |
depth only (2.0 d) | 69.3M | 187.6G | 640 | 52.7% | 70.8% | 57.3% |
compound (v7-X) | 71.3M | 189.9G | 640 | 52.9% | 71.1% | 57.5% |
improvement | - | - | - | +1.2 | +1.0 | +1.5 |
为了验证我们所提出的计划再参数化模型的通用性,我们将其分别应用于基于连接的模型和基于残差的模型上进行验证。我们选择的基于连接的模型和基于残差的模型分别为3堆叠的ELAN和CSPDarknet。
在基于连接的模型实验中,我们用RepConv将3堆叠ELAN中不同位置的3×3卷积层替换,详细配置如图6所示。从表4所示的结果中,我们可以看到,所有更高的AP值都出现在我们提出的计划的再参数化模型中。
在基于残差模型的实验中,由于原暗块没有符合我们设计策略的3 × 3卷积块,我们为实验单独设计了一个反向暗块,其结构如图7所示。由于带有暗块和反向暗块的CSPDarknet具有完全相同数量的参数和操作,所以比较起来是公平的。表5所示的实验结果完全证实了所提出的计划再参数化模型对基于残差的模型同样有效。我们发现RepCSPResNet的设计也符合我们的设计模式。
图6:计划中的Repconv 3堆叠的ELAN。蓝色的圆圈是我们用RepConv取代Conv的位置
表4:计划修复连接模型的消融研究
Model | A P v a l AP^{val} APval | A P 50 v a l AP^{val}_{50} AP50val | A P 75 v a l AP^{val}_{75} AP75val | A P S v a l AP^{val}_{S} APSval | A P M v a l AP^{val}_{M} APMval | A P L v a l AP^{val}_{L} APLval |
---|---|---|---|---|---|---|
base (3-S ELAN) | 52.26% | 70.41% | 56.77% | 35.81% | 57.00% | 67.59% |
Figure 6(a) | 52.18% | 70.34% | 56.90% | 35.71% | 56.83% | 67.51% |
Figure 6(b) | 52.30% | 70.30% | 56.92% | 35.76% | 56.95% | 67.74% |
Figure 6(c) | 52.33% | 70.56% | 56.91% | 35.90 % | 57.06 % | 67.50% |
Figure 6(d) | 52.17% | 70.32% | 56.82% | 35.33% | 57.06 % | 68.09% |
Figure 6(e) | 52.23% | 70.20% | 56.81% | 35.34% | 56.97% | 66.88% |
卷积块符合我们的设计策略,我们另外为实验设计了一个反向暗块,其体系结构如图7所示。由于带有暗块和反向暗块的CSPDarknet具有完全相同数量的参数和操作,所以比较起来是公平的。表5所示的实验结果完全证实了所提出的计划再参数化模型对基于残差的模型同样有效。我们发现RepCSPResNet 的设计也符合我们的设计模式。
图7:反向CSPDarknet。我们将暗块中1×1和3×3卷积层的位置进行反转,以适应我们计划的再参数化模型设计策略。
表5:计划残残留模型的消融研究。
Model | A P v a l AP^{val} APval | A P 50 v a l AP^{val}_{50} AP50val | A P 75 v a l AP^{val}_{75} AP75val | A P S v a l AP^{val}_{S} APSval | A P M v a l AP^{val}_{M} APMval | A P L v a l AP^{val}_{L} APLval |
---|---|---|---|---|---|---|
base (YOLOR-W6) | 54.82% | 72.39% | 59.95% | 39.68% | 59.38% | 68.30% |
RepCSP | 54.67% | 72.50% | 59.58% | 40.22% | 59.61% | 67.87% |
RCSP | 54.36% | 71.95% | 59.54% | 40.15% | 59.02% | 67.44% |
RepRCSP | 54.85% | 72.51 % | 60.08% | 40.53% | 59.52% | 68.06% |
base (YOLOR-CSP) | 50.81% | 69.47% | 55.28% | 33.74% | 56.01% | 65.38% |
RepRCSP | 50.91% | 69.54% | 55.55% | 34.44% | 55.74% | 65.46% |
图8:不同方法预测辅助头和引头的目标图。
在辅助头实验的辅助损失中,我们比较了引导头和辅助头方法的一般独立标签分配,并比较了所提出的两种引导标签分配方法。我们在表6中显示了所有的比较结果。从表6中列出的结果可以清楚地看出,任何增加辅助损失的模型都可以显著提高整体性能。此外,在AP、AP50和AP75中,我们提出的引导引导标签分配策略比一般的独立标签分配策略具有更好的性能。对于我们提出的粗辅助和细引导标签分配策略,它在所有情况下都得到最好的结果。在图8中,我们展示了不同方法在辅助头和引导头预测的目标图。从图8中我们发现,如果辅助头学习引导引导软标签,它确实有助于引导头从一致的目标中提取剩余信息。
表6:建议的辅助头的消融研究。
Model | Size | A P v a l AP^{val} APval | A P 50 v a l AP^{val}_{50} AP50val | A P 75 v a l AP^{val}_{75} AP75val |
---|---|---|---|---|
base (v7-E6) | 1280 | 55.6% | 73.2% | 60.7% |
independent | 1280 | 55.8% | 73.4% | 60.9% |
lead guided | 1280 | 55.9% | 73.5% | 61.0% |
coarse-to-fine lead guided | 1280 | 55.9% | 73.5% | 61.1% |
improvement | - | +0.3 | +0.3 | +0.4 |
在表7中,我们进一步分析了所提出的从粗到细的引导标签分配方法对辅助头解码器的影响。也就是说,我们比较了引入/不引入上界约束的结果。从表中的数字来看,通过距离目标中心的距离来约束目标的上界的方法可以获得更好的性能。
表7:受限辅助头的消融研究。
Model | Size | A P v a l AP^{val} APval | A P 50 v a l AP^{val}_{50} AP50val | A P 75 v a l AP^{val}_{75} AP75val |
---|---|---|---|---|
base (v7-E6) | 1280 | 55.6% | 73.2% | 60.7% |
aux without constraint | 1280 | 55.9% | 73.5% | 61.0% |
aux with constraint | 1280 | 55.9% | 73.5% | 61.1% |
improvement | - | +0.3 | +0.3 | +0.4 |
由于所提出的YOLOv7使用多个金字塔来联合预测目标检测结果,因此我们可以直接将辅助头连接到中间层的金字塔上进行训练。这种类型的训练可以弥补在下一级金字塔预测中可能丢失的信息。基于上述原因,我们在所提出的E-ELAN架构中设计了部分辅助头。我们的方法是在合并基数之前将一组特征图之后连接辅助头,这种连接可以使新生成的特征图集的权重不会被辅助丢失直接更新。我们的设计允许每个金字塔的引导头仍然从不同大小的物体中获取信息。表8显示了使用两种不同的方法获得的结果,即粗到细的引导方法和部分粗到细的引导方法。显然,部分从粗到细的引导方法具有较好的辅助效果。
表8:部分辅助水头的消融研究。
Model | Size | A P v a l AP^{val} APval | A P 50 v a l AP^{val}_{50} AP50val | A P 75 v a l AP^{val}_{75} AP75val |
---|---|---|---|---|
base (v7-E6E) | 1280 | 56.3% | 74.0% | 61.5% |
aux | 1280 | 56.5% | 74.0% | 61.6% |
partial aux | 1280 | 56.8% | 74.4% | 62.1% |
improvement | - | +0.5 | +0.4 | +0.6 |
本文提出了一种新的实时目标检测器的体系结构和相应的模型缩放方法。此外,我们还发现,目标检测方法的演变过程产生了新的研究课题。在研究过程中,我们发现了重新参数化模块的替换问题和动态标签分配的分配问题。为了解决这一问题,我们提出了一种可训练的免费包方法来提高目标检测的精度。基于此,我们开发了YOLOv7系列的目标检测系统,并获得了最先进的结果。
表9:更多的比较(batch=1,no-TRT,没有额外的目标检测训练数据)
Model | #Param. | FLOPs | Size | F P S V 100 FPS^{V100} FPSV100 | A P t e s t / A P v a l AP^{test}/AP^{val} APtest/APval | A P 50 t e s t AP^{test}_{50} AP50test | A P 75 t e s t AP^{test}_{75} AP75test |
---|---|---|---|---|---|---|---|
YOLOv7-tiny-SiLU | 6.2M | 13.8G | 640 | 286 | 38.7%/38.7% | 56.7% | 41.7% |
PPYOLOE-S | 7.9M | 17.4G | 640 | 208 | 43.1% /42.7% | 60.5% | 46.6% |
YOLOv7 | 36.9M | 104.7G | 640 | 161 | 51.4%/51.2% | 69.7% | 55.9% |
YOLOv5-N (r6.1) | 1.9M | 4.5G | 640 | 159 | -/28.0% | - | - |
YOLOv5-S (r6.1) | 7.2M | 16.5G | 640 | 156 | -/37.4% | - | - |
PPYOLOE-M | 23.4M | 49.9G | 640 | 123 | 48.9%/48.6% | 66.5% | 53.0% |
YOLOv5-N6 (r6.1) | 3.2M | 18.4G | 1280 | 123 | -/36.0% | - | - |
YOLOv5-S6 (r6.1) | 12.6M | 67.2G | 1280 | 122 | -/44.8% | - | - |
YOLOv5-M (r6.1) | 21.2M | 49.0G | 640 | 122 | -/45.4% | - | - |
YOLOv7-X | 71.3M | 189.9G | 640 | 114 | 53.1%/52.9% | 71.2% | 57.8% |
YOLOR-CSP | 52.9M | 120.4G | 640 | 106 | 51.1%/50.8% | 69.6% | 55.7% |
YOLOX-S | 9.0M | 26.8G | 640 | 102 | 40.5%/40.5% | - | - |
YOLOv5-L (r6.1) | 46.5M | 109.1G | 640 | 99 | -/49.0% | - | - |
YOLOv5-M6 (r6.1) | 35.7M | 200.0G | 1280 | 90 | -/51.3% | - | - |
YOLOR-CSP-X | 96.9M | 226.8G | 640 | 87 | 53.0%/52.7% | 71.4% | 57.9% |
YOLOv7-W6 | 70.4M | 360.0G | 1280 | 84 | 54.9%/54.6% | 72.6% | 60.1% |
YOLOv5-X (r6.1) | 86.7M | 205.7G | 640 | 83 | -/50.7% | - | - |
YOLOX-M | 25.3M | 73.8G | 640 | 81 | 47.2%/46.9% | - | - |
PPYOLOE-L | 52.2M | 110.1G | 640 | 78 | 51.4%/50.9% | 68.9% | 55.6% |
YOLOR-P6 | 37.2M | 325.6G | 1280 | 76 | 53.9%/53.5% | 71.4% | 58.9% |
YOLOX-L | 54.2M | 155.6G | 640 | 69 | 50.1%/49.7% | - | - |
YOLOR-W6 | 79.8G | 453.2G | 1280 | 66 | 55.2%/54.8% | 72.7% | 60.5% |
YOLOv5-L6 (r6.1) | 76.8M | 445.6G | 1280 | 63 | -/53.7% | - | - |
YOLOX-X | 99.1M | 281.9G | 640 | 58 | 51.5%/51.1% | - | - |
YOLOv7-E6 | 97.2M | 515.2G | 1280 | 56 | 56.0%/55.9% | 73.5% | 61.2% |
YOLOR-E6 | 115.8M | 683.2G | 1280 | 45 | 55.8%/55.7% | 73.4% | 61.1% |
PPYOLOE-X | 98.4M | 206.6G | 640 | 45 | 52.2%/51.9 | 69.9% | 56.5% |
YOLOv7-D6 | 154.7M | 806.8G | 1280 | 44 | 56.6%/56.3% | 74.0% | 61.8% |
YOLOv5-X6 (r6.1) | 140.7M | 839.2G | 1280 | 38 | -/55.0% | - | - |
YOLOv7-E6E | 151.7M | 843.2G | 1280 | 36 | 56.8%/56.8% | 74.4% | 62.1% |
YOLOR-D6 | 151.7M | 935.6G | 1280 | 34 | 56.5%/56.1% | 74.1% | 61.9% |
F-RCNN-R101-FPN+ | 60.0M | 246.0G | 1333 | 20 | -/44.0% | - | - |
Deformable DETR | 40.0M | 173.0G | - | 19 | -/46.2% | - | - |
Swin-B (C-M-RCNN) | 145.0M | 982.0G | 1333 | 11.6 | -/51.9% | - | - |
DETR DC5-R101 | 60.0M | 253.0G | 1333 | 10 | -/44.9% | - | - |
EfficientDet-D7x | 77.0M | 410.0G | 1536 | 6.5 | 55.1%/54.4% | 72.4% | 58.4% |
Dual-Swin-T (C-M-RCNN) | 113.8M | 836.0G | 1333 | 6.5 | -/53.6% | - | - |
ViT-Adapter-B | 122.0M | 997.0G | - | 4.4 | -/50.8% | - | - |
Dual-Swin-B (HTC) | 235.0M | - | 1600 | 2.5 | 58.7%/58.4% | - | - |
Dual-Swin-L (HTC) | 453.0M | - | 1600 | 1.5 | 59.4%/59.1% | - | - |
Model | #Param. | FLOPs | Size | F P S A 100 FPS^{A100} FPSA100 | A P t e s t / A P v a l AP^{test}/AP^{val} APtest/APval | A P 50 t e s t AP^{test}_{50} AP50test | A P 75 t e s t AP^{test}_{75} AP75test |
DN-Deformable-DETR | 48.0M | 265.0G | 1333 | 23.0 | -/48.6% | - | - |
ConvNeXt-B (C-M-RCNN) | - | 964.0G | 1280 | 11.5 | -/54.0% | 73.1% | 58.8% |
Swin-B (C-M-RCNN) | - | 982.0G | 1280 | 10.7 | -/53.0% | 71.8% | 57.5% |
DINO-5scale (R50) | 47.0M | 860.0G | 1333 | 10.0 | -/51.0% | - | - |
ConvNeXt-L (C-M-RCNN) | - | 1354.0G | 1280 | 10.0 | -/54.8% | 73.8% | 59.8% |
Swin-L (C-M-RCNN) | - | 1382.0G | 1280 | 9.2 | -/53.9% | 72.4% | 58.8% |
ConvNeXt-XL (C-M-RCNN) | - | 1898.0G | 1280 | 8.6 | -/55.2% | 74.2% | 59.9% |
YOLOv7在速度和精度从5 FPS到160 FPS的范围内超过了所有已知的目标检测器,在GPU V100上所有已知的超过30FPS的实时目标检测器中,其最高的AP测试精度为56.8%。YOLOv7-E6对象检测器(56 FPS V100,55.9%AP)在速度和精度(AP)上分别优于基于transformer的检测器SWIN-L Cascade-Mask R-CNN(9.2 FPS A100,55.9% AP)509%和2%。在速度和精度(AP)上分别优于基于卷积检测器ConvNeXt-XL Cascade-Mask R-CNN(8.6FPS100,55.2%AP)551%和0.7%,并且YOLOv7超越:YOLOR,YOLOX,Scaled-YOLOv4, YOLOv5,DETR, DINO-5scale-r50,ViT-Adapter-B和许多其他对象检测器的速度和准确性。更重要的是,我们只在MS COCO数据集上训练YOLOv7,而不使用任何其他数据集或预先训练的权重。
图9:与其他对象检测器的比较。
图10:与其他实时对象检测器的比较
表10:不同设置的比较
Model | Presicion | IoU threshold | A P v a l AP^{val} APval |
---|---|---|---|
YOLOv7-X | FP16 (default) | 0.65 (default) | 52.9% |
YOLOv7-X | FP32 | 0.65 | 53.0% |
YOLOv7-X | FP16 | 0.70 | 53.0% |
YOLOv7-X | FP32 | 0.70 | 53.1% |
improvement | - | - | +0.2% |
类似于美团/YOLOv6和PPYOLOE,我们的模型在设置更高的IoU阈值时可以获得更高的AP
YOLOv7-E6E的最大精度(56.8%AP)实时模型比COCO数据集上目前最精确的美团/YOLOv6-s模型(43.1% AP)高13.7% AP。我们的YOLOv7-tiny (35.2% AP, 0.4ms)模型在相同条件的COCO数据集和V100 GPU batch=32时,比美团YOLOv6-n (35.0% AP, 0.5 ms)模型快25%,AP高0.2%。
图11:与其他实时对象检测器的比较