【论文阅读】【yolo系列】YOLOV7的论文阅读

2023-11-08

摘要

  • YOLOv7在速度和精度方面都超过了所有已知的目标检测器,在GPU V100上的速度为5 FPS到160 FPS的范围内,并且在所有已知的实时对象检测器中具有最高的56.8%的AP,速度为30 FPS或更高。
    • 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级联掩码R-CNN(8.6 FPS A100,55.2%AP)分别为551%和0.7%;
    • YOLOv7优于:YOLOR、YOLOX、Scaled-YOLOv4、YOLOv5、DETR、,可变形DETR、DINO-5scale-R50、ViT-Adapter-B和许多其他物体检测器的速度和精度。
  • 此外,我们只在MS COCO数据集上从头开始训练YOLOv7,而不使用任何其他数据集或预先训练的权重。源代码发布于https://github.com/WongKinYiu/yolov7

1 Introduction

【实时目标检测在不同设备上】
实时目标检测是计算机视觉中的一个非常重要的课题,因为它通常是计算机视觉系统中的一个必要组件。例如,多目标跟踪、自动驾驶、机器人、医学图像分析等。执行实时目标检测的计算设备通常是一些移动CPU或GPU,以及主要制造商开发的各种神经处理单元(NPU)。例如,Apple neural engine(Apple)、neural compute stick(Intel)、Jetson AI edge devices(Nvidia)、edge TPU(Google)、neural processing engine(高通)、AI processing unit(联发科)和AI SoC(Kneron)都是NPU。上述一些边缘设备专注于加速不同的操作,例如普通卷积、深度卷积或MLP操作。在本文中,我们提出的实时目标检测器主要希望它能够同时支持移动GPU和从边缘到云端的GPU设备。

【实时目标检测在边缘设备上】

  • 近年来,仍然针对不同的边缘设备开发了实时目标检测器。
    MCUNet 和NanoDet 的开发侧重于生产低功耗的单芯片和提高边缘CPU的推理速度。
    YOLOX和YOLOR等方法,它们专注于提高各种GPU的推理速度。

  • 最近,实时目标检测器的发展集中在高效结构的设计上。
    【CPU】可在CPU上使用的实时物体检测器,其设计大多基于MobileNet、ShuffleNet 或GhostNet。
    【GPU】另一种主流的实时对象检测器是为GPU开发的,它们大多使用ResNet、DarkNet 或DLA,然后使用CSPNet策略来优化结构。

  • 本文提出的方法的发展方向不同于当前主流的实时目标检测器。除了结构优化外,我们提出的方法将侧重于训练过程的优化。我们的重点是一些优化的模块和优化方法,它们可能会增加训练成本,以提高目标检测的准确性,但不会增加推理成本。我们将所提出的模块和优化方法称为可训练的 “Bag of freebies”。

上面的内容在我的 yolov4 中有讲述

  • Bag of freebies:字面意思就是“免费赠品”。在这里就是指,用一些比较有用的训练技巧来训练模型,只会改变训练策略或只会增加训练成本(不增加推理成本)的方法。从而使得模型获得更好的准确率但不增加模型的复杂度,也就不会增加推理的计算量。
  • Bag of specials:指一些插件模块(plugin modules)和后处理方法(post-processing methods),它们只稍微增加了推理成本,但可以极大的提高目标检测的准确度。一般来说,
    这些插件用来提高一个模型中的特定属性。比如增加感受野( SPP、ASPP、 RFB),引入注意力机制(spatial attention、channel attention),提高特征整合的能力(FPN、ASFF、BiFPN)。

【模型重新参数化、动态标签分配】
最近,模型重新参数化( model re-parameterization) 和动态标签分配( dynamic label assignment) 已成为网络训练和目标检测中的重要课题。主要是在上述新概念提出后,目标检测器的训练演变了许多新问题。在本文中,我们将介绍我们发现的一些新问题,并设计有效的方法来解决这些问题。

  • 对于模型重新参数化,我们使用梯度传播路径的概念分析了适用于不同网络层的模型重新参数化策略,并提出了计划的重新参数化模型。
  • 当我们发现使用动态标签分配技术时,具有多个输出层的模型的训练将产生新的问题。即:“如何为不同分支的输出分配动态目标?”针对这个问题,我们提出了一种新的标签分配方法,称为从粗到细的先导引导标签分配 ( lead guided label assignment)。

