YOLOv7的一些理解

在这里插入图片描述
论文链接:https://arxiv.org/abs/2207.02696
代码链接:https://github.com/WongKinYiu/yolov7

秀肌肉:

官方版的YOLOv7相同体量下比YOLOv5精度更高,速度快120%(FPS),比 YOLOX 快180%(FPS),比 Dual-Swin-T 快1200%(FPS),比 ConvNext 快550%(FPS),比 SWIN-L快500%(FPS)。在5FPS到160FPS的范围内,无论是速度或是精度,YOLOv7都超过了目前已知的检测器,并且在GPU V100上进行测试, 精度为56.8% AP的模型可达到30 FPS(batch=1)以上的检测速率,与此同时,这是目前唯一一款在如此高精度下仍能超过30FPS的检测器。具体比较详见下图:
在这里插入图片描述

1.简介

近年来,模型结构重参数化和动态标签分配已成为网络训练和目标检测中重要的优化方向,而本文中作者发现了现存的一些问题,例如:

  • 对于模型结构重参数化,用梯度传播路径的概念分析了适用于不同网络中各层结构重参化策略,提出了规划的模型结构重参化。
  • 当使用动态标签分配策略时,多输出层的模型在训练时会产生新的问题,比如怎样才能为不同分支更好的输出匹配动态目标。针对这个问题,作者提出了一种新的标签分配方法,称为coarse-to-fine(由粗到细)引导标签分配策略。
本文贡献如下:
  1. 设计了几种可训练的bag-of-freebies,使实时检测器可以在不提高推理成本的情况提高检测精度。
  2. 对于目标检测的发展,作者发现两个问题,即模型重参数化如何高效替代原始模块,以及动态标签分配策略如何处理好不同输出层的分配。因此本文中提出了方法进行解决。
  3. 作者为实时检测器提出了“扩展”和“复合缩放”的方法,可以更加高效地利用参数和计算量,同时作者提出的方法可以有效地减少实时检测器50%的参数,并且具备更快的推理速度和更高的检测精度。(和v5或者scale v4的baseline 使用不同规格划分成几种模型类似,既可以width和depth的缩放,也可以时module的缩放)

2.相关工作

SOTA的检测器,一般具有以下特征:

  • 更快和更高效的网络架构
  • 更有效的特征积分方法
  • 更准确的检测方法
  • 更鲁棒的损失函数
  • 更有效的标签分配方法
  • 更有效的训练方式

2.1 模型重参化

模型级重参数化有两种常见的操作:

  1. 一种是用不同的训练数据训练多个相同的模型,然后对多个训练模型的权重进行平均。
  2. 一种是对不同迭代次数下模型权重进行加权平均。

模块重参数化是近年来一个比较流行的研究课题。在训练过程中将一个整体模块分割为多个相同或不同的模块分支,但在推理过程中将多个分支集成到一个完全等价的模块中。然而并不是所有提出的重参数化的模块都可以完美地应用于不同地架构。因此作者开发了新的重参数化的模块,并为各种架构设计了相关的应用程序策略。

2.2 模型缩放

模型缩放通过扩大或缩小baseline中rate,使其适用于不同的计算设备。NAS是现在常用的模型缩放方法之一。缩放因子通常包括以下:

  • input size
  • depth
  • width
  • stage

3. 模型设计

3.1 高效聚合网络

在大多数关于设计高效网络的论文中,主要考虑的因素是参数量、计算量和计算密度。但从内存访存的角度出发出发,还可以分析输入/输出信道比、架构的分支数和元素级操作对网络推理速度的影响(shufflenet论文提出)。在执行模型缩放时还需考虑激活函数,即更多地考虑卷积层输出张量中的元素数量。
在这里插入图片描述

  • CSPVoVNet是VoVNet的一个变体,前者的体系结构还分析了梯度路径,使不同层能够学习更多样化的特征。
  • (c)中ELAN处于以下设计考虑——“如何设计一个高效网络?”得出结论:通过控制最短最长梯度路径,更深的网络可以有效地学习并更好地收敛
  • 因此在v7中,作者提出了基于ELAN的扩展版本E-ELAN(d)。在大规模ELAN中,无论梯度路径长度和计算模块数量如何,都达到了稳定的状态。但如果更多计算模块被无线堆叠,这种稳定状态可能会被破快,参数利用率也会降低。本文提出地E-ELAN采用expand、shuffle、merge cardinality结构,实现在不破坏原始梯度路径情况下,提高网络地学习能力。

在体系结构方面,E-ELAN只改变了计算模块中的结构,而过渡层结构则完全不变。作者的策略:***利用分组卷积来扩展计算模块的通道和基数,将相同的group parameter和channel multiplier用于计算每一层中的所有模块。然后,将每个模块计算出的特征图根据设置的分组数打乱成G组,最后将它们连接在一起。***此时,每一组特征图中的通道数将与原始体系结构中的通道数相同。最后,作者添加了G组特征来merge cardinality。除了维护原始的ELAN设计架构外,E-ELAN还可以指导不同的分组模块来学习更多样化的特性。

4. bag-of-freebies

4.1 卷积重参化

尽管RepConv在VGG上取得了优异的性能,但将它直接应用于ResNet和DenseNet或其他网络架构时,它的精度会显著降低。作者使用梯度传播路径来分析不同的重参化模块应该和哪些网络搭配使用。通过分析RepConv与不同架构的组合以及产生的性能,作者发现RepConv中的identity破坏了ResNet中的残差结构和DenseNet中的跨层连接

4.2 辅助训练模块

深度监督是一种常用于训练深度网络的技术,其主要概念是在网络的中间层增加额外的辅助头(google也是这样!!),以及以辅助损失为指导的浅层网络权重。即使对于像ResNet和DenseNet这样收敛效果好的网络结构,深度监督仍然可以显著提高模型在许多任务上的性能。下图(a)和(b)分别显示了“有”和“没有”深度监督的目标检测器架构,在本文中,作者将负责最终的输出头称为引导头,将用于辅助训练的头称为辅助头。
在这里插入图片描述
目标检测经常利用预测框和GT进行IOU后的结果作为标签,最开始辅助头和引导头是分开做标签处理的,在本文中提出的方法是一种新的标签分配方法:通过引导头的预测来引导辅助头。即,首先使用引导头的prediction作为指导,生成从粗到细的层次标签,分别用于辅助头和引导头的学习。(有点像知识蒸馏的味道里面)这样做的目的是使引导头具有较强的学习能力,由此产生的软标签更能代表源数据与目标之间的分布差异和相关性,此外,作者还可以将这种学习看作是一种广义上的余量学习。通过让较浅的辅助头直接学习引导头已经学习到的信息,引导头能更加专注于尚未学习到的残余信息。

扫描二维码关注公众号,回复: 15132670 查看本文章

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

  • Batch normalization:目的是在推理阶段将批归一化的均值和方差整合到卷积层的偏差和权重中。
  • YOLOR中的隐式知识结合卷积特征映射和乘法方式:YOLOR中的隐式知识可以在推理阶段将计算值简化为向量。这个向量可以与前一层或后一层卷积层的偏差和权重相结合。
  • EMA Model:EMA 是一种在mean teacher中使用的技术,作者使用 EMA 模型作为最终的推理模型。

5.实验

这个部分就不秀肌肉了,大家可以去paper里面自己看。

猜你喜欢

转载自blog.csdn.net/weixin_45074568/article/details/126002238
今日推荐