【读点论文】Separable Self-attention for Mobile Vision Transformers,通过引入隐变量将Q矩阵和K矩阵的算数复杂度降低成线性复杂度,分步计算注意力。

Separable Self-attention for Mobile Vision Transformers

Abstract

  • 移动视觉transformer(MobileViT)可以在多个移动视觉任务中实现最先进的性能,包括分类和检测。虽然这些模型的参数较少,但与基于卷积神经网络的模型相比,它们具有较高的延迟。MobileViT的主要效率瓶颈是transformer中的多头自我注意(MHA),相对于令牌(或补丁)的数量k,它需要 O ( k 2 ) O(k^2) O(k2)的时间复杂度。

  • 此外,MHA需要昂贵的操作(例如,批量矩阵乘法)来计算自我注意,影响资源受限设备的延迟。本文介绍了一种具有线性复杂度的可分离自注意方法,即O(k)。该方法的一个简单而有效的特点是,它使用元素操作来计算自我注意,使其成为资源受限设备的良好选择。改进的模型MobileViTv2在多个移动视觉任务上都是最先进的,包括ImageNet对象分类和MS-COCO对象检测。通过大约300万个参数,MobileViTv2在ImageNet数据集上获得了75.6%的top-1精度,比MobileViT高出约1%,同时在移动设备上运行速度快3.2倍。

  • 源代码可以在 https://github.com/apple/ml-cvnets 上找到

