Online Convolutional Re-parameterization

论文:https://arxiv.org/abs/2204.00826
结构重参数化在各种计算机视觉任务中引起了越来越多的关注。它的目的是在不引入任何推理时间成本的情况下提高深层模型的性能。虽然在推理过程中效率很高,但这类模型在很大程度上依赖于复杂的训练时间块来实现高精度,从而导致大量额外的训练成本。在本文中,作者提出了在线卷积重参数化(OREPA),这是一种两级管道,旨在通过将复杂的训练时间块压缩成单个卷积来减少巨大的训练开销。为了实现这一目标,作者引入了一个线性缩放层,以更好地优化在线块。在降低训练成本的帮助下,作者还探索了一些更有效的re-param组件。与最先进的re-param模型相比,OREPA能够节省约70%的训练时间存储成本,并将训练速度提高约2倍。

一、文章简介

为了获得易于部署的模型并保持高精度,许多作者提出了基于结构重新参数化的方法,以“自由”提高性能。在这种方法中,模型在训练阶段和推理阶段具有不同的结构。具体来说,他们使用复杂的训练阶段拓扑,即重新参数化的块,以提高性能。训练后,他们通过等效变换将复杂的块压缩成单个线性层。压缩模型通常具有整洁的体系结构,例如,通常是类似VGG的或类似ResNet的结构。从这个角度来看,重新参数化策略可以在不增加额外推理时间成本的情况下提高模型性能。
在这里插入图片描述

人们认为,normalization(norm)层是re-param模型的关键组成部分。在re-param块(图1(b))中,norm layer总是在每个计算层之后添加。据观察,移除此类标准层将导致严重的性能下降。然而,在考虑效率时,这种norm layers的使用在训练阶段意外地带来了巨大的计算开销。在推理阶段,复杂的块可以被压缩到单个卷积层中。但是,在训练期间,norm layers是非线性的,也就是说,它们用特征图的标准偏差来划分特征图,这阻止了我们合并整个块。因此,存在大量中间计算操作(large FLOPS)和缓冲特征映射(高内存使用率)。更糟糕的是,大量的训练预算使得探索更复杂、潜在更强的re-param区块变得困难。

(二)为什么norm layers在re param中很重要?

根据分析和实验,作者认为norm layers中的比例因子最重要,因为它们能够使不同分支的优化方向多样化。
基于观察结果,作者提出了在线再参数化(OREPA)(图1(c)),这是一个两阶段的流程,使我们能够简化复杂的训练时间参数块。在第一阶段,块线性化,作者删除所有norm layers,并引入线性缩放层。这些层与标准层具有相似的特性,它们使不同分支的优化多样化。此外,这些层是线性的,可以在训练期间合并为卷积层。第二阶段称为块压缩,将复杂的线性块简化为单个卷积层。OREPA通过减少中间计算层造成的计算和存储开销,显著降低了训练成本,而对性能的影响很小。此外,这种高效率使得探索更复杂的重参数化拓扑成为可能。为了验证这一点,作者进一步提出了几个重新参数化的组件,以获得更好的性能。
作者在ImageNet分类任务中评估了提议的OREPA。与最先进的re-param模型相比,OREPA将额外的训练时间GPU内存成本降低了65%至75%,并将训练过程加快了1.5倍至2.3倍。同时,OREPAResNet和OREPA-VGG的表现持续优于之前的方法,增幅为+0.2%∼+0.6%. 作者也评估OREPA的下游任务,即目标检测和语义分割。OREPA可以在这些任务中持续带来绩效提升。本文的贡献可以总结如下:
1、提出了在线卷积重参数化(OREPA)策略,大大提高了重参数化模型的训练效率,并使探索更强的重参数块成为可能。
2、根据对re-param模型工作机制的分析,引入的线性缩放层替换了norm layers,这仍然提供了不同的优化方向,并保留了代表性能力。

二、实现细节

