目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头(一)

简介: 目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头(一)

设计高效、高质量的表达性网络架构一直是深度学习领域最重要的研究课题。当今的大多数网络设计策略都集中于如何集成从不同层提取的特征,以及如何设计计算单元来有效地提取这些特征,从而增强网络的表现力。

本文提出了一种新的网络设计策略,即基于梯度路径分析来设计网络结构。总体而言,当今主流的网络设计策略大多基于前馈路径,即基于数据路径设计网络架构。在本文中希望通过提高网络学习能力来增强训练模型的表达能力。由于驱动网络参数学习的机制是反向传播算法,本文设计了基于反向传播路径的网络设计策略。提出了layer-level、stage-level和network-level的梯度路径设计策略,并通过理论分析证明了设计策略的优越性和可行性和实验。


1、简介


深度神经网络(DNN)现在广泛用于各种设备,以解决不同类型的任务。数百万科学家、工程师和研究人员参与了深度学习相关的工作。他们都期待着设计出能够满足他们需求的高效、准确、低成本的解决方案。因此,如何设计适合其产品的网络架构变得尤为重要。

自2014年以来,许多DNN在各种任务上取得了接近人类或优于人类的性能。例如,谷歌的GoogLeNet和微软的PReLUNet在图像分类方面,Facebook的Deepface在人脸识别方面,DeepMind的AlphaGo在围棋棋盘上等等。基于上述领域的开始,一些研究人员继续开发更先进的新架构或算法以击败上述方法;

其他研究人员关注如何使DNN相关技术在人类日常生活中实用。Iandola等人提出的SqueezeNet是一个典型的例子,因为它将AlexNet的参数数量减少了50倍,但可以保持相当的精度。MobileNet和ShuffleNet也是很好的例子。前者将实际硬件操作延迟直接添加到架构设计的考虑中,而后者将硬件特性的分析用作设计神经网络架构的参考。

就在ResNet、ResNeXt和DenseNet架构解决了深层网络训练中遇到的收敛问题之后,近年来CNN架构的设计集中在以下几点:

  1. 特征融合
  2. 感受野增强
  3. 注意机制
  4. 分支选择机制

换句话说,大多数研究遵循深度网络的共同认知,即从浅层提取low-level特征,从深层提取high-level特征。根据上述原则,可以使用它们来设计神经网络架构,以有效地组合数据路径(前馈路径)中的不同level的特征。

然而,这样的设计策略是否一定正确?从图1中发现,通过调整目标和损失层的配置,可以控制每个层(浅层或深层)学习的特征。也就是说,权重学习什么样的特征主要取决于使用什么样的信息来教它,而不是输入来自哪些层的组合。基于这一发现,作者重新定义了网络设计策略。

image.png

由于提出网络结构可以用目标函数可以指导神经网络学习信息的概念来设计,因此必须首先了解目标函数如何影响网络权重的更新。

目前,主要的权重更新方法是反向传播算法,它使用偏微分生成梯度,然后通过梯度下降来更新权重。该算法以链式规则的方式将梯度信息传播到浅层,并重复这些步骤,直到更新所有层的权重。换句话说,目标函数教导的信息以梯度的形式在层之间传播。

在本文中提出通过分析通过目标函数的引导生成的梯度,可以在执行反向传播过程时通过梯度路径来设计网络结构。作者分别为3个不同级别的策略设计网络架构,如layer-level、stage-level和network-level,如下所述:

1、Layer-level设计

在这个层次上设计了梯度分流策略,并使用它们来确认假设的有效性。调整层数并计算残差连接的通道比率,然后设计Partial Residual Network(PRN)。

2、Stage-level设计

添加硬件特征以加快网络推理。最大化梯度组合,同时最小化硬件计算成本,因此设计了Cross Stage Partial Network(CSPNet)。

3、Network-level设计

增加了梯度传播效率的考虑,以平衡网络的学习能力。当设计网络架构时,还考虑了整个网络的梯度传播路径长度,因此设计了Efficient Layer Aggregation Network(ELAN)。


2、本文方法


2.1、网络设计策略

如图2所示,在本文中将网络设计策略分为两种:

  1. 数据路径设计策略
  2. 梯度路径设计策略

