Yolov7论文详解

2023-05-16

论文地址:https://arxiv.org/pdf/2207.02696.pdfhttps://arxiv.org/pdf/2207.02696.pdf

项目地址: WongKinYiu/yolov7: Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors (github.com)https://github.com/WongKinYiu/yolov7

目录

摘要

1、介绍

2、相关工作 

2.1、 实时目标探测器

2.2、 模型重参数化

2.3、 模型缩放

3、 结构

3.1、扩展的高效层聚合网络

3.2、基于级联模型的模型缩放

4、可训练的bag-of-freebies

4.1、计划重参数卷积

4.2、粗为辅助,细为导引损失

4.3、其他可训练的bag-of-freebies

5、 实验

5.1、 实验设置

5.2、基础

5.3、与最新技术的比较

5.4、消融研究

5.4.1、提出的复合标度法

5.4.2、提出的计划再参数化模型

5.4.3、辅助头的拟议辅助损失

6、结论

7、致谢

8、更多比较


摘要

        Yolov7在速度和精度上都超过了所有已知的物体探测器,在5 fps到160 fps的范围内,并在所有已知的30 fps或更高的GPU V100实时物体探测器中拥有最高的精度56.8%AP。 YOLOV7-E6目标检测器(56 fps V100,55.9%AP)在速度和精度上优于基于变压器的检测器Swinl级联掩码R-CNN(9.2 fps A100,53.9%AP)509%和2%;基于卷积的检测器Convnext-XL级联掩码R-CNN(8.6 fps A100,55.2%AP)551%和0.7%AP;YOLOV7在速度和精度上优于:YOLOR、YOLOX、Scaled-YOLOV4、YOLOV5、DETR、DETR、DINO-5Scale-R50、VIT-Adapter-B和许多其他目标检测器。 此外,我们只在MS COCO数据集上从头开始训练Yolov7,而不使用任何其他数据集或预训练的权值。

图1:与其他实时目标检测器相比,我们提出的方法达到了最先进的性能。 

1、介绍

        实时目标检测是计算机视觉中一个非常重要的研究课题,因为它往往是计算机视觉系统中必不可少的组成部分。 例如多目标跟踪、自动驾驶、机器人、医学图像分析等,执行实时目标检测的计算设备通常是一些移动CPU或GPU,以及各大厂商开发的各种神经处理单元(NPU)。 例如,Apple Neural Engine(苹果)、Neural Compute Stick(英特尔)、Jetson AI Edge Devices(英伟达)、Edge TPU(谷歌)、Neural Processing Engine(高通)、AI Processing Unit(联发科)和AI SoC(Kneron)都是NPU。 上面提到的一些边缘设备侧重于加快不同的操作,如香草卷积、深度卷积或MLP操作。 本文提出的实时目标检测器主要是希望它能够同时支持移动GPU和从边缘到云端的GPU设备。

        近年来,针对不同边缘设备的实时目标检测器仍在不断发展。 例如,McUnet和Nanodet的发展集中在生产低功耗单片机和提高边缘CPU的推理速度上。 至于Yolox和Yolor等方法,则侧重于提高各种GPU的推理速度。 近年来,实时目标检测器的发展主要集中在高效体系结构的设计上。 至于可在CPU上使用的实时物体检测器,其设计大多基于MobileNet、ShuffleNet或GhostNet。 另一种主流的实时目标检测器是针对GPU开发的,它们大多使用ResNet、DarkNet或DLA,然后使用CSPNet策略来优化体系结构。 本文提出的方法与当前主流实时目标检测器的发展方向不同。 除了体系结构优化,我们提出的方法将侧重于训练过程的优化。 我们的重点将是一些优化模块和优化方法,这些优化模块和优化方法可以在不增加推理成本的情况下,加强训练成本,提高目标检测的准确性。 我们将所提出的模块和优化方法称为可训练的免费袋。

        近年来,模型重新参数化和动态标记分配已成为网络训练和目标检测中的重要课题。 主要是在上述新概念提出后,目标检测器的训练出现了许多新的问题。 在本文中,我们将介绍一些我们发现的新问题,并设计有效的方法来解决这些问题。 在模型重参数化方面,利用梯度传播路径的概念,分析了适用于不同网络层的模型重参数化策略,提出了有计划的模型重参数化。 另外,当我们发现使用动态标记赋值技术时,多输出层模型的训练会产生新的问题。 即:如何为不同分支的输出分配动态目标?针对这个问题,我们提出了一种新的标签分配方法,称为粗到细引导标签分配。

        本文的主要贡献如下:

  1. 设计了几种可训练的免费包检测方法,使得实时目标检测在不增加推理代价的前提下,大大提高了检测精度;
  2. 对于对象检测方法的发展,我们发现了两个新的问题,即重新参数化模块如何代替原来的模块,以及动态标记分配策略如何处理对不同输出层的分配。 此外,我们还提出了解决这些问题所产生的困难的方法;
  3. 提出了“扩展”和“复合缩放”两种实时目标检测方法,能够有效地利用参数和计算量;
  4. 该方法能有效地减少现有实时目标检测器40%左右的参数和50%的计算量,具有更快的推理速度和更高的检测精度。