最近,结构重参数化越来越受到重视,并被用于许多计算机视觉任务,如紧凑模型设计、架构搜索和剪枝。重参数化意味着不同的架构可以通过等价的参数转换相互转换。例如,一个1×1卷积分支和一个3×3卷积分支可以转换为一个3×3卷积分支。在训练阶段,设计了多分支和多层拓扑结构,以取代用于增强模型表现能力的的普通线性层(例如conv或全连接层)。Cao等人讨论了如何在训练期间合并深度可分离卷积核。然后在推理过程中,将训练时间复杂的模型转换为简单的模型,以加快推理速度。虽然受益于复杂的训练时间拓扑结构,但当前的重参数化方法的训练具有不可忽略的额外计算成本。当块变得更复杂,表现力更强时,GPU内存利用率和训练时间将变得越来越大,越来越长,最终达到不可接受的程度。与以往的重新参数化方法不同,作者更关注训练成本。本文提出了一种通用的在线卷积重参数化策略,使训练时间结构重参数化成为可能。

(一)、Normalization

标准化是为了缓解训练深度非常深的神经网络时的梯度消失问题而提出的。人们认为,标准层是非常重要的,因为它们可以平滑损失。最近关于无Normalization神经网络的研究表明,norm layers并不是不可或缺的。通过良好的初始化和适当的正则化,可以删除norm layers。
对于重参数化模型,人们认为重参数化区块中的标准层至关重要。没有标准的变体会出现性能下降。然而,训练时norm layers是非线性的,也就是说,它们将特征映射的标准差按其属性进行划分 。它阻止我们在线合并块。为了使在线重参数化变得可行,作者移除了重参数化块中的所有norm layers,此外,我们引入了norm layers的线性替代,即线性缩放层。

(二)、Convolutional Decomposition

标准卷积层的计算十分密集,会导致大量的FLOPs 和参数数量。因此,卷积分解方法被提出并广泛应用于移动设备的轻量化模型。重参数化方法也可以被视为卷积分解的一种形式,但要面向更复杂的拓扑结构。本文方法的不同之处在于,在内核级别而不是结构级别分解卷积。

(三)、Online Re-Parameterization

(1)、Preliminaries: Normalization in Re-param

本文认为,intermediate normalization layers是重参数化中多层多分支结构的关键组成部分。以SoTA模型,即DBB和RepVGG为例,移除这些层将导致严重的性能退化,如表1所示。因此,作者认为intermediate normalization layers对于重参数化模型的性能至关重要。
在这里插入图片描述
然而,intermediate normalization layers的使用出乎意料地带来了更高的训练预算。在推理阶段,重参数化块中的所有中间操作都是线性的,因此可以合并到一个卷积层中,从而形成一个简单的结构。但在训练过程中,标准层是非线性的,也就是说,它们用特征图之间的标准差来划分特征图。因此,intermediate normalization layers,这会导致更高的计算和内存成本。

(2)、Block Linearization

intermediate normalization layers阻止了我们在训练期间合并单独的层。然而,由于性能问题,直接删除它们并非易事。为了解决这个难题,作者引入了通道线性缩放操作作为标准化的线性替代。缩放层包含一个可学习向量,该向量在通道维度中缩放特征图。线性缩放层具有与标准化层类似的效果,它们都鼓励多分支朝着不同的方向进行优化,这是重参数化性能提高的关键。线性缩放层可以在训练期间合并,从而使在线重参数化成为可能。
基于线性缩放层,作者修改重参数化块,如图3所示。具体而言,块线性化阶段包括以下三个步骤。首先,移除所有非线性层,即重参数化块中的标准化层。其次,为了保持优化多样性,在每个分支的末尾添加了一个缩放层,即标准化的线性替代。最后,为了稳定训练过程,在添加所有分支之后添加了一个normalization layer。
在这里插入图片描述
一旦完成线性化阶段,re-param块中只存在线性层,这意味着我们可以在训练阶段合并块中的所有组件。接下来,将描述如何将这样的块压缩到单个卷积内核中。

(3)、Block Squeezing