【本文贡献】

  • 设计了几种可训练的Bag of freebies,使得实时目标检测可以在不增加推理成本的情况下大大提高检测精度;
  • 对于目标检测方法的演变,我们发现了两个新问题:重新参数化模块如何替换原始模块,以及动态标签分配策略中如何处理到不同输出层的分配。此外,我们还提出了解决这些问题带来的困难的方法;
  • 我们提出了实时目标检测器的“扩展”和“复合缩放”方法,可以有效地利用参数和计算;
  • 我们提出的方法可以有效地减少最先进的实时目标检测器约40%的参数和50%的计算量,并且具有更快的推理速度和更高的检测精度。

2 Related work

  • Real-time object detectors
    目前,最先进的实时物体检测器主要基于YOLO 和FCOS。要成为最先进的实时目标检测器,通常需要以下特点:1)更快、更强的网络结构;2) 一种更有效的特征集成方法;3) 更精确的检测方法;4) 更稳健的损失函数;5) 一种更有效的标签分配方法;6) 一种更有效的训练方法。
    在本文中,我们不打算探索需要额外数据或大型模型的自监督学习或知识提取方法。相反,我们将针对与上述(4)(5)(6) 相关的最先进方法衍生的问题,设计新的可训练Bag of freebies。
  • Model re-parameterization
    模型重新参数化技术 在推理阶段将多个计算模块合并为一个。模型再参数化技术可以看作是一种集成技术,我们可以将其分为两类,即模块级集成和模型级集成。为了获得最终的推理模型,模型级重新参数化有两种常见做法。一种是用不同的训练数据训练多个相同的模型,然后平均多个训练模型的权重。另一种是对不同迭代次数下的模型权重进行加权平均。这种方法在训练期间将一个模块拆分为多个相同或不同的模块分支,并在推理期间将多个分支模块集成为完全等效的模块。
    然而,并不是所有提出的重新参数化模块都可以完美地应用于不同的体系结构。有鉴于此,我们开发了新的重新参数化模块,并为各种结构设计了相关的应用策略。
  • Model scaling
    模型缩放 是一种放大或缩小已设计模型并使其适合不同计算设备的方法。模型缩放方法通常使用不同的缩放因子,例如分辨率(输入图像的大小)、深度(层数)、宽度(通道数)和阶段(特征金字塔数),以便在网络参数量、计算、推理速度和精度方面实现良好的权衡。
    网络体系结构搜索(NAS)是常用的模型缩放方法之一。NAS可以从搜索空间中自动搜索合适的比例因子,而无需定义太复杂的规则。NAS的缺点是需要非常昂贵的计算来完成模型比例因子的搜索。在[15]中,研究人员分析了比例因子与参数和操作量之间的关系,试图直接估计一些规则,从而获得模型比例所需的比例因子。查阅文献,我们发现几乎所有模型缩放方法都独立分析单个缩放因子,甚至复合缩放类别中的方法也独立优化缩放因子。这是因为大多数流行的NAS体系结构处理的扩展因子不是很相关。我们观察到,所有基于串联的模型,如DenseNet 或VoVNet,在缩放此类模型的深度时,会改变某些层的输入宽度。由于提出的结构是基于级联的,因此我们必须为该模型设计一种新的复合缩放方法。

3 Architecture


3.1. 扩展高效层聚合网络(Extended efficient layer aggregation networks )

在大多数设计高效体系结构的文献中,主要考虑的是参数数量、计算量和计算密度。
从内存访问成本的特点出发,Ma等人[55]还分析了输入/输出通道比、结构分支数和元素操作对网络推理速度的影响。
Dollar等人[15]在执行模型缩放时还考虑了激活,即更多地考虑卷积层输出张量中的元素数量。