2、相关工作 

2.1、 实时目标探测器

        目前最先进的实时目标检测器主要基于YOLO和FCOS。能够成为最先进的实时目标检测器通常需要以下特征:

  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、 模型重参数化

        模型再参数化技术在推理阶段将多个计算模块合并为一个。 模型再参数化技术可以看作是一种集成技术,可以分为模块级集成模型级集成两大类。 模型级重新参数化以获得最终推断模型有两种常见的做法。 一种是用不同的训练数据训练多个相同的模型,然后对多个训练模型的权重进行平均。 二是对不同迭代次数的模型权重进行加权平均。 ModuleVel再参数化是近年来比较热门的研究课题。 这类方法在训练时将一个模块分解成多个相同或不同的模块分支,在推理时将多个分支模块集成成一个完全等价的模块。 然而,并不是所有提出的再参数化模块都能完美地应用于不同的体系结构。 考虑到这一点,我们开发了新的再参数化模块,并针对各种体系结构设计了相关的应用策略。  

2.3、 模型缩放

        模型缩放是一种向上或向下缩放已经设计的模型并使其适合不同计算设备的方法。 模型缩放方法通常使用不同的缩放因子,如分辨率(输入图像的大小)、深度(层数)、宽度(通道数)和阶段(特征金字塔数),以实现网络参数量、计算量、推理速度和精度的良好权衡。 网络体系结构搜索(NAS)是常用的模型缩放方法之一。 NAS可以自动地从搜索空间中搜索合适的缩放因子,而无需定义太复杂的规则。 NAS的缺点是需要非常昂贵的计算来完成模型缩放因子的搜索。 在[15]中,研究者分析了缩放因子与参数和运算量之间的关系,试图直接估计某些规律,从而得到模型缩放所需的缩放因子。 查阅文献,我们发现几乎所有的模型标度方法都是独立分析单个标度因子的,甚至在复合标度范畴中的方法也是独立优化标度因子的。 这是因为大多数流行的NAS体系结构处理不太相关的伸缩因素。 我们观察到所有基于级联的模型,如DenseNet或VovNet,当这些模型的深度被缩放时,会改变某些层的输入宽度。 由于所提出的体系结构是基于级联的,我们必须为该模型设计一种新的复合缩放方法。  

3、 结构

3.1、扩展的高效层聚合网络

        在大多数关于设计高效体系结构的文献中,主要考虑的不只是参数数、计算量和计算密度。 从存储器访问开销的特点出发,Ma等人。 [55]还分析了输入/输出通道比、体系结构分支数、按元素操作等对网络推断速度的影响。 多尔等人。 [15]在进行模型缩放时还考虑了激活,即更多地考虑卷积层输出张量中的元素数。 图2(b)中的cspvovnet的设计是vovnet的变体。 CSPVOVNET的体系结构除了考虑上述基本的设计问题外,还分析了梯度路径,以使不同层的权值能够学习更多不同的特征。上面描述的梯度分析方法使推论更快更准确。 图2(c)中的Elan[1]考虑了以下设计策略--“如何设计一个高效的网络?”他们得出了一个结论:通过控制最短最长梯度路径,更深的网络可以有效地学习和收敛。 在本文中,我们提出了一种基于ELAN的扩展ELAN(E-ELAN),其主要结构如图2(d)所示。

