yolov7论文解读
还没来得及看YOLOV6,官方YOLOV7就带着各种优化,各种优秀的指标重磅袭来~那能怎么办呢?先把yolov6跳过去呗T_T。论文地址
摘要
Yolov7在5FPS到160FPS速度范围内,在速度和准确率上都超过了所有已知的目标检测器,并且在30FPS速度上(使用GPU V100能达到更高的速度)能实现高达56.8%AP的准确率。比基于Transformer
的检测器 SWIN-L Cascade-Mask R-CNN
(9.2 FPS A100,53.9% AP)的速度和准确度分别高出 509% 和 2%,并且比基于卷积的检测器 ConvNeXt-XL Cascade-Mask R-CNN
(8.6 FPS A100, 55.2% AP) 速度提高 551%,准确率提高 0.7%,以及 YOLOv7
的表现还优于:YOLOR
、YOLOX
、Scaled-YOLOv4
、YOLOv5
、 DETR
、Deformable DETR
、DINO-5scale-R50
、ViT-Adapter-B
和许多其他速度和准确度的目标检测器。而且,作者只是用MS COCO数据集来从零训练,并没有使用其它数据集或预训练权重(即能得到这样的结果)。
一,介绍
Yolov7的优化方向与当前主流的实施目标检测不同,主要通过增加训练成本来提高目标检测的准确度,但不增加推理成本。因此,yolov7优化方法也称为trainable bag-of-freebies。
当前,模型重参化(model re-parameterization)和动态标签匹配(dynamic label assignment)在网络训练和目标检测种越来越重要,给目标检测的训练引入了很多新的问题。在这篇文章里,作者表述了一些他们发现的新问题,并设计了有效的方法来解决它们。在模型重参化方面,结合梯度传播路径的概念,分析了不同网络中用于各层的模型重参数化策略,提出了planned re-parameterized模型。此外,当我们发现使用动态标签分配技术时,多输出层模型的训练会产生新的问题。即:“如何为不同分支的输出分配动态目标?”针对这一问题,我们提出了一种新的标签分配方法——coarse-to-fine lead guided标签分配方法。
论文重点贡献在于:
(1)提出了一些trainable bag-of-freebies方法,因此,实时目标检测的准确率在大幅提升的同时不提高推理成本。
(2)在目标检测方法的发展过程中,我们发现了两个新的问题,即重新参数化模块如何取代原来的模块,以及动态标签分配策略如何处理对不同输出层的标签分配。我们提出了解决这些问题的方法。
(3)我们针对实时目标检测提出了“扩展” 和 “混合scaling”方法,可以有效的利用参数和计算。
(4)我们提出的方法可以有效的比SOTA实时目标检测降低40%参数量和50%的计算过程,并具有更高的推理速度和更准确的检测准确率。
二,相关技术介绍
2.1 实时目标检测
当前SOTA实时目标检测方法主要是基于YOLO和FCOS的,作为SOTA实时目标检测方法需要具有如下特点:
(1)更快和更强壮的网络结构
(2)更有效地特征集成方法
(3)更准确的检测方法
(4)更健壮的损失函数
(5)更高效的标签分配方法
(6)更高效的训练方法
在这篇论文中,我们没有使用需要额外数据或大型模型的自监督学习(self-supervised)或知识蒸馏(knowledge distillation)方法,而是提出了一个新的trainable bag-of-freebies方法来解决这些问题。
2.2 重参数化模型
重参数化模型在推理过程中将多个计算模块融合成一个。重参数化模型可以被看作为一个集成技术,我们可以将其氛围两个类别:模块层集成(module-level)和模型层集成(model-level)。模型层重参数化有两种通用的技术来获得最终的推理模型:一种是用不同的训练集数据来训练不同的模型,最后将其权值取平均;另一个是对不同迭代次数下的模型权值进行加权平均。模块层重参化在训练过程中将一个模块分裂为多个相同或不同的模块分支,在推理过程的时候将多个分支整合成一个相同的模块。然而,并不是所有提出的重新参数化的模块都能完美地应用于不同的架构。考虑到这一点,我们提出了新的重新参数化模块,并为各种体系结构设计了相关的应用策略。
2.3 模型缩放
模型缩放(Model scaling)技术可以放大或缩小一个已完成的模型,使其适用于不同的计算设备。(由于小编用不上这个技术,所有直接略过了),有兴趣的小盆友们可以自行阅读论文。
三,结构
3.1 扩展的高效层聚合网络(Extended efficient layer aggregation networks)
在大多数关于设计高效架构的文献中,主要考虑的无非是参数的数量、计算量和计算密度。ELAN考虑到以下的设计策略——“如何设计一个高效的网络”,他们最终得出结论:“通过控制最短最长的梯度路径,更深的网络可以更有效的学习和收敛”。这篇文章中,我们基于ELAN提出了扩展ELAN(E-ELAN)。
在large-scale ELAN网络中,无论梯度路径长度和计算快的堆叠数量如何,网络都达到了一个稳定状态。如果无限的叠加更多的计算块,这种稳定状态可能会被破坏,最终的参数利用率会被降低。E-ELAN使用扩展,shuffle,合并基数的方法来实现在不破坏原有梯度路径的情况下不断增强网络学习能力的能力。在结构方面,E-ELAN只改变了计算快的结构,同时保持了传输层的结构不变。我们的策略是使用群卷积来扩展计算块的通道和基数。我们对一个计算层的计算块使用相同的群参数和channel multiplier。然后,将每个计算块计算出来的特征映射(feature map)shuffle到g组中,最后将它们拼接在一起。此时,每组特征映射的通道数将于原始结构中的通道数相等。最后,我们我们使用相加的方法来合并特征映射。出了保持原来ELAN的设计结构外,E-ELAN还可以音道不同的计算块组学习更多不同的特征。
四,Trainable bag-of-freebies
4.1 计划重参化卷积(planned re-parameterized convolution)
尽管RepConv已经在VGG上实现了非常好的性能,但当我们直接在ResNet和DenseNet或其它结构上使用它的时候,准确率却被大幅降低了。我们用梯度流传播路径来分析如何将重新参数化的卷积与不同的网络相结合。并据此设计了计划重新参数化卷积。
RepConv实际在一个卷积层中结合了3*3卷积,1*1卷积,和identity connection。通过分析RepConv与不同结构的结合和对应的性能,我们发现RepConv中的identity connection破坏了ResNet中的残差和DenseNet中的拼接,而这些是为了给不同的特征映射提供更多的梯度多样性。因此,我们使用没有identity connection的RepConv,RepConvN,来设计计划重参数化卷积。在我们的想法中,如果一个带有residual或concatenation卷积层被重参数化卷积取代的话,则identity connection将不复存在。图4给出了我们将“planned re-parameterized convolution”用在PlainNet和ResNet的情况。
4.2 粗细标签匹配
(摘自:https://blog.csdn.net/Yong_Qi2015/article/details/125688248)
深度监督是一种常用于训练深度网络的技术。其主要概念是在网络的中间层增加额外的auxiliary Head
,以及以auxiliary
损失为导向的浅层网络权值。即使对于像ResNet
和DenseNet
这样通常收敛得很好的体系结构,深度监督仍然可以显著提高模型在许多任务上的性能。图5(a)和(b)分别显示了“没有”和“有”深度监督的目标检测器架构。在本文中,将负责最终输出的Head
为lead Head
,将用于辅助训练的Head
称为auxiliary Head
。
过去,在深度网络的训练中,标签分配通常直接指GT,并根据给定的规则生成硬标签。然而,近年来,如果以目标检测为例,研究者经常利用网络预测输出的质量和分布,然后结合GT考虑,使用一些计算和优化方法来生成可靠的软标签。例如,YOLO使用边界框回归预测和GT的IoU作为客观性的软标签。在本文中,将网络预测结果与GT一起考虑,然后将软标签分配为“label assigner”的机制。
无论auxiliary Head或lead Head的情况如何,都需要对目标目标进行深度监督培训。在软标签分配人相关技术的开发过程中,偶然发现了一个新的衍生问题,即“如何将软标签分配给 auxiliary head
和lead head
?”据我们所知,相关文献迄今尚未对这一问题进行探讨。目前最常用的方法的结果如图5(c)所示,即将 auxiliary head
和lead head
分开,然后使用它们自己的预测结果和GT来执行标签分配。本文提出的方法是一种新的标签分配方法,通过lead head
预测来引导 auxiliary head
和lead head
。换句话说,使用lead head
预测作为指导,生成从粗到细的层次标签,分别用于 auxiliary head
和lead head
的学习。所提出的2种深度监督标签分配策略分别如图5(d)和(e)所示。
1、Lead head guided label assigner
lead head
引导标签分配器主要根据lead head
的预测结果和GT进行计算,并通过优化过程生成软标签。这组软标签将作为 auxiliary head
和lead head
的目标训练模型。这样做的原因是lead head
具有相对较强的学习能力,因此由此产生的软标签应该更能代表源数据与目标之间的分布和相关性。此外,还可以将这种学习看作是一种generalized residual learning
。通过让较浅的auxiliary head
直接学习lead head
已经学习到的信息,lead head
将更能专注于学习尚未学习到的残余信息。
2、Coarse-to-fine lead head guided label assigner
从粗到细的lead head
引导标签分配器也使用lead head
的预测结果和GT来生成软标签。然而,在这个过程中,生成了两组不同的软标签,即粗标签和细标签,其中细标签与lead head
引导标签分配器生成的软标签相同,而粗标签是通过允许更多的网格来生成的。通过放宽正样本分配过程的约束,将其视为正目标。原因是auxiliary head
的学习能力不如前lead head
强,为了避免丢失需要学习的信息,将重点优化auxiliary head
的召回率。
至于lead head
的输出,可以从高recall
结果中过滤出高精度结果作为最终输出。但是,必须注意,如果粗标签的附加权重接近细标签的附加权重,则可能会在最终预测时产生不良先验。因此,为了使那些超粗的正网格影响更小,在解码器中设置了限制,使超粗的正网格不能完美地产生软标签。上述机制允许在学习过程中动态调整细标签和粗标签的重要性,使细标签的可优化上界始终高于粗标签。
4. 3 其他Tricks
这些细节将在附录中详细说明,包括:
(1) conv-bn-activation topology
中的Batch normalization
:这部分主要将batch normalization layer
直接连接到卷积层。这样做的目的是在推理阶段将批归一化的均值和方差整合到卷积层的偏差和权重中。
(2) 隐性知识在YOLOR
中结合卷积特征图的加法和乘法方式:YOLOR
中的隐式知识可以在推理阶段通过预计算简化为向量。该向量可以与前一个或后一个卷积层的偏差和权重相结合。
(3) EMA
模型:EMA
是一种在 mean teacher
中使用的技术,在系统中使用 EMA
模型纯粹作为最终的推理模型。