发布时间:2022-08-17 14:37
在各种计算机视觉任务中,结构重参数化已引起越来越多的关注。它的目的是在不引入任何推理时间成本的情况下提高深度模型的性能。虽然在推理过程中很有效,但这种模型在很大程度上依赖于复杂的训练时间块来实现高精确度,从而导致了大量的额外训练成本。在本文中,我们提出了在线卷积重参数化(OREPA),这是一个两阶段的管道,旨在通过将复杂的训练时间块挤压到一个单一的卷积中来减少巨大的训练开销。为了实现这一目标,我们引入了一个线性缩放层来更好地优化在线块。在降低训练成本的协助下,我们还探索了一些更有效的重新参数化组件。与最先进的re-param模型相比,OREPA能够将训练时间的内存成本节省约70%,并将训练速度加快约2倍。同时,配备了OREPA的模型在ImageNet上的表现比以前的方法要好,最高可达+0.6%。我们还对物体检测和语义分割进行了实验,并显示出在下游任务上的一致改进。
代码地址:https://github.com/JUGGHM/OREPA_CVPR2022
图1. (a)一个普通的卷积层,(b)一个典型的重新参数块,和©我们在训练阶段的在线重新参数块的比较。所有这些结构都被转换为相同的(d)推理时间结构。
…
为了获得部署友好的模型并保持较高的精度,人们提出了基于结构重参数化的方法[14, 16, 17, 19],以实现 "免费 "的性能改进。在这类方法中,模型在训练阶段和推理阶段具有不同的结构。具体来说,他们[16,1]使用复杂的训练阶段拓扑结构,即重新参数化的块,以提高性能。训练结束后,他们通过等效变换将复杂的块挤压成单一的线性层。挤压后的模型通常具有整齐的结构,例如,通常是类似VGG[17]或类似ResNet[16]的结构。从这个角度来看,重新参数化策略可以提高模型的性能,而不会引入额外的推理时间成本。
人们认为,规范化(norm)层是再参数模型中的关键部分。在一个重新参数块中(图1(b)),规范层总是在每个计算层之后添加。据观察,去除这种规范层会导致严重的性能下降[17, 16]。然而,当考虑到效率时,这种规范层的利用意外地在训练阶段带来巨大的计算开销。在推理阶段,复杂的块可以被挤压到一个单一的卷积层中。但是,在训练过程中,规范层是非线性的,也就是说,它们用标准差来划分特征图,这使我们无法合并整个块。因此,存在大量的中间计算操作(大FLOPS)和缓冲的特征图(高内存使用率)。更糟糕的是,高额的训练预算使得我们难以探索更复杂和潜在的更强大的重新参数块。自然地,出现了以下问题:
为什么规范化在重参数化中很重要?
根据分析和实验,我们声称,最重要的是规范层中的缩放因子,因为它们能够使不同分支的优化方向多样化。
基于这些观察,我们提出了在线重新参数化(OREPA)(图1(c)),这是一个两阶段的管道,使我们能够简化训练时复杂的重参数块。在第一阶段,即区块线性化,我们去除所有的非线性规范层并引入线性缩放层。这些层具有与规范层类似的特性,即它们使不同分支的优化多样化。此外,这些层是线性的,可以在训练中合并到卷积层中。第二阶段,名为块压缩,将复杂的线性块简化为单个卷积层。OREPA通过减少中间计算层造成的计算和存储开销,大大缩减了训练成本,而对性能的影响却很小。此外,高效率使得探索更复杂的重参数化拓扑结构成为可能。为了验证这一点,我们进一步提出了几个重新参数化的组件,以提高性能。
我们在ImageNet[13]分类任务上评估了提议的OREPA。与最先进的reparam模型[16]相比,OREPA将额外的训练时间GPU内存成本降低了65%到75%,并将训练过程加快了1.5倍到2.3倍。同时,我们的 OREPAResNet 和 OREPA-VGG 始终比以前的方法[16, 17]要好+0.2%∼+0.6%。我们对OREPA的下游任务,即物体检测和语义分割进行了评估。我们发现OREPA在这些任务上能够持续带来性能上的提升。
我们的贡献可以总结为以下几点:
1.我们提出了在线卷积重参数化(OREPA)策略,它大大提高了重参数化模型的训练效率,并使探索更强的重参数块成为可能。
2.根据我们对重参数模型工作机制的分析,我们用引入的线性缩放层取代了规范层,这仍然提供了多样化的优化方向并保留了表示能力。
3.在各种视觉任务上的实验表明,OREPA在准确性和训练效率方面都优于以前的重参数模型。
2.1结构性的重参数化
结构重参数化[16, 17]最近在很多计算机视觉任务中得到了更大的重视和利用,如紧凑模型设计[18]、架构搜索[9, 43]和剪枝[15]。再参数化是指不同的架构可以通过参数的等效变换来相互转换。例如,一个1×1卷积的分支和一个3×3卷积的分支,可以转变成3×3卷积的一个分支[17]。在训练阶段,多分支[14, 16, 17]和多层[19, 5]的拓扑结构被设计用来替代虚无的线性层(如conv或全连接层[1])来增强模型。Cao等人[5]讨论了如何在训练期间合并一个深度可分离的卷积核。之后在推理过程中,训练时的复杂模型被转移到简单模型中,以加快推理速度。在受益于训练时复杂的拓扑结构的同时,目前的重新参数化方法[14, 16, 19]在训练时有不可忽略的额外计算成本。当区块变得更加复杂,需要更强的表示能力时,GPU的内存利用率和训练时间会越来越大,越来越长,最后走向不可接受。与之前的重构方法不同,我们更关注训练成本。我们提出了一种通用的在线卷积重参数化策略,使训练时间的结构重参数化成为可能。
2.2规一化
规范化[26, 40, 2, 35]被提出来以缓解训练非常深的神经网络时的梯度消失问题。人们认为规范层是非常必要的[36],因为它们可以平滑损失。最近关于无规范神经网络的工作声称,规范层并不是不可或缺的[42, 37]。通过良好的初始化和适当的正则化,规范化层可以被优雅地移除[42, 12, 37, 3]。
对于重新参数化模型,人们认为重新参数化块中的规范层是至关重要的[16, 17]。无规范的变体将受到性能下降的影响。然而,训练时的规范层是非线性的,它们提供标准差后的特征图,这使我们无法在线合并这些块。为了使在线重新参数化可行,我们删除了reparam块中的所有规范层,此外,我们引入了规范层的线性替代方案,即线性缩放层。
图2. 拟议的在线重参数化(OREPA)的概述,这是一个两阶段的管道。在第一阶段(块线性化),我们去除原型重参数块中的所有非线性成分。在第二阶段(块压缩),我们将块合并到一个单一的卷积层(OREPA Conv)。通过这些步骤,我们大大降低了训练成本,同时保持了高性能。
2.3卷积分解
标准卷积层计算密集,导致FLOPs和参数数量大。因此,卷积分解方法[30, 39, 34]被提出并广泛应用于移动设备的轻量级模型[23, 10]。再参数化方法[14, 16, 19, 5, 9, 43]也可以被看作是卷积分解的某种形式,但是面向更复杂的拓扑结构。我们的方法的不同之处在于,我们在内核层面而不是在结构层面进行卷积分解。
在本节中,我们将介绍所提出的在线卷积再参数化。首先,我们在第3.1节中分析了关键部分,即重新参数化模型中的归一化层,作为序言。在分析的基础上,我们提出了在线再参数化(OREPA),旨在大大减少再参数化模型的训练时间预算。OREPA能够将复杂的训练块简化为单一的卷积层,并保持高精确度。图2说明了OREPA的整体管道,它包括一个块线性化阶段(第3.2节)和一个块压缩阶段(第3.3节)。接下来,在第3.4节中,我们通过分析多层和多分支结构的优化多样性,更深入地挖掘重参数化的有效性,并证明所提出的线性缩放层和归一化层都有类似的效果。最后,随着训练预算的减少,我们进一步探讨了更多的组件,以实现更强大的重新参数化(第3.5节),但成本略有增加。
表1. 在re-param模型中规范化层的效果。为了稳定训练过程,在去除分支规范层时,我们增加了一个后加规范层。
3.1前期准备:重参数化中的规范化
人们认为,中间的规范化层是重新参数化中多层和多分支结构的关键组成部分。以SoTA模型,即DBB[16]和RepVGG[17]为例,如表1所示,去掉这些层会导致严重的性能下降。这样的观察也得到了Ding等人[16, 17]的实验支持。因此,我们认为中间的归一化层对于重参数化模型的性能是至关重要的。
然而,对中间规范层的利用意外地带来了更高的训练预算。我们注意到,在推理阶段,重新参数化块中的所有中间操作都是线性的,因此可以合并到一个卷积层中,从而形成一个简单结构。但是在训练过程中,规范层是非线性的,也就是说,它们将特征图除以其标准差。因此,中间的操作应该单独计算,这导致了更高的计算和内存成本。更糟糕的是,这样的高成本会阻止社区探索更强的训练块。
图3. 块线性化的三个步骤。i) 我们首先删除re-param块中所有训练时间的非线性归一化层。ii) 其次,我们在每个分支的末尾添加一个线性缩放层,使优化方向多样化。iii) 最后,我们在每个块之后立即添加一个后归一化层,以稳定训练。
3.2块线性化
如第3.1节所述,中间规范化层使我们无法在训练期间合并独立的层。然而,由于性能问题,直接删除它们是不可行的。为了解决这个难题,我们引入了channel-wise的线性缩放操作作为归一化的线性替代。缩放层包含一个可学习的向量,它在通道维度上对特征图进行缩放。线性缩放层与归一化层有类似的效果,它们都鼓励多分支向不同方向优化,这是在重参数化中提高性能的关键。3.4节将讨论对该效应的详细分析。除了对性能的影响外,线性缩放层可以在训练期间合并,使在线重参数化成为可能。
基于线性缩放层,我们修改了重新参数化块,如图3所示。具体来说,块的线性化阶段包括以下三个步骤。首先,我们删除所有的非线性层,即重新参数化块中的归一化层。其次,为了保持优化的多样性,我们在每个分支的末端添加一个缩放层,即归一化的线性替代物。最后,为了稳定训练过程,我们在所有分支的添加之后立即添加一个添加后归一化层。
一旦完成线性化阶段,再参数块中只存在线性层,这意味着我们可以在训练阶段合并块中的所有组件。接下来,我们描述如何将这样的块挤压成一个单一的卷积核。
3.3 块压缩
受益于块线性化(第3.2节),我们得到了一个线性块。在这一节中,我们描述了将训练时间的线性块压缩成单一卷积核的标准程序。块压缩步骤转换了对中间特征图的操作,其在计算和内存方面都很昂贵,而对内核的操作则要经济得多。这意味着在计算和内存方面,我们将re-param的额外训练成本从O(H × W )减少到O(KH × KW ),其中(H, W ), (KH, KW )是特征图和卷积核的空间形状。
一般来说,无论一个线性再参数块有多复杂,以下两个属性总是成立的:
1.该区块中的所有线性层,例如深度卷积、平均池化和提议的线性缩放,都可以用一组相应的参数的退化卷积层来表示。详情请参考补充材料。
2.该区块可以由一系列平行分支表示,每个分支由一连串的卷积层组成。
图4. 顺序和平行结构的简化。这种简化将特征图上的繁重计算转换为卷积核上的较轻计算。
有了以上两个特性,如果我们能把i)多层(即顺序结构)和ii)多分支(即并行结构)都简化为一个卷积,我们就能挤掉一个块。在下面的部分,我们将展示如何简化顺序结构(图4(a))和平行结构(图4(b))。
我们首先定义卷积的符号。让Ci, Co表示一个KH×KW大小的2d卷积核的输入和输出通道号。X∈RCi×H×W ,Y∈R^Co×H′×W ′^表示输入和输出张量。按照惯例,我们在这里省略了偏置,卷积过程表示为:
Y=W*X (1)
简化一个序列结构。考虑一个卷积层的堆栈,表示为:
其中Wj∈RCj×Cj-1×KHj×KWj满足C0=Ci,CN=Co。根据关联法则,这样的层可以通过先根据公式(3)对内核进行卷积而被挤压成一个。
其中Wj是第j层的权重。我们表示端到端的映射矩阵。公式(3)的像素级形式在补充材料中显示。
简化一个平行结构。并行结构的简化是微不足道的。根据卷积的线性,我们可以根据公式(4)将多个分支合并为一个。
其中Wm是第m个分支的权重,(ΣM-1m=0 Wm)是统一的权重。值得注意的是,在合并不同大小的核时,我们需要将不同核的空间中心对齐,例如,1×1的核应与3×3的核的中心对齐。
训练开销:从特征到内核。不管这个区块有多复杂,它必须由不超过多分支和多层次的子拓扑构成。因此,根据上述两个简化规则,可以将其简化为一个。最后,我们可以得到一体化的端到端映射权重,并且在训练过程中只进行一次卷积。根据公式(3)和公式(4),我们实际上是将中间特征图上的操作(卷积、加法)转换成卷积核上的操作。因此,我们将一个re-param块的额外训练成本从O(H × W )减少到O(KH × KW )。
3.4多分支拓扑结构的梯度分析
(关于结构变动较大,公式较多,建议看原文)
…
3.5块设计
由于提出的OREPA节省了大量的训练成本,它使我们能够探索更复杂的训练块。因此,我们设计了一种新型的重参数化模型,即OREPA-ResNet,通过对最先进的模型DBB[16]进行线性化,并插入以下组件(图5)。
频率先验滤波器. 在以前的工作中[16],在该块中利用了池化层。根据Qin等人[31]的说法,池化层是频率滤波器的一个特例。为此,我们增加了一个Conv1×1-频率滤波器分支。
线性纵深可分离卷积。[5] 我们稍微修改了深度可分离卷积[10],去掉了中间的非线性激活层,使其在训练过程中的合并是可行的。
1×1卷积的重新参数化。以前的工作主要集中在3×3卷积层的重新参数上,但忽略了1×1卷积层。我们建议对1×1层进行重新参数化,因为它们在瓶颈结构中发挥着重要作用[21, 4]。具体来说,我们增加一个额外的Conv1×1-Conv1×1分支。
线性deep stem。大型卷积核通常被放置在最开始的层,例如7×7干层[21],目的是为了实现更大的感受野。Guo等人用堆叠的3×3层取代7×7卷积层以获得更高的精度[19]。然而,由于高分辨率,在最开始的层的堆叠卷积需要较大的计算开销。请注意,我们可以用我们提出的线性缩放层将堆叠的deep stem挤压成7×7的conv层,这样可以大大降低训练成本,同时保持高的精度。
对于OREPA-ResNet(图6)中的每个块,i)我们增加了一个频率先验滤波器和一个线性深度可分离卷积;ii)我们用提议的线性深度干替换所有干层(即最初的7×7卷积);iii)在瓶颈[21]块中,除了i)和ii)之外,我们进一步用提议的Rep-1×1块替换原始1×1卷积分支。
图6. 拟议的OREPA块的设计,对应于训练和推理期间的3×3卷积。
4.1实施细节
…
在本文中,我们提出了在线卷积重参数化(OREPA),这是一个两阶段的管道,旨在通过将复杂的训练时间块挤压到单一的卷积中来减少巨大的训练开销。为了实现这一目标,我们用线性缩放层取代了训练时的非线性规范层,从而保持了优化的多样性和表示能力的增强。因此,我们大大减少了重新参数化模型的训练预算。这对于训练具有复杂拓扑结构的大规模神经网络是至关重要的,而且它还允许我们以更经济和有效的方式重新参数化模型。各种任务的结果表明,OREPA在准确性和效率方面都很有效。