图2:扩展的高效层聚合网络。 所提出的扩展ELAN(E-ELAN)完全不改变原有体系结构的梯度传输路径,而是使用群卷积来增加所添加特征的基数,并以洗牌合并基数的方式组合不同群组的特征。 这种操作方式可以增强不同特征图学习到的特征,改善参数和计算的使用。 

        无论在大规模ELAN中梯度路径长度和计算块的堆叠数,都达到了稳定状态。 如果无限制地堆叠更多的计算块,这种稳定状态可能会被破坏,参数利用率会降低。 提出的E-ELAN采用扩展、洗牌、合并基数等方法,在不破坏原有梯度路径的前提下,不断增强网络的学习能力。 在体系结构方面,E-ELAN只改变了计算块上的体系结构,而过渡层的体系结构完全不变。 我们的策略是使用群卷积来扩展计算块的信道和基数。 我们将对一个计算层的所有计算块应用相同的组参数和信道乘法器。 然后,将每个计算块计算出的特征映射按照设定的组参数G洗牌成G组,再将它们串联在一起。 此时,每组特征图中的通道数将与原架构中的通道数相同。 最后,我们添加G组特征映射来执行合并基数。 除了保持原有的ELAN设计架构,E-ELAN还可以指导不同的计算块组学习更多样的特征。

3.2、基于级联模型的模型缩放

        模型缩放的主要目的是调整模型的某些属性,生成不同尺度的模型,以满足不同推理速度的需要。 例如,效率网[72]的缩放模型考虑了宽度、深度和分辨率。 至于Scaled-Yolov4[79],其缩放模型是调整级数。 在[15]中,Doll'ar等人。 分析了Vanilla卷积和Group卷积在进行宽度和深度缩放时对参数量和计算量的影响,并据此设计了相应的模型缩放方法。 以上方法主要用于PlainNet或ResNet等架构中。 当这些体系结构执行向上或向下缩放时,各层的进度和出度不会发生变化,因此可以独立分析各缩放因子对参数量和计算量的影响。 然而,如果将这些方法应用到基于级联的体系结构中,我们会发现,当在深度上进行向上或向下伸缩时,紧接在基于级联的计算块之后的转换层的in-degree会减小或增加,如图3(a)和(b)所示。   

图3:基于级联的模型的模型缩放。 从(a)到(b),我们观察到当对基于级联的模型执行深度缩放时,计算块的输出宽度也增加。 这种现象会导致后续传输层的输入宽度增加。 因此,我们提出了(c),即对基于级联的模型进行模型缩放时,只需缩放计算块中的深度,传输层的剩余部分进行相应的宽度缩放。 

        从以上现象可以推断,对于一个基于级联的模型,我们不能单独分析不同的缩放因素,而必须将其结合起来考虑。 以扩展深度为例,这样的动作会引起过渡层输入通道和输出通道之间的比值变化,这可能会导致模型的硬件使用减少。 因此,我们必须针对一个基于级联的模型提出相应的复合模型缩放方法。 当我们缩放一个计算块的深度因子时,我们还必须计算该块输出通道的变化。 然后,我们将在过渡层上执行宽度因子缩放,以相同的变化量,结果如图3(c)所示。 我们提出的复合缩放方法可以保持模型在初始设计时的性质,并保持最优结构。

4、可训练的bag-of-freebies

