详细信息如下:
01 摘要结构重新参数化在各种计算机视觉任务中引起了越来越多的关注。它旨在在不引入任何推理时间成本的情况下提高深度模型的性能。尽管在推理过程中效率很高,但此类模型严重依赖复杂的训练时的block来实现高精度,从而导致大量额外的训练成本。 在本文中,作者提出了在线卷积重新参数化(OREPA),这是一个两阶段的pipeline,旨在通过将复杂的训练时的block压缩到单个卷积中来减少巨大的训练开销。为了实现这个目标,作者引入了一个线性缩放层来更好地优化在线块。在降低训练成本的帮助下,作者还探索了一些更有效的重新参数组件。 与最先进的重新参数模型相比,OREPA 能够节省约 70% 的训练时的显存成本,并将训练速度提高约 2 倍。同时,配备了 OREPA,这些模型在 ImageNet 上的性能比之前的方法高出 +0.6%。作者还对目标检测和语义分割进行了实验,并在下游任务上表现出一致的改进。 01 Motivation 卷积神经网络 (CNN) 已经见证了许多计算机视觉任务的成功,包括分类、目标检测、分割等。精度和模型效率之间的差异已被广泛讨论。一般来说,精度更高的模型通常需要更复杂的块,更宽或更深的结构。但是,这样的模型总是太重而无法部署,尤其是在硬件性能不佳的场景中,考虑到效率,更小、更紧凑和更快的模型是首选。 为了获得部署友好的模型并保持高精度,提出了基于结构重新参数化的方法,以“免费”提高性能。在这种方法中,模型在训练阶段和推理阶段具有不同的结构。具体来说,他们使用复杂的训练阶段拓扑(重新参数化块)来提高性能。训练后,他们通过等价变换将一个复杂的块压缩成一个单一的线性层。压缩模型通常具有简洁的架构,例如,通常是 VGG-like或 ResNet-like结构。从这个角度来看,重新参数化策略可以在不引入额外推理时成本的情况下提高模型性能。 归一化层被认为是重新参数模型中的关键组成部分。在重新参数块(上图(b))中,总是在每个计算层之后添加一个归一化层。据观察,去除此类归一化层将导致严重的性能下降。然而,在考虑效率时,这种归一化层的使用出乎意料地在训练阶段带来了巨大的计算开销。在推理阶段,复杂的块可以被压缩到单个卷积层中。但是,在训练期间,归一化层是非线性的,即它们将特征图除以其标准差,这阻止了合并整个块。结果,存在大量中间计算操作(大 FLOPS)和缓冲特征图(高显存使用)。 更糟糕的是,高额的训练预算使得探索更复杂和可能更强大的重新参数块变得困难。自然而然会产生下面的问题:为什么归一化层在重新参数中很重要?根据分析和实验,作者认为归一化层中的缩放因子最重要,因为它们能够使不同分支的优化方向多样化。 基于观察,作者提出了在线重新参数化(OREPA)(上图(c)),这是一个两阶段的pipeline,使模型能够简化复杂的训练时重新参数块。在第一阶段,块线性化,作者移除所有非线性归一化层并引入线性缩放层。这些层与归一化层具有相似的属性,它们使不同分支的优化多样化。此外,这些层是线性的,可以在训练时合并成卷积层。 第二阶段,称为块压缩,将复杂的线性块简化为单个卷积层。OREPA 通过减少由中间计算层引起的计算和存储开销,显着降低了训练成本,而对性能的影响很小。此外,高效率使得探索更复杂的重新参数化拓扑成为可能。为了验证这一点,作者进一步提出了几个重新参数化的组件以获得更好的性能。 作者在 ImageNet分类任务上评估提议的 OREPA。与最先进的重参数模型相比,OREPA 将额外的训练时 GPU 显存成本降低了 65% 至 75%,并将训练过程加快了 1.5 倍至 2.3 倍。同时,本文的 OREPA-ResNet 和 OREPA-VGG 始终优于以前的方法+0.2%∼+0.6%。作者在下游任务上评估 OREPA,即目标检测和语义分割。作者发现 OREPA 可以持续为这些任务带来性能提升。 本文的贡献可以总结如下:
03 方法上图展示了本文提出OREPA的pipeline。 3.1. Preliminaries: Normalization in Re-param中间归一化层是重新参数化中多层和多分支结构的关键组成部分。以 SoTA 模型,即 DBB和 RepVGG为例,去除这些层会导致严重的性能下降,如上表所示。因此,作者认为中间归一化层对于重新参数化模型的性能至关重要。 然而,中间归一化层的使用出人意料地带来了更高的训练预算。在推理阶段,重新参数化块中的所有中间操作都是线性的,因此可以合并到一个卷积层中,从而得到一个简单的结构。但是在训练期间,归一化层是非线性的,即它们将特征图除以其标准差。结果,中间操作应该单独计算,这导致更高的计算和显存成本。更糟糕的是,如此高的成本会阻止探索更强大的训练块。 3.2. Block Linearization中间归一化层阻止模型在训练期间合并单独的层。但是,由于性能问题,直接删除它们并非易事。为了解决这个难题,作者引入了通道线性缩放操作作为归一化的线性替代方案。缩放层包含一个可学习的向量,它在通道维度上缩放特征图。线性缩放层具有与归一化层类似的效果,它们都鼓励多分支向不同方向进行优化,这是重新参数化性能提升的关键。除了对性能的影响之外,线性缩放层可以在训练期间合并,使在线重新参数化成为可能。 基于线性缩放层,作者修改了重新参数化块,如上图所示。具体来说,块线性化阶段包括以下三个步骤。首先,移除所有非线性层,即重新参数化块中的归一化层。其次,为了保持优化的多样性,作者在每个分支的末尾添加了一个缩放层,即归一化的线性替代。最后,为了稳定训练过程,在添加所有分支之后立即添加一个后添加归一化层。 一旦完成线性化阶段,re-param 块中只存在线性层,这意味着可以在训练阶段合并块中的所有组件。 3.3. Block Squeezing
Simplify a sequential structureSimplify a parallel structureTraining overhead: from features to kernels3.4. Gradient Analysis on Multi-branch Topology。 条件2:每个活动分支的初始状态彼此不同 3.5. Block DesignFrequency prior filterLinear depthwise separable convolutionRe-parameterization for 1×1 convolutionLinear deep stem04 05 参考资料[2]https://github.com/JUGGHM/OREPA_CVPR2022 END 加入「计算机视觉」交流群👇备注:CV |
|