数据路径设计策略主要侧重于设计特征提取、特征选择和特征融合操作,以提取具有特定属性的特征。这些特征可以帮助后续层使用这些特征进一步获得更好的属性,以便进行更高级的分析。

应用梯度路径设计策略的目的是分析梯度的来源和组成,以及如何通过驱动参数更新梯度。然后,可以使用上述分析的结果来设计网络架构。设计理念是希望最终的参数利用率更高,从而达到最佳的学习效果。

image.png

接下来将分别讨论数据路径设计策略和梯度路径设计策略的优点和缺点。

数据路径设计策略有3个优点:

  1. 可以提取具有特定物理意义的特征。例如,使用非对称计算单元来提取具有不同感受野的特征;
  2. 可以为不同的输入自动选择具有参数化模型的合适的操作单元。例如,使用kernel选择来处理输入具有不同的性质;
  3. 可以直接重用所学习的特征。例如,特征金字塔网络可以直接利用从不同层提取的特征进行更准确的预测。

数据路径设计策略有2个缺点:

  1. 在训练过程中,有时会导致效果的不可预测的降级,此时需要设计更复杂的架构来解决问题。例如,non-local网络的成对关系很容易退化为一元信息;
  2. 各种专门设计的运算单元容易导致性能优化的困难。例如,在专用于AI的ASIC设计中,如果设计者想要添加算术单元,则需要额外的一组电路。

对于梯度路径设计策略,总共有3个优点:

  1. 可以有效地使用网络参数,在这一部分中提出通过调整梯度传播路径,不同计算单元的权重可以学习各种信息,从而实现更高的参数利用效率;
  2. 具有稳定的模型学习能力,由于梯度路径设计策略直接确定并传播信息以更新权重到每个计算单元,因此所设计的架构可以避免训练期间的退化;
  3. 具有高效的推理速度,梯度路径设计策略使得参数利用非常有效,因此网络可以在不增加额外复杂架构的情况下实现更高的精度。

由于上述原因,所设计的网络在架构上可以更轻、更简单。

梯度路径设计策略有一个缺点:

  1. 当梯度更新路径不是网络的简单反向前馈路径时,编程的难度将大大增加。

2.2、Partial Residual Networks

Partial Residual Networks(PRN)其设计理念属于layer-level设计策略。在PRN的设计中,主要概念是最大化用于更新每层的权重的梯度组合。影响梯度组合的主要因素有2个:

  1. 第一个是梯度的源层。源层由连接到梯度路径的不相交边缘的节点组成;
  2. 第二个因素是梯度流通过链式法则的操作从损失层到达特定层所需的时间。

需要注意的一点是,当梯度在链规则更新过程中发生变化时,其覆盖的丢失信息量将随着链的增长而逐渐减少。作者将上述持续时间定义为梯度流从损失层行进到特定层所需的层数。在PRN中提出了以下2种结构来改进ResNet:

1、Masked residual layer

在ResNet的设计中,将每个计算块的输出与identity连接一起添加,这样的结构称为残差层。在PRN中,将identity连接乘以二进制Mask,并且只允许将某些通道的特征映射添加到计算块的输出中。将此结构称为Masked residual layer,其架构如图3所示。使用Masked residual layer的机制允许将特征图分为两部分,其中与被Mask的通道相对应的权重和与具有identity连接的通道相对的权重将由于上述identity效应而显著增加梯度组合的数量。此外,梯度源的差异将同时影响整个梯度时间戳(沿时间轴的时间节点),从而使梯度组合更加丰富。

2、Asymmetric residual layer

在ResNet架构下,只能添加相同大小的特征图,这就是为什么它是一个非常受限的架构。通常,当执行优化的架构的计算量和推理速度时,常常受到这种架构的限制,无法设计出符合要求的架构。在PRN架构下,提出的Masked residual layer可以将通道数量的不一致性视为某些通道被阻塞,从而允许具有不同通道数量的特征图执行Masked residual操作。

将以上述方式操作的层称为Asymmetric residual layer。Asymmetric residual layer以这样的方式设计,即网络架构更灵活,并且更能够保持基于梯度路径的模型的属性。例如,当进行特征集成时,一般方法需要额外的过渡层来将不同的特征映射投影到同一维度,然后执行添加操作。然而,上述操作将增加大量参数和计算量,并且还将使梯度路径更长,从而影响网络的收敛。引入Asymmetric residual layer可以完美地解决类似问题。