4.1、计划重参数卷积

        虽然Repconv在VGG上取得了优异的性能,但当我们直接将其应用于Resnet和DenseNet等架构时,其精度会显著降低。 利用梯度流传播路径分析了再参数化卷积如何与不同的网络相结合。 我们还相应地设计了有计划的再参数化卷积。

        RepConv实际上在一个卷积层中结合了3×3卷积、1×1卷积和标识连接。 通过对RepConv与不同体系结构的组合和性能分析,发现RepConv中的身份连接破坏了ResNet中的残差和DenseNet中的级联,为不同的特征映射提供了更多的梯度多样性。 基于上述原因,我们使用无标识连接的repconv(repconvn)来设计计划重参数化卷积的体系结构。 在我们的思维中,当一个带有残差或级联的卷积层被重新参数化的卷积替换时,应该没有恒等式连接。 图4显示了在PlainNet和ResNet中使用的我们设计的“计划的重新参数化卷积”的示例。 至于基于残差模型和基于级联模型的完整计划重参数卷积实验,将在消融研究部分提出。

图4:计划的重新参数化模型。在我们提出的规划的重参数化模型中,我们发现一个有残留连接或连接连接的层,其RepConv应该没有身份连接。在这些情况下,可以用不包含标识连接的RepConvN替换它。

4.2、粗为辅助,细为导引损失

        深度监督是训练深度网络时经常使用的一种技术。 其主要思想是在网络的中间层增加额外的辅助头,以辅助损失为导向的浅层网络权重。 即使对于ResNet和DenseNet等通常收敛良好的架构,深度监管仍然可以显著提高模型在许多任务上的性能。 图5(a)和(b)分别显示了“没有”和“有”深度监视的对象检测器体系结构。 在本文中,我们把负责最终输出的头部称为导引头,用来辅助训练的头部称为辅助头。  

图5:粗为辅助,细为铅头标签分配器。 与正常模型(A)相比,(B)中的图式具有辅助中心。 与通常的独立标号分配器(C)不同,我们提出了(d)引导标号分配器和(e)粗到细引导标号分配器。 该标签分配器通过引导头预测和地面真实度对标签分配器进行优化,同时得到训练引导头和辅助头的标签。 详细的从粗到细的实现方法和约束设计细节将在Apendix中阐述。 

        接下来我们要讨论标签分配的问题。 以往在深度网络的训练中,标签赋值通常直接参考地面真值,按照给定的规则生成硬标签。 但近年来,如果以物体检测为例,研究人员往往利用网络输出预测的质量和分布,然后与地面真相一起考虑使用一些计算和优化方法,生成一个可靠的软标签。 例如,Yolo使用包围盒回归预测的IOU和地面真值作为客观性的软标签。 本文将网络预测结果与地面真实值相结合,并赋予软标签的机制称为“标签赋值器”。

        无论辅助头或领导头的情况如何,深度监督都需要对目标目标进行训练。 在软标签分配器相关技术的发展过程中,我们偶然发现了一个新的衍生问题,即“如何将软标签分配给辅助头和引导头”,据我们所知,相关文献至今还没有对此问题进行过探讨。 目前最流行的方法结果如图5(c)所示,是将辅助头和引导头分开,然后利用各自的预测结果和地面真相执行标签赋值。 本文所提出的方法是一种新的标签分配方法,它通过引导头预测来指导辅助头和引导头。 也就是说,我们以领先头预测为指导,生成由粗到细的分层标签,分别用于辅助头和领先头学习。 两个被提出的深度监督标签分配策略分别如图5(d)和(e)所示。

        导引头标签分配器主要是根据导引头的预测结果和地面真实情况进行计算,并通过优化过程生成软标签。 这套软标签将同时作为辅助头和引导头的目标训练模型。 之所以这样做,是因为Lead Head具有相对较强的学习能力,因此由其生成的软标签应该更能代表源数据与目标之间的分布和相关性。 此外,我们可以把这种学习看作是一种广义残差学习。 通过让较浅的辅助头直接学习引导头已经学习的信息,引导头将更能够专注于学习尚未学习的剩余信息。 

        由粗到细导联标签分配器还利用导引联预测结果和地面真实值生成软标签。 然而,在该过程中,我们生成了两组不同的软标签,即粗标签和细标签,细标签与引导标签分配器生成的软标签相同,粗标签是通过放松正样本分配过程的约束,允许更多的网格作为正目标来生成的。 究其原因,辅助头的学习能力不如引导头强,而为了避免丢失需要学习的信息,我们将重点优化辅助头在物体检测任务中的回忆。 对于引导头的输出,我们可以从高查全率的结果中过滤出高查准率的结果作为最终的输出。 但必须注意的是,如果粗标签的附加权重与细标签的附加权重接近,在最终预测时可能会产生较差的先验。 因此,为了使这些额外的粗正网格的影响更小,我们在解码器中设置限制,使额外的粗正网格不能完美地产生软标记。 该机制允许在学习过程中动态调整细标签和粗标签的重要性,并使细标签的可优化上界始终高于粗标签。

