前言:目标检测 | yolov6 原理和介绍
后续:目标检测 | yolov8 原理和介绍
1. 简介
YOLOv7是目标检测领域中YOLO系列的最新进展,它在速度和准确性上都取得了显著的提升,被认为是目标检测领域的新里程碑。YOLOv7的核心技术亮点包括:
- 模型重参数化:YOLOv7首次将模型重参数化技术引入网络架构中,这一技术最早在REPVGG中提出,有助于提升模型表达能力而不增加计算复杂度。
- 标签分配策略:YOLOv7采用了结合YOLOv5和YOLOX优点的标签分配策略,通过跨网格搜索和匹配策略,提高了检测准确性。
- ELAN高效网络架构:YOLOv7提出了ELAN(Extended Efficient Layer Aggregation etwork)架构,通过优化网络结构和计算流程,实现高检测性能和低计算复杂度。
- 带辅助头的训练:YOLOv7引入了辅助头进行训练,这为模型提供了更多监督信息,有助于学习有用的特征表示,尽管这会增加一定的训练成本,但可以提高检测精度,且不影响推理速度 。
- 架构改革:YOLOv7的架构源自YOLOv4、Scaled YOLOv4和YOLO-R,并在此基础上进行了进一步的实验和开发。
- 复合模型缩放:YOLOv7执行模型缩放以适应不同的应用需求,考虑了分辨率、宽度、深度和阶段等因素。
- 可训练的Bag of Freebies (BoF):YOLOv7引入了计划重参数化卷积等BoF方法,在不增加训练成本的情况下提高模型性能。
Coarse for Auxiliary and Fine for Lead loss:YOLOv7采用了深度监督技术,使用多个头进行训练,其中包括Lead Head和辅助头,以及Lead Head Guided Label Assigner,有助于模型更好地学习。
论文:https://arxiv.org/abs/2207.02696
代码:https://github.com/WongKinYiu/yolov7
本论文主要工作:
- 提出了一个实时对象检测器,主要是希望它能够从边缘到云端同时支持移动GPU和GPU设备。
- 优化了架构,专注于优化训练过程。重点放在优化模块和优化方法上,称为可训练的 “Bag of freebies”。
- 对于模型重参数化问题,本文使用梯度传播路径的概念分析了适用于不同网络中的层的模型重参数化策略,并提出了有计划的重参数化模型。
- 对于动态标签分配问题,本文提出了一种新的标签分配方法,称为由粗到细引导标签分配
本文主要贡献:
- 提出了几种可用于训练的方法,这些方法仅仅会增加训练上的负担用于提升model性能,而不会增加推理负担
- 对于目标检测方法的发展,作者发现了两个新问题:
①重参数化模块如何替换原始模块
②动态标签分配策略如何处理对不同输出层的分配
不过本文提出了解决这俩问题的方法- 作者针对目标检测可以更有效的利用参数和计算问题,提出了"扩展"(extend)和“复合缩放”(compound scaling)
- 提出的方法可以有效的减少40%参数量和50%计算量,高精度高速度
2. Related work 相关工作
2.1 Real-time object detectors 实时物体检测器
目前最先进的实时目标检测器主要基于 YOLO [61, 62, 63] 和 FCOS [76, 77],分别是 [3, 79, 81, 21, 54, 85, 23] . 能够成为最先进的实时目标检测器通常需要以下特性:
(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) 相关的最先进方法衍生的问题设计新的可训练bag-of-freebies方法。
2.2 Model re-parameterization 模型重新参数化
模型重新参数化技术 [71、31、75、19、33、11、4、24、13、12、10、29、14、78] 在推理阶段将多个计算模块合并为一个。 模型重参数化技术可以看作是一种集成技术,我们可以将其分为两类,即模块级集成和模型级集成。 模型级别的重新参数化有两种常见的做法来获得最终的推理模型。 一种是用不同的训练数据训练多个相同的模型,然后对多个训练模型的权重进行平均。 另一种是对不同迭代次数的模型权重进行加权平均。 模块级重新参数化是最近比较热门的研究问题。这种方法在训练时将一个模块拆分为多个相同或不同的模块分支,在推理时将多个分支模块整合为一个完全等效的模块。然而,并非所有提出的重新参数化模块都可以完美地应用于不同的架构。 考虑到这一点,我们开发了新的重新参数化模块,并为各种架构设计了相关的应用策略。
2.3. Model scaling 模型缩放
模型缩放[1,14,15,49,57,69-71]是一种放大或缩小已设计模型并使其适合不同计算设备的方法。模型缩放方法通常使用不同的缩放因子,如分辨率(输入图像的大小)、深度(层数)、宽度(通道数)和级数(特征金字塔数),以便在网络参数量、计算量、推理速度和精度方面实现良好的折衷。网络体系结构搜索(NAS)是常用的模型缩放方法之一。NAS可以从搜索空间中自动搜索合适的缩放因子,而无需定义过于复杂的规则。NAS的缺点是它需要非常昂贵的计算来完成模型缩放因子的搜索。在[14]中,研究人员分析了缩放因子与参数和操作量之间的关系,试图直接估计一些规则,从而获得模型缩放所需的缩放因子。通过查阅文献,我们发现几乎所有的模型缩放方法都独立分析单个缩放因子,甚至复合缩放类别中的方法也独立优化了缩放因子。这是因为大多数流行的NAS架构处理的扩展因素相关性不大。我们观察到,当缩放这些模型的深度时,所有基于连接的模型,如DenseNet[31]或VoExpressRoute[38],都会改变某些层的输入宽度。由于所提出的架构是基于连接的,我们必须为该模型设计一种新的复合缩放方法。
3. Architecture 结构
3.1. Extended efficient layer aggregation networks 扩展的高效层聚合网络
在大多数关于设计高效架构的文献中,主要考虑的无非是参数的数量、计算量和计算密度。Ma等人[52]从存储器访问成本的特点出发,分析了输入/输出通道比、体系结构分支数和元素运算对网络推理速度的影响。Doll’ar等人[14]在执行模型缩放时还考虑了激活,即更多地考虑卷积层输出张量中的元素数量。图2 (b)中的CSPVoVNet[76]的设计是VoVNet[38]的变体。CSPVoVNet的架构[76]除了考虑上述基本的设计问题外,还对梯度路径进行了分析,以使不同层的权值能够学习到更多样化的特征。上述的梯度分析方法使推理更快、更准确。图2 ©中的ELAN[78]考虑了以下设计策略——“如何设计一个高效的网络?”他们得出了一个结论:通过控制最长最短的梯度路径,一个更深层次的网络可以有效地学习和收敛。在本文中,我们提出了基于ELAN的扩展ELAN (E-ELAN),其主要架构如图2 (d)所示。
在大规模ELAN中,无论梯度路径长度和计算块的堆叠数量如何,它都达到了稳定状态。如果无限地堆叠更多的计算块,这种稳定状态可能会被破坏,参数利用率会下降。本文提出的E-ELAN算法通过扩展、洗牌、合并基数来实现在不破坏原有梯度路径的情况下不断增强网络学习能力的能力。在体系结构上,E-ELAN只改变了计算块的体系结构,而过渡层的体系结构完全不变。我们的策略是使用群卷积来扩展计算块的通道和基数。我们将对计算层的所有计算块应用相同的组参数和信道乘法器。然后,将每个计算块计算出的特征图按照设定的组参数g进行洗牌,再将其拼接在一起。此时,每组特征图中的通道数将与原架构中的通道数相同。最后,我们添加g组特征映射来执行合并基数。E-ELAN除了保持原有的ELAN设计架构外,还可以引导不同组的计算块学习更多样化的特性。
(a) VoVNet
VoVNet是一个基于连接的模型,由OSA组成,将 DenseNet 改进的更高效,区别于常见的plain结构和残差结构。
这种结构不仅继承了 DenseNet 的多感受野表示多种特征的优点,也解决了密集连接效率低下的问题。
(b) CSPVoVNet
(b)是(a)的CSP变体,CSPVoVNet除了考虑到参数量、计算量、计算密度、ShuffleNet v2提出的内存访问成本(输入输出通道比,架构分支数量,element-wise等),还分析了梯度路径,可以让不同层的权重学习到更具有区分性的特征。
(c) ELAN
通过控制最短最长的梯度路径,更深的网络可以更有效地学习和收敛。
优点:
1.可以有效地使用网络参数 ,在这一部分中提出通过调整梯度传播路径,不同计算单元的权重可以学习各种信息,从而实现更高的参数利用效率
2.具有稳定的模型学习能力,由于梯度路径设计策略直接确定并传播信息以更新权重到每个计算单元,因此所设计的架构可以避免训练期间的退化
3.具有高效的推理速度,梯度路径设计策略使得参数利用非常有效,因此网络可以在不增加额外复杂架构的情况下实现更高的精度。
缺点: 当梯度更新路径不是网络的简单反向前馈路径时,编程的难度将大大增加。
(d) ELAN
(d)是作者提出的 Extended-ELAN (E-ELAN) ,E-ELAN 使用了 expand、shuffle、merge cardinality来实现对 ELAN 网络的增强。
在架构方面,E-ELAN 只改变了计算块(computation blocks)的架构,而过渡层(transition layer)的架构完全没有改变。
YOLOv7 的策略是使用组卷积来扩展计算块的通道和基数。
3.2. Model scaling for concatenation-based models 基于连接的模型的模型缩放
模型缩放的主要目的是调整模型的某些属性,生成不同尺度的模型,以满足不同推理速度的需要。例如,effentnet的缩放模型[69]考虑了宽度、深度和分辨率。缩放后的yolov4[76],其缩放模型是调整级数。在[14]中,Doll’ar等人分析了香草卷积和群卷积在进行宽度和深度缩放时对参数量和计算量的影响,并以此设计了相应的模型缩放方法。上述方法主要用于诸如PlainNet或ResNet等体系结构中。当这些架构执行放大或缩小时,每一层的入度和出度不会改变,因此我们可以独立分析每个缩放因子对参数和计算量的影响。然而,如果这些方法应用于concatenation-based架构中,我们会发现,当进行深度扩展或收缩,翻译的入度层concatenation-based计算块后立即将减少或增加,如图3所示(a)和(b)。
它可以推断出从上面的现象我们不能单独分析不同尺度因子concatenation-based模型但必须考虑在一起。以放大深度为例,这种动作会导致过渡层的输入通道和输出通道的比例发生变化,从而可能导致模型的硬件使用率下降。因此,我们必须针对基于串联的模型提出相应的复合模型缩放方法。当我们缩放计算块的深度因子时,我们还必须计算该块的输出通道的变化。然后,我们将对过渡层进行相同变化量的宽度因子缩放,结果如图3 ©所示。我们提出的复合缩放方法可以保持模型在初始设计时的属性,并保持最优结构。
作者对于连接模型,提出了一种复合模型方法,在考虑计算模块深度因子缩放的同时也考虑过渡层宽度因子做同等量的变化。当对连接结构的网络进行尺度缩放时,只缩放计算块的深度,转换层的其余部分只进行宽度的缩放
4. Trainable bag-of-freebies 可训练的bag-of-freebies
4.1. Planned re-parameterization model 计划的重新参数化模型
虽然RepConv[12]在VGG[65]上取得了优异的性能,但当我们直接将其应用于ResNet[25]和DenseNet[31]等非平面架构时,其准确率会显著降低。利用梯度流传播路径分析了重参数化卷积如何与不同的网络相结合。并设计了相应的规划再参数化模型。
RepConv实际上在一个卷积层中结合了3×3卷积、1×1卷积和恒等连接。经过分析组合和相应的性能-图4。计划的重新参数化模型。在提出的规划重参数化模型中,我们发现,对于残差连接或连接连接的层,其RepConv不应该有身份连接。在这种情况下,可以用不包含身份连接的RepConvN代替它。
研究发现,RepConv中的身份连接破坏了ResNet中的残差和DenseNet中的拼接,为不同的特征映射提供了更多的梯度多样性。基于以上原因,我们使用无身份连接的RepConvN (RepConvN)来设计计划重参数化模型的体系结构。在我们的想法中,当残差或拼接的卷积层被重新参数化卷积取代时,应该没有恒等连接。图4显示了我们设计的“计划的重新参数化模型”如何在PlainNet和ResNet中应用的示例。至于基于残差模型和基于串联模型的完整的计划重参数化模型实验,将在消融研究部分进行。
4.2. Coarse for auxiliary and fine for lead loss 粗用于辅助,细用于铅损失
Lead head是负责最终输出的 head ;Auxiliary head是负责辅助训练的 head
负责辅助训练的head用粗标签,负责最终输出的head用细标签
深度监督[37]是一种用于训练深度网络的技术。其主要概念是在网络的中间层添加额外的辅助头部,并以辅助损失为导向对浅层网络进行加权。即使对于ResNet[25]和DenseNet[31]等通常收敛良好的架构,深度监督[45,48,62,64,67,80,84,95]仍然可以显着提高模型在许多任务上的性能。图5 (a)和(b)分别显示了“无”和“有”深度监督的目标检测器架构。在本文中,我们将负责最终输出的头部称为先导头部,将辅助训练的头部称为辅助头部。
接下来我们要讨论标签分配的问题。过去,在深度网络的训练中,标签分配通常直接参考ground truth,并根据给定的规则生成硬标签。然而,近年来,如果以目标检测为例,研究人员经常利用网络预测输出的质量和分布,然后结合地面真值,使用一些计算和优化方法来生成可靠的软标签[7,16,19,35,40 - 42,58,87,88,96]。例如,YOLO[58]使用边界盒回归预测的IoU和ground truth作为对象的软标签。本文将考虑网络预测结果和地面真实值并分配软标签的机制称为“标签分配器”。
关于hard label和soft label:
hard label:有些论文中也称为hard target ,其实这也是借鉴了知识蒸馏的思想,hard字面意思上就可以看出比较强硬,是就是,不是就是不是,标签形式:(1,2,3…)或(0,1,0,0…)【举个栗子:要么是猫要么是狗】
soft label:soft是以概率的形式来表示。可理解为对标签的平滑也即软化,比如像[0.6,0.4],【举个栗子:有60%的概率是猫, 40%的概率是狗】,就好像不会给你非常明确的回答。
现在比较流行的结构中,经常会将网络输出的数据分布通过一定的优化方法等与GT进行匹配生成soft label(其实我们熟悉的经过softmax的或者sigmod输出就是一种soft label)。
无论辅助负责人还是领导负责人的情况如何,深度监督都需要对目标目标进行培训。在软标签贴标机相关技术的发展过程中,我们意外发现了一个新的衍生问题,即“如何将软标签分配给辅助头和导联头”,据我们所知,相关文献至今尚未探讨过这个问题。目前最流行的方法结果如图5 ©所示,即将辅助头和引线头分开,然后利用各自的预测结果和ground truth进行标签赋值。本文提出的方法是一种利用导流头预测同时引导辅助导流头和导流头的新型标签分配方法。换句话说,我们使用引线头部预测作为指导来生成粗到细的层次标签,这些标签分别用于辅助头部和引线头部学习。提出的两种深度监管标签分配策略分别如图5 (d)和(e)所示。
导联头导联标签分配器主要是根据导联头的预测结果和地面真实情况进行计算,并通过优化过程生成软标签。这套软标签将作为辅助头和导头的目标训练模型。这样做的原因是因为铅头具有相对较强的学习能力,因此由其生成的软标签应该更能代表源数据与目标数据之间的分布和相关性。进一步,我们可以把这种学习看作是一种广义残差学习。通过让较浅的辅助头直接学习铅头已经学习过的信息,铅头将更能专注于学习尚未学习的剩余信息。
粗精导标器还利用导标头的预测结果和接地真值生成软标。但是在这个过程中,我们生成了两组不同的软标签,即粗标签和细标签,其中细标签与引线头引导标签分配器生成的软标签相同,而粗标签是通过放宽正样本分配过程的约束,允许更多的网格被视为正目标而生成的。究其原因,是因为辅助头的学习能力不如先导头强,为了避免丢失需要学习的信息,我们将重点优化辅助头在目标检测任务中的召回。对于引线头的输出,我们可以从高查全率的结果中过滤出高精度的结果作为最终输出。但是,我们必须注意,如果粗标签的附加权重与细标签的附加权重接近,则可能在最终预测时产生不良先验。因此,为了使这些超粗的正网格影响较小,我们在解码器中加入了限制,使得超粗的正网格不能很好地产生软标签。该机制允许在学习过程中动态调整细标签和粗标签的重要性,并且使细标签的可优化上界始终高于粗标签。
粗标签和细标签究竟是什么?
首先是细标签,网络最终输出的三个head是Lead head,会将这部分的预测结果与ground truth生成soft label,网络会觉得这个soft label得到是数据分布更接近真实的数据分布,训练得到的内容更加“细致”,
再来说说粗标签,Auxiliary head由于是从中间网络部分得到的,它的预测效果肯定是没有深层网络Lead head提取到的数据或者特征更细致,所以Auxiliary head部分的内容是比较“粗糙”的,在训练过程中,会将Lead head与ground truth的soft label当成一个全新的ground truth,然后与Auxiliary head之间建立损失函数,说白了,就是让辅助head的预测结果也“近似”为Lead head
4.3. Other trainable bag-of-freebies 其他可训练的免费包
在本节中,我们将列出一些可训练的免费包。这些免费赠品是我们在训练中使用的一些技巧,但最初的概念并不是我们提出的。这些免费赠品的训练细节将在附录中详细阐述,包括(1)convn -bn激活拓扑中的批归一化:这部分主要是将批归一化层直接连接到卷积层。这样做的目的是在推理阶段将批处理归一化的均值和方差整合到卷积层的偏置和权值中。(2) YOLOR中的隐式知识[79]与卷积特征映射加法乘法相结合:在推理阶段通过预计算,将YOLOR中的隐式知识简化为一个向量。这个向量可以与前一个或后一个卷积层的偏置和权重相结合。(3) EMA模型:EMA是一种用于平均教师的技术[72],在我们的系统中,我们使用EMA模型纯粹作为最终的推理模型。
5. Experiments 实验
5.1. Experimental setup 实验步骤
使用MS COCO数据集进行实验。我们所有的模型都是从零开始训练的。我们使用train 2017 set进行训练,然后使用val 2017 set进行验证和选择超参数。最后,使用2017年测试集与最先进的目标探测器进行比较。详细的培训设置见附录。
我们设计了边缘GPU、普通GPU和云GPU的基本模型,分别命名为YOLOv7-tiny、YOLOv7和YOLOv7- w6。我们还使用基本模型对不同的服务需求进行模型缩放。对于YOLOv7,我们在颈部进行堆栈缩放,并使用所提出的复合缩放方法对整个模型的深度和宽度进行缩放,得到YOLOv7- x。对于YOLOv7-W6,我们采用新提出的复合标度法得到了YOLOv7-E6和YOLOv7-D6。此外,我们对YOLOv7-E6使用了拟议的E-ELAN,从而完成了YOLOv7-E6E。由于YOLOv7-tiny是面向边缘gpu的架构,它将使用泄漏的ReLU作为激活函数。对于其他模型,我们使用SiLU作为激活函数。我们将在附录中详细描述每个模型的比例因子。
5.2. Baselines 基线
我们选择以前版本的YOLO[2,76]和最先进的目标检测器YOLOR[79]作为我们的基线。表1显示了我们提出的YOLOv7模型与使用相同设置训练的基线的比较。从结果中我们可以看到,基于yolov7的模型在参数数量、计算量和准确性方面优于基线模型。对于普通GPU设计的模型,YOLOv7和YOLOv7x减少了约40%的参数和20%的计算量,仍然可以实现更高的AP。对于边缘GPU设计的模型,YOLOv7-tiny减少了39%的参数和49%的计算量,并且可以实现与yolov4 -tiny- 31相同的AP。
5.3. Comparison with state-of-the-arts 与最先进水平的比较
我们将所提出的方法与最先进的目标探测器进行了比较,结果如表2所示。由表2可知,该方法具有最佳的速度-精度综合权衡。
5.4. Ablation study 消融实验
5.4.1 Proposed compound scaling method 提出复合结垢法
表3显示了使用不同模型扩展策略进行扩展时获得的结果。其中,我们提出的复合缩放方法是将计算块的深度增加1.5倍,过渡块的宽度增加1.25倍。从表3的结果可以看出,我们提出的复合缩放策略可以更有效地利用参数和计算量。
5.4.2 Proposed planned re-parameterization model 提出的计划再参数化模型
为了验证我们提出的计划重参数化模型的通用性,我们分别在基于级联的模型和基于残差的模型上使用它进行验证。我们选择用于验证的基于串联的模型和基于残差的模型分别是3-stacked ELAN和CSPDarknet。
在基于级联模型的实验中,我们用RepConv替换3堆叠ELAN中不同位置的3 × 3卷积层,详细配置如图6所示。从表4所示的结果中,我们看到所有较高的AP值都出现在我们提出的计划的重新参数化模型中。
在基于残差的模型实验中,我们设计了一个反向暗块来适应我们的实验设计策略,其架构如图7所示。
实验结果如表5所示,充分证实了所提出的计划再参数化模型对残差模型同样有效。我们发现RepCSPResNet[83]的设计也符合我们的设计模式。
5.4.3 Proposed assistant loss for auxiliary head 辅助水头的拟辅助损耗
在辅助头部的辅助损失实验中,我们比较了一般的导联头部独立标签分配方法和辅助头部方法,并比较了两种提出的导联引导标签分配方法。我们在表6中显示了所有的比较结果。从表6中列出的结果可以清楚地看出,任何增加辅助损失的模型都可以显著提高整体性能。
在表7中,我们进一步比较了引入上限约束和不引入上限约束的结果。从表中的数字可以看出,用距离物体中心的距离来约束物体上界的方法可以获得更好的性能。
将辅助头部直接连接到中间层金字塔进行训练,可以弥补下一层金字塔预测中可能丢失的信息。为了解决这个问题,我们的方法是在合并E-ELAN的基数之前,在其中一组特征映射之后连接辅助头部。表8显示了采用粗-细铅引导和部分粗-细铅引导方法获得的结果。显然,部分粗转细铅导法具有较好的辅助效果。
6. Conclusions 结论
本文提出了一种新的实时目标检测器体系结构和相应的模型缩放方法。此外,我们发现目标检测方法的发展过程产生了新的研究课题。在研究过程中,我们发现了重参数化模块的替换问题和动态标签分配问题。为了解决这个问题,我们提出了可训练的免费袋方法来提高目标检测的准确性。在此基础上,我们开发了YOLOv7系列的目标检测系统,该系统获得了最先进的结果。