作者提出了浓度-深度混合(MoD)卷积神经网络(CNN),这是一种新方法,通过根据其与当前预测的相关性选择性地处理通道来增强CNN的计算效率。 这种方法通过动态选择卷积图(Conv-Blocks)中的关键通道进行聚焦处理,同时跳过较少相关的通道,从而优化计算资源。与需要动态计算图的约束计算方法不同,CNN MoD 使用了具有固定张量大小的静态计算图,这提高了硬件效率。该方法无需定制CUDA核或独特的损失函数即可加速训练和推理过程。 CNN MoD 既可以与传统 CNN 的性能相匹配,同时推理时间减少6%,GFLOPs 减少6%,参数减少,或者在保持相似推理时间、GFLOPs 和参数的情况下超越他们的性能。 例如,在 ImageNet 上,ResNet86-MoD 在 CPU 上比标准 ResNet50 提高了0.45%,在 GPU 上提高了6%。此外,ResNet75-MoD 可以在 CPU 上实现与 ResNet50 相同的性能,同时 GPU 上提高了25%的CPU速度和15%的GPU速度。
近年来,卷积神经网络(CNNs)在多种计算机视觉应用中取得了显著的进步,如图像识别[11, 34],目标检测[28, 29],和图像分割[23, 43]。尽管它们的性能表现非常出色,但CNNs通常需要大量的计算资源和庞大的内存,这在设备计算资源有限的情况下部署高级模型带来了巨大的挑战[19]。
为了解决这些挑战,广泛地使用了剪枝技术,通过根据现有标准根据冗余权重或滤波器去除模型的大小和计算需求。然而,这些方法对所有输入都予以统一处理,无法根据输入的固定复杂性进行调整,这可能导致性能下降[19]。
另一种方法是动态计算,或称为条件计算,适应计算资源以提高效率[19, 36, 37]。将这些方法集成到硬件中具有挑战性,因为它们依赖于动态计算图,通常与仅优化静态计算工作流程的系统不兼容[8, 37]。例如,Wu等人[41]报告在通过单独策略网络条件执行层时,处理时间增加。尽管在硬通货需求上有所减少,但GPU或FPGA等硬件上的实际收益有限,因为非均匀任务可能干扰标准卷积操作的效率[18, 33]。此外,Ma等人[25]表明,浮点运算(FLOPS)不足以估计推理速度,因为它们通常不包括像激活函数、求和和池化等元素化操作。
为了结合动态计算的性能优势和静态计算图的操作效率,作者提出了一种名为CNN Mixture-of-Depths(MoD)的方法,受到Transformer的Mixture-of-Depths方法[27]的启发。CNN MoD的基本原则是,在给定的网络层中,只有特征图中的选择子集对有效的卷积过程至关重要。通过关注这些关键通道,CNN MoD可以在不降低网络性能的情况下提高计算效率。
MoD机制如图1所示,通过在卷积块内动态选择最有利于关注的计算最重要的通道。MoD从通道选择器开始,如图2所示,其设计类似于Squeeze-and-Remember块[15]。通道选择器评估输入特征图(X∈R^{C×H×W})中每个通道的重要性。首先使用自适应平均池化对每个通道进行缩减,得到向量,然后通过两层全连接神经网络进行处理。 sigmoid激活函数生成表示每个通道重要性的得分。
接下来,通道选择器使用顶-k选择机制,根据计算出的重要性分数确定最重要的k个通道。这些通道被传递到卷积块(Conv-Block),该块在降低维度的特征图上工作,从而提高计算效率。为了确保处理后的输出特征图的梯度有效地优化通道选择过程,处理后的通道通过各自的重要性分数进行缩放。这使得梯度可以回到通道选择器,使在训练过程中学习通道的重要性。
最后一步涉及融合操作,其中处理后的通道被添加到原特征图的第一个k个通道。这种融合不仅保留了特征图的原有尺寸,还通过组合处理和未处理的通道增强了特征表示。
卷积块内处理通道数的减少是由超参数控制的,其中表示要处理的通道数。这里,是卷积块中的输入通道总数。例如,在典型的ResNet [11]架构中,通常处理1024通道的瓶颈块当时将只处理16个通道()。这种选择性处理大大降低了计算负载,通过聚焦较小的一组通道。此外,卷积块内 Kernel 的大小也调整到与减少的输入通道数匹配,详情请参见第3.2节。
经验评估表明,将MoD集成到CNN架构的最佳方法是将其与普通卷积块交替使用。在ResNet [11]或MobileNetV2 [31]等架构中,卷积块分为包含多个相同类型的卷积块(即具有相同输出通道数)的模块。每个模块从标准块开始,然后是MoD块。这种交替排列是基于Transformer Mixture-of-Depths [27]的原则。这并不意味着在现有序列中增加额外的MoD块,而是每隔一个原始架构的卷积块替代一个MoD块,以确保整个架构的深度保持不变。
卷积神经网络MoD实现了与传统卷积神经网络相比具有缩小推理时间、GPU使用量减少15%、CPU使用量减少25%的性能,或者在保持相同推理时间、GPU使用量减少15%、CPU使用量减少25%的条件下超越传统卷积神经网络。在ImageNet数据集[30]上,作者的ResNet75-MoD达到了标准ResNet50的准确率,同时在GPU上的速度提高了15%,在CPU上的速度提高了25%。在第四节详细说明的语义分割和目标检测任务中,也可以实现类似的结果。
本文节回顾了两种提升CNN计算效率的方法:静态剪枝和动态计算。
最后,作者强调了作者的CNN MoD方法的优势,这种方法结合了这两种策略的优点,在传统方法之上实现了改进。
静态剪枝技术旨在通过消除冗余模型参数来降低卷积神经网络(CNNs)的计算负担。这一领域早期的研究主要针对权重剪枝,即选择性地移除那些对模型输出影响很小的一组权重 [9, 10, 39] 。然而,这些方法往往会产生不规则的稀疏模式,这些模式与硬件优化的兼容性不佳 [19]。最近,结构化剪枝方法如通道剪枝逐渐受到关注。这些方法通过根据评估的重要性丢弃整个通道来提供更符合硬件的稀疏性 [13, 21]。例如,FPGM(基于几何均值的有用滤波器剪枝)识别并移除某个层中离几何均值最近的一组滤波器,针对那些被认为不太关键的滤波器 [13]。同样,HRank根据生成的特征图的对角线排名来评估滤波器,并剪除那些对输出信息贡献最少的滤波器 [21]。
尽管这些方法具有很多优点,但它们会永久地移除计算,可能导致模型处理复杂特征的能力下降。这种永久的减少对复杂图像的处理特别具有限制性,因此,可能需要在不同应用中采用不同的剪枝策略,以便更好地适应多样化的现实世界应用。此外,这些方法通常需要微调或专用的损失函数,从而进一步复杂的实现过程。
动态计算(或条件计算)根据输入的复杂性动态调整计算资源,可能在高模型准确性维持的同时降低计算量。像BranchyNet [35]和MSDNet [16]这样的架构为简单的输入实现早期退出,以降低平均计算负载。此外,由策略驱动的方法,如BlockDrop [41]和GaterNet [3],使用策略网络实时决定执行网络块的哪些,这可以适应输入的变化。
动态计算进一步的创新利用门控函数来实现选择性处理卷积块。跳过网络 [38]和卷积神经网络-自适应重要性(ConvNet-AIG [36])在观察到单个块可以被移除而不影响ResNet [11]中的其他块时,动态跳过整个卷积块的处理。一些方法 [6, 37, 42]利用空间稀疏性来减少计算,例如Verelst等人 [37]学习像素级执行 Mask 为每个块,并只计算指定位置。动态双重门控 [19]通过识别空间和通道维度中的有信息特征,允许模型在推理过程中动态跳过不重要的区域和通道,引入了另一层复杂性。
许多关于条件执行的工作主要关注理论复杂性的减少。然而,在实际设置中,由于这些动态方法依赖于动态计算图,所以它们的应用往往需要面对由于优化为静态计算而受到硬件限制。这种依赖可能导致在硬件系统上的效率低下和执行时间的延长 [8, 18, 33, 41]。
最近,Raposo等人 [27] 引入了用于Transformer的mixture-of-depths方法,该方法在选择性地处理Transformer块内的标记以有效地降低计算负载的同时保持了创新。这个创新方法激发了作者的CNN MoD方法。
卷积神经网络MoD(Modular Design)方法将静态剪枝和动态计算的优点融为一体。以下是作者方法的关键优势:
“混合深度”概念在作者方法中指代了一种选择性处理策略,即并非在每个模块内的每个卷积块中都会处理每个通道,导致处理深度不同。这种策略允许在同一模块中,比其他通道处理得更加频繁的通道,通过优化计算资源和提高特征提取效率。
本节介绍了卷积神经网络“混合深度”方法。它包括三个主要组成部分:
图2显示了通道选择器如何动态地选择在卷积块中处理的最重要通道。它运行在两个主要阶段:
这种选择过程使得通道选择器在保持固定计算图的同时,有效地管理计算资源,从而动态地选择要处理的通道。
如下图所示,Conv-Block用于在Channel Selector选择前k个通道之后处理这些通道。该块可从ResNets [11]或ConvNext [22]等架构中扩展,旨在处理较少的通道。
在每一个Conv-Block中需要处理的通道数(k)取决于公式:k=⌊C/c⌋(其中C表示块的总输入通道,c是确定通道降维程度的超参数)。例如,在典型的ResNet [11]瓶颈块(通常处理1024通道)中,设置c=64可以将处理量减少到仅16通道(k=16)。与标准瓶颈流中通道从1024更改为256再更改回1024的运动不同,在MoD瓶颈块中,通道的维数从16显著减小到4,然后返回16,使计算集中在最重要的特征上并提高效率。在作者进行的实证调查中,作者发现超参数c应设置为前一个Conv-Block中的输入通道数,在整个CNN的每个MoD块中保持不变。
Conv-Block的最后一步是将处理过的通道与从Adaptive Channel Importance Computation获得的权重分数相乘。这一步确保了在训练过程中有效传播梯度到Channel Selector,以优化选择机制。
融合机制将处理和未处理的通道相结合,以保持后续卷积操作所需的维数。这种方法确保了保留后续阶段的非选择通道中的有用特征,从而保持模型性能所必需的全面特征集。
设原始输入特征图 的维度为 ,其中 表示总通道数, 和 分别表示特征图的高度和宽度。经过适配的卷积块处理后,所得到的处理特征图 的维度为 。融合 与 的操作如下:
其中 (1) 将处理特征添加到 的前 个通道,(2) 保持未处理的其他通道。这一公式证实了融合后的特征图 的通道数与原始输入 相同,同时保留了后续层的所需维度。
在实验中,作者尝试了各种将处理通道重新集成到特征图 中的策略。这些策略包括将处理通道重新添加到其原始位置。然而,实际结果并未显示出任何改进(参见附录 0.A.6)。似乎在特征图中使用相同的特征图位置处理信息对网络性能有益。这一观察通过将处理通道添加到特征图 的最后 个通道得出结果,与将其添加到第一 个通道的结果相当(参见附录 0.A.5)。
将模块组织为包含多个相同类型的卷积层块(例如,具有相同输出通道数)的模块。通过作者的实验,作者发现用MoT(模块化卷积通道)块与每个模块的标准卷积层块间隔交替是最有效的集成方法。作者也研究了用MoT块填充每个块并选择性地在特定模块内使用,但交替策略被证明是最有效的方法。值得注意的是,MoT块替换每个模块的第二个卷积层,保持原始架构的深度(例如,在ResNet50中为50层)。每个模块从标准块(如BasicBlock)开始,然后是MoT块。这种交替模式表示,只要各个模块中存在全容量卷积的规律间隔,网络就可以处理大规模的容量减少。此外,这种方法确保MoT块不会干扰模块中第一块通常发生的空间维度降低卷积。
本节评估了CNN Mixture-of-Depths在多个任务上的性能,包括在CIFAR-10/100 [17]和ImageNet [30]上的有监督图像识别,以及在Cityscapes [5]上的语义分割,以及在Pascal VOC [7]上的目标检测。CIFAR-10/100上的结果请参见附录0.D部分详细介绍。
进行了在GPU和CPU平台上的性能基准测试,以评估运行时间。这些测量值使用torch.utils.benchmark库中的Timerand Compare函数获取,并在Intel(R) Core(TM) i7-10850H CPU @ 2.70GHz和NVIDIA Quadro RTX 3000 GPU上进行测试。
作者在ImageNet数据集[30]上评估了CNN MoD,数据集包含1000个类别,其中包含了120万训练图像,5万验证图像和15万测试图像。实验是使用3个不同的随机种子进行的,以确保结果的稳健性和可重复性。实现细节和更进一步的结果见附录0.A。
表1展示了各种网络配置的比较结果,突出了作者对先进剪枝和动态计算策略的方法。这包括与 已知方法如DGNet [19], Batch-Shaping [1], ConvNet-AIG [36], HRANK [21], FPGM [13], 和DynConv [37]。作者报告了所有模型的验证集top-1分类准确率,以及诸如无需微调(No FT),简单的训练机制(Simple Train.),GPU实现的可用性(GPU Impl.),静态计算图(Static Graph)和训练速度增快(Faster Train.)。这里,“简单训练”表示不需要定制的损失函数或复杂的超参数调整, “更快的训练”是通过与标准模型相比的相对训练时间来确定的。
MoD块在每秒块中减少了计算负载,使得可以构建计算成本与较浅标准模型可比深的架构。具体来说,在ResNet86-MoD中,第三层的卷积块数量为18,而标准ResNet50只有6个卷积块,同时保持着近似的GMACs,参数,和推理时间。这种扩展得益于MoD块处理较少的通道。同样,ResNet75-MoD将第三层卷积块数量增加到14。
如第3.2节所述,所有MoD块中的c值被设置为第一卷积块中的最大输入通道数。例如,对于ResNet[11]和MobileNetV2[31],c值分别为64和16。
MoD模型实现了与传统CNN可比但推理时间减少或保持相似推理时间的性能。例如,作者的ResNet75-MoD匹配标准ResNet50,并在GPU上实现15%的加速,而在CPU上实现25%的加速。同样,ResNet50-MoD模型显著提高了处理速度,在CPU上获得了27%的改进,在GPU上获得了48%的改进,对精度略有影响。此外,ResNet86-MoD模型通过训练速度提高了0.45%,在CPU上提高了6%,在GPU上提高了5%。一个使用随机通道选择的测试变体,M od50 rand,表明性能下降了约0.8%. 这也突显了作者在MoD方法中选择策略性通道的重要性。图3对不同计算指标下的ResNet MoD模型与标准ResNets的比较性能进行了比较分析。
缺乏关于真实世界推理速度增加的数据的动态方法如DGNet [19]和ConvNet-AIG [36],只显示模拟GMAC减少,这表明在实际应用中存在潜在的差异。
表2中的结果展示了将MoD方法应用于MobileNetV2架构的有效性。MobileNetV2-MoD-L模型,具有更深配置(请参见附录0.A.3),保持了与标准MobileNetV2近似的top-1准确性,同时在CPU上获得了11%的速度提升,在GPU上获得了10%的速度提升。尽管标准MobileNetV2-MoD模型在精度上略有降低,但在CPU上仍实现了43%的加速和GPU上获得39%的加速,说明了在性能和计算效率之间取得平衡的MoD方法的优势。
语义分割实验中,作者使用了Cityscapes数据集[5],该数据集包含来自50个欧洲城市的优质细粒度标注图像,分为19个语义类别(2,975个训练图像,500个验证图像和1,525个测试图像)。实验使用了三个不同的随机种子进行处理。详细实现细节参见附录0.B。
表3展示了在Cityscapes验证数据集上,采用基于ResNet的MoD Backbone 的全卷积网络(FCNs)的性能。具有ResNet86-MoD Backbone 的FCN在匹配标准FCN-R50模型推理时间的同时,将平均交并/ Union (mIoU)提高了0.95%,表明MoD可以在不增加额外计算成本的情况下提高分割精度。FCN-R75-MoD在提供与标准模型相似的准确度的同时,实现了计算效率的提升,在CPU上实现了9%的速度提升,在GPU上实现了7%的速度提升。
在本工作中,作者提出了CNN MoD,这是一种受到用于 Transformer (Transformers)的Mixture-of-Depths(MOD)方法启发的技术。这种技术在一个框架中将静态剪枝和动态计算的优点结合在一起。通过动态选择特征图的关键通道进行集中处理,同时跳过较少相关的通道,CNN MoD优化了计算资源。
它保持了一个静态计算图,在不需要定制CUDA核、额外的损失函数或微调的情况下优化了训练和推理速度。这些特性使得MOD与其他动态计算方法区分开来,显著简化了训练和推理过程。
与传统的CNN相比,CNN MoD实现了性能可比性,同时推理时间、GFLOPs和参数量都得到了减少,或在不改变推理时间、GFLOPs和参数量的情况下超越了它们,分别在图像识别、语义分割和目标检测等方面取得了良好的效果。
例如,在ImageNet上,ResNet86-MoD在CPU上的性能比标准的ResNet50提高了0.45%,而在GPU上的性能提高了6%。此外,ResNet75-MoD在CPU上的性能与ResNet50相同,但在GPU上的性能提高了25%。
虽然融合操作目前的效率提升了显著,特别是在高维数据集如ImageNet和实际任务如Cityscapes和Pascal VOC上的表现,但进一步优化切片操作可能还能开启更大的性能提升。未来的工作将探究优化这个组件的可能性,可能通过定制CUDA核来实现。对每层中处理通道数的最优数量的进一步研究也是优化性能的一个有前途的领域。
[1].CNN Mixture-of-Depths.