4.3、其他可训练的bag-of-freebies

        在这一节中,我们将列出一些可训练的bag-of-freebies。 这些免费赠品是我们在训练中使用的一些技巧,但最初的概念不是我们提出的。 附录中详细阐述了这些免费服务的训练细节,包括:

  1. conv-bn-activation拓扑中的批归一化:这部分主要是将批归一化层直接连接到卷积层。 这样做的目的是在推理阶段将批归一化的均值和方差集成到卷积层的偏差和权重中。
  2. Yolor中的隐式知识与卷积特征映射的加法和乘法相结合:在推理阶段通过预先计算,可以将Yolor中的隐式知识简化为一个向量。 该向量可以与前一个或后一个卷积层的偏置和权重相结合。
  3. ema模型:ema是mean教师中使用的一种技术,在我们的系统中,我们纯粹使用ema模型作为最终的推理模型。

5、 实验

5.1、 实验设置

        利用Microsoft COCO数据集进行实验,验证了本文提出的目标检测方法。 我们所有的实验都没有使用预先训练的模型。 也就是说,所有的模型都是从零开始训练的。 在开发过程中,我们使用Train 2017集进行训练,然后使用Val 2017集进行验证和选择超参数。 最后,我们在Test 2017集上展示了目标检测的性能,并与目前最先进的目标检测算法进行了比较。 详细的训练参数设置见附录。

        我们设计了边缘GPU、普通GPU和云GPU的基本模型,分别称为Yolov7Tiny、Yolov7和Yolov7-W6。 同时,针对不同的服务需求,采用BASIC模型进行模型缩放,得到不同类型的模型。 对于YOLOV7,我们在Neck上进行堆栈缩放,并使用提出的复合缩放方法对整个模型的深度和宽度进行缩放,从而得到YOLOV7-x。 对于YOLOV7-W6,我们用新提出的复合标度方法得到了YOLOV7-E6和YOLOV7-D6。 另外,我们将所提出的EELAN用于YOLOV7-E6,从而完成了YOLOV7E6E。 由于Yolov7-Tiny是一个面向边缘GPU的架构,它将使用Leaky Relu作为激活函数。 对于其他模型,我们使用SILU作为激活函数。 我们将在附录中详细描述每个模型的缩放因子。

5.2、基础

        我们选择早期版本的YOLO和Stateof-the-Art对象检测器YOLOR作为基线。 表1显示了我们提出的Yolov7模型和那些用相同设置训练的基线的比较。

表1:基线物体探测器的比较。 

         结果表明,与Yolov4相比,Yolov7的参数减少了75%,计算量减少了36%,计算效率提高了1.5%。 与现有的Yolor-CSP相比,Yolov7的参数减少了43%,计算量减少了15%,AP提高了0.4%。 在Tiny模型的性能方面,与Yolov4-Tiny-31相比,Yolov7Tiny模型的参数数减少了39%,计算量减少了49%,但AP保持不变。 在云GPU模型上,我们的模型在减少19%的参数数和33%的计算量的同时,仍然可以有更高的AP。

5.3、与最新技术的比较

        我们将所提出的方法与现有的通用GPU和移动GPU的目标检测器进行了比较,结果如表2所示。 从表2中的结果我们知道,所提出的方法具有最佳的速度-精度综合权衡。 如果我们将Yolov7-Tiny-Silu与Yolov5-N(R6.1)相比,我们的方法在AP上的速度快127 fps,准确度高10.7%。 此外,Yolov7在161 fps的帧率下拥有51.4%的AP,而同样AP的PPYoloe-L只有78 fps的帧率。 在参数使用方面,YOLOV7比PPYOLOE-L少41%。 如果我们将114 fps推理速度的Yolov7-X与99 fps推理速度的Yolov5-L(R6.1)相比,Yolov7-X可以提高3.9%的AP。 如果将Yolov7x与相似尺度的Yolov5-x(R6.1)进行比较,Yolov7-x的推断速度要快31 fps。 此外,在参数和计算量方面,Yolov7-x比Yolov5-x(R6.1)减少了22%的参数和8%的计算量,但AP提高了2.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%。