2.3、Cross Stage Partial Networks

CSPNet于2019年提出,它是一个基于Stage-level梯度路径的网络。与PRN一样,CSPNet基于最大化梯度组合的概念。CSPNet和PRN的区别在于,后者侧重于从理论角度确认梯度组合对网络学习能力的改善,而前者则是为了进一步优化硬件推理速度而额外设计的。因此,在设计CSPNet时,将架构从Layer-level扩展到Stage-level,并优化整体架构。

CSPNet主要有以下2种结构:

1、Cross stage partial operation

从最大化梯度源的角度来看可以很容易地发现,当每个通道具有不同的梯度路径时,梯度源可以最大化。此外,从最大化梯度时间戳的角度来看,当每个通道具有不同深度的计算块时,可以最大化梯度时戳的数量。

根据上述概念可以导出一种设计用于最大化梯度源和梯度时间戳的架构。这种架构将是类似fractal-like的架构和具有深度卷积的类似分形的架构。虽然上述设计可以有效地提高参数利用率,但会大大降低并行化能力。此外,这将导致模型显著降低GPU和TPU等推理引擎上的推理速度。

从前面的分析知道划分通道可以增加梯度源的数量,并且使不同通道连接的子网络具有不同的层可以增加梯度时间戳的数量。本文设计的Cross stage部分操作可以最大化梯度的组合,并在不破坏架构的情况下提高推理速度,并且可以并行化。

该体系结构如图4所示。在图4中,将stage的输入特征图分成两部分,并使用这种方式增加梯度源的数量。

image.png

具体步骤如下:首先将输入特征图分成两部分,其中一部分通过计算块,该计算块可以是任何计算块,如Res Block、ResX Block或Dense Block。至于另一部分,它直接跨越整个Stage,然后与经过计算块的部分集成。由于只有部分特征图进入计算区进行操作,这种设计可以有效地减少参数量、操作、内存流量和内存峰值,从而使系统实现更快的推理速度。

2、Gradient flow truncate operation

为了使设计的网络架构更强大进一步分析了用于更新CSPNet的梯度流。由于计算块中经常使用shortcut连接,提供2条路径的梯度源必然会重叠很多。当特征图通过kernel函数时,它相当于空间投影。通常可以在两条路径的末端插入过渡层,以截断复制的梯度流。通过以上步骤可以使从2条路径和相邻Stage学习到的信息具有更明显的多样性。

作者设计了3种不同的重复梯度流截断操作组合,如图5所示。这些操作可以与不同的架构相匹配,例如计算块和下采样块,以获得更好的结果。

image.png

2.4、高效的层聚合网络

高效层聚合网络(ELAN)的代码于2022年7月发布。在网络层面,它属于梯度路径设计网络的范畴。设计ELAN的主要目的是解决在执行模型缩放时深度模型的收敛性会逐渐恶化的问题。

作者分析了通过整个网络中每个层的最短梯度路径和最长梯度路径,从而设计了具有有效梯度传播路径的层聚合架构。ELAN主要由VoVNet和CSPNet组成,并利用计算块中的堆栈结构优化了整个网络的梯度长度。在接下来的内容中将详细说明计算块中的堆栈是如何工作的。

堆栈在计算块中。当在做模型缩放时会出现一种现象,即当网络达到一定深度时,如果继续堆叠计算块,精度增益将越来越小。更糟糕的是,当网络达到某个临界深度时,其收敛性开始恶化,导致总体精度比浅层网络差。

最好的例子之一是Scaled-YOLOv4,看到它的P7模型使用了昂贵的参数和操作,但只有少量的精度增益,而且在许多流行网络中也会出现同样的现象。例如,ResNet-152的计算强度大约是ResNet-50的3倍,但在ImageNet上的精度提高不到1%。当ResNet堆叠到200层时,其精度甚至比ResNet-152更差。此外,当VoVNet堆叠到99层时,其精度甚至远低于VoVNet-39。