Introduction

  • (Vision transformer, ViTs)在各种各样的视觉识别任务中已经变得无处不在[Training data-efficient image transformers & distillation through attention,Swin transformer: Hierarchical vision transformer using shifted windows],包括移动视觉任务[Mobilevit]。包括移动视觉transformer在内的基于视觉的模型的核心是transformer块[Attention is all you need]。

  • 在基于vit的模型中,特别是在资源受限的设备上进行推理时,主要的效率瓶颈是多头自注意(MHA)。MHA允许令牌(或补丁)彼此交互,并且是学习全局表示的关键。然而,transformer块的自我注意复杂度为 O ( k 2 ) O(k^2) O(k2),即它是令牌(或补丁)数量k的二次元。除此之外,还有计算成本较高的操作(如批量矩阵乘法;如下图所示,在MHA中计算注意矩阵。

    • 在这里插入图片描述

    • Comparison between different attention units。Transformer和Linformer使用昂贵的操作(批量矩阵乘法)来计算自我注意。这样的操作是资源受限设备上高效推理的瓶颈。该方法不使用此类操作,从而加快了对资源受限设备的推理

    • 左边:比较k = 256个令牌在一层不同的注意单元中,top-5操作(按CPU时间排序)。

    • 右上方:比较不同注意单位的复杂性。右下角比较了不同注意单位的延迟作为令牌数量k的函数。这些结果是在一个2.4 GHz 8- core Intel core i9处理器的单CPU核心机器上计算的,d = 512(令牌维度),h = 8(头的数量;对于Transformer和Linformer),并且使用PyTorch中公开可用的分析器,p = 256 (Linformer中的投影令牌)。

  • 在资源受限的设备上部署基于vit的模型尤其令人担忧,因为这些设备的计算能力较低,内存受限,功耗预算有限。因此,本文试图回答这个问题:对于资源受限的设备,transformer块的自我注意是否可以优化?

  • 已经提出了几种方法[例如,Generating long sequences with sparse transformers,Reformer,Longformer,Linformer]来优化transformer(不一定是vit)的自我注意操作。

  • 其中,在序列建模任务中被广泛研究的一种方法是在自我注意层中引入稀疏性,即每个标记关注输入序列中标记的一个子集。虽然这些方法将时间复杂度从 O ( k 2 ) O(k^2) O(k2)降低到O(k√k)或O(klogk),但代价表现是下降。另一种常用的近似自我注意的方法是低秩近似Linformer通过线性投影将自我注意操作分解为多个较小的自我注意操作,将自我注意复杂度从 O ( k 2 ) O(k^2) O(k2)降低到O(k)

  • 然而,Linformer仍然使用昂贵的操作(例如,批量矩阵乘法)在MHA中学习全局表示,这可能会阻碍这些模型在资源受限设备上的部署

  • 本文介绍了一种新颖的方法-可分离自注意,其复杂度为O(k),用于解决transformer MHA的瓶颈问题。为了提高推理效率,本文提出的自我注意方法还将MHA中计算成本较高的操作(如批量矩阵乘法)替换为元素操作(如求和和乘法)。在标准视觉数据集和任务上的实验结果证明了所提方法的有效性(下图)。

  • 在这里插入图片描述

  • 在不同的任务中,MobileViTv2模型比MobileViTv1模型更快更好。MobileViTv2模型是通过将MobileViTv1中的多头自我注意替换为提出的可分离自我注意(第3.2节)构建的。这里,本文在iPhone12上测量分类、分割和检测的输入分辨率分别为256 × 256、512 × 512和320 × 320的推理时间。

Related work

  • Improving self-attention

    • 在transformer中提高MHA的效率是一个活跃的研究领域。第一个研究方向是引入局部性来解决MHA中的计算瓶颈[例如,Generating long sequences with sparse transformers,Longformer,Image transformer,Blockwise selfattention for long document understanding]。这些方法不是关注所有k个标记,而是使用预定义的模式来限制所有k个标记的自我注意接收域,将时间复杂度从 O ( k 2 ) O(k^2) O(k2)降低到O(k√k)或O(klogk)。然而,这些方法在transformer中受到较大的性能下降,与标准MHA相比,训练/推理速度略有提高。

    • 为了提高MHA的效率,第二个研究方向是使用相似性度量对token进行分组[Reformer,Fast transformers with clustered attention,Cluster-former: Clustering-based sparse transformer for question answering]。例如,Reformer使用位置敏感哈希对令牌进行分组,并将理论上的自我注意成本从O(k2)降低到O(k log k).然而,与标准MHA相比,效率的提高仅对大序列(k > 2048)是显著的。因为在vit中k < 1024,所以这些方法不适合vit。

    • 第三个研究方向是通过低秩近似提高了MHA的效率[Rethinking attention with performers,Delight: Deep and light-weight transformer]。其主要思想是用一个低秩矩阵来近似自注意矩阵,将计算代价从O(k2)降低到O(k)。尽管这些方法显著提高了自我注意操作的速度,但它们仍然使用昂贵的操作来计算注意力,这可能会阻碍这些模型在资源受限的设备上的部署。

    • 总之,现有的改进MHA的方法在减少推理时间和内存消耗方面存在局限性,特别是对于资源受限的设备。这项工作介绍了一种可分离的自我注意方法,该方法快速且内存效率高(见上图),这对于资源受限的设备是理想的

  • Improving transformer-based models

    • 关于提高transformer的效率已经做了大量的工作。这些方法大多使用不同的方法来减少transformer块中的令牌数量,包括下采样[Rethinking spatial dimensions of vision transformers,Tokenlearner: Adaptive space-time tokenization for videos]和金字塔结构[Swin transformer,Pyramid vision transformer,Mobilevit]。由于提出的可分离自注意模块是MHA的一个简单替代,它可以很容易地与任何基于transformer的模型集成,从而进一步提高其效率。
  • Other methods

    • 基于transformer的模型性能可以通过不同的方法来提高,包括混合精度训练[Mixed precision training]、高效优化器[8-bit optimizers via block-wise quantization,Scaling vision transformers]和知识蒸馏[Training data-efficient image transformers & distillation through attention]。这些方法与本文的工作不太相关,默认情况下,本文在训练中使用混合精度。

MobileViTv2

  • MobileViT是一个混合网络,结合了CNNs和ViTs的优势。MobileViT将transformer视为卷积,这使得它能够利用卷积(例如,归纳偏差)和transformer(例如,远程依赖)的优点,为移动设备建立一个轻量级网络。

  • 虽然MobileViT网络与轻量级cnn(如MobileNets)相比,参数明显更少,提供更好的性能,但它们有高延迟。MobileViT的主要效率瓶颈是多头自我注意(MHA;下图a)。

  • 在这里插入图片描述

  • Different self-attention units.

    • (a)是一种标准的多头自注意(MHA)变压器。

    • (b)在(a)中通过引入token投影层扩展MHA,将k个token投影到预定义数量的token p,从而将复杂度从O(k2)降低到O(k)。然而,它仍然使用昂贵的操作(例如,批量矩阵乘法)来计算自我注意,影响资源受限设备上的延迟。

    • ©是提出的可分离的自我注意层,其复杂性是线性的,即O(k),并使用元素操作来更快的推断。

  • MHA使用缩放的点乘积关注来捕捉k个令牌(或补丁)之间的上下文关系。然而,MHA是昂贵的,因为它有 O ( k 2 ) O(k^2) O(k2)的时间复杂度。这种二次成本是具有大量令牌k的transformer的瓶颈。此外,MHA使用计算和内存密集型操作(例如,批量矩阵乘法和softmax计算注意矩阵);这可能成为资源受限设备的瓶颈。为了解决MHA在资源受限设备上高效推理的局限性,本文引入了线性复杂度的可分离自我注意(上图c)

  • 如下图b所示,本文的可分离自我注意方法的主要思想是计算相对于潜在标记l的上下文分数。然后,这些分数被用来重新加权输入标记,并产生一个上下文向量,该向量对全局信息进行编码。

    • 在这里插入图片描述

    • 示例说明了令牌之间的交互,以学习不同注意层中的全局表示。

    • 在(a)中,每个查询令牌通过点积计算与所有键令牌的距离。然后使用softmax对这些距离进行标准化,产生一个注意力矩阵a,它对上下文关系进行编码。

    • 在(b)中,计算输入令牌与潜在令牌L之间的内积。使用softmax对生成的向量进行归一化以产生上下文分数cs。这些上下文分数用于对关键标记进行加权,并产生一个上下文向量cv,该cv对上下文信息进行编码。

  • 由于自注意是相对于一个潜在令牌计算的,该方法可以将transformer中的自我注意复杂度降低k倍。该方法的一个简单而有效的特点是,它使用元素操作(如求和和乘法)进行实现,使其成为资源受限设备的良好选择

  • 本文称之为可分离的自我注意方法,因为它允许本文通过用两个单独的线性计算代替二次MHA来编码全局信息。在MobileViT中,将MHA替换为可分离自我注意,得到了改进的MobileViTv2模型。

Overview of multi-headed self-attention

  • MHA(上图【Different self-attention units.】a)允许transformer对令牌之间的关系进行编码。具体来说,MHA的输入 x ∈ R k × d x∈\Bbb R^{k×d} xRk×d包含k个d维令牌(或补丁)嵌入。然后输入x被馈送给三个支路,即查询Q、键K和值V。每个支路(Q、K、V)由h个线性层(或磁头)组成,使transformer能够学习输入的多个视图。然后,对所有h个头部同时计算Q和K中线性层的输出之间的点积,然后通过softmax操作σ产生一个注意(或上下文映射)矩阵 a ∈ R k × k × h a∈\Bbb R^{k×k×h} aRk×k×h

  • 然后计算a和V中线性层的输出之间的另一个点积,得到加权和输出 y w ∈ R k × d h × h y_w∈\Bbb R^{k×d_h×h} ywRk×dh×h,其中dh = dh是头部维数。将h个头部的输出连接起来,产生一个带有k个d维标记的张量,然后将其输入到另一个权值为 W O ∈ R d × d W_O∈\Bbb R^{d×d} WORd×d的线性层,产生 M H A y ∈ R k × d MHA_y∈\Bbb R^{k×d} MHAyRk×d的输出。在数学上,这个操作可以描述为:

    • y = c o n c a t ( ) w o , ( 1 ) y=concat()w_o,(1) y=concat()wo,(1)

    • 其中 W Q i ∈ R d × d h , W K i ∈ R d × d h , W V i ∈ R d × d h W_Q^i∈\Bbb R^{d×d_h}, W_K^i∈\Bbb R^{d×d_h}, W_V^i∈\Bbb R^{d×d_h} WQiRd×dh,WKiRd×dh,WViRd×dh分别为Q, K, V分支中的第i层(或头)的权值。符号<·,·>表示点积运算。

Separable self-attention

  • 可分离自我注意的结构受到MHA的启发。与MHA类似,输入x使用三个分支处理,分别是输入I、密钥K和值v。输入分支I使用权值 W I ∈ R d W_I∈\Bbb R^d WIRd的线性层将x中的每个d维令牌映射到标量。权值WI作为上图b中的潜在节点L。这个线性投影是一个内积操作,计算潜在令牌L和x之间的距离,得到一个k维向量。然后对这个k维向量进行softmax操作,产生上下文得分 c s ∈ R k c_s∈\Bbb R^k csRk

  • 与计算每个令牌关于所有k个令牌的注意(或上下文)分数的转换器不同,所提出的方法只计算关于潜在令牌l的上下文分数。这减少了从 O ( k 2 ) O(k^2) O(k2)到O(k)计算注意(或上下文)分数的成本。

  • 上下文得分cs用于计算上下文向量cv。具体来说,使用权值为 W K ∈ R d × d W_K∈\Bbb R^{d×d} WKRd×d的密钥分支K将输入x线性投影到d维空间,产生输出 x K ∈ R k × d x_K∈\Bbb R^{k×d} xKRk×d。上下文向量 c v ∈ R d c_v∈\Bbb R^d cvRd则计算为xK的加权和:

    • c v = ∑ i = 1 k c s ( i ) x K ( i ) , ( 2 ) c_v=\sum_{i=1}^kc_s(i)x_K(i),(2) cv=i=1kcs(i)xK(i),(2)

    • 上下文向量cv类似于Eq.(1)中的注意矩阵a,在某种意义上,它也对输入x中所有令牌的信息进行编码,但计算成本较低。

  • cv编码的上下文信息与x中的所有令牌共享。为此,输入x使用权重为 W V ∈ R d × d W_V∈\Bbb R^{d×d} WVRd×d的值分支V线性投影到d维空间,然后激活ReLU产生输出 x V ∈ R k × d x_V∈\Bbb R^{k×d} xVRk×d。然后,cv中的上下文信息通过广播元素的乘法运算传播到xV。然后,生成的输出被输入到另一个权重为 W O ∈ R d × d W_O∈\Bbb R^{d×d} WORd×d的线性层,以产生最终的输出 y ∈ R k × d y∈\Bbb R^{k×d} yRk×d。数学上,可分离自我注意可定义为:

    • y = ( ) w o , ( 3 ) y=()w_o,(3) y=()wo,(3)

    • 其中,∗和 ∑ \sum 分别是可广播的元素级乘法和求和运算。

  • Comparison with self-attention methods

    • 上图将提出的方法与Transformer和Linformer进行比较。由于自我注意方法的时间复杂性不考虑用于实现这些方法的操作的成本,因此一些操作可能会成为资源受限设备上的瓶颈。为了全面理解,除了理论指标外,还测量了可变k的单个CPU核上的模块级延迟。与transformer和Linformer中的MHA相比,本文提出的可分离自注意算法具有快速、高效的特点

    • 除了这些模块级的结果之外,当本文将transformer中的MHA替换为MobileViT架构中提出的自分离注意时,本文观察到在ImageNet-1k数据集上类似的性能下,推理速度提高了3倍(下表)

    • 在这里插入图片描述

    • 不同自我注意方法对MobileViT在ImageNet-1k数据集上性能的影响在这里,所有型号都有类似数量的参数和FLOPs,延迟是在iPhone12上测量的。

    • 这些结果表明了所提出的可分离自注意在架构级上的有效性。请注意,Transformer和Linformer中的自我关注对MobileViT产生了类似的结果。这是因为与语言模型相比,MobileViT中的令牌数量k更少(k≤1024),其中Linformer明显比transformer更快。

  • Relationship with additive addition

    • 提出的方法类似于Bahdanau等人[Neural machine translation by jointly learning to align and translate]的注意机制,它也通过在每个时间步取LSTM输出的加权和来编码全局信息。与[Neural machine translation by jointly learning to align and translate]不同,输入令牌是通过递归交互的,该方法中的输入令牌只与一个潜在的令牌交互

MobileViTv2 architecture

  • 为了证明所提出的可分离自我注意在资源受限设备上的有效性,本文将可分离自我注意与最近的一个基于vit的模型MobileViT结合起来。MobileViT是一种重量轻、移动友好的混合网络,其性能明显优于其他具有竞争力的基于cnn、基于transformer和cnn的混合网络,包括mobilenet。为了避免歧义,本文在本文的其余部分将MobileViT称为MobileViTv1。

  • 具体地说,本文将MobileViTv1中transformer块中的MHA替换为提出的可分离自我注意方法。本文将结果架构称为MobileViTv2。本文也不使用MobileViT块中的跳接和融合块(上图b在中),因为它略微提高了性能。

  • 此外,为了创建不同复杂性下的MobileViTv2模型,本文使用宽度乘数α∈{0.5,2.0}均匀缩放MobileViTv2网络的宽度。这与MobileViTv1形成了对比,后者为移动设备训练了三种特定的架构(XXS、XS和S)。关于MobileViTv2架构的更多细节在附录A中给出。

Experimental results

Object classification on the ImageNet dataset

  • Training on ImageNet-1k from scratch

    • 本文在ImageNet-1k数据集上使用AdamW对MobileViTv2进行了300个epoch的训练,有效批大小为1024张图像(128张图像每个GPU × 8个GPU),分别有128万张和5万张训练和验证图像。在前20k次迭代中,本文将学习率从10−6线性增加到0.002。之后,使用余弦退火策略来衰减学习率。为了减少训练过程中的随机噪声,本文使用指数移动平均(EMA),因为本文发现它有助于更大的模型。本文使用CVNets实现本文的模型,并使用他们提供的脚本进行数据处理、训练和评估。
  • Pre-training on ImageNet-21k-P and finetuning on ImageNet-1k

    • 本文训练的ImageNet21k(冬季’ 21发布),包含约1300万张图片横跨19k类。具体来说,本文遵循[Imagenet-21k pretraining for the masses.]对数据集进行预处理(例如,删除样本较少的类),并将其分为大约1100万张和52.2万张分别跨越10450个类的训练和验证图像。本文将这个预处理数据集称为ImageNet-21k-P。注意,ImageNet-21k-P验证集与ImageNet-1k的验证和测试集不重叠

    • 在ImageNet-21k-P上进行训练前的MobileViTv2。为了更快的收敛,本文使用ImageNet-1k权重初始化MobileViTv2模型,并在ImageNet-21k-P上微调80个epoch,有效批量大小为4096张图像(每个GPU x 32个GPU 128张图像)。本文不使用任何线性热身。其他设置遵循ImageNet-1k训练。

    • 本文使用带有动量(0.9)的SGD和余弦退火策略在ImageNet-1k上对ImageNet-21k-P预训练模型进行了50个epoch的微调,有效批量大小为256张图像(每个GPU × 2 GPU 128张图像)。

  • Finetuning at higher resolution

    • MobileViTv2是一个混合架构,它结合了卷积和可分离的自我注意来学习视觉表示。与许多基于vit的模型(例如,DeiT)不同,MobileViTv2不需要调整补丁嵌入或不同输入分辨率的位置偏差,并且易于微调。本文使用SGD在10−3的固定学习率下,以更高的分辨率(即384×384)对MobileViTv2模型进行了10个epoch的微调。
  • Comparison with existing methods

    • 下表比较了MobileViTv2与最近的方法1的性能。本文提出以下几点意见:

    • 在这里插入图片描述

    • ImageNet-1k验证集上的分类性能。在这里,NS意味着本文无法测量移动设备上的延迟,因为移动设备上不支持一些操作(例如,循环移位)。在mobileVITv1之后,在iPhone12上测量延迟,批大小为1。与[Swin transformer,A convnet for the 2020s]类似,吞吐量是在批处理大小为128的NVIDIA V100 gpu上测量的。行按网络参数分组。

    • 当将MobileViTv1中的MHA替换为可分离自我注意时,得到的模型MobileViTv2更快更好,验证了所提出的可分离自我注意方法在移动vit中的有效性。

    • 与基于transformer(包括混合)的模型相比,MobileViTv2模型在移动设备上速度更快。例如,MobileViTv2在移动设备上大约快8倍,在ImageNet-1k数据集上比MobileFormer提供更好的2.5%的性能,尽管MobileFormer是FLOP的效率(R9 vs. R10)。

    • 然而,在GPU上,MobileFormer和MobileViTv2的运行速度差不多.MobileFormer在不同设备之间的FLOPs次数和速度差异主要是由于它的架构设计。MobileFormer在mobile和former块之间有条件操作。这样的条件操作,特别是在资源受限的设备上,并行度很低,会造成内存瓶颈,导致网络延迟很高。[Shufflenet v2]也对基于cnn的架构进行了类似的观察。

    • MobileViTv2在移动设备上弥合基于CNN和基于vit2模型之间的延迟差距,同时使用类似或更少的参数保持性能。例如,在移动设备上,ConvNexT(基于cnn的模型)比MobileViTv2(混合模型)和DeiT(基于transformer的模型)分别快2倍和3.6倍(见R11、R13和R14)。

    • 完全基于cnn的模型在移动设备上的低延迟可以归因于过去几年对基于cnn的模型进行的几项设备级优化(例如,卷积的专用硬件实现和用卷积折叠批归一化)。基于vit的模型仍然缺乏这样的优化,因此,得到的推断图是次优的。虽然MobileViTv2弥合了CNNs和vit之间的延迟差距,但本文相信,通过类似的优化,基于vit的模型的延迟将在未来得到改善。

    • 当输入分辨率从224 × 224(或256 × 256)提高到384 × 384时,ConvNext和MobileViTv2 (R15-R18)在更高模型复杂性下的速度增量(在GPU上)从1.6×降低到1.3×,这表明与CNNs相比,基于vit(包括混合)的模型表现出更好的缩放特性。这是因为基于vitc的模型在大范围内提供了更高的并行度[ViT,Language models are few-shot learners]。我们在第4.2节中对下游任务的研究结果以及之前关于缩放vit[ViT,Scaling vision transformers]的研究进一步支持了这一观点。

Evaluation on down-stream tasks

  • Semantic segmentation

    • 本文将MobileViTv2与两个标准的分割架构PSPNet和DeepLabv3集成,并在两个标准的语义分割数据集ADE20k和PASCAL VOC 2012上进行研究。包括超参数在内的训练细节请参见补充资料。

    • 下表和上图c比较了不同分割方法下MobileViTv2的验证均值交集over union (mIOU)的分割性能。

      • 在这里插入图片描述

      • 基于ADE20k和PASCAL VOC 2012数据集的语义分割结果。这里,对于空间分辨率为512 × 512的输入,在ADE20k数据集中测量吞吐量、网络参数和FLOPs。mIoU(均值交集over union)评分仅针对单个量表计算。在单个NVIDIA V100 GPU (32gb内存)上使用32张图片的批处理大小计算吞吐量,平均超过50次迭代(不包括热身的10次迭代)。我们不报告移动设备上的延迟,因为一些操作(例如PSPNet中的金字塔池)没有为移动设备实现最佳。基线结果来自MMSegmentation库。行按网络参数分组。

    • MobileViTv2在不同的复杂性下提供了具有竞争力的性能,同时具有显著的更少的参数和FLOPs。有趣的是,MobileViTv2模型的推断速度与基于cnn的模型相当,包括轻量级的MobileNetv2和重量级的ResNet-50模型。这与本文在第4.1节(R17 vs. R18;在表【Classification performance on the ImageNet-1k validation set.】)中,本文还观察到,在更高的输入分辨率和模型复杂性下,基于vit的模型比CNN的模型缩放得更好

  • Object detection

    • 本文将MobileViTv2与SSDLite(Mobilenetv2)(SSD头[Ssd: Single shot multibox detector]与可分离卷积)集成用于移动目标检测,并研究其在MS-COCO数据集上的性能。按照mobileViTv1来训练检测模型。下表和图b比较了SSDLite使用不同的ImageNet-1k骨干网在验证平均精度(mAP)方面的检测性能。MobileViTv2在不同容量的模型上都有不俗的表现,进一步验证了所提出的自分离注意力方法的有效性。

    • 在这里插入图片描述

    • 在MS-COCO数据集上使用SSDLite进行对象检测。在这里,吞吐量是在NVIDIA V100 GPU上用128个图像批处理来测量的,平均超过50次迭代(不包括热身的10次迭代)。移动设备上的延迟不会被报告,因为一些操作(例如,hard swish)没有在这些设备上优化实现。行按网络参数分组。

Visualizations of self-separable attention scores

  • 下图显示了在MobileViTv2网络的不同输出步长下,语境得分的学习情况。本文发现可分离的自我注意层关注低、中、高级特征,并允许MobileViTv2从语义相关的图像区域学习表征。

  • 在这里插入图片描述

  • MobileViTv2模型的不同输出步幅(OS)的上下文评分图。观察上下文评分是如何关注语义相关的图像区域的。(从左到右:输入图像,context scores at OS=8, context scores at OS=16, and context scores at OS=32)。关于生成上下文得分图的更多示例和细节,请参见附录D。

Conclusions

  • 与基于cnn的模型相比,基于transformer的视觉模型在移动设备上速度较慢,因为在资源有限的设备上,多头自我注意是昂贵的。在本文中,引入了一种可分离的自我注意方法,它具有线性复杂度,可以使用硬件友好的元素操作来实现。在标准数据集和任务上的实验结果证明了该方法对多头自注意的有效性。

A Detailed architecture of MobileViTv2

  • MobileViTv2的架构遵循MobileViTv1,并在下表中给出。

    • 在这里插入图片描述

    • MobileViTv2架构。这里,d表示可分离自我注意层的输入维度,B表示可分离自我注意transformer块在MobileViTv2块内的重复,MV2表示MobileNetv2块。与MobileViTv1块类似,在MobileViTv2块中,将内核大小设为3,patch的空间维度(高h,宽w)设为2。

  • MobileViTv2块,如下图所示,

    • 在这里插入图片描述

    • MobileViTv2块。这里,深度卷积使用3 × 3的内核大小来编码局部表示。与mobileVITv1类似,展开和折叠操作使用的补丁高度和宽度分别为2。在应用折叠操作之前,将可分离的自我注意层和前馈层重复B×。

  • 对MobileViTv1块做了两个修改:(1)它用提出的可分离的自我注意取代了多头的自我注意来学习全局表示,(2)它不使用融合块和跳接连接,因为它们略微提高了性能。MobileNetv2块和前馈层的扩展因子为2。使用Swish作为非线性激活函数。与MobileViTv1为移动设备创建三个特定的架构(XXS, XS和S)不同,本文使用宽度乘数α∈0.5,2.0来统一缩放MobileViTv2网络的宽度,以创建不同复杂性的模型。

B MobileViTv2’s classification performance

  • 下表显示了MobileViTv2在ImageNet-1k数据集上的结果。在更高的分辨率(384 × 384)下微调MobileViTv2模型显示了全面的改进。例如,具有140万个参数的MobileViTv2-0.50在更高分辨率下进行微调时,性能提高了约2% (R1 vs. R2)。

  • 在这里插入图片描述

  • MobileViTv2在ImageNet-1k数据集上的分类性能。在这里,†表示微调在更高的分辨率。

  • 同样,在ImageNet-21k-P数据集上的预训练有助于提高MobileViTv2模型的性能。例如ImageNet-21k-P预训练使MobileViTv22.0的性能提高了1.2% (R17 vs. R18)。值得注意的是,在ImageNet-21k-P上预训练的MobileViTv2模型能够以更少的FLOPs达到与在ImageNet-1k上微调的模型以更高的分辨率(例如,R10 vs. R11;R14与R15;上表中的R18 vs. R19)。

  • 下表显示了ImageNet-21k-P验证数据集上的结果。MobileViTv2的性能随着模型尺寸的增加而提高。

  • 在这里插入图片描述

  • MobileViTv2在ImageNet-21k-P验证集上的性能。

C Comparisons with light-weight networks on the ImageNet-1k dataset

  • 与轻量级cnn的比较。下图a显示,MobileViTv2在不同网络大小(MobileNetv1, MobileNetv2 , ShuffleNetv2, ESPNetv2,和MobileNetv3)的轻量级cnn中表现更好。

  • 在这里插入图片描述

  • 与基于CNN和vit的轻型模型的比较。MobileViTv2更小更好,这是移动设备所希望的。

  • 与轻型vit的比较。上图b显示,MobileViTv2在不同网络规模(DeIT, T2T, CrossViT , LocalViT , ConViT,和Mobile-former)上比以前的轻型基于vit的模型获得了更好的性能。

D Visualizations of separable self-attention scores

  • MobileViTv2区块展开输入 x ∈ R d × H × W x∈\Bbb R^{d×H×W} xRd×H×W,得到 x u ∈ R d , × M × N x_u∈\Bbb R^{d,×M×N} xuRd×M×N,其中 N = H W h w N =\frac{HW}{hw} N=hwHW是为patch的数量,每个patch的宽度w,高度h (M =每个patch的HW像素)。将这种展开的特征映射送入可分离自我注意模块学习非局部表示。为了更好地理解可分离性自我注意是如何处理xu的,本文可视化上下文得分cs。

  • MobileViTv2块中的可分离自我注意在N个patch中同时计算M个像素的上下文得分cs。因此,cs的维数为M× n。为了可视化上下文得分,我们将 c s ∈ R M × N c_s∈\Bbb R^{M×N} csRM×N折叠到与输入相同的空间维数中,得到上下文得分映射 c m ∈ R H × W c_m∈\Bbb R^{H×W} cmRH×W。为了便于可视化,本文使用最小-最大标准化来缩放cm。

  • MobileViTv2模型的不同输入图像在不同输出步长下的上下文评分图如下图所示。

    • 在这里插入图片描述

    • 分层可视化的上下文评分特征图cm在不同的输出步幅。回想一下,MobileViTv2在输出步长分别为8,16和32时应用了B = 2, B = 4和B = 3个可分离的自我注意层。因此,在输出步长分别为8、16和32时,本文有2、4和8个上下文得分图

  • 这些可视化结果表明,本文提出的可分离自我注意方法能够(1)在不同的设置下聚合整个图像的信息,包括复杂的背景、光照和视角变化以及不同的对象,(2)学习高、中、低层次的表示

E MobileViTv2’s ablation studies on the ImageNet-1k dataset

  • 在本节中,我们研究了不同方法对MobileViTv2模型性能的影响,包括增强方法。

  • Standard vs. advanced augmentation

    • 本文研究了两种不同的增强方法:

      • (1)标准增强方法,使用初始化风格的增强,即随机调整大小的裁剪和水平翻转;

      • (2)高级增强方法,使用RandAugment、CutMix、MixUp和RandomErase以及标准增强方法。这些增强对MobileViTv2性能的影响如下图所示。

        • 在这里插入图片描述

        • 在ImageNet-1k数据集上,数据扩充对MobileViTv2模型性能的影响。对于较小的模型(< 450万个参数),标准增强效果最好,而较大的模型(≥450万个参数)受益于高级增强。

      • 较小的模型(< 450万个参数)受益于标准增强,较大的模型(≥450万个参数)受益于高级增强。为了简单起见,在本文中对MobileViTv2的所有变体都使用了高级扩展。

  • loss function

    • CutMix和Mixup增强在一批样本中混合。因此,每个样本都有多个标签。因此,在这些扩展的存在下,ImageNet分类可以被认为是一个多标签分类任务。与[Resnet strikes back:]类似,本文通过最小化二进制交叉熵损失来训练MobileViTv2。与[Resnet strikes back:]不同的是,当标记平滑的交叉熵损失被二元交叉熵损失取代时,并没有观察到性能的任何改善。因此,使用交叉熵和标签平滑来训练MobileViTv2模型。
  • Effect of multiple latent tokens

    • 与transformer中的多头注意类似,所提出的可分离自我注意可以有多个潜在标记。当本文将潜在令牌的数量从1更改为8时,ImageNet-1k数据集上的性能改进可以忽略不计(精度在±0.1 top-1以内)。因此,本文在实验中只使用一个潜在令牌。本文注意到,在MobileViTv1-S架构的transformer块中,将多头自我注意的头部数量从4个改变为1个,使top-1的准确率下降了0.7%。这个观察结果与[transformer]相似,他们也发现多头自我注意中的多头可以提高transformer在神经机器翻译任务中的性能。
  • Improving FLOP-efficiency via pixel- and patch-sampling

    • MobileViTv1模型将输入特征图展开为N个patch,每个patch有M = hw个像素,并对patch中的每个像素单独应用一个transformer块,其中h和w分别为patch的高度和宽度。因为patch中的像素在空间上是相关的,本文可以从m个像素中分采样m个像素,通过只在m个像素上应用自我注意层来学习非局部表示。这种分采样方法应该有助于减少模型FLOPs。

    • 本文在像素级和补丁级上尝试了以下采样方法:

      • 随机抽样,训练时从m个像素(或n个patch)中随机选择m个像素(或n个patch),验证时均匀抽样。

      • Top-m(或top-n)采样,其中Top-m像素(或top-n patch)是根据L2范数计算的大小来选择的

      • 均匀采样,从m个像素(或n个patch)中均匀采样m个像素(或n个patch)。

    • 本文发现,在ImageNet-1k数据集上,对于MobileViTv1(具有多头自我注意)和MobileViTv2(具有提出的可分离自我注意)模型,这些方法可以减少1.2×到1.6×的FLOPs,而top-1精度几乎或不下降。

    • 然而,FLOPs中的这些改进并没有转化为移动设备上的延迟改进。事实上,使用这些抽样方法的模型比不使用这些方法的模型要慢得多。使用这些采样方法的模型在移动设备上的高延迟可以归因于其较高的内存访问成本,因为这些方法改变了张量的内存顺序。由于它们在移动设备上的高延迟,本文在MobileViTv2模型中没有使用这些方法。

F MobileViTv2 training configurations

  • 下面三张表分别给出了在ImageNet-1k和ImageNet-21k-P数据集上训练和微调MobileViTv2-2.0的配置,给出了在下游任务上微调MobileViTv2的配置。

  • 在这里插入图片描述

  • 在ImageNet-1k/22k-P数据集上训练MobileViTv2-2.0的配置。†ImageNet-21k-P中的验证集与ImageNet-1k验证集不重叠。

  • 在这里插入图片描述

  • 在ImageNet-1k数据集上微调MobileViTv2-2.0的配置。在这里,†表示使用在ImageNet-1k数据集上以256 × 256图像分辨率微调的ImageNet-21k-P模型初始化权值。

  • 在这里插入图片描述

  • 下游任务微调MobileViTv2的配置。对于Ade20k,本文发现SGD在不同MobileViTv2配置上比AdamW更稳定,因此,我们使用SGD在Ade20k数据集上进行微调。MobileViTv2与PSPNet的配置与PASCAL VOC和Ade20k数据集上的Deeplabv3相同。

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羞儿

写作是兴趣,打赏看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值