5.4、消融研究

5.4.1、提出的复合标度法

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

表3:对拟议模型缩放的消融研究。 

5.4.2、提出的计划再参数化模型

        为了验证我们提出的计划重参数化模型的通用性,我们分别将其用于基于级联模型和基于残差模型的验证。 我们选择的基于级联的模型和基于残差的模型分别是3层的ELAN和CSPDarkNet。

        在基于级联模型的实验中,我们用REPCONV替换了3层叠ELAN中不同位置的3×3卷积层,详细配置如图6所示。 从表4所示的结果中,我们看到所有较高的AP值都出现在我们提出的计划重新参数化模型上。

图6:规划的RepConv3堆叠的elan。 蓝色圆圈是我们用repconv代替conv的位置。 
表4:计划再串联模型的消融研究。 

         在基于残差模型的实验中,由于原来的暗块没有符合我们设计策略的3×3反向卷积块,我们额外设计了一个反向暗块用于实验,其结构如图7所示。 由于带有暗块和反向暗块的CSPDarkNet具有完全相同的参数和操作量,因此比较是公平的。 表5所示的实验结果充分证实了所提出的计划重参数化模型对基于残差的模型同样有效。 我们发现RepcspresNet的设计也符合我们的设计模式。

图7:反转的CSPDarkNet。 我们颠倒了暗块中1×1和3×3卷积层的位置,以适应我们计划的重新参数化模型设计策略。 
表5:有计划的represdual模型的消融研究。 

5.4.3、辅助头的拟议辅助损失

        在辅助头的辅助损失实验中,我们比较了一般的独立标号分配方法和辅助头方法,以及两种引导标号分配方法。 我们在表6中显示了所有的比较结果。 从表6中列出的结果来看,很明显,任何增加助手损失的模型都可以显著提高整体性能。 此外,在AP、AP50和AP75中,我们提出的引导标签分配策略比一般的独立标签分配策略具有更好的性能。 对于我们提出的粗为辅助和细为铅标记分配策略,它在所有情况下都取得了最好的结果。 在图8中,我们展示了在辅助头和引导头用不同方法预测的客观图。 从图8中我们发现,如果辅助头学习导联引导的软标记,它确实有助于导联头从一致目标中提取剩余信息。

表6:拟议辅助头的消融研究。
图8:辅助头和引导头用不同方法预测的客观度图。

        在表7中,我们进一步分析了所提出的从粗到细导联引导标签分配方法对辅助磁头解码器的影响。 即我们比较了有/没有引入上限约束的结果。 从表中的数字来看,用离物体中心的距离来约束物体的上界的方法可以取得更好的性能。  

表7:约束辅助头的消融研究。 

        由于提出的Yolov7使用多个金字塔来联合预测目标检测结果,我们可以直接将辅助头连接到中间层的金字塔进行训练。 这种类型的训练可以弥补下一级金字塔预测中可能丢失的信息。 基于以上原因,我们在提出的E-ELAN架构中设计了部分辅助头。 我们的方法是在合并基数之前,在其中一组特征映射后连接辅助头,这种连接可以使新生成的特征映射集的权重不因辅助头的丢失而直接更新。 我们的设计允许每个铅头金字塔仍然从不同大小的物体中获取信息。 表8显示了使用两种不同方法获得的结果,即粗到细铅引导法和部分粗到细铅引导法。 显然,部分粗到细导铅法具有较好的辅助效果。

表8:部分辅助头的消融研究。 