在这里插入图片描述

  • 图2:扩展高效层聚合网络。提出的扩展ELAN(E-ELAN)完全不改变原始结构的梯度传输路径,而是使用组卷积来增加添加特征的基数,并以打乱和合并基数的方式组合不同组的特征。这种操作方式可以增强通过不同特征图学习的特征,并改进参数和计算的使用。
  • 图2(b) 中CSPVONET的设计是VoVNet 的变体。除了考虑上述基本设计问题外,CSPVoVNet的结构还分析了梯度路径,以使不同层的权重能够学习更多不同的特征。上述梯度分析方法使推断更快、更准确。
  • 图2(c) 中的ELAN 考虑了以下设计策略 --“如何设计有效的网络?”他们得出了一个结论:通过控制最短最长梯度路径,更深层次的网络可以有效地学习和收敛。
  • 在本文中,我们提出了基于ELAN的扩展ELAN(E-ELAN),其主要结构如图2(d)所示。
    无论大规模ELAN中的梯度路径长度和计算块的堆叠数如何,它都已达到稳定状态。如果无限制地堆叠更多计算块,这种稳定状态可能会被破坏,参数利用率将降低。
    提出的E-ELAN使用扩展、打乱、合并基数来实现在不破坏原始梯度路径的情况下不断增强网络学习能力的能力。在结构方面,E-ELAN只改变了计算块中的结构,而过渡层的结构则完全不变。我们的策略是使用组卷积来扩展计算块的通道和基数。我们将对计算层的所有计算块应用相同的组参数和通道乘法器。然后,每个计算块计算出的特征图将根据设置的组参数g被打乱为g组,然后将它们连接在一起。此时,每组特征图中的通道数将与原始结构中的通道数相同。最后,我们添加g组特征图来执行合并基数。除了保持原始ELAN设计结构外,E-ELAN还可以引导不同的计算块组学习更多不同的功能。

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

【常见的模型缩放:独立分析每个比例因子的影响】
模型缩放的主要目的是调整模型的某些属性,并生成不同比例的模型,以满足不同推理速度的需要。例如,

  • EfficientNet 的比例模型考虑了宽度、深度和分辨率。
    至于scaled-YOLOv4[79],其缩放模型是调整阶段数。
    在[15]中,Dollar等人分析了在进行宽度和深度缩放时,vanilla卷积和组卷积对参数量和计算量的影响,并利用这一点设计了相应的模型缩放方法。

上述方法主要用于PlainNet或ResNet等体系结构。当这些结构执行放大或缩小时,每层的入度和出度(这里指的是输入维度和输出维度)都不会改变,因此我们可以独立分析每个比例因子对参数和计算量的影响。
【问题】然而,如果将这些方法应用于基于级联的体系结构,我们会发现,当在深度上执行放大或缩小时,紧随基于级联的计算块之后的转换层的入度将减小或增大,如图3(a)和(b)所示。
在这里插入图片描述
【基于级联的模型的 复合模型缩放方法】
从上述现象可以推断,对于基于串联的模型,我们不能单独分析不同的比例因子,但必须一起考虑。
以扩展深度为例,这种操作将导致过渡层的输入通道和输出通道之间的比率变化,这可能导致模型的硬件使用量减少。因此,我们必须为基于级联的模型提出相应的复合模型缩放方法。当我们缩放计算块的深度因子时,我们还必须计算该块的输出通道的变化。然后,我们将在过渡层上以相同的变化量执行宽度因子缩放,结果如图3© 所示。我们提出的复合缩放方法可以保持模型在初始设计时的属性,并保持最优结构。
在这里插入图片描述

  • 图3:基于串联的模型的模型缩放。从(a)到(b),我们观察到,当对基于级联的模型执行深度缩放时,计算块的输出宽度也会增加。这种现象将导致后续传输层的输入宽度增加。因此,我们提出©,即在基于级联的模型上执行模型缩放时,只需要缩放计算块中的深度,并且传输层的残差部分使用相应的宽度缩放。

4 Trainable bag-of-freebies


