MOBILEVIT: LIGHT-WEIGHT, GENERAL-PURPOSE, AND MOBILE-FRIENDLY VISION TRANSFORMER
ABSTRACT
-
轻量级卷积神经网络(CNNs)是移动视觉任务的事实。他们的空间诱导偏差允许他们在不同的视觉任务中学习参数较少的表征。然而,这些网络在空间上是局部的。
-
为了学习全局表示,采用了基于自我注意的视觉transformer(ViTs)。与cnn不同,vit是重量级的。在本文中,提出以下问题:是否有可能结合CNNs和ViTs的优势,构建一个轻量级、低延迟的移动视觉任务网络?为此,本文推出了MobileViT,一种轻量级的通用移动设备视觉transformer。MobileViT用变形金刚为全球信息处理提供了一个不同的视角。
-
本文的结果表明,MobileViT在不同的任务和数据集上显著优于基于cnn和vitc的网络。在ImageNet-1k数据集上,MobileViT通过约600万个参数实现了78.4%的top-1精度,对于类似数量的参数,这比MobileNetv3(基于cnn)和DeIT(基于vita)的精度分别提高了3.2%和6.2%。
-
在MS-COCO对象检测任务中,对于相同数量的参数,MobileViT比MobileNetv3的准确率高5.7%。我们的源代码是开源的,可在: apple/ml-cvnets: CVNets: 一个用于训练计算机视觉网络的库 (github.com)
INTRODUCTION
-
基于自我注意的模型,特别是视觉transformer(ViTs;图1;Dosovitskiy等人,2021年),是卷积神经网络(cnn)学习视觉表征的替代方案。简单地说,ViT将图像分为一系列不重叠的补丁,然后在transformer中使用多头自我注意学习补丁间表示。
-
总体趋势是增加ViT网络中的参数数量以提高性能(例如,Touvron等人,2021a;Graham等人,2021年;Wu等人,2021年)。然而,这些性能改进是以模型大小(网络参数)和延迟为代价的。许多现实世界的应用(例如,增强现实和自动轮椅)需要视觉识别任务(例如,对象检测和语义分割)在资源有限的移动设备上及时运行。
-
为了有效,用于此类任务的ViT模型应该是轻量级和快速的。即使为了匹配移动设备的资源约束,减少ViT模型的尺寸,其性能也明显不如轻量级的CNNs。例如,对于约500 - 600万的参数预算,DeIT (Touvron等人,2021a)的准确性比MobileNetv3 (Howard等人,2019)低3%。因此,设计轻量化的ViT模型势在必行。
-
轻型cnn已经为许多移动视觉任务提供了动力。然而,基于VIT的网络距离在这类设备上使用还很遥远。与容易优化并与特定任务网络集成的轻量级cnn不同,vit是重权重的(例如,vitb /16 vs. MobileNetv3: 86万个参数vs. 750万个参数),更难优化(Xiao等人,2021年),需要大量的数据增强和L2正则化以防止过拟合(Touvron等人,2021a;Wang et al., 2021),对于下游任务,尤其是密集预测任务,需要昂贵的解码器。例如,一个基于vitl的分割网络(Ranftl等人,2021年)学习了大约3.45亿个参数,并取得了与基于cnn的网络DeepLabv3 (Chen等人,2017年)相似的性能,具有5900万个参数。
-
在基于vitc的模型中,需要更多的参数,这可能是因为它们缺乏图像特异性的归纳偏差,而这是cnn固有的(Xiao et al., 2021)。
-
为了构建鲁棒和高性能的ViT模型,将卷积和transformer结合起来的混合方法正在获得越来越多的兴趣(Xiao等人,2021年;d 'Ascoli等人,2021年;Chen等人,2021b)。然而,这些混合模型仍然很重要,对数据增强很敏感。例如,去除CutMix (Zhong等人,2020年)和deit风格(Touvron等人,2021a)的数据增强会导致Heo等人(2021年)的ImageNet精度显著下降(78.1%至72.4%)。
-
结合cnn和transformer的优势来构建移动视觉任务的ViT模型仍然是一个悬而未决的问题。移动视觉任务需要轻量级、低延迟和精确的模型来满足设备的资源约束,并且是通用的,因此它们可以应用于不同的任务(如分割和检测)。请注意,浮点操作(FLOPs)不足以满足移动设备上的低延迟,因为FLOPs忽略了几个重要的推断相关因素,如内存访问、并行度和平台特征。
-
例如,Heo等人(2021)的基于vitc的方法,PiT,比DeIT的FLOPs次数少3倍,但在移动设备上有类似的推断速度(DeIT vs. PiT在iPhone-12上:10.99 ms vs. 10.56 ms)。因此,本文没有针对FLOPs1进行优化,而是专注于为移动视觉任务设计一个轻量级(§3)、通用(§4.1 &§4.2)和低延迟(§4.3)的网络。
-
本文通过MobileViT实现了这一目标,它结合了CNNs(例如,空间诱导偏差和对数据增强不那么敏感)和vit(例如,输入自适应加权和全球处理)的优点。具体来说,本文引入了MobileViT块,它有效地在一个张量中编码局部和全局信息(下图b)。
-
(a) Standard visual transformer (ViT)
-
(b) MobileViT。这里,MobileViT块中的convn × n表示一个标准的n × n卷积,MV2表示MobileNetv2块。执行下采样的块用↓2标记。
-
与ViT及其变体(有或没有卷积)不同,MobileViT提供了学习全局表示的不同视角。标准卷积涉及三种操作:展开、局部处理和折叠。MobileViT块使用transformer将卷积中的局部处理替换为全局处理。
-
这允许MobileViT块有CNN和vitlike属性,这有助于它学习更好的表示与更少的参数和简单的训练策略(例如,基本增强)。据本文所知,这是第一项工作,表明轻型vit可以在不同的移动视觉任务中通过简单的训练策略实现轻型cnn级别的性能。对于约500 - 600万的参数预算,MobileViT在ImageNet-1k数据集上实现了78.4%的top-1精度,这比MobileNetv3更准确3.2%,并有一个简单的训练策略(MobileViT vs. MobileNetv3: 300 vs. 600 epoch;1024批大小对4096批大小)。
-
本文还观察到,当MobileViT被用作高度优化的移动视觉任务特定架构的特征支柱时,性能有显著提高。将MNASNet替换为MobileViT作为SSDLite中的特征骨干,可以获得更好的(+1.8% mAP)和更小的(1.8×)检测网络(见下图)。
-
与轻量级CNN模型相比,MobileViT显示了更好的任务级泛化特性。列出了MS-COCO数据集上具有不同特征提取器的SSDLite网络的网络参数(MobileNetv1 、MobileNetv2 、MobileNetv3、MNASNet 、MixNet 和MobileViT)。
RELATED WORK
-
Light-weight CNNs.
-
cnn的基本构建层是一个标准的卷积层。由于这一层的计算成本较高,人们提出了几种基于因子分解的方法来使其轻量级和移动友好(例如,Flattened convolutional neural networks for feedforward acceleration;Xception: Deep learning with depthwise separable convolutions,Dicenet: Dimension-wise convolutions for efficient networks)。
-
其中,Chollet的可分离卷积(Xception)引起了人们的兴趣,并被广泛用于移动视觉任务的最先进的轻型cnn,包括MobileNets系列,ShuffleNetv2 ,ESPNetv2 ,MixNet,和MNASNet。这些轻量级cnn是通用的,易于训练。例如,这些网络可以轻松替换现有任务特定模型(如DeepLabv3)中的重量级骨干(如ResNet (He et al., 2016)),以减少网络大小和提高延迟。
-
尽管有这些优点,但这些方法的一个主要缺点是它们在空间上是局部的。这项工作将transformer视为卷积;允许利用卷积(例如,通用和简单的训练)和transformer(例如,全局处理)的优点来构建轻量级和通用的vit。
-
-
Vision transformers.
-
VIT将Transformer应用于大规模图像识别,并表明在极端大规模的数据集(如JFT-300M)下,vit可以实现cnn级的精度,而不存在图像特异性的感应偏差。通过大量的数据增强、大量的L2正则化和精化,可以在ImageNet数据集上训练ViTs,以实现cnn级别的性能。然而,与cnn不同的是,vit显示出不合格的优化能力,并且很难训练。
-
后续作品(例如,Levit: a vision transformer in convnet’s clothing for faster inference.;Coatnet:Swin transformer;Pyramid vision transformer:Tokens-to-token vit;Mobile-former: Bridging mobilenet and transformer)表明,这种不合标准的优化能力是由于vit中缺乏空间诱导偏差。在vit中使用卷积来合并这些偏差可以提高其稳定性和性能。人们探索了不同的设计,以获得卷积和变压器的好处。例如,vitc在ViT中加入了早期卷积梗。
-
CvT修改了transformer中的多头注意,并使用深度可分离卷积代替线性投影。BoTNet 在ResNet的瓶颈单元中使用多头注意力取代了标准的3×3卷积。ConViT利用门控位置自我注意合并了软卷积诱导偏差。PiT 使用基于深度卷积的池化层扩展了ViT。虽然这些模型可以通过大量的扩充达到与cnn竞争的性能,但这些模型大多数都是重量级的。
-
例如,PiT和CvT在ImageNet1k数据集上分别比effecentnet多学习6.1×和1.7×参数,并取得了类似的性能(top-1精度约81.6%)。此外,当这些模型被缩小到构建轻量级的ViT模型时,它们的性能明显比轻量级的cnn差。在参数预算约为600万的情况下,PiT的ImageNet-1k精度比MobileNetv3低2.2%。
-
-
Discussion
-
与普通的vit相比,结合卷积和transformer可以产生健壮和高性能的vit。然而,这里有一个悬而未决的问题:如何结合卷积和transformer2的优势来构建用于移动视觉任务的轻量级网络?本文的重点是设计重量轻的ViT模型,通过简单的训练策略,它可以超过最先进的模型。为此,本文推出了MobileViT,它结合了CNNs和vit的优势,构建了一个轻量级、通用和移动友好的网络。MobileViT带来了一些新的观察结果。
-
(i)更好的性能:在给定的参数预算下,MobileViT模型在不同的移动视觉任务中实现了比现有轻量级cnn更好的性能。
-
(ii)泛化能力:泛化能力是指训练指标与评估指标之间的差距。对于两个具有相似训练指标的模型,具有更好评估指标的模型具有更强的泛化性,因为它可以更好地预测一个没见过的数据集。与cnn相比,以前的ViT变体(包括和不包括卷积)显示出较差的泛化能力,即使有大量的数据增强,MobileViT显示出更好的泛化能力(见下图)。
-
MobileViT显示了与cnn类似的泛化能力。MobileNetv2和ResNet-50的最终训练和验证错误标记为★和⭕。
-
(iii)鲁棒性:一个好的模型应该对超参数(例如,数据增强和L2正则化)具有鲁棒性,因为调优这些超参数是耗时和耗费资源的。与大多数基于vitc的模型不同,MobileViT模型使用基本的增强训练,对L2正则化不太敏感。
-
-
MOBILEVIT: A LIGHT-WEIGHT TRANSFORMER
-
一个标准的ViT模型,将输入 X ∈ R H × W × C X∈\Bbb R^{H×W ×C} X∈RH×W×C重构为一个平面化的补丁序列 X f ∈ R N × P C X_f∈\Bbb R^{N×P C} Xf∈RN×PC,将其投射到一个固定的d维空间 X p ∈ R N × d X_p∈\Bbb R^{N×d} Xp∈RN×d,然后使用L个transformer块堆栈学习补丁间表示。视觉transformer中自我注意的计算代价为 O ( N 2 d ) O(N^2d) O(N2d)。其中C、H、W分别表示张量的通道数、高度和宽度,P = wh表示高度H、宽度W的patch中像素的个数,N表示patch的个数。由于这些模型忽略了CNNs固有的空间诱导偏差,它们需要更多的参数来学习视觉表征。例如,与基于cnn的网络DeepLabv3 相比,基于vitv的网络DPT 学习了6倍多的参数,以提供类似的分割性能(DPT vs. DeepLabv3: 345 M vs. 59 M)。此外,与cnn相比,这些模型表现出不佳的优化能力。这些模型对L2正则化很敏感,需要大量的数据增强以防止过拟合。
-
本文介绍了一种轻型ViT模型MobileViT。核心思想是学习将transformer作为卷积的全局表示。这允许在网络中隐式地合并类卷积属性(例如,空间偏差),用简单的训练方法学习表示(例如,基本增强),并轻松地将MobileViT与下游架构集成(例如,用于分割的DeepLabv3)。
MOBILEVIT ARCHITECTURE
-
MobileViT block.
-
MobileViT块,目的是在一个参数较少的输入张量中对局部和全局信息建模。形式上,对于给定的输入张量 X ∈ R H × W × C X∈\Bbb R^{H×W ×C} X∈RH×W×C, MobileViT应用n × n标准卷积层后跟逐点(或1 × 1)卷积层产生 X L ∈ R H × W × d X_L∈\Bbb R^{H×W ×d} XL∈RH×W×d。n × n卷积层编码局部空间信息,而逐点卷积通过学习输入通道的线性组合,将张量投射到高维空间(或d维,其中d > C)。
-
使用MobileViT,本文想要建立远程非局部依赖的模型,同时拥有一个有效的H × W接收域。一种广泛研究的方法来建模远程依赖是扩张卷积。然而,这种方法需要仔细选择扩张速率。否则,权重被应用到填充的零而不是有效的空间区域(Multi-scale context aggregation by dilated convolutions;Rethinking atrous convolution for semantic image segmentation;Espnet: Efficient spatial pyramid of dilated convolutions for semantic segmentation)。另一个有前途的解决方案是自注意力机制(Non-local neural networks;Stand-alone self-attention in vision models;Attention augmented convolutional networks;An image is worth 16x16 words: Transformers for image recognition at scale)。
-
在自注意方法中,具有多头自注意的视觉transformer(ViTs)在视觉识别任务中被证明是有效的。但是,vit重量很大,并且表现出不符合标准的优化能力。这是因为vit缺乏空间诱导偏差(Early convolutions help transformers see better;Levit: a vision transformer in convnet’s clothing for faster inference)。
-
为了使MobileViT能够学习具有空间诱导偏差的全局表示,本文将 X L X_L XL展开为N个不重叠的平坦斑块 X U ∈ R P × N × d X_U∈\Bbb R^{P ×N×d} XU∈RP×N×d。其中,P = wh, N = H W p N = \frac{HW}{p} N=pHW为patch的数量,h≤N和w≤N分别为patch的高度和宽度。对于每个p∈{1,···,p},应用transformer对patch间关系进行编码,得到 X G ∈ R P × N × d X_G∈\Bbb R^{P ×N×d} XG∈RP×N×d为:
-
X G ( p ) = T r a n s f o r m e r ( X U ( P ) ) , 1 ≤ p ≤ P , ( 1 ) X_G(p)=Transformer(X_U(P)),1\leq p\leq P,(1) XG(p)=Transformer(XU(P)),1≤p≤P,(1)
-
与失去像素空间顺序的vit不同,MobileViT既不失去patch顺序,也不失去每个patch内像素的空间顺序。因此,本文可以将 X G ∈ R P × N × d X_G∈\Bbb R^{P ×N×d} XG∈RP×N×d折叠得到 X F ∈ R H × W × d X_F∈\Bbb R^{H×W ×d} XF∈RH×W×d。然后利用逐点卷积将XF投影到低c维空间,并通过串联操作与X结合。然后使用另一个n × n卷积层来融合这些连接的特征。需要注意的是,由于XU §通过卷积对n × n个区域的局部信息进行编码,而XG§对p个位置的p个patch的全局信息进行编码,因此XG中的每个像素都可以对X中所有像素的信息进行编码,如下图所示。因此,MobileViT的整体有效接收野为H × W。
-
在MobileViT块中,每个像素都可以看到其他像素。在这个例子中,红色像素使用transformer注意蓝色像素(在其他补丁中相应位置的像素)。因为蓝色像素已经使用卷积对邻近像素的信息进行了编码,这就允许红色像素对图像中所有像素的信息进行编码。在这里,黑色和灰色网格中的每个单元分别代表一个patch和一个像素。
-
-
Relationship to convolutions.
-
标准卷积可以看作是三个顺序操作的堆栈:(1)展开,(2)矩阵乘法(学习局部表示),和(3)折叠。MobileViT块在某种意义上类似于卷积,它也利用了相同的构建块。MobileViT块将卷积中的局部处理(矩阵乘法)替换为更深层的全局处理(transformer层堆栈)。因此,MobileViT具有类似卷积的特性(例如空间偏差)。
-
因此,MobileViT块可以被视为卷积的transformer。本文设计的简单的一个优点是,卷积和transformer的低效率实现可以开箱即用;让本文可以在不同的设备上使用MobileViT,而无需额外的努力。
-
-
Light-weight.
-
MobileViT块使用标准卷积和transformer分别学习局部和全局表示。因为之前的作品(如Mobilenets;Delight: Deep and light-weight transformer)已经表明,使用这些层设计的网络是重量级的,一个自然的问题出现了:为什么MobileViT是轻量级的?我们认为,问题主要在于使用transformer学习全局表示。对于给定的补丁,之前的工作(例如,Training data-efficient image transformers & distillation through attention;LeVit)通过学习像素的线性组合将空间信息转化为潜在的。
-
然后,通过使用transformer学习补丁间信息对全局信息进行编码。因此,这些模型失去了图像特异性的归纳偏差,这是CNNs固有的。因此,他们需要更多的能力来学习视觉表示。因此,它们既深又宽。与这些模型不同的是,MobileViT使用卷积和transformer的方式是,生成的MobileViT块具有类似卷积的属性,同时允许全局处理。这种建模能力使本文能够设计出浅而窄的MobileViT模型,这反过来是轻量级的。
-
与基于vitc的DeIT模型相比,MobileViT模型在空间层次上分别采用L=12和d=192的L={2,4,3}和d={96, 120, 144}的空间层次分别为32 × 32、16 × 16和8 × 8。由此产生的MobileViT网络比DeIT网络更快(1.85×),更小(2×),更好(+1.8%)(见下表)。
-
vit比cnn慢。†多尺度采样器的结果(§B)。
-
-
Computational cost.
- MobileViT和ViTs中多头自我注意的计算成本分别为 O ( N 2 P d ) O(N^2Pd) O(N2Pd)和 O ( N 2 d ) O(N^2d) O(N2d)。理论上,MobileViT比vit效率低。但实际上,MobileViT比vit更高效。MobileViT在ImageNet-1K数据集上的FLOPs次数比DeIT少2倍,准确率比DeIT高1.8%(见上表3)。本文认为,这与轻量化设计的原因类似(如上所述)。
-
MobileViT architecture.
-
本文的网络的灵感来自轻量级cnn的理念。本文在三种不同的网络大小(S:小,XS:特别小,和XXS:特别特别小)上训练MobileViT模型,这通常用于移动视觉任务(下图c)。
-
MobileViT中的初始层是一个大步的3 × 3标准卷积,其次是MobileNetv2(或MV2)块和MobileViT块。本文使用Swish作为激活函数。按照CNN模型,本文在MobileViT块中使用n = 3。特征图的空间维度通常是2和h的倍数,w≤n。因此,本文在所有的空间层次设置h = w = 2。MobileViT网络中的MV2块主要负责下采样。因此,这些区块在MobileViT网络中是浅而窄的。下图中MobileViT的空间级参数分布进一步表明,在不同的网络配置中,MV2块对总网络参数的贡献非常小。
-
MULTI-SCALE SAMPLER FOR TRAINING EFFICIENCY
-
在基于vitc的模型中,学习多尺度表示的标准方法是微调。例如,Training data-efficient image transformers & distillation through attention在不同大小上以224 × 224的空间分辨率对训练的DeIT模型进行微调。这种学习多尺度表示的方法更适合vit,因为位置嵌入需要根据输入大小进行插值,而插值方法对网络性能的影响较大。与cnn类似,MobileViT不需要任何位置嵌入,它可以受益于训练期间的多尺度输入。
-
之前基于cnn的作品(如:Yolo9000: better, faster, stronger;Evrnet: Efficient video restoration on edge devices)已经证明多尺度训练是有效的。然而,这些作品中的大多数都是在固定的迭代次数后获得新的空间分辨率。例如,YOLOv2在每10次迭代中从一个预定义的集合中采样一个新的空间分辨率,并在训练期间在不同的gpu上使用相同的分辨率。这导致GPU利用率不足和训练速度较慢,因为在所有分辨率上使用相同的批大小(使用预定义集中的最大空间分辨率确定)。为了方便MobileViT无需微调就能学习多尺度表示,并进一步提高训练效率(即,更少的优化更新),本文将多尺度训练方法扩展到可变大小的批处理大小。
-
给定一组空间分辨率排序集S = {(H1, W1),···,(Hn, Wn)},最大空间分辨率为(Hn, Wn)的批大小为b,本文在每个GPU第t次训练迭代时随机抽取一个空间分辨率(Ht, Wt)∈S,计算第t次迭代的批大小为:$bt =\frac{HnWnb}{HtWt} $。因此,更大的批处理大小用于更小的空间分辨率。这减少了优化器的每次更新,并有助于更快的训练。
-
下图a比较了标准和多尺度采样器。在这里,本文将PyTorch中的DistributedDataParallel作为标准采样器。
-
总的来说,多尺度采样器(i)减少了训练时间,因为它需要更少的可变批量优化器更新(上图b), (ii)提高了约0.5%的性能和(iii)迫使网络学习更好的多尺度表征,即在不同空间分辨率下评估同一网络时,与使用标准采样器训练的网络相比,产生更好的性能。本文还表明多尺度采样器是通用的,并提高了CNNs(如MobileNetv2)的性能
EXPERIMENTAL RESULTS
- 在本节中,首先评估MobileViTs在ImageNet-1k数据集上的性能,并表明MobileViT提供了比最先进的网络更好的性能。本文表明MobileViTs分别是通用的和移动友好的。
IMAGE CLASSIFICATION ON THE IMAGENET-1K DATASET
-
Implementation details.
- 本文在ImageNet-1k分类数据集上从零开始训练MobileViT模型。该数据集分别提供128万张和5万张图像用于训练和验证。MobileViT网络在8个NVIDIA gpu上使用PyTorch进行300个epoch的训练,使用AdamW优化器,标签平滑交叉熵损失(平滑=0.1),和多尺度采样器(S ={(160,160),(192,192),(2562,256),(288,288),(320,320)})。在前3k次迭代中,学习率从0.0002提高到0.002,然后使用余弦计划退火到0.0002。本文使用L2权值衰减为0.01。本文使用基本数据增强(即,随机调整大小的种植和水平翻转),并使用单个作物top-1精度评估性能。在推断过程中,采用了模型权重的指数移动平均。
-
Comparison with CNNs.
-
下图a显示,MobileViT在不同网络规模(MobileNetv1,MobileNetv2,ShuffleNetv2,ESPNetv2 ,和MobileNetv3)的轻量级cnn性能更好。
-
MobileViT vs. CNNs在ImageNet-1k验证集。所有的模型都使用基本的增强。
-
例如,对于一个大约250万个参数的模型大小(上图b), MobileViT在ImageNet1k验证集上的表现比MobileNetv2好5%,shuffle好5.4%,MobileNetv3好7.4%。上图c进一步显示,MobileViT提供了比重量级CNNs (ResNet、DenseNet、ResNet- se 和EfficientNet)更好的性能。例如,对于类似数量的参数,MobileViT的准确率比EfficentNet高2.1%。
-
-
Comparison with ViTs.
-
下图比较MobileViT与维特变体在ImageNet-1k从头训练数据集不蒸馏(DeIT , T2T, PVT, CAIT , DeepViT, CeiT , CrossViT, LocalViT,PiT, ConViT ,VIL,BOTNet,和Mobile-former 。不像ViT变体,从高级增强中获益显著(例如,PiT w/ basic vs. advanced: 72.4 (R4) vs. 78.1 (R17);下图b), MobileViT用更少的参数和基本的增强实现了更好的性能。例如,MobileViT比DeIT小2.5倍,好2.6%(图7b中的R3 vs. R8)。
-
MobileViT vs. ViTs在ImageNet-1k验证集。在这里,基本意味着resnet风格的增强,而高级意味着增强方法与基本(例如,MixUp 、RandAugmentation 和CutMix)的结合。
-
总的来说,这些结果表明,与CNNs类似,MobileViTs容易和稳健的优化。因此,它们可以很容易地应用于新的任务和数据集。
-
MOBILEVIT AS A GENERAL-PURPOSE BACKBONE
-
为了评估MobileViT的通用性质,本文在两个广泛研究的移动视觉任务上对MobileViT进行了基准测试:(1)对象检测和(2)语义分割。
-
MOBILE OBJECT DETECTION
-
Implementation details:本文将MobileViT与single shot object detection backbone(SSD)。在轻量级的cnn(例如,MobileNets)之后,本文将SSD头部的标准卷积替换为可分离卷积,并将生成的网络称为SSDLite。本文对MobileViT进行微调,在ImageNet-1k数据集上进行预训练,在320 × 320的输入分辨率下,使用包含117k训练和5k验证图像的MS-COCO数据集上的AdamW。本文分别使用平滑L1和交叉熵损失来进行目标定位和分类。使用mAP@IoU的0.50:0.05:0.95在验证集上评估性能。
-
结果。下表a显示,对于320 × 320的相同输入分辨率,使用MobileViT的SSDLite优于使用其他轻量级CNN模型(MobileNetv1/v2/v3, MNASNet和MixNet)的SSDLite。
-
例如,SSDLite的性能提高了1.8%,当MobileViT被用作骨干而不是MNASNet时,它的模型大小减少了1.8×。此外,带有MobileViT的SSDLite在学习更少参数的同时,性能优于具有重量级骨干的标准SSD-300(上表b)。此外,§F中的定性结果证实了MobileViT检测各种物体的能力。
-
-
MOBILE SEMANTIC SEGMENTATION
-
实现细节。本文将MobileViT与DeepLabv3集成。本文在PASCAL VOC 2012数据集上使用带有交叉熵损失的AdamW对MobileViT进行微调。遵循标准的训练实践,本文还分别使用了Semantic contours from inverse detectors和Microsoft coco的额外注释和数据。在验证集上使用均值交集(mIOU)对性能进行评估。
-
结果。下表显示DeepLabv3与MobileViT更小更好。当使用MobileViT代替MobileNetv2作为骨干时,DeepLabv3的性能提高了1.4%,其大小减少了1.6×。此外,MobileViT提供了具有竞争力的性能与ResNet-101模型,而需要9倍少的参数;这表明MobileViT是一个强大的支柱。此外,§G的结果表明,MobileViT学习对象的广义表示,并在一个看不见的数据集上表现良好。
-
PERFORMANCE ON MOBILE DEVICES
-
轻量级和低延迟网络对于实现移动视觉应用很重要。为了证明MobileViT在此类应用中的有效性,预先训练的全精度MobileViT模型使用公开的CoreMLTools转换为CoreML。然后在移动设备(如iPhone 12)上测量他们的推断时间(平均超过100次迭代)。
-
Mobile-friendly.
-
下图显示了在三个不同的任务上,两个补丁大小设置(Config-A: 2,2,2和Config-B: 8,4,2)下MobileViT网络的推断时间。这里ConfigX中的p1、p2、p3分别表示输出步长为8、16和32的patch的高度h(宽度w = h)。patch size较小的模型(Config-A)比patch size较大的模型(Config-B)更精确。
-
MobileViT模型在不同任务下的推理时间。在这里,绿色区域的点表示这些模型是实时运行的(推断时间< 33 ms)。
-
这是因为,与Config-A模型不同,Config-B模型不能对来自所有像素的信息进行编码。另一方面,在给定参数预算的情况下,Config-B模型比Config-A模型要快,尽管两种构型中自注意力机制的理论复杂性是相同的,即 O ( N 2 P d ) O(N^2P d) O(N2Pd)。对于较大的patch size(如P =82=64),本文的patch数量N比较小的patch size(如P =22=4)要少。因此,自我注意的计算成本相对较少。
-
此外,与Config-A相比,Config-B模型提供了更高的并行度,因为与较小的patch (P =4)相比,在较大的patch (P =64)中可以同时计算更多像素的自我注意。因此,Config-B模型比Config-A更快。为了进一步改善MobileViT的延迟,可以使用线性自我注意(Linformer: Self-attention with linear complexity)。
-
无论如何,两种配置中的所有模型在移动设备上实时运行(推断速度≥30 FPS),除了用于分割任务的MobileViT-S模型。与分类网络(256×256)和检测网络(320 × 320)相比,这些模型处理更大的输入(512×512)是可以预期的。
-
-
Discussion.
-
本文观察到,与移动设备上的MobileNetv2相比,MobileViT和其他基于vitit的网络(如DeIT和PiT)速度较慢(下表)。
-
vit比cnn慢。†多尺度采样器的结果
-
这一观察结果与之前的研究相冲突,后者表明,与cnn相比,vit更具可扩展性(ViT)。这种差异主要有两个原因。首先,gpu上的transformer有专用的CUDA内核,这些内核在vit中开箱即用,以提高其在gpu上的可扩展性和效率(例如,Megatron-lm: Training multi-billion parameter language models using model parallelism;{GS}hard: Scaling giant models with conditional computation and automatic sharding)。
-
其次,CNNs受益于几种设备级优化,包括卷积层的批处理归一化融合。这些优化改进了延迟和内存访问。然而,这种针对transformer的专门优化操作目前还不能用于移动设备。因此,基于MobileViT和viti的移动设备网络推理图是次优的。作者相信,与CNNs类似,MobileViT和ViTs的推理速度在未来会随着专用设备级的操作而进一步提高。
-
A: MOBILEVIT ARCHITECTURE
-
MobileViT的灵感来自于轻量级cnn的理念,下表给出了不同参数预算下MobileViT的整体架构。MobileViT的初始层是一个跨步的3 × 3标准卷积,其次是MobileNetv2(或MV2)块和MobileViT块。
-
MobileViT架构。这里,d表示MobileViT块中变压器层的输入维度。在MobileViT块中,本文默认设置内核大小n为3,MobileViT块中patch的空间维度(高h,宽w)为2。
-
本文使用Swish作为激活函数。按照CNN模型,本文在MobileViT块中使用n = 3。特征图的空间维数通常是2和h的倍数,w≤n,因此本文在所有空间层次上设h = w = 2。MobileViT网络中的MV2块主要负责下采样。
-
因此,在这些块中,本文使用4的扩展因子,除了MobileViT-XXS,本文使用2的扩展因子。MobileViT中的transformer层接受d维输入。本文将transformer层的第一个前馈层的输出维度设置为2d,而不是标准transformer块的默认值4d。
B: MULTI-SCALE SAMPLER
-
Multi-scale sampler reduces generalization gap.
-
泛化能力是指训练和评估指标之间的差距。对于两个具有相似训练指标的模型,具有更好评估指标的模型具有更强的泛化性,因为它可以更好地预测一个看不见的数据集。下图a和下图b比较了使用标准和多尺度样本训练的MobileViT-S模型的训练和验证误差。
-
MobileViT-S在ImageNet-1k上使用多尺度采样器学习更好的表示。
-
采用多尺度采样器的MobileViT-S的训练误差高于标准采样器,而验证误差较低。此外,使用多尺度采样器的MobileViT-S的训练误差和验证误差之间的差距接近于零。这说明多尺度采样器提高了泛化能力。
-
此外,当使用标准和多尺度采样器独立训练的MobileViT-S在不同的输入分辨率下进行评估(上图c),本文观察到使用多尺度采样器训练的MobileViT-S比使用标准采样器训练的更稳健。本文还观察到,在不同模型尺寸下,多尺度采样器使MobileViT模型的性能提高了约0.5%(见下图)。
-
MobileViT在ImageNet-1k上的性能与标准和多尺度采样器
-
这些观察结果结合对训练效率的影响(下图b)表明,多尺度采样器是有效的。后文提供了多尺度采样器的Pytorch实现。
-
训练效率。这里,标准采样器指的是PyTorch的DistributedDataParallel采样器。
-
-
Multi-scale sampler is generic.
-
本文使用多尺度采样器训练一个重重量(ResNet-50)和一个轻重量(MobileNetv2-1.0) CNN来演示其通用性质。下表的结果表明,多尺度采样器提高了性能和训练效率。
-
多尺度采样器是通用的。所有模型都在ImageNet-1k上进行基本增强训练。†结果为指数移动平均。例如,多尺度采样器提高了MobileNetv2-1.0的性能约1.4%,同时减少了14%的训练时间。
-
C :ABLATIONS
-
Impact of weight decay.
-
一个好的模型应该对L2正则化(或权值衰减)不敏感或不敏感,因为为每个任务和数据集调优它是耗时和耗费资源的。与cnn不同,ViT模型对权重衰减很敏感。为了研究MobileViT模型是否对权重衰减敏感,本文通过改变权重衰减值0.1到0.0001来训练MobileViT- s模型。
-
结果如下图所示。除了MobileViT模型以0.1的权重衰减训练外,所有其他模型都收敛到类似的解决方案。这表明MobileViT模型对权重衰减具有鲁棒性。
-
重量衰减的影响。这里显示了ImageNet-1k数据集上MobileViT-S模型(5.7 M参数)的结果。©的结果是指数移动平均。
-
在本文的实验中,本文使用重量衰减值为0.01。请注意,0.0001是在大多数基于cnn的模型中广泛使用的权重衰减值,如ResNet和DenseNet。即使在这个权重衰减值上,MobileViT在ImageNet-1k数据集上的表现也优于cnn(例如,DenseNet vs. MobileViT: 14 M参数的76.2 vs. 5.7 M参数的77.4)。
-
-
Impact of skip-connection.
-
下图研究了跨接在MobileViT块中的影响(图1b中的红色箭头)。通过这种连接,MobileViT-S在ImageNet数据集上的性能提高了0.5%。
-
skip-connection的影响。这里显示了ImageNet-1k数据集上MobileViT-S模型(5.7 M参数)的结果。©的结果是指数移动平均。
-
请注意,即使没有这种skip-connection连接,MobileViT-S也提供了与最先进的CNN和基于vita的模型相似或更好的性能,这些模型也具有基本的数据增强。
-
-
Impact of patch sizes.
-
MobileViT结合卷积和transformer来有效地学习局部和全局表示。由于对n × n个区域进行卷积,并对空间维度为h和w的patch进行自我注意计算,因此n、h和w之间建立良好的关系至关重要。在之前的CNN设计中,本文设置n = 3,然后改变h和w。具体来说,本文研究了四种构型:
-
(i)在所有空间层次上h = w = 2(下图a)。在本例中,h, w < n,并且允许每个像素使用MobileViT对来自其他像素的信息进行编码。
-
(ii)所有空间层次的h = w = 3(下图b)。在本例中,h = w = n。类似于(i),该配置还允许每个像素使用MobileViT对来自其他像素的信息进行编码。
-
(iii)所有空间层次h = w = 4(图下c)。在这种情况下,h, w > n和不允许每个像素聚集来自张量中其他像素的信息。
-
(iv)在32 × 32、16 × 16和8 × 8的空间水平上,h = w = 8, h = w = 4, h = w = 2。与(i)、(ii)和(iii)不同,(iv)中不同空间分辨率的patch N相同。
-
而且,只有在8 × 8的空间水平下,h, w < N,其中h = w = 2。需要注意的是,这些模型具有相同的网络参数数量和相同的自我注意计算代价 O ( n 2 p d ) O(n^2p d) O(n2pd),其中N为patch的数量,P = hw为patch中高度h、宽度w的像素数,d为模型维数。
-
MobileViT中卷积的内核大小(n × n)与折叠展开的patch大小(h × w)的关系。在a和b中,红色像素能够利用局部(蓝色箭头)和全局(橙色箭头)信息聚合所有像素的信息,而在©中,每个像素不能利用4 × 4 patch区域中核大小为3 × 3的卷积聚合局部信息。在这里,黑色和灰色网格中的每个单元分别代表一个patch和像素.
-
-
结果如下表所示。可以看到,当h, w≤n时,MobileViT可以更有效地聚合信息,这有助于提高性能。
-
补丁大小的影响。这里的patch大小分别为32 × 32、16 × 16和8 × 8的空间水平。此外,MobileViT-S模型在ImageNet-1k数据集上的结果也显示了出来。结果是指数移动平均。†feature map的空间维度不是patch维度的倍数。因此,本文在折叠和展开操作中使用双线性插值来调整特征图的大小。
-
在本文的实验中,使用h = w = 2而不是h = w = 3,因为特征映射的空间维数是2的倍数,使用h = w = 3需要额外的操作。对于折叠和展开,本文需要垫或调整大小。在填充的情况下,需要在transformer的自我注意中屏蔽填充像素。这些附加操作会导致延迟,如上表所示。为了避免这些额外的操作,在实验中选择h = w = 2,这也在延迟和准确性之间提供了一个很好的权衡。
-
-
Impact of exponential moving average and label smoothing.
-
指数移动平均(EMA)和标签平滑(LS)是两种标准的训练方法,用于改善基于CNN和变压器的模型性能(Mobilenetv2;mobilenetv3;Mnasnet;Training data-efficient image transformers & distillation through attention;Coatnet;Early convolutions help transformers see better)。下表显示,LS略微提高了MobileViT-S的性能,而EMA对模型在ImageNet-1k数据集上的性能几乎没有影响。由于之前的工作已经表明这些方法在降低随机噪声和防止网络变得过于自信方面是有效的,本文使用这些方法来训练MobileViT模型。
-
标签平滑(LS)和指数移动平均(EMA)对MobileViT-S在ImageNet-1k数据集上性能的影响。第一行的结果是交叉熵。
-
D :TRAINING DETAILS FOR SSDLITE AND DEEPLABV3
-
所有的SSDLite-MobileViT和DeepLabv3-MobileViT网络分别在4个NVIDIA gpu上使用标准采样器和128幅图像的有效批处理大小训练200和50个epoch。在前500次迭代中,学习率从0.00009提高到0.0009,然后使用余弦学习率调度器退火到0.00009。本文使用L2权值衰减为0.01。
-
本文将MobileVit结构中输出步长为32时MV2块的步长由2步变为1步,得到输出步长为16时的DeepLabv3-MobileViT模型。
-
对于这些模型,本文不使用多尺度采样器。这是因为这些特定于任务的网络依赖于分辨率。例如,DeepLabv3在输出步长为16时使用atrous(或扩张)速率为6、12和18来学习多尺度表示。如果本文使用比512 × 512更低的分辨率(比如256 × 256),那么atrous内核权重将应用于填充的零;使多尺度学习无效。
E: EXTENDED DISCUSSION
-
Memory footprint.
-
在移动设备上运行的轻量级网络应该能够节省内存。与MobileNetv2类似,本文测量需要在每个空间级别具体化的内存(下表)。
-
比较MobileNetv2和MobileViT在网络中每个空间分辨率需要具体化的最大内存(kb)。top-1的精度是在ImageNet-1k验证集上测量的。这里的OS (output stride)是输入的空间维度与feature map的比值。
-
在使用MobileViT块的较低空间级别(即输出步幅为8,16和32),所需的内存较小或相当于轻量级cnn。因此,与轻量级的CNNs类似,MobileViT网络的内存效率也很高。
-
-
FLOPs.
-
浮点运算(FLOPs)是另一个被广泛用于衡量神经网络效率的指标。下表比较了在ImageNet-1k数据集上MobileViT与不同的基于vitc的网络的FLOPs。对于类似数量的FLOPs,MobileViT更快、更小、更好。
-
Comparison of different ViT-based networks:MobileViT-XS模型在两种不同的补丁大小设置下的性能报告。
-
例如,PiT和MobileViT有相同数量的失败,但MobileViT更快1.45倍,更小2.1倍,更好1.8%(上表中的R2 vs. R4)。值得注意的是,R2-R4网络的FLOPs是相同的,但它们的延迟和性能是不同的。这表明FLOPs不能充分衡量网络效率,因为它没有考虑到与推断相关的因素,如内存访问、并行度和平台特征。
-
ImageNet-1k预训练有助于提高下游任务的性能,如目标检测和语义分割。因为这类任务用于现实世界的应用中,并且通常使用比ImageNet-1k分类任务更高的图像输入,所以比较网络在下游任务上的FLOPs很重要。
-
为此,本文比较了MobileViT和MobileNetv2在三个任务上的FLOPs,即分类、检测和分割。结果如下表所示。
-
MobileViT和MobileNetv2在不同的任务。(a)、(b)和©中的FLOPs和推理时间分别在224 × 224、320 × 320和512 × 512处测量,但(a)中的MobileViT-XS模型使用256 × 256作为输入分辨率在iPhone 12神经引擎上测量推理时间。在这里,MobileViT-XS模型的性能报告在两个不同的补丁大小设置。
-
可以观察到(1)MobileNetv2和MobileViT FLOPs之间的差距随着输入分辨率的增加而减小。例如,在ImageNet-1k分类任务中,MobileNetv2的FLOPs次数比MobileViTon少2倍,但在语义分割上,他们有类似的FLOPs次数(上表a vs.上表c)和(2)在不同的任务中,MobileNetv2模型明显快于MobileViT模型,但准确性低于MobileViT模型。MobileNetv2模型的低延迟可能是因为iPhone上专用和优化的硬件操作。本文相信(1)MobileViT的推理速度将进一步提高,(2)本文的结果将启发未来在硬件设计和优化领域的研究。
-
Inference time on different devices.
-
下表比较了不同型号在iPhone12 CPU、iPhone12神经引擎和NVIDIA V100 GPU三种不同设备上的推断时间。
-
不同设备上的推断时间。MobileViT的运行时间为256×256,而其他网络的运行时间为224 × 224。对于GPU,推断时间是测量32个图像的批处理,而对于其他设备,本文使用一个批处理大小。在这里,†表示MobileViT模型使用PyTorch的展开和折叠操作。此外,MobileViT模型在输出跨步8,16和32的补丁大小设置为2。
-
MobileNetv2是跨所有设备的最快网络。在iPhone上(包括CPU和神经引擎),MobileViT的性能优于DeIT和PiT。然而,在GPU上,DeIT和PiT比MobileViT更快。这可能是因为MobileViT模型(1)是浅和窄的,(2)运行在更高的空间分辨率(256 × 256而不是224 × 224),(2)没有使用GPU-加速操作的折叠和展开,因为它们不支持移动设备。然而,当我们将未优化的折叠和展开操作替换为PyTorch的展开和折叠操作时,MobileViT模型的延迟从0.62 ms提高到0.47 ms。
-
总的来说,本文的发现表明,它们是优化基于vit模型的尝试,包括MobileViT,针对不同的加速器。本文相信,本文的工作将启发未来建立更有效的网络的研究。
F: QUALITATIVE RESULTS ON THE TASK OF OBJECT DETECTION
-
下面的图片显示了使用MobileViT-S的SSDLite可以在不同的设置下检测不同的物体,包括光照和视角的变化、不同的背景和非刚性变形。
-
MS-COCO验证集上的SSDLite-MobileViT-S对象检测结果。
-
MS-COCO验证集上的SSDLite-MobileViT-S对象检测结果。
-
MS-COCO验证集上的SSDLite-MobileViT-S对象检测结果。
G :SEMANTIC SEGMENTATION RESULTS ON AN UNSEEN DATASET
-
为了证明MobileViT学习了良好的对象广义表示,本文在包含5k张图像的MS-COCO验证集上评估了DeepLabv3-MobileViT模型。根据官方的torchvision分割模型(PyTorch, 2021), MS-COCO数据集中的对象类被映射到PASCAL VOC数据集中的对象类,模型根据mIOU进行评估。
-
请注意,MS-COCO验证集是DeepLabv3-MobileViT模型的一个没见过的测试集,因为这些图像既不是训练的一部分,也不是用于训练DeepLabv3-MobileViT模型的验证集。
-
下表比较了DeepLabv3- mobilevit模型与MobileNetv3-Large的性能,该模型使用三种不同的分割骨干(LR-ASPP,DeepLabv3和FCN)训练。
-
MS-COCO验证集上的语义分割。MobileNetv3-Large结果来自官方torch vision分割模型(PyTorch, 2021年)。
-
对于相同的细分模型,即DeepLabv3, MobileViT是一个比MobileNetv3更有效的骨干。DeepLabv3-MobileViT-S模型比DeepLabv3-MobileNetv3-Large模型小1.7倍,精度提高5.1%。此外,下图中的定性结果进一步表明,MobileViT学习了对象的良好泛化表示,并在自然数据集表现良好。
-
Deeplabv3-MobileViT-S模型在不可见的MSCOCO验证集上的语义分割结果(左:输入的RGB图像,中:预测的分割掩码,右:RGB图像上叠加的分割掩码)。PASCAL VOC数据集中不同对象的颜色编码显示在最后一行。
-
Deeplabv3-MobileViT-S模型在不可见的MSCOCO验证集上的语义分割结果(左:输入的RGB图像,中:预测的分割掩码,右:RGB图像上叠加的分割掩码)。PASCAL VOC数据集中不同对象的颜色编码显示在最后一行。