6、结论

        本文提出了一种新的实时对象检测器体系结构和相应的模型缩放方法。 此外,我们发现目标检测方法的发展过程产生了新的研究课题。 在研究过程中,我们发现了重参数化模块的替换问题和动态标记赋值的分配问题。 为了解决这一问题,我们提出了一种可训练的免费包方法来提高目标检测的准确性。 在此基础上,我们开发了YOLOV7系列目标检测系统,取得了最先进的结果。

7、致谢

        作者希望感谢国家高性能计算中心(NCHC)提供的计算和存储资源。

8、更多比较

        Yolov7在5 fps到160 fps范围内的速度和精度都超过了所有已知的物体检测器,在GPU V100上的30 fps或更高的所有已知实时物体检测器中,它具有最高的精度56.8%AP Test-Dev/56.8%AP Min-Val。 YOLOV7-E6目标检测器(56 fps V100,55.9%AP)在速度和精度上优于基于转换的检测器SWIN-L级联掩模R-CNN(9.2 fps A100,53.9%AP)509%和2%;基于卷积的检测器Convnext-XL级联掩模R-CNN(8.6 fps A100,55.2%AP)551%和0.7%AP;YOLOV7在速度和精度上优于:YOLOR、YOLOX、Scaled-YOLOV4、YOLOV5、DETR、DETR、DINO-5Scale-R50、VIT-Adapter-B和许多其他目标检测器。 此外,我们只在MS Coco数据集上从头开始训练Yolov7,而不使用任何其他数据集或预先训练的权值。

        在COCO数据集上,Yolov7-E6E实时模型的最大精度(56.8%AP)比目前最精确的Meituan/Yolov6-S模型(43.1%AP)高出+13.7%AP。 在COCO DataSet和Batch=32的V100 GPU上,我们的Yolov7-Tini(35.2%AP,0.4ms)模型比Meituan/Yolov6-n(35.0%AP,0.5ms)快+25%,高+0.2%AP。  

表9:更多的比较(BATCH=1,no-TRT,没有额外的对象检测训练数据)
图9:与其他对象检测器的比较。 
图10:与其他实时对象检测器的比较。
表10:不同设置的比较。

图11:与其他实时对象检测器的比较。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Yolov7论文详解 的相关文章

  • LinkedList和Set

    LinkedList和Set 1 LinkedList 1 1 LinkedList概述 底层存储数据是一个双向链表结构 自行车链子 就是一个生活中链表结构 xff0c 环环相扣 xff0c 替换 xff0c 拆除非常方便 1 2 Link

