在5 FPS到160 FPS的范围内,YOLOv7在速度和精度上都超过了所有已知的目标检测器,并且在GPU V100上具有30 FPS或更高的所有已知实时目标检测器中具有最高的精度56.8% AP。YOLOv7- e6对象检测器(56 FPS V100, 55.9% AP)在速度和精度上都优于基于变压器的检测器SWIN- L Cascade-Mask R-CNN (9.2 FPS A100, 53.9% AP),在速度和精度上都优于基于卷积的检测器ConvNeXt-XL Cascade-Mask R-CNN (8.6 FPS A100, 55.2% AP),在速度和精度上分别优于551%和0.7% AP, YOLOv7在速度和精度上优于:YOLOR, YOLOX, Scaled-YOLOv4, YOLOv5, DETR, Deformable DETR, DINO-5scale-R50, viti - adapter -b和许多其他对象检测器,此外,我们只在MS COCO数据集上从头开始训练YOLOv7,而不使用任何其他数据集或预训练的权重
实时目标检测是计算机视觉中一个非常重要的研究课题,是计算机视觉系统中必不可少的组成部分。如多目标跟踪[94,93]、自动驾驶[40,18]、机器人[35,58]、医学图像分析[34,46]等
本文中,我们提出的实时目标检测器主要是希望它能够同时支持移动GPU和从边缘到云端的GPU设备
近年来,针对不同边缘设备的实时目标检测器仍在不断发展。例如,MCUNet[44,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]策略对架构进行优化
本文提出的方法的发展方向不同于目前主流的实时目标检测器,除了架构优化之外,我们提出的方法将侧重于训练过程的优化。我们将重点研究一些优化模块和优化方法,这些模块和优化方法可以在不增加推理成本的情况下,增强训练成本以提高目标检测的准确性。我们将提出的模块和优化方法称为可训练的bag-of-freebiesYOLOv4提出概念?
近年来,模型重参数化[13,12,29]和动态标签分配[20,17,42]已成为网络训练和目标检测中的重要课题。主要是在上述新概念提出之后,目标检测器的训练发展出了许多新的问题
在本文中,我们将介绍一些我们发现的新问题,并设计有效的方法来解决它们。对于模型的再参数化,采用梯度传播路径的概念,分析了适用于不同网络层的模型再参数化策略,提出了规划的再参数化模型
此外,当我们发现使用动态标签分配技术时,具有多个输出层的模型的训练将产生新的问题。即:“如何为不同分支的输出分配动态目标?”针对这一问题,我们提出了一种新的标签分配方法,即粗到细的导联标签分配方法
(1)我们设计了几种可训练的 bag-of-freebies 方法,使得实时目标检测在不增加推理成本的情况下,大大提高了检测精度
(2)对于目标检测方法的改进,提出了两个新问题,即重参数化模块如何替换原有模块,以及动态标签分配策略如何处理对不同输出层的分配。此外,我们还提出了解决这些问题所带来的困难的方法
(3)提出了实时目标检测器的“扩展”和“复合缩放”方法,可以有效地利用参数和计算量
(4)该方法可有效减少当前实时目标检测器约40%的参数和50%的计算量,具有更快的推理速度和更高的检测精度(离谱,不就是3嘛)
目前最先进的实时目标探测器主要基于YOLO和FCOS[76, 77],要成为最先进的实时目标探测器,通常需要具备以下特点
(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)中最先进的方法衍生的问题设计新的可训练的bag-of-freebies方法
模型重参数化技术在推理阶段将多个计算模块合并为一个。模型重参数化技术可以看作是一种集成技术,可分为模块级集成和模型级集成两类。有两种常用的模型级再参数化方法来获得最终的推理模型:
一种是用不同的训练数据训练多个相同的模型,然后对多个训练模型的权值进行平均
二是对不同迭代次数下的模型权值进行加权平均
模块级重参数化是近年来较为热门的研究课题,该方法在训练时将一个模块拆分为多个相同或不同的模块分支,在推理时将多个分支模块整合为一个完全等价的模块
然而,并非所有提出的重参数化模块都能完美地应用于不同的体系结构。考虑到这一点,我们开发了新的重参数化模块,并为各种体系结构设计了相关的应用程序策略
模型缩放是一种扩大或缩小已经设计好的模型并使其适合不同计算设备的方法。模型缩放方法通常使用不同的缩放因子,如分辨率(输入图像的大小)、深度(层数)、宽度(通道数)和阶段(特征金字塔的数量),从而在网络参数的数量、计算量、推理速度和交流精度上达到很好的权衡。
网络架构搜索(NAS)是一种常用的模型扩展方法。NAS可以从搜索空间中自动搜索合适的缩放因子,而无需定义过于复杂的规则
NAS的缺点是它需要非常昂贵的计算来完成对模型缩放因子的搜索
我们观察到,所有基于连接的模型,如DenseNet[32]或VoVNet[39],当这些模型的深度被缩放时,将改变某些层的输入宽度。由于所提出的体系结构是基于串联的,我们必须为该模型设计一种新的复合缩放方法
在大多数关于设计高效架构的文献中,主要考虑的无非是参数的数量、计算量和计算密度。Ma et al.[55]从存储器访问成本的特点出发,分析了输入/输出通道比、体系结构分支数和元素运算对网络推理速度的影响。Dollár等人[15]在执行模型缩放时还考虑了激活,即更多地考虑卷积层输出张量中的元素数量
图2 (b)中的CSPVoVNet[79]的设计是VoVNet[39]的一个变体。CSPVoVNet的架构[79]除了考虑上述基本的设计问题外,还对梯度路径进行了分析,以使不同层的权值能够学习到更多样化的特征,上述的梯度分析方法使推理更快、更准确
图2 ©中的ELAN[1]考虑了以下设计策略——“如何设计一个高效的网络?”他们得出结论:通过控制最短最长的梯度路径,深度网络可以有效地学习和收敛。在本文中,我们提出了基于ELAN的扩展ELAN (E-ELAN),其主要架构如图2 (d)所示
本文提出的E-ELAN算法通过扩展、shuffle、合并基数来实现在不破坏原有梯度路径的情况下不断增强网络学习能力的能力。在体系结构上,E-ELAN只改变了计算块的体系结构,而过渡层的体系结构完全不变
E-ELAN除了保持原有的ELAN设计架构外,还可以引导不同组的计算块学习更多样化的特性
模型缩放的主要目的是调整模型的某些属性,生成不同尺度的模型,以满足不同推理速度的需要
基于连接的架构中,我们会发现,当对深度进行放大或缩小时,在基于连接的计算块之后的translation层的in-degree会减小或增大,如图3 (a)和(b)所示
由上述现象可以推断,对于基于串联的模型,我们不能单独分析不同的比例因子,而必须综合考虑。以放大深度为例,这种行为会导致过渡层的输入通道和输出通道之间的比率发生变化,从而可能导致模型的硬件使用率下降
因此,我们必须针对基于串联的模型提出相应的复合模型缩放方法。当我们缩放计算块的深度因子时,我们还必须计算该块的输出通道的变化。然后,我们将对过渡层进行相同变化量的宽度因子缩放,结果如图3 ©所示。我们提出的复合缩放方法可以保持模型在初始设计时的属性,并保持最优结构
虽然RepConv[13]在VGG上取得了优异的性能[68],但当我们直接将其应用于ResNet[26]和DenseNet[32]等架构时,其精度会显著降低
RepConv实际上在一个卷积层中结合了3 × 3卷积、1 × 1卷积和恒等连接。通过分析RepConv与不同体系结构的组合及其相应性能,我们发现RepConv中的身份连接破坏了ResNet中的残差和DenseNet中的拼接
基于以上原因,我们使用无身份连接的repconvv (RepConvN)来设计计划的重参数化卷积的体系结构。在我们的想法中,当残差或拼接的卷积层被重新参数化的卷积取代时,应该没有恒等连接
图4显示了我们设计的在PlainNet和ResNet中使用的“计划的重新参数化卷积”示例
在提出的规划重参数化模型中,我们发现,对于具有残差连接或串联连接的层,其RepConv不应该具有身份连接。在这种情况下,可以用不包含身份连接的RepConvN代替它
深度监督[38]是一种经常用于训练深度网络的技术。其主要思想是在网络中间层中增加额外的辅助头,以辅助损失为导向的浅网权值
图5 (a)和(b)分别显示了“无”和“有”深度监督的目标检测器架构。在本文中,我们将负责最终输出的头部称为先导头部,将辅助训练的头部称为辅助头部
与正常模型(a)相比,(b)中的图式具有辅助头部。与通常的独立标签分配器©不同,我们提出(d)导联头引导标签分配器和(e)粗到细导联头引导标签分配器。通过导头预测和ground truth对所提出的标签分配器进行优化,同时得到训练导头和辅助导头的标签
在本文中,我们将考虑网络预测结果和基础事实然后分配软标签的机制称为“标签分配器”
无论辅助负责人还是领导负责人的情况如何,深度监督都需要对目标目标进行培训
目前最流行的方法结果如图5 ©所示,即将辅助头和引线头分开,然后利用各自的预测结果和ground truth进行标签赋值
本文提出的方法是一种利用导流头预测同时引导辅助导流头和导流头的新型标签分配方法。换句话说,我们使用引线头部预测作为指导来生成粗到细的层次标签,这些标签分别用于辅助头部和引线头部学习。提出的两种深度监管标签分配策略分别如图5 (d)和(e)所示
导联头导联标签分配器主要是根据导联头的预测结果和地面真实情况进行计算,并通过优化过程生成软标签
粗精导标器还利用导标头的预测结果和接地真值生成软标
(1)convn -bn-activation拓扑中的批归一化:这部分主要是将批归一化层直接连接到卷积层。这样做的目的是在推理阶段将批处理归一化的均值和方差整合到卷积层的偏置和权值中
(2) YOLOR中的隐式知识[81]与卷积特征映射加法乘法相结合:在推理阶段通过预计算,将YOLOR中的隐式知识简化为一个向量。这个向量可以与前一个或后一个卷积层的偏置和权重相结合
(3) EMA模型:EMA是一种用于平均教师的技术[75],在我们的系统中,我们使用EMA模型纯粹作为最终的推理模型
本文提出了一种新的实时目标检测器体系结构和相应的模型缩放方法
此外,我们发现目标检测方法的发展过程产生了新的研究热点。在研究过程中,我们发现了重参数化模块的替换问题和动态标签分配问题为了解决这个问题,我们提出了可训练的bag-of-freebies方法来提高目标检测的准确性
在此基础上,我们开发了YOLOv7系列的目标检测系统,该系统获得了最先进的结果