《RepViT Revisiting Mobile CNN From ViT Perspective》

期刊:CVPR

年份:2024

代码:http://https: //github.com/THU-MIG/RepViT

摘要

最近,与轻量级卷积神经网络(CNN)相比,轻量级视觉Transformer(ViTs)在资源受限的移动设备上表现出了更高的性能和更低的延迟。研究人员已经发现了轻量级ViT和轻量级CNN之间的许多结构联系。然而,它们之间在块结构、宏观和微观设计上的显著差异并没有得到充分的研究。在本研究中,我们从ViT的角度重新审视轻量级CNN的高效设计,并强调其在移动设备上的广阔前景。具体来说,我们通过集成轻量级vit的高效架构设计,逐步增强了标准轻量级CNN(即MobileNetV3)的移动友好性。这就产生了一个新的纯轻量级CNN家族,即RepViT。大量的实验表明,RepViT优于现有的最先进的轻型ViT,并在各种视觉任务中表现出良好的延迟。值得注意的是,在ImageNet上,RepViT在iPhone 12上以1.0 ms的延迟实现了超过80%的top-1精度,据我们所知,这是轻量级模型的第一次。此外,当RepViT遇到SAM时,我们的RepViT-SAM的推理速度比先进的MobileSAM快近10倍。

Introduction

轻量级CNN的发展:过去十年中,研究人员主要关注轻量级CNN,并取得了显著进展。提出了许多高效设计原则,如可分离卷积、反向残差瓶颈、通道洗牌和结构重参数化等,这些原则促成了MobileNets、ShuffleNets和RepVGG等代表性模型的发展。

轻量级ViTs的探索:尽管直接减小ViT模型的大小以适应移动设备的约束是可能的,但这样做往往会降低性能,使其不如轻量级CNN。因此,研究人员开始探索轻量级ViTs的设计,目标是超越轻量级CNN的性能。

轻量级ViTs和CNNs的比较:尽管轻量级ViTs和轻量级CNNs在某些结构上具有相似性,例如都采用卷积模块来学习空间局部表示,但它们在块结构、宏观/微观设计上存在显著差异,这些差异尚未得到充分的检查。

主要贡献:

  1. 新的轻量级CNN架构RepViT:提出了一种新的轻量级CNN架构,名为RepViT,它通过整合轻量级ViTs的高效架构设计,旨在为资源受限的移动设备提供高性能的模型。

  2. 性能与延迟的优化:RepViT在保持低延迟的同时,实现了超越现有最先进轻量级ViTs和CNNs的性能,特别是在ImageNet数据集上达到了超过80%的top-1准确率,且在iPhone 12上的延迟仅为1.0毫秒。

  3. 架构设计的创新:文章详细介绍了RepViT架构的设计过程,包括块设计、宏观设计和微观设计,这些设计决策共同促进了模型性能的提升和延迟的降低。

延迟 vs 准确性

图1

Method

2.1 预备知识

延迟度量:作者选择在移动设备上的实际延迟作为模型性能评估的基准,而不是传统的FLOPs或模型大小,因为这些指标与移动应用中的实际延迟相关性不高。

训练对齐:为了公平比较,作者将MobileNetV3-L的训练与现有的轻量级ViTs对齐,包括使用AdamW优化器、余弦学习率调度器、数据增强技术如Mixup、自动增强和随机擦除,以及标签平滑作为正则化方案。

2.2 块设计

2.2.1 Separate token mixer and channel mixer

动机:轻量级ViTs的一个关键设计特征是将Token Mixer和Channel Mixer分开。这种分离基于MetaFormer架构,已被证明对ViTs的有效性至关重要。

图2 (a) 是一个 MobileNetV3 块,具有可选的squeeze-and-excitation (SE) 层。(b) 是设计的 RepViT 块,它通过结构重新参数化技术分离令牌混合器和通道混合器。SE 层在 RepViT 块中也是可选的。为简单起见,省略了范数层和非线性。