块压缩步骤转换中间特征映射上的操作,由于计算和内存都是昂贵的,在更经济的内核上进行操作。这意味着我们在计算和存储方面将re-param的额外训练成本从 O ( H × W ) O(H×W) OH×W降低到 O ( K H × K W ) O(K_H×K_W) OKH×KW,其中 ( H , W ) (H,W) HW ( K H , K W ) (K_H,K_W) KHKW是特征映射和卷积核的空间形状。
通常,无论线性re-param块有多复杂,以下两个属性始终有效。
1、块中的所有线性层,例如深度卷积、平均池化和建议的线性缩放,都可以由具有相应参数集的降级卷积层来表示。详情请参阅补充资料。
2、块可以由一系列并行分支表示,每个分支由一系列卷积层组成。
利用上述两个特性,如果我们可以将i)多层(即顺序结构)和ii)多分支(即并行结构)简化为单个卷积,我们就可以压缩一个块。在接下来的部分中,我们将展示如何简化顺序结构(图4(a))和并行结构(图4(b))
在这里插入图片描述

我们首先定义卷积的符号。设 C i C_i Ci C o C_o Co表示 K H × K W K_H×K_W KH×KW大小的二维卷积核的输入和输出通道数。 X ∈ R C i × H × W , Y ∈ R C o × H ′ × W ′ X∈ R^{C_i×H×W},Y∈ R^{C_o×H^′×W^′} XRCi×H×WYRCo×H×W表示输入和输出张量。作为一种常见做法,省略了偏置,卷积过程表示如下:
在这里插入图片描述
简化顺序结构。考虑由一个卷积层表示的堆栈
在这里插入图片描述
W j ∈ R C j × C j − 1 × K H j × K W j W_j∈ R^{C_j×C_{j−1}×K_{H_j}×{K_{W_j}}} WjRCj×Cj1×KHj×KWj满足 C 0 = C i , C N = C o C_0=C_i,C_N=C_o C0=CiCN=Co。根据结合定律,可以根据下式对卷积核来进行压缩。
在这里插入图片描述
其中 W j W_j Wj是第j层的权重。表示端到端映射矩阵。等式(3)的像素形式如补充材料所示。
简化并行结构。并行结构的简化是简单的。根据卷积的线性特性,我们可以根据下式将多个分支合并为一个分支。
在这里插入图片描述

W m W_m Wm是第m个分支的权重, ∑ m = 0 M − 1 W m \sum_{m=0}^{M-1}{W_m} m=0M1Wm是加和权重。值得注意的是,当合并不同大小的内核时,需要对齐不同内核的空间中心,例如,1×1内核应该与3×3内核的中心对齐。
训练开销:从特征到内核。无论块有多复杂,它必须由多个分支和多层子拓扑构成。因此,可以根据上述两条简化规则将其简化为一条。最后,我们可以得到端到端映射权重,并且在训练期间只进行一次卷积。根据式(3)和式(4),我们实际上将中间特征映射上的运算(卷积、加法)转换为卷积核上的运算。因此,我们将re-param块的额外训练成本从 O ( H × W ) O(H×W) OH×W降低到 O ( K H × K W ) O(K_H×K_W) OKH×KW

(4)、Gradient Analysis on Multi-branch Topology

为了理解为什么块线性化步骤是可行的,即为什么缩放层很重要,我们对统一权重重参数化的优化进行了分析。我们的结论是,对于去除了规范层的分支,利用缩放层可以使其优化方向多样化,并防止其退化为单一的优化方向。
为了简化符号,我们只考虑输出维度Y。考虑一个卷积缩放序列(conv-norm 序列的简化版本):
在这里插入图片描述
式中 I = C i × K H × K W I=C_i×K_H×K_W I=Ci×KH×KW x ∈ R I x∈ R^I xRI是滑动窗口y内的矢量化像素 y ∈ R O y∈ R^O yRO,O=1,W是对应于特定输出通道的卷积核, γ γ γ是标度因子。假设所有参数都通过随机梯度下降更新,则映射 W c s : = γ W W_{cs}:=γW Wcs:=γW通过以下方式更新:
在这里插入图片描述
其中L是整个模型的损失函数,η是学习率。对于具有共享 γ γ γ的多分支拓扑,即:
在这里插入图片描述
端到端权重 W e 2 , c s : : = ∑ j = 1 M γ j W j W_{e2,cs:} := \sum_{j=1}^{M}{γ_jW_j} We2cs::=j=1MγjWj的更新与上式的更新不同。
在相同的forwarding t t h t^{th} tth-moment,端到端的矩阵为 W c s ( t ) = W e 1 , c s ( t ) W^{(t)}_{cs}=W^{(t)}_{e1,cs} Wcs(t)=We1cs(t)。因此, Φ M C o n v − S c a l e Φ^{Conv−Scale}_M ΦMConvScale没有引入优化更改。这一结论在实验上也得到了支持。相反,具有分支方向γ的多分支拓扑提供了此类变化.
在这里插入图片描述

