发布时间:2023-12-10 12:00
点击上方“计算机视觉工坊”,选择“星标”
干货第一时间送达
作者丨ChaucerG
来源丨集智书童
结构重参化在各种计算机视觉任务中引起了越来越多的关注。它的目的是提高深度模型的性能,而不引入任何推理时间成本。虽然这种模型在推理过程中很有效,但它严重依赖于复杂的
training-time block
来实现较高的准确性,从而导致了巨大的额外训练成本。在本文中提出了在线卷积重参化(OREPA),一个两阶段的pipeline,旨在通过将复杂的
training-time block
压缩成单个卷积来减少巨大的训练开销。为了实现这一目标,本文引入了一个线性缩放层,以更好地优化在线块。在降低训练成本的帮助下,作者还探索了一些更有效的重参组件。与最先进的重参模型相比,OREPA能够节省约70%的training-time
成本,并加速训练速度约2×。同时,配备OREPA,模型在ImageNet上的方法高出+0.6%。作者还进行了目标检测和语义分割的实验,并显示了对下游任务的一致改进。
卷积神经网络(CNNs)已经在许多计算机视觉任务的应用成功,包括图像分类、目标检测、语义分割等。精度和模型效率之间的权衡也已被广泛讨论。
一般来说,一个精度较高的模型通常需要一个更复杂的块,一个更宽或更深的结构。然而,这样的模型总是太重,无法部署,特别是在硬件性能有限、需要实时推理的场景下。考虑到效率,更小、更紧凑和更快的模型自然是首选。
为了获得一个部署友好且高精度的模型,有研究者提出了基于结构重参数化的方法来释放性能。在这些方法中,模型在训练阶段和推理阶段有不同的结构。具体来说,使用复杂的训练阶段拓扑,即重参数化的块,来提高性能。训练结束后,通过等效变换将一个复杂的块重参为成一个单一的线性层。重参后的模型通常具有一个整洁架构模型,例如,通常是一个类似VGG的或一个类似ResNet的结构。从这个角度来看,重参化策略可以在不引入额外的推理时间成本的情况下提高模型的性能。
BN层是重构模型的关键组成部分。在一个重新解析块(图1(b))中,在每个卷积层之后立即添加一个BN层。可以观察到,去除这些BN层会导致的性能退化。然而,当考虑到效率时,这种BN层的使用出乎意料地在训练阶段带来了巨大的计算开销。在推理阶段,复杂的块可以被压缩成一个卷积层。但是,在训练过程中,BN层是非线性的,也就是说,它们将特征映射除以它的标准差,这就阻止了合并整个块。因此,存在大量的中间计算操作(large FLOPS)和缓冲特征映射(high memory usage)。更糟糕的是,这么高的训练预算使得很难探索更复杂和可能更强的重参块。很自然地,下面的问题就出现了:
为什么标准化在重参中这么重要?
通过分析和实验,作者认为BN层中的尺度因子最重要,因为它们能够使不同分支的优化方向多样化。
基于观察结果,作者提出了在线重参化(OREPA)(图1(c)),这是一个两阶段的pipeline,使之能够简化复杂的training-time re-param block
。
在第一阶段,block linearization,去除所有的非线性BN层,并引入线性缩放层。这些层与BN层具有相似的性质,因此它们使不同分支的优化多样化。此外,这些层都是线性的,可以在训练过程中合并成卷积层。
第二阶段,block squeezing,将复杂的线性块简化为单一的卷积层。OREPA通过减少由中间计算层引起的计算和存储开销,显著降低了训练成本,对性能只有非常小的影响。
此外,高效化使得探索更复杂的重参化拓扑成为可能。为了验证这一点,作者进一步提出了几个重参化的组件,以获得更好的性能。
在ImageNet分类任务上评估了所提出的OREPA。与最先进的修复模型相比,OREPA将额外的训练时间GPU内存成本降低了65%到75%,并将训练过程加快了1.5-2.3倍。同时,OREPA-ResNet和OREPA-VGG的性能始终优于+0.2%∼+0.6%之前的DBB和RepVGG方法。同时作者还评估了在下游任务上的OREPA,即目标检测和语义分割。作者发现OREPA可以在这些任务上也可以带来性能的提高。
提出了在线卷积重参化(OREPA)策略,这极大地提高了重参化模型的训练效率,并使探索更强的重参化块成为可能;
通过对重参化模型工作机制的分析,用引入的线性尺度层代替BN层,这仍然提供了不同的优化方向,并保持了表示能力;
在各种视觉任务上的实验表明,OREPA在准确性和训练效率方面都优于以前的重参化模型(DBB/RepVGG)。
结构重参化最近被重视并应用于许多计算机视觉任务,如紧凑模型设计、架构搜索和剪枝。重参化意味着不同的架构可以通过参数的等价转换来相互转换。例如,1×1卷积的一个分支和3×3卷积的一个分支,可以转移到3×3卷积的单个分支中。在训练阶段,设计了多分支和多层拓扑来取代普通的线性层(如conv或全连接层)来增强模型。Cao等讨论了如何在训练过程中合并深度可分离卷积核。然后在推理过程中,将训练时间的复杂模型转移到简单模型中,以便于更快的推理。
在受益于复杂的training-time
拓扑,同时,当前的重参化方法训练使用不可忽略的额外计算成本。当块变得更复杂以变得更强的表示时,GPU内存利用率和训练时间将会越来越长,最终走向不可接受。与以往的重参化方法不同,本文更多地关注训练成本。提出了一种通用的在线卷积重参化策略,使training-time
的结构重参化成为可能。
BN被提出来缓解训练非常深度神经网络时的梯度消失问题。人们认为BN层是非常重要的,因为它们平滑了损失。最近关于无BN神经网络的研究声称,BN层并不是不可或缺的。通过良好的初始化和适当的正则化,可以优雅地去除BN层。
对于重参化模型,作者认为重参化块中的BN层是关键的。无BN的变体将会出现性能下降。然而,BN层是非线性的,也就是说,它们将特征图除以它的标准差,这阻止了在线合并块。为了使在线重参化可行,作者去掉了重参块中的所有BN层,并引入了BN层的线性替代方法,即线性缩放层。
标准卷积层计算比较密集,导致大的FLOPs和参数量。因此,卷积分解方法被提出,并广泛应用于移动设备的轻量化模型中。重参化方法也可以看作是卷积分解的某种形式,但它更倾向于更复杂的拓扑结构。本文的方法的不同之处在于,在kernel-level上分解卷积,而不是在structure level。
在本节中,首先,分析了关键组件,即重参化模型中的BN层,在此基础上提出了在线重参化(OREPA),旨在大大减少再参数化模型的训练时间预算。OREPA能够将复杂的训练时间块简化为一个卷积层,并保持了较高的精度。
OREPA的整体pipeline如图2所示,它包括一个Block Linearization阶段和一个Block Squeezing阶段。
图2作者通过分析多层和多分支结构的优化多样性,深入研究了重参化的有效性,并证明了所提出的线性缩放层和BN层具有相似的效果。
最后,随着训练预算的减少,进一步探索了更多的组件,以实现更强的重参化模型,成本略有增加。
作者认为中间BN层是重参化过程中多层和多分支结构的关键组成部分。以SoTA模型DBB和RepVGG为例,去除这些层会导致严重的性能下降,如表1所示。
这种观察结果也得到了Ding等人的实验支持。因此,作者认为中间的BN层对于重参化模型的性能是必不可少的。
然而,中间BN层的使用带来了更高的训练预算。作者注意到,在推理阶段,重参化块中的所有中间操作都是线性的,因此可以合并成一个卷积层,从而形成一个简单的结构。
但在训练过程中,BN层是非线性的,即它们将特征映射除以其标准差。因此,中间操作应该单独计算,这将导致更高的计算和内存成本。更糟糕的是,如此高的成本将阻止探索更强大的训练模块。
如3.1中所述,中间的BN层阻止了在训练过程中合并单独的层。然而,由于性能问题,直接删除它们并不简单。为了解决这一困境,作者引入了channel级线性尺度操作作为BN的线性替代方法。
缩放层包含一个可学习的向量,它在通道维度中缩放特征映射。线性缩放层具有与BN层相似的效果,它们都促进多分支向不同的方向进行优化,这是重参化时性能提高的关键。除了对性能的影响外,线性缩放层还可以在训练过程中进行合并,使在线重参化成为可能。
基于线性缩放层,作者修改了重参化块,如图3所示。具体来说,块的线性化阶段由以下3个步骤组成:
首先,删除了所有的非线性层,即重参化块中的BN层
其次,为了保持优化的多样性,在每个分支的末尾添加了一个缩放层,这是BN的线性替代方法
最后,为了稳定训练过程,在所有分支的添加后添加一个BN层。