4.1. Planned re-parameterized convolution

尽管RepConv 在VGG 上取得了优异的性能,但当我们将其直接应用于ResNet 和DenseNet 以及其他结构时,其准确性将显著降低。我们使用梯度流传播路径来分析重新参数化卷积应如何与不同的网络相结合。我们还相应地设计了有计划的重新参数化卷积。
在这里插入图片描述

图4:设计的重参数化模型。在提出的计划重参数化模型中,我们发现,具有残差连接或串联连接的层,其RepConv不应具有标识连接。在这些情况下,它可以被不包含标识连接的RepConvN替代。

RepConv实际上将3×3卷积、1×1卷积和直连接组合在一个卷积层中。在分析了RepConv和不同体系结构的组合和相应性能后,我们发现RepConv中的直连接破坏了ResNet中的残差和Denset中的级联,从而为不同的特征图提供了更多的梯度多样性。基于上述原因,我们使用【无直连接的RepConv】(也就是RepConvN)来设计 规划的重参数化卷积的体系结构。在我们的思想中,当具有残差或级联的卷积层被重参数化卷积替换时,不应该存在直连接。图4显示了我们在PlainNet和ResNet中使用的设计的“规划的重参数化卷积”的示例。关于残差模型和级联模型中完整计划的重参数化卷积实验,将在消融研究实验中介绍。


4.2. Coarse for auxiliary and fine for lead loss

【深度监督】
深度监督[38]是一种经常用于训练深度网络的技术。其主要概念是在网络的中间层添加额外的辅助头,并以辅助损失为引导的浅层网络权重。即使对于诸如ResNet[26]和DenseNet[32]等通常收敛良好的结构,深度监督 仍然可以显著提高模型在许多任务上的性能。图5(a) 和(b)分别显示了“无深度监控”和“有深度监控”的目标检测器结构。在本文中,我们将负责最终输出的头称为先导头,用于辅助训练的头称为辅助头。
在这里插入图片描述

【标签分配】
过去,在深度网络的训练中,label 的分配通常直接根据实际标签,并根据给定的规则生成 [困难标签 (hard label)] 。然而近年来,如果我们以目标检测为例,研究人员经常使用网络预测输出的质量和分布,然后结合真实标签 考虑使用一些计算和优化方法来生成可靠的软标签。例如,YOLO[61]使用预测框和真实标签的IoU,作为目标的软标签。在本文中,我们将这种机制称为“标签分配器”,该机制同时考虑 网络预测结果与真实标签,然后分配软标签。

无论是辅助头或先导头,深度监督都需要针对目标的目标性进行训练(目标的目标性是指 这个框内是否存在目标,此时不关心目标的种类)。随着软标签分配器相关的技术的发展,我们意外地发现了一个新的衍生问题,即“如何将软标签指派给辅助头和先导头?”据我们所知,到目前为止,相关文献尚未探讨这一问题。

  • 目前最流行的方法的结果如图5© 所示,这是将辅助头和先导头分离,然后使用它们自己的预测结果和真实标签来进行标签分配。
  • 本文提出的方法是一种新的标签分配方法,通过先导头预测结果来同时引导辅助头和先导头。换句话说,我们使用先导头预测作为指导来生成从粗到细的层次标签,分别用于辅助头和先导头学习。提出的两种深度监督标签分配策略分别如图5(d)和(e)所示。
    在这里插入图片描述

【先导头引导标签分配】
先导头引导标签分配器主要根据先导头的预测结果和真实标签计算,并通过优化过程生成软标签。这组软标签将用作辅助头和先导头的目标训练模型。之所以这样做,是因为先导头具有较强的学习能力,因此由此生成的软标签应该更能代表源数据和目标数据之间的分布和相关性。此外,我们可以将这种学习视为一种广义残差学习。
通过让较浅的辅助头直接学习领导头已学习的信息,先导头将能够更专注于学习【尚未学习的残差信息】。