从梯度路径设计策略的角度来看,作者推测VoVNet的精度退化比ResNet快得多的原因是因为VoVNet堆叠基于OSA模块。每个OSA模块都包含一个过渡层,因此每次堆叠OSA模块时,网络中所有层的最短梯度路径都会增加一个。

至于ResNet,它是由残余块堆叠的,残余层的堆叠只会增加最长的梯度路径,而不会增加最短的梯度路径。为了验证模型缩放的可能影响,作者基于YOLOR-CSP进行了一些实验。从实验结果中发现,当堆叠层达到80+层时,CSP fusion first的精度开始优于正常的CSPNet。此时,每个Stage的计算块的最短梯度路径将减少1。随着网络的不断扩大和加深,CSP fusion last将获得最高的精度,但此时所有层的最短梯度路径将减少1。

上述实验结果证实了先前的假设。在上述实验的支持下,如图6所示,在ELAN中设计了“计算块中的堆栈”策略。设计的目的是避免使用过多过渡层的问题,并使整个网络的最短梯度路径快速变长。当网络堆叠得更深时,上述设计策略能够成功地训练ELAN。

image.png

image.png

相关文章
|
2月前
|
机器学习/深度学习 数据采集 人工智能
大模型开发:解释特征工程的重要性以及你如何进行特征选择。
特征工程对机器学习和深度学习至关重要,涉及数据清洗、转换和特征选择,以提升模型预测和泛化能力。它能提高数据质量、浓缩信息、优化模型性能及增强解释性。特征选择是关键步骤,包括过滤法、递归特征消除、嵌入式(如L1正则化)、包裹式和基于模型的方法。此过程通常迭代进行,结合多种工具和业务知识,并可通过自动化技术(如AutoML)简化。
|
机器学习/深度学习 人工智能 算法
目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头
目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头
726 0
目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头
|
10月前
|
机器学习/深度学习 自然语言处理 算法
使用PyTorch构建神经网络(详细步骤讲解+注释版) 03 模型评价与准确率提升
使用PyTorch构建神经网络(详细步骤讲解+注释版) 02-数据读取与训练 本文的使用的部分类方法为前述文章定义所得,如果希望运行完整代码建议同时查看上一篇文章或文末留言发你完整代码。
使用PyTorch构建神经网络(详细步骤讲解+注释版) 03 模型评价与准确率提升
|
12月前
|
Go 网络架构 计算机视觉
目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头(二)
目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头(二)
704 0
|
12月前
|
机器学习/深度学习 并行计算 固态存储
YOLO系列 | 一份YOLOX改进的实验报告,并提出更优秀的模型架构组合!
YOLO系列 | 一份YOLOX改进的实验报告,并提出更优秀的模型架构组合!
157 0
|
12月前
|
机器学习/深度学习 自动驾驶 计算机视觉
目标检测提升技巧 | 结构化蒸馏一行代码让目标检测轻松无痛涨点(一)
目标检测提升技巧 | 结构化蒸馏一行代码让目标检测轻松无痛涨点(一)
111 0
|
12月前
|
机器学习/深度学习 自动驾驶 计算机视觉
目标检测提升技巧 | 结构化蒸馏一行代码让目标检测轻松无痛涨点
目标检测提升技巧 | 结构化蒸馏一行代码让目标检测轻松无痛涨点
175 0
|
12月前
|
计算机视觉
目标检测提升技巧 | 结构化蒸馏一行代码让目标检测轻松无痛涨点(二)
目标检测提升技巧 | 结构化蒸馏一行代码让目标检测轻松无痛涨点(二)
116 0
|
12月前
|
机器学习/深度学习 算法 数据可视化
详细解读GraphFPN | 如何用图模型提升目标检测模型性能?
详细解读GraphFPN | 如何用图模型提升目标检测模型性能?
136 0
|
12月前
|
机器学习/深度学习 人工智能 PyTorch
【Pytorch神经网络理论篇】 29 图卷积模型的缺陷+弥补方案
多层全连接神经网络被称为万能的拟合神经网络。先在单个网络层中用多个神经元节点实现低维的数据拟合,再通过多层叠加的方式对低维拟合能力进行综合,从而在理论上实现对任意数据的特征拟合。
169 0