如图2(a)所示:

  • 在MobileNetV3-L中,原始的块结构采用1×1扩展卷积和1×1投影层来实现通道间的交互(即Channel Mixer),并在1×1扩展卷积之后使用3×3深度卷积(DW)来融合空间信息(即Token Mixer)。这种设计将Token Mixer和Channel Mixer耦合在一起。
  • 为了分离它们,作者首先将DW卷积上移,并在DW之后放置可选的Squeeze-and-Excitation(SE)层,因为SE层依赖于空间信息的交互。(通过将DW卷积移动到1×1扩展卷积之前,我们可以首先对每个通道进行空间混合,然后再通过1×1卷积进行通道混合。这样,空间信息的混合和通道信息的混合就不再是顺序依赖的,而是可以独立进行。
  • 采用结构重参数化技术来增强模型在训练期间的学习能力。这种技术允许在推理过程中消除跳跃连接带来的计算和内存成本,这对移动设备尤其有利。

扩展阅读

扩展卷积(Expansion Convolution)处理通道信息

  • 扩展卷积通常用于CNN中的“扩展层”或“瓶颈层”,其目的是在不显著增加参数数量的情况下增加特征图的维度。
  • 在MobileNetV2和MobileNetV3等架构中,扩展卷积通过1×1的卷积操作来实现通道数的增加,这有助于在后续的深度卷积层中捕获更丰富的特征。

深度卷积(Depthwise Convolution)处理空间信息

  • 深度卷积是一种对输入特征图的每个通道分别应用的卷积操作,每个通道的卷积核独立于其他通道。
  • 这种卷积方式可以增加特征图的空间维度,同时保持较低的计算成本,因为它允许每个输入通道独立地学习空间特征。
  • 在MobileNet系列架构中,深度卷积通常与扩展卷积结合使用,以实现有效的特征提取和降维。

投影(Projection Layer)

  • 投影层通常指的是1×1的卷积层,它用于调整特征图的通道数,而不会改变其空间维度。
  • 在某些CNN架构中,如MobileNetV1,投影层用于在深度卷积后减少特征图的通道数,以降低后续层的计算负担。
  • 在Transformer架构中,投影层也可以用于将多头自注意力(Multi-Head Self-Attention, MHSA)模块的输出投影回原始维度,以准备进行下一轮的自注意力计算。

拓展阅读2

Token Mixer

  • 在ViT中,Token Mixer通常指的是多头自注意力机制(MHSA),它允许模型在不同位置的输入特征(tokens)之间建立联系,通过注意力权重来强调某些特征。这种机制有助于模型捕获全局上下文信息。

Channel Mixer

  • Channel Mixer通常指的是在特征的通道维度上进行混合的操作,如1×1的卷积,它允许模型在保持空间位置不变的同时,重新分配和组合不同通道的特征信息。

分开的原因

  • 在一些传统的ViT架构中,Token Mixer和Channel Mixer可能是结合在一起的,这意味着它们在同一个操作中同时发生。然而,这种耦合可能不利于模型的效率和灵活性,尤其是在需要处理不同分辨率或在资源受限的设备上运行时。

效果:将 MobileNetV3-L 的延迟降低到 0.81 ms,以及临时性能下降到 68.3%。 

2.2.2 Reducing expansion ratio and increasing width

扩展比(Expansion Ratio):扩展比是指在网络中的某些层,特别是卷积层或前馈网络(Feed Forward Network, FFN)中,输出通道数与输入通道数的比例。例如,如果一个层的扩展比是4,那么它的输出通道数是输入通道数的4倍。

扩展比的调整

在传统的ViT中,FFN模块的扩展比通常设置为4,这意味着FFN的隐藏维度是输入维度的4倍。这种设计虽然有助于捕获复杂的特征,但也导致了计算资源的大量消耗。

网络宽度(Width):网络宽度指的是网络中通道的数量。增加网络宽度可以提供更多的特征表示能力,有助于提高模型的性能。

宽度的调整

为了补偿降低扩展比带来的参数减少,作者提出增加网络的宽度。例如,在每个阶段之后加倍通道数,从而在保持或提高性能的同时,减少模型的延迟。

方案

RepViT在通道混合器中为所有阶段设置扩展比为 2,随着扩展比较小,我们可以增加网络宽度来弥补较大的参数减少。我们在每个阶段之后对通道进行双重处理,每个阶段最终得到48,96,192和384个通道。

效果:在 0.91 ms 的类似延迟下获得了 73.0% 的 top-1 准确率的较差性能

2.3 宏观设计

2.3.1 Early convolutions for stem

动机

Stem是CNN中的第一个卷积层,它负责从原始图像中提取初步的特征表示。在ViT和一些轻量级CNN中,Stem通常使用patchify操作,将输入图像分割成小块。Patchify操作虽然简单,但可能导致优化问题和对训练配置的敏感性。这是因为它将图像分割成固定大小的非重叠块,这可能不利于模型学习有效的特征表示

为了解决上述问题,引入了早期卷积的概念。这种方法使用几个stride为2的3×3卷积层作为Stem,以替代传统的patchify操作。

早期卷积的优势:使用早期卷积可以提高优化稳定性和性能。这是因为较小的卷积核可以更好地捕捉局部特征,并且多层堆叠可以逐渐增加感受野,从而有助于模型学习更丰富的特征表示。

实现细节:在RepViT架构中,作者采用了两个3×3卷积层,步长为2,作为Stem。第一个卷积层的过滤器数量设置为24,第二个卷积层设置为48。

图3 (a)MobileNetV3-L 将过滤器的初始数量减少到 16,这反过来又限制了Stem的表示能力。(b)RepViT采用早期卷积的方法,简单地装备两个步长为 = 2 的 3 × 3 卷积作为Stem。

效果:整体延迟降低到 0.86 ms。top-1 准确率提高到 73.9%。 

 2.3.2 Deeper downsampling layers

动机:在CNN中,下采样层负责减少特征图的空间维度,同时增加特征的深度,这有助于模型捕获不同尺度的特征并减少计算量。在标准的ViT和一些轻量级CNN中,下采样通常由单独的层完成,例如通过步长大于1的卷积或池化操作。然而,这种简单的下采样可能会导致信息丢失,影响模型性能

深化下采样层的策略

通过增加下采样层的深度来提高网络的性能。这包括使用多个连续的卷积层来逐步降低特征图的分辨率,同时增加特征的深度。

具体实现

  • 在RepViT中,作者首先使用一个步长为2的深度卷积(DW convolution)进行空间下采样,然后使用一个1×1的逐点卷积(pointwise convolution)来调整通道维度。
  • 为了进一步加深下采样层并捕获更多的信息,作者在逐点卷积后添加了一个前馈网络(FFN)模块,以记忆更多的潜在信息
图4 (c)MobileNetV3-L (d)RepViT

MobileNetV3-L仅通过步长为 = 2 的 DW 卷积,可能缺乏足够的网络深度,导致信息丢失和对模型性能的负面影响。因此,为了实现单独和更深的下采样层,我们首先使用stride = 2和pointwise 1 × 1卷积的DW卷积分别进行空间下采样和调制通道维度。

效果:将 top-1 准确率提高到 75.4%,延迟为 0.96 ms

2.3.3 Simple classifier

动机

分类器是CNN架构中的最后部分,负责将特征转换为最终的类别预测。在传统的CNN中,分类器通常包括全连接层、全局平均池化层或类似的结构。在一些现有的轻量级CNN中,分类器可能包含额外的卷积层和全连接层,这些设计虽然可以提高特征的表达能力,但也增加了计算复杂度和延迟

简化分类器的设计

使用更简单的分类器设计,以减少计算量并降低延迟。这种设计通常包括全局平均池化层(Global Average Pooling, GAP)后接一个线性层。

  • 全局平均池化层可以有效地将特征图转换为一维特征向量,同时显著减少参数数量和计算量。这种操作对于减少模型大小和提高推理速度非常有益。
  • 在全局平均池化之后,一个线性层(通常是一个全连接层)用于将池化后的特征映射到最终的类别上。这种设计简单且有效。
图4 (e)MobileNetV3-L (f)RepViT

效果:精度下降 0.6%,但延迟降低到 0.77 ms。 

2.3.4 Overall stage ratio

阶段比率(Stage Ratio):阶段比率是指网络中不同阶段的层数或块数的比例。这个比例对网络的性能和计算效率有重要影响。

动机:在第三阶段使用更多的层数可以带来准确性和速度之间的良好平衡。现有的轻量级ViTs通常在第三阶段应用更多的块,以实现更好的性能。

对网络采用 1:1:7:1 的阶段比率。然后,我们将网络深度增加到 2:14:2,实现更深的布局。

效果:将 top-1 准确率提高到 76.9%,延迟为 0.91 ms

2.4 微观设计

2.4.1 Kernel size selection

动机

  • 卷积核的大小直接影响CNN的性能和计算效率。较大的卷积核可以捕获更广泛的上下文信息,但会增加计算复杂度和延迟,特别是在移动设备上。
  • 一些研究工作,如ConvNeXt和RepLKNet,展示了使用大卷积核可以提高性能,但这些研究通常不针对移动设备优化。

在移动设备上,由于计算资源和内存访问成本的限制,大卷积核可能不是最优选择。此外,编译器和计算库通常对3×3卷积核有更高度的优化。

效果:保持76.9%的最高精度,同时延迟降低到0.89 ms。

2.4.2 Squeeze-and-excitation layer placement

动机

  • SE层作为一种通道注意力模块,可以弥补卷积在缺乏数据驱动属性方面的局限性,带来更好的性能。
  • 尽管SE层能够提升性能,但它也会引入额外的计算成本。因此,在设计轻量级模型时,需要仔细考虑SE层的放置,以平衡性能增益和计算效率。

先前研究的启示:引用了先前的研究,指出在低分辨率特征图的阶段使用SE层可能不会带来显著的准确率提升,而在高分辨率特征图的阶段使用SE层则可以更有效地提升性能。

具体方案

在RepViT中,采用了一种跨块的SE层放置策略。具体来说,每个阶段中的第1、3、5...个块使用SE层,这种交错放置方式旨在最大化准确率的提升,同时控制延迟的增加。

效果准确率达到77.4%,延迟为0.87 ms。

拓展阅读

SE模块:

Squeeze

  • 这一步骤通过全局平均池化(Global Average Pooling, GAP)将特征图压缩成一个单一的通道。这意味着无论特征图的空间维度有多大,都会被压缩成一个包含所有空间信息的单一数值。
  • 这种压缩操作生成了一个长度为1的全局特征向量,它捕获了输入特征图的全局空间信息。

Excitation

  • 接下来,这个全局特征向量通过几个全连接(FC)层进行非线性变换,通常包括一个ReLU激活函数和一个sigmoid激活函数。
  • ReLU层引入非线性,而sigmoid层则将输出值压缩到0和1之间,生成一个与输入通道数相同长度的权重向量。

Result

如表所示,RepViT在各种模型大小上始终实现最先进的性能。在类似的延迟情况下,RepViTM0.9可以显著优于EfficientFormerV2-S0和fastvitt - t8,准确率分别提高3.0%和2.0%。与EfficientFormerV2-S1相比,repviti - m1.1还可以获得1.7%的性能提升。值得注意的是,repviti - m1.0在iPhone 12上以1.0 ms的延迟实现了超过80%的top-1精度,据我们所知,这是轻量级机型的第一次。我们最大的模型,repviti - m2.3,获得83.7%的准确率,只有2.3毫秒的延迟。以上结果很好地表明,通过结合高效的架构设计,纯轻量级cnn可以在移动设备上优于现有的最先进的轻量级vit。 Conclusion

在本文中,我们通过结合轻量级vit的架构设计来重新审视轻量级cnn的高效设计。这就产生了RepViT,这是一个针对资源有限的移动设备的新型轻量级cnn系列。在各种视觉任务上,RepViT优于现有的最先进的轻量级vit和cnn,表现出良好的性能和延迟。这凸显了面向移动设备的纯轻量级cnn的前景。我们希望RepViT可以作为一个强大的基线,并激发对轻量级模型的进一步研究。

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值