【Coarse-to-fine的先导头引导标签分配器】
使用先导头的预测结果和真实标签来生成软标签。然而在此过程中,我们生成了两组不同的软标签,即粗标签和细标签。
其中细标签与 [先导头引导标签分配器] 生成的软标签相同,粗标签是通过放宽正样本分配过程的约束,允许更多网格被视为正目标来生成的。

  • 这是因为辅助头的学习能力不如先导头强,为了避免丢失需要学习的信息,我们将重点优化目标检测任务中辅助头的召回。
    对于先导头的输出,我们可以从高召回率的结果中过滤出高精度的结果作为最终输出。
  • 然而,我们必须注意,如果粗标签的附加权重接近于细标签的附加权重,则可能在最终预测时产生不良先验。因此,为了使这些超粗正网格(辅助头的正标签)的影响较小,我们在解码器中设置了限制,使超粗正网格无法完美地生成软标签。上述机制允许在学习过程中动态调整细标签和粗标签的重要性,并使细标签的优化上限始终高于粗标签。

4.3. Other trainable bag-of-freebies

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

  • 1)conv-bn-activation 结构组合中的批量归一化:这部分主要将批量归一化层直接连接到卷积层。其目的是在推理阶段将批量归一化的均值和方差集成到卷积层的偏差和权重中。
  • 2) YOLOR[81]中的隐式知识与卷积特征图以及加法和乘法方式相结合:YOLOR中的隐式知识可以在推理阶段通过预计算简化为向量。该向量可以与之前或后续卷积层的偏差和权重相结合。
  • 3) EMA模型:EMA是mean teacher[75]中使用的一种技术,在我们的系统中,我们只使用EMA模型作为最终推理模型。

5 Experiments


5.1. Experimental setup

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