端到端权重 W e 2 , c s : : = ∑ j = 1 M γ j W j W_{e2,cs:} := \sum_{j=1}^{M}{γ_jW_j} We2cs::=j=1MγjWj的更新与等式(6)的更新不同:
在这里插入图片描述
在相同的前提下 W c s ( t ) = W e 1 , c s ( t ) W^{(t)}_{cs}=W^{(t)}_{e1,cs} Wcs(t)=We1cs(t)
条件1满足:
条件1所有分支中至少有两个处于活动状态。
条件2 :
每个活动分支的初始状态彼此不同.
同时,当满足条件2时,多分支结构将不会退化为单分支结构。这揭示了以下命题,解释了为什么比例因子很重要。注意,当每个分支的权重 W j ( 0 ) W^{(0)}_j Wj(0)被随机初始化且标度因子 γ ( 0 ) j γ(0)j γ(0)j被初始化为1时,条件1和2始终满足。
对于单分支线性映射,当通过两层多分支拓扑重参数化部分或全部时,整个端到端权重矩阵将以不同方式优化。如果将一层映射重新参数化为最多一层多分支拓扑,优化将保持不变。

(三)、Block Design

由于提出的OREPA大幅节省了训练成本,因此我们可以探索更复杂的训练模块。因此,通过将最先进的模型DBB线性化,并插入以下组件,设计了一种新的重参数化模型,即OREPA ResNet
在这里插入图片描述
Frequency prior filter :在模块中使用了池化层。池化层是频率滤波器的一个特例。为此,我们添加了一个Conv1×1频率滤波器分支。
Linear depthwise separable convolution :通过移除中间的非线性激活层,稍微修改了深度可分离卷积,使其在训练期间可以合并。
Re-parameterization for 1×1 convolution:以往的工作主要集中在3×3卷积层的重参数,而忽略了1×1卷积层的重参数。作者建议重参数化1×1层,因为它们在瓶颈结构中起着重要作用。具体来说,添加了一个额外的Conv1×1-Conv1×1分支。
Linear deep stem:大的卷积核通常放置在最开始层中,例如7×7stem层,目的是获得更大的感受野。可以为了获得更高的精确度,将7×7 conv层替换为堆叠的3×3的conv层。然而,由于高分辨率,最开始层的堆叠CONV需要更大的计算开销。可以使用本文提出的线性缩放层将堆叠的 deep stem挤压到7×7 conv层,这可以在保持高精度的同时大大降低训练成本。
对于OREPA ResNet中的每个块如下图:
i)添加一个frequency prior filter和一个线性纵深分离卷积。
ii)我们用建议的线性deep stem替换所有stem层(即初始7×7卷积)。
iii)在bottleneck blocks中,除了i)和ii)之外,还将原来的1×1卷积分支替换为建议的Rep-1×1块。 在这里插入图片描述

三、实验

(一)、Linear scaling layer and optimization diversity.

在这里插入图片描述

以ResNet-18结构为例,这两种层(norm和linear scaling)带来了相似的性能增益(即0.42 vs.0.40)。在重新参数化中最重要的是 scaling部分,而不是statistical-normalization part部分。 将OREPA-ResNet-18的训练成本与离线训练成本(即DBB18)进行了比较。消耗的内存和训练时间(下图)。随着组件数量的增加,离线重新参数化模型的内存利用率迅速增加,且训练时间较长。由于内存成本很高,甚至无法在ResNet-18模型中引入deep stem。相比之下,在线重参数策略将训练速度提高了4倍,并节省了高达96%的额外GPU内存。总体训练开销与基本模型(vanilla ResNet)大致相同。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
Vector:利用通道矢量,沿通道轴执行缩放操作标量
Scalar:使用标量缩放整个特征图
W/o scaling:移除branch-wise scaling layers
W/o post-addition norm:移除post-addition norm layer.

猜你喜欢

转载自blog.csdn.net/qq_52302919/article/details/124147647
今日推荐