随机推荐

  • shiro与springboot整合

    Shiro 与 SpringBoot 的整合 1 创建SpringBoot工程 xff0c 导入依赖 span class token generics function span class token punctuation lt sp
  • Vue

    Author Thor Version 9 0 1 文章目录 一 Vue简介1 1 简介1 2 MVVM 模式的实现者 双向数据绑定模式1 3 其它 MVVM 实现者1 4 为什么要使用 Vue js1 5 Vue js 的两大核心要素1
  • android AudioRecord 音频录制 噪音消除

    android AudioRecord 音频录制 噪音消除 因为公司APP做适配 xff0c 一些低端机的噪音比较严重 xff0c 所以再一些低端机上做了简单除噪音功能 xff0c 1 xff0c 由于APP使用场景的限制 xff0c 所以
  • springboot 常用注解

    springboot 常用注解 在spring boot中 xff0c 摒弃了spring以往项目中大量繁琐的配置 xff0c 通过自身默认配置 xff0c 极大的降低了项目搭建的复杂度 在spring boot中 xff0c 大量注解的使
  • X86架构基本汇编指令详解

    文章目录 汇编指令伪指令1 MODEL2 STACK3 ENDP4 END 汇编指令1 MOV xff1a 将源操作数复制到目的操作数2 MOVZX 和 MOVSX3 XCHG 交换两个操作数内容4 INC 和 DEC5 ADD 和 SUB
  • 详解 C++ 对象模型

    文章目录 何为 C 43 43 对象模型 xff1f 基本 C 43 43 对象模型C 43 43 对象模型中加入单继承1 无重写的单继承2 有重写的单继承 C 43 43 对象模型中加入多继承C 43 43 对象模型中加入虚继承1 简单虚
  • Ubuntu 扩大/home磁盘分区

    在删除或重命名home目录之前 xff0c 千万确保你可以使用root账户 xff01 xff01 xff01 sudo 无用 xff01 xff01 xff01 根目录一共212G xff0c 已经使用了80 了 xff0c 其中130G
  • 正则表达式学习的个人小结

    正则表达式是对字符串的一种操作 xff0c 运用到JS中可以帮助我们去寻找符合要求的字符串 表单验证 http xff1a regexper com xff08 这个网站可以把正则表达式输入进去然后用图形显示出来 xff0c 因为是国外的网
  • ROS学习 一、Debian10安装ROS Noetic,解决rosdep update失败问题(更新一个可修改位置)

    目录 前言ROS安装1 添加ROS的apt源和key xff08 中科大源 xff09 2 apt安装ros noetic核心组件3 配置ROS的bash环境4 安装其他常用ROS依赖项5 解决python3 rosdep安装中出现的ros
  • windows动态链接库的使用,隐式调用(静态链接)和显示调用(动态链接)

    一 xff0c 动态链接库项目创建 dll工程内部架构 用VS2019创建动态链接库dll工程 初始会有如下几个文件 xff1a pch h和pch cpp与动态链接库功能无关 是用来保存多个文件时共同引用的头文件 xff0c 函数 xff
  • 在wsl2中安装CUDA

    1 先根据我之前的教程把wsl1升级到wsl2 wsl1升级到wsl2 夕阳之后的黑夜的博客 CSDN博客 2 打开Ubuntu xff0c 输入 uname r 确定内核 xff0c 安装CUDA需要内核 4 19 121 或更高 3 在
  • import torch 报错没有找到torch_python.dll

    conda install c anaconda intel openmp 运行上述代码就成功了
  • 在wsl2(Ubuntu20.04)中安装cudnn

    可以看cudnn的官方安装文档 xff1a 安装指南 NVIDIA 深度学习 cuDNN 文档 1 根据之前安装的cuda版本来下载安装对应的cudnn版本 cuDNN Archive NVIDIA Developer 2 比如我的cuda
  • 解决android opengl glReadPixels 慢的问题 三

    解决android opengl glReadPixels 慢的问题 三 使用2个pbo效率提上去了 xff0c 但是我手机分辨率是720p 或者1080p xff0c 我们手机相机使用一般是480x640 xff0c 这样通过gpu渲染到
  • 常用的损失函数

    pytorch的源码 xff1a torch nn PyTorch 1 11 0 documentation jittor的源码 xff1a jittor nn Jittor 1 3 2 6 文档 tsinghua edu cn paddl
  • Command ‘[‘where‘, ‘cl‘]‘ returned non-zero exit status 1.

    在环境变量中Path 那一项中添加两个路径 xff1a 在环境变量中新建一个LIB 变量 xff0c 并添加三个路径 xff08 记得加分号 xff09 xff1a 在环境变量中新建一个INCLUDE 变量 xff0c 并添加两个路径 xf
  • 尝试DCGAN+Self Attention

    先看一下DCGAN的G模型 xff1a 再看一下Self Attention的网络结构 xff1a 话不多说 xff0c 上代码 xff1a G D的model文件如下 xff1a import torch import torch nn
  • 2022基于GAN的去雾去雨论文

    目录 去雨CVPR2022 xff1a 使用双重对比学习的不成对深度图像去雨 去雨CVPR2021 xff1a 闭环 xff1a 通过解开图像转换生成和去除联合雨 去雨CVPR2021 xff1a 从雨水产生到雨水清除 去雾CVPR2020
  • Single image dehazing for a variety of hazescenarios using back projected pyramid network

    论文名 xff1a Single image dehazing for a variety of haze scenarios using back projected pyramid network 基于反投影金字塔网络的多雾场景单幅图像
  • Yolov7论文详解

    论文地址 xff1a https arxiv org pdf 2207 02696 pdf https arxiv org pdf 2207 02696 pdf 项目地址 xff1a WongKinYiu yolov7 Implementa