我们设计了边缘GPU、普通GPU和云GPU的基本模型,分别称为YOLOv7-tiny、YOLOv7和YOLOv7-W6。同时,我们还使用基本模型对不同的服务需求进行模型缩放,得到不同类型的模型。
对于YOLOv7,我们在neck部分(特征提取模块和输出任务模块的中间的部分,用于整合不同尺寸特征的信息)进行堆叠缩放,并使用提出的复合缩放方法来放大整个模型的深度和宽度,并使用该方法获得YOLOv7-X。
对于YOLOv7-W6,我们使用新提出的 [复合缩放的方法] 来获得YOLOv7-E6和YOLOv7-D6。此外,我们使用针对YOLOv7-E6提出了EELAN,从而完成YOLOv7-E6E。由于YOLOv7 tiny是一种面向边缘GPU的结构,它将使用 [leaky 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%。
  • 在tiny模型的性能方面,与YOLOv4-tiny-31相比,YOLOv7-tiny减少了39%的参数数量和49%的计算量,但保持了相同的AP。
  • 在云GPU模型上,我们的模型仍然可以具有更高的AP,同时将参数数量减少19%,计算量减少33%。
    在这里插入图片描述

5.3. Comparison with state-of-the-arts

我们将该方法与通用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可以将AP提高3.9%。
  • 如果将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%。
  • 对于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倍,将 transition block 的宽度放大1.25倍。
  • 如果将我们的方法与仅扩大宽度的方法进行比较,我们的方法可以在更少的参数和计算量的情况下将AP提高0.5%。
  • 如果将我们的方法与仅扩大深度的方法进行比较,我们的方法只需要增加2.9%的参数数量和1.2%的计算量,这可以将AP提高0.2%。

从表3的结果可以看出,我们提出的复合缩放策略可以更有效地利用参数和计算。
在这里插入图片描述

5.4.2 Proposed planned re-parameterized model

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

  • 在基于级联模型的实验中,我们用RepConv替换了3层堆叠ELAN中不同位置的3×3卷积层,详细配置如图6所示。从表4所示的结果中,我们可以看到,我们提出的计划重新参数化模型上存在所有更高的AP值。
    在这里插入图片描述
  • 在处理基于残差的模型的实验中,由于原始dark block没有符合我们设计策略的3×3卷积块,我们为实验额外设计了一个反向dark block,其结构如图7所示。由于具有dark block和反向dark block的CSPDarknet具有完全相同的参数和操作量,这是公平的比较。表5所示的实验结果充分证实了提出的重新参数化模型对基于残差的模型同样有效。我们发现RepCSPResNet[85]的设计也符合我们的设计模式。
    在这里插入图片描述

    图7:反向CSPDarknet。我们反转dark block中1×1和3×3卷积层的位置,以符合我们设计的重新参数化模型设计策略。


在这里插入图片描述

5.4.3 Proposed assistant loss for auxiliary head

在这里插入图片描述
在辅助头的辅助损失实验中,我们比较了先导头和辅助头方法的一般的独立标签分配,并比较了两种提出的先导引导标签分配方法。我们在表6中显示了所有比较结果。

  • 从表6中列出的结果可以看出,任何增加辅助损失的模型都可以显著提高整体性能。
  • 此外,我们提出的先导引导标签分配策略在AP、AP50和AP75中的性能优于一般的独立标签分配策略。
  • 至于我们提出的粗辅助和精细先导标签分配策略,它在所有情况下都能获得最佳结果。
    在图8中,我们显示了在辅助头和先导头上通过不同方法预测的目标图。从图8中我们发现,如果辅助头学习先导引导的软标签,它确实会帮助先导从一致的目标中提取剩余信息。

    在这里插入图片描述

在表7中,我们进一步分析了所提出的从粗到细引导标签分配方法对辅助头解码器的影响。也就是说,我们比较了引入/不引入上界约束的结果。从表中的数字来看,通过 [距离目标中心的距离] 来约束 [目标性上界] 的方法可以获得更好的性能。
在这里插入图片描述

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

6 Conclusions

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

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

【论文阅读】【yolo系列】YOLOV7的论文阅读 的相关文章

随机推荐

  • java启动参数,idea参数设置,环境变量参数,jdk选项,程序main函数参数的配置和获取方式

    Idea 开发java 项目中的各种启动参数配置和获取方式汇总 java启动命令的整体结构 如下4图涵盖了所有情况 本人亲自测试所得 欢迎提问 1 启动参数优先级 高优先级的配置 会覆盖低优先级的配置 2 按上图配置 启动测试 可见优先级最
  • 成功利用arthas解决一个cpu占用100%的问题

    最近在项目中 发现一个程序的cpu瞬间会占用100 经验来说应该是某个方法死循环了或者迭代次数过多 利用arthas可以查看问题的症结所在 arthas用户手册 1 首先启动arthas java jar arthas boot jar 2
  • springboot实现用户统一认证、管理(单点登录)

    大家好 我是雄雄 欢迎关注微信公众号 雄雄的小课堂 前言 现在是 2022年5月25日13 44 16 最近和模拟登录杠上了 这不 又来了个需求 还是以这个技术点入手的 需求大概是这样的 为了统一管理系统的用户 上游平台做了个统一认证平台
  • 1072: 青蛙爬井

    1072 青蛙爬井 题目描述 有一口深度为high米的水井 井底有一只青蛙 它每天白天能够沿井壁向上爬up米 夜里则顺井壁向下滑down米 若青蛙从某个早晨开始向外爬 对于任意指定的high up和down值 均为自然数 计算青蛙多少天能够
  • GPGGA校验计算方式

    GPGGA 092725 00 4717 11399 N 00833 91590 E 1 08 1 01 499 6 M 48 0 M 5B String str GPGGA 092725 00 4717 11399 N 00833 915
  • HiveSql一天一个小技巧:利用array_contains()函数进行容器存在性计数问题分析

    0 需求描述 文章被引用关系数据表如下 id oid 1 0 2 0 3 1 4 1 5 2 6 0 7 3 其中id表示文章id oid引用的文章 当oid为0时表示当前文章为原创文章 求原创文章被引用的次数 注意本题不能用关联的形式求解
  • 【Web基础入门】一文搞懂HTML + CSS + JavaScript 简单了解

    html html是什么 超文本标记语言 运行在浏览器上 超文本 超级文本 如流媒体 声音 视频 标记语言 由大量的标签组成 标签 任何一个标签都有开始标签和结束标签 html不是编程语言 没有变量 数据类型 控制语句等 只能算一种浏览器的
  • Dubbo使用nacos作为注册中心原理剖析

    Nacos是阿里自研的 一个更易于构建云原生应用的动态服务发现 配置管理和服务管理平台 作为微服务注册中心 它的目标是淘汰目前流行的eureka zookeeper consul等组件 现在学习它真的很有必要 这里就还是从源码的角度出发 看
  • 客观面试题--31.springmvc的运行流程

    Spring工作流程描述 1 用户向服务器发送请求 请求被Spring 前端控制Servelt DispatcherServlet捕获 2 DispatcherServlet对请求URL进行解析 得到请求资源标识符 URI 根据映射判断该u
  • SpringBoot yml中list、map填写和使用

    在 yml 中填写不同类型结构的数据 并在容器启动时 加载到变量中 即内存中 方便使用 应用场景 1 配置不想放库中了 2 有些复杂 不常改变的数据 临时需求 简单使用 yml myCode list topic1 topic2 topic
  • Python.密码本生成

    import itertools import string import os import time def get words 生成字符 return print string digits print string ascii lo
  • 第1关:实现一个顺序存储的线性表

    任务描述 本关任务 实现 step1 Seqlist cpp 中的SL InsAt SL DelAt和SL DelValue三个操作函数 以实现线性表中数据的插入 删除与查找等功能 相关知识 线性表是最基本 最简单 也是最常用的一种数据结构
  • centos7离线安装nginx【亲测有效】

    离线安装Nginx所需要的所有文件都在这 点击下载 提取码 1111 一 准备阶段 查看 操作系统是否安装 gcc gcc c 下载Nginx需要依赖的离线安装包 openssl pcre zlib 安装Nginx 二 安装步骤 1 验证安
  • 【BEV Camera-based】View Transformations 论文之FB-BEV,BEV Representation from Forward-Backward。

    在之前的BEV Survey中 提到过 BEV Camera表示仅用视觉或者主要用视觉的算法来实现3D物体检测或者分割 这些cameras来自车身周边 View Transform Module VTM 的主要功能是将多视角相机的特征投射到
  • AttributeError: ‘NoneType‘ object has no attribute ‘flush‘

    问题描述 当你的项目中使用了transformers库 并且使用 pyinstaller 打包无控制台窗口的程序时就会报这个错 Traceback most recent call last File main py line 4 in
  • 【python】关于_tkinter.TclError: image “pyimage1“ doesn‘t exist 问题的解决办法

    最近用tkinter写界面 一个界面一个按钮 打开电脑连接的两个相机 相机的原图以及经过onnx推理的结果 都显示在界面的四个框内 但是新加的放大按钮 在取这个框内图像时 新建个界面放大显示这个图 总报错 报错如下 tkinter TclE
  • Unity3D Shader之路 Shader错误、解决方法和重要内容汇总

    版本 unity 5 4 1 语言 Unity Shader 总起 今天使用Shader的时候遇到了问题 知道是哪边错了 却不知道怎么改 书又放到家里了 最后还是查到解决的代码 但是这类东西还是记录下来比较好 因为也没人会把那些宏命令背下来
  • 获取股票的数据

    if code is 6xxxxxx then add 0 as prefix Otherewise use 1 as prefix for example 600149 it will be 0600149 000001 it will
  • 软件调试的艺术读书笔记

    1 预备知识 1 1 调试工具 GDB Unix程序员最常用的调试工具是GDB 这是由Richard Stallman 开源软件运动的领路人 开 发的GNU项目调试器 GNU Project Debugger 该工具在Linux开发中扮演了
  • 【论文阅读】【yolo系列】YOLOV7的论文阅读

    摘要 YOLOv7在速度和精度方面都超过了所有已知的目标检测器 在GPU V100上的速度为5 FPS到160 FPS的范围内 并且在所有已知的实时对象检测器中具有最高的56 8 的AP 速度为30 FPS或更高 YOLOv7 E6目标检测