自YOLOv4之后,其作者提出一些新的trciks,YOLOv7诞生主要贡献分为以下3个方面
ps:
- 模型重参化就是在推理阶段将多个模块合并为一个计算模块,YOLOv6的RepVGG Style就是基于这种策略设计的
- YOLOv6的是SimOTA就是一种动态标签分配策略,除此外还有ATSS、OTA、TAL等方法
提示:以下是本篇文章正文内容,下面内容可供参考
YOLOv7给出了以下版本:
YOLOv7-tiny
(边缘GPU)、YOLOv7
(普通GPU)、YOLOv7-W6
(云GPU)YOLOv7-X
:基于YOLOv7,对neck部分进行stage缩放+使用新的模型缩放法对整个模型部分进行depth和width缩放YOLOv7-E6
:基于YOLOv7-W6,使用新的模型缩放法进行了depth缩放YOLOv7-D6
:基于YOLOv7-W6,使用新的模型缩放法进行了depth和width缩放YOLOv7-E6E
:基于YOLOv7-E6,使用E-ELAN替换ELANYOLOv7基础版本是anchor-based的,和YOLOv5比较相似,除数据增强外,在输入端都使用了自适应锚框计算
、自适应图片缩放
,并将Neck和Head合称Head层。
YOLOv7的网络结构图如下,可以看出改动在于:
ps:
- ELAN-H相比于 ELAN 增加了两个拼接操作,SPPCSPC 主要用于增大感受野。
- 前面系列中,已经提到了SPP(空间金字塔池化)和CSPC(跨阶段部分连接),其中SPP是一种用于解决不同尺寸输入图像问题的技术,CSPC是一种用于提高特征传递和网络效率的技术,SPPCSPC将SPP和CSPC两种技术结合起来。它首先使用SPP技术提取不同尺度的特征表示,然后通过CSPC技术进行特征传递和信息融合。这种结合可以同时处理不同尺度的特征信息,提高目标检测的准确性和效率。
- SPPCSPC 表现优于SPPF,但参数量和计算量提升了很多
CBS
、ELAN\E-ELAN
、MP
、SPPCSPC
、Rep
,保证速度情况下,提升了检测精度计划型重参化卷积
、辅助训练模块
、标签分配(Coarse-to-fine lead head guided label assigner)
),使用了一些现有BoF训练技巧(conv-bn-activation拓扑中的批量归一化
、YOLOR中的隐式知识与卷积特征图以加法和乘法的方式相结合
、EMA更新权重
),在不增加推理成本的情况下大大提高了检测精度基于级联模型的复合缩放
方法,可以更加高效地利用参数和计算量,减少实时探测器50%的参数,使其具备更快的推理速度和更高的检测精度。ps:在大规模ELAN中,无论梯度路径长度和计算模块数量如何,都达到了稳定的状态。但如果更多计算模块被无限地堆叠,这种稳定状态可能会被破坏,参数利用率也会降低。论文提出的E-ELAN采用expand、shuffle、merge cardinality结构,实现了在不破坏原始梯度路径的情况下,提高网络的学习能力。
尽管RepConv在VGG上取得了优异的性能,但将它直接应用于ResNet和DenseNet或其他网络架构时,它的精度会显著降低。作者使用梯度传播路径来分析不同的重参化模块应该和哪些网络搭配使用。通过分析RepConv与不同架构的组合以及产生的性能,作者发现RepConv中的identity破坏了ResNet中的残差结构和DenseNet中的跨层连接,这为不同的特征图提供了梯度的多样性
基于上述原因,作者使用没有identity连接的RepConv结构。图4显示了作者在PlainNet和ResNet中使用的“计划型重参化卷积”的一个示例
深度监督是一种常用于训练深度网络的技术,其主要概念是在网络的中间层增加额外的辅助头,以及以辅助损失为指导的浅层网络权重。即使对于像ResNet和DenseNet这样收敛效果好的网络结构,深度监督仍然可以显著提高模型在许多任务上的性能。
作者将负责最终输出的头部称为引导头部(lead head),而用于辅助训练的头部则称为辅助头部(auxiliary head)
过去,在深度网络的训练中,标签分配通常直接参考ground true框,并根据给定的规则生成硬标签。然而,近年来,以目标检测为例,研究人员经常使用网络输出的预测质量和分布,然后与ground true框一起考虑,使用一些计算和优化方法来生成可靠的软标签。例如,YOLO使用边界框回归预测框和ground true框的IoU和作为对象性的软标签。
在软标签分配器相关技术的发展过程中,作者意外地发现了一个新的衍生问题,即“如何为辅助头和引导头分配软标签?”,并且作者并未发现相关文献迄今对此问题进行了探讨。
此前最流行的方法的结果如下图(c)所示,即将辅助头和引导头分离,然后使用它们自己的预测结果和ground true框来执行标签分配。本文提出的方法是一种新的标签分配方法,通过引导头预测来引导辅助头和引导头。
即使用引导头预测作为指导来生成从粗到细的分层标签,这些标签分别用于辅助头和引导头学习。提出的两种深度监督标签分配策略分别如下图(d)和(e)所示
ps:之所以这样做,是因为引导头具有相对较强的学习能力,因此从中生成的软标签应该更能代表源数据和目标之间的分布和相关性。此外,我们可以将这种学习视为一种广义残差学习。通过让较浅的辅助头直接学习引导头已经学习的信息,引导头将能够更专注于学习尚未学习的剩余信息
ps:
- 细标签与Lead head guided label assigner生成的软标签相同,而粗标签是通过放宽正样本分配过程的约束,允许更多的网格被视为正目标来生成的(例如FastestDet的label assigner,不单单只把gt中心点所在的网格当成候选目标,还把附近的三个也算进行去,增加正样本候选框的数量)。
- 之所以这样做,是因为辅助头的学习能力不如引导头,为了避免丢失需要学习的信息,将在目标检测任务中重点优化辅助头的召回。对于引导头的输出,可以从高召回率的结果中过滤出高精度的结果作为最终输出。
compound model scaling method for a concatenation-based model
EfficientNet的缩放模型考虑了宽度、深度和分辨率。对于缩放的YOLOv4,其缩放模型是调整stage数量。
这些缩放方法主要用于PlainNet或ResNet等架构中。当这些架构执行缩放时,每层的入度和出度都不会改变,因此可以独立分析每个缩放因子对参数量和计算量的影响。
然而,如果将这些方法应用于基于级联的体系结构就会发现,当对深度进行缩放时,宽度也将改变,如下图(a)和(b)所示
从上述现象可以推断,对于基于级联的模型,不能单独分析不同的缩放因子,而必须一起考虑。以放大深度为例,这样的动作会导致过渡层的输入通道和输出通道之间的比例变化,这可能导致模型占用更多硬件资源。
因此,必须为基于级联的模型提出相应的复合模型缩放方法。当缩放计算块的深度因子时,还必须计算该块的输出通道的变化。然后在过渡层上执行相同变化量的宽度因子缩放,结果如上图(c)所示。该复合缩放方法可以保持模型在初始设计时的特性,并保持最佳结构。
YOLOv7达到新的SOTA,所提出的方法具有最好的速度-精度均衡性