MOBILEVIT: LIGHT-WEIGHT, GENERAL-PURPOSE,AND MOBILE-FRIENDLY VISION TRANSFORMER
代码
参考:【MobileVIT】轻量级视觉Transformer+移动端部署(附MobileVIT_xxs代码剖析) - 知乎 (zhihu.com) Apple新作MobileViT:轻量通用且适合移动端的视觉Transformer! (qq.com)
目录???????
Abstract
Introduction
Related work
Light-weight CNNs
Vision transformers
Discussion
MobileViT
MobileViT architecture
MobileViT block
Relationship to convolutions
Light-weight
Computational cost
MobileViT architecture
Multi-Scale Sampler for training efficiency 多尺度采样训练
Experiment
Image Classification on the Imagenet-1K dataset
Details
【transformer|论文阅读|MobileViT】Comparison with CNNs
Comparison with ViTs
MobileViT as a general-purpose backbone
Mobile Object Detection
Abstract 在本文中,我们提出了以下问题:能否将CNN和VITS的优点结合起来,为移动视觉任务构建一个轻量级、低延迟的网络?为此,我们推出了MobileViT,一种适用于移动设备的轻量级通用视觉转换器。Mobile-VIT为全球信息处理提供了一种不同的视角。我们的结果显示,在不同的任务和数据集上,MobileViT的表现明显优于基于CNN和VIT的网络。在ImageNet-1kDataSet上,MobileViT在大约600万个参数的情况下实现了78.4%的TOP-1准确率,对于类似数量的参数,MobileViT分别比MobileNetv3(基于CNN)和Deit(基于VIT)的准确率高3.2%和6.2%。在MS-COCO对象检测任务中,对于相同数量的参数,MobileViT的准确率比MobileNetv3高5.7%。
Introduction 由于FLOPs在计算时忽略了内存访问,并行度和平台特性,因此,我们计算得到的FLOPs一般是没太大用处的,故而本文的重心不是对FLOPs进行优化,而是对移动视觉任务设计轻量级、通用和低延迟网络。
CNN特点:空间感应偏差、对数据增强的敏感性低
ViT特点:输入自适应加权、全局处理
MobileViT块用使用transformer的全局处理取代了卷积中的局部处理。这使得MobileViT块具有类似CNN和VIT的属性,这有助于它用更少的参数和简单的训练配方(例如,基本扩充)学习更好的表示。
Related work
Light-weight CNNs CNN中的基本构造层是标准卷积层。由于这一层的计算代价很高,已经提出了几种基于因式分解的方法来使其轻量化和对移动友好(例如,jin等人,2014;Chollet,2017;Mehta等人,2020)。其中,Chollet的可分离卷积(2017)引起了人们的兴趣,并被广泛用于移动视觉任务的最先进的轻量级CNN,包括MobileNet(Howard等人,2017;Sandler等人,2018;Howard等人,2019)、ShuffleNetv2(Ma等人,2019)、ESPNetv2(Mehtaet等人,2019)、MixNet(Tan&Le,2019b)和MNASNet(Tan等人,2019)。这些轻量级的CNN用途广泛,易于训练。例如,这些网络可以很容易地替换现有任务特定模型(例如DeepLabv3)中的重量级主干(例如ResNet(他等人,2016)),以减小网络规模并改善延迟。尽管有这些好处,但这些方法的一个主要缺点是它们在空间上是局部的。这项工作将transformer视为卷积;允许利用卷积(例如,通用和简单的training)和transformer(例如,全局处理)的优点来构建轻量级(§3)和通用(§4.1和§4.2)VITS。
Vision transformers VITS表现出不合格的优化能力,而且很难训练。这种不合标准的可优化性是由于VITS中缺乏空间感应偏差。在VITS中使用卷积结合这样的偏置可以提高它们的稳定性和性能。人们已经探索了不同的设计来获得卷积和transformer的好处。CVT(Wu等人,2021年)改进了transformer中的多头注意力,并使用深度可分离的卷积来代替线性投影。
结合了CNN和transformer的网络结构大部分是重量级的。
Discussion 与普通 ViT 相比,将卷积和转换器相结合可产生稳健且高性能的 ViT。 然而,这里有一个悬而未决的问题:如何结合卷积和转换器的优势来构建用于移动视觉任务的轻量级网络? 本文着重于设计轻量级的 ViT 模型,该模型的性能优于具有简单训练方法的最先进模型。 为此,我们引入了 MobileViT,它结合了 CNN 和 ViT 的优势,构建了一个轻量级、通用且对移动设备友好的网络。
MobileViT 带来了几个新颖的观察结果。 (i) 更好的性能:对于给定的参数预算,与现有的轻量级 CNN 相比,MobileViT 模型在不同的移动视觉任务中实现了更好的性能(§4.1 和 §4.2)。 (ii) 泛化能力:泛化能力是指训练和评估指标之间的差距。对于具有相似训练指标的两个模型,具有更好评估指标的模型更具有泛化性,因为它可以在看不见的数据集上进行更好的预测。与先前的 ViT 变体(带有和不带卷积)相比,即使与 CNN(Dai 等人,2021 年)相比,即使具有广泛的数据增强,也表现出较差的泛化能力(Dai 等人,2021),MobileViT 表现出更好的泛化能力(图 3)。 (iii) 鲁棒性:一个好的模型应该对超参数(例如,数据增强和 L2 正则化)具有鲁棒性,因为调整这些超参数既费时又费资源。与大多数基于 ViT 的模型不同,Mobile-ViT 模型使用基本增强进行训练,并且对 L2 正则化 (§C) 不太敏感
MobileViT
文章图片
文章图片
MobileViT architecture
MobileViT block
如图1b所示,MobileViT块旨在用更少的参数对输入张量中的局部和全局信息进行建模。形式上,对于给定的输入张量
文章图片
,MobileViT应用一个n×n标准卷积层,然后是逐点(或1×1)卷积层以产生
文章图片
。n×n卷积层编码局部空间信息,而逐点卷积通过学习输入通道的线性组合将张量投影到高维空间(或d维,其中d>C)。
通过MobileViT,希望在拥有H×W有效感受野的同时,对远距离非局部依赖进行建模。一种被广泛研究的建模远程依赖关系的方法是扩张卷积。然而,这种方法需要谨慎选择膨胀率。否则,权重将应用于填充的零而不是有效的空间区域。
另一个有希望的解决方案是self-attention。在自我注意方法中,具有multi-head self-attention的vision transformer(VITS)被证明是一种有效的视觉识别任务。然而,VITS是重量级的,并且表现出不符合标准的可优化性。这是因为VITS缺乏空间归纳偏置。
文章图片
文章图片
文章图片
???????
Relationship to convolutions
标准卷积可以看作是3个顺序操作的堆叠:展开,矩阵乘法(学习局部表示),折叠。
MobileViT Block与卷积相似,因为它也利用了相同的构建块。MobileViT Block将卷积中的局部处理(矩阵乘法)替换为更深层次的全局处理(一个Transformer层堆栈)。因此,MobileViT具有类似于卷积的属性(例如,空间偏差)。因此,MobileViT Block可以看作是Transformer的卷积。
我们有意简单设计的一个优点是可以开箱即用地使用低级高效的卷积和transformer实现; 允许我们在不同的设备上使用MobileViT,而无需任何额外的努力。
Light-weight
MobileViT Block使用标准卷积和Transformer分别学习局部和全局表示。因为之前的工作表明,使用这些层设计的网络是heavy-weight,一个自然的问题出现了:为什么MobileViT是轻量级的?
作者认为问题主要在于通过Transformer学习全局表示。对于给定的patch,之前的工作是通过学习像素的线性组合将空间信息转化为潜在信息(图1a)。然后,通过使用Transformer对全局信息进行编码学习patches之间信息。因此,这些模型失去了图像特定的归纳偏差(CNN模型固有的特点)。因此,需要更多的参数来学习视觉表征。所以那些模型又深又宽。
与这些模型不同的是,MobileViT使用卷积和Transformer的方式是,生成的MobileViT Block具有类似卷积的属性,同时允许全局处理。这种建模能力能够设计出浅而窄的MobileViT模型,从而使其weight更轻。
与基于ViT的DeiT模型(L=12和d=192)相比,MobileViT模型在空间层面分别使用了32×32、16×16和8×8的L={2,3,4}和d={96,120,144}。由此产生的MobileViT网络比DeiT网络更快(1.85×),更小(2×),更好(+1.8%)。
Computational cost
在MobileViT和ViTS(图1a)中,multi-head self-attention的计算成本分别为
文章图片
和
文章图片
。理论上,与ViTs相比,MobileViT的效率较低。然而,在实践中,MobileViT比ViTs更有效率。MobileViT拥有2倍的FLOP,在ImageNet-1K数据集上提供的准确度比Deit高1.8%(表3;§4.3)。我们认为这是由于与轻量级设计(如上所述)类似的原因。
MobileViT architecture
受到轻量级CNN的启发。作者用3种不同的网络规模(S:小,XS:特别小,XXS:特别小)训练MobileViT模型,这3种网络规模通常用于移动视觉任务(图3c)。
文章图片
MobileViT的初始层是一个stride=3×3的标准卷积,其次是MobileNetv2(或MV2) Block和MobileViT Block。使用Swish作为激活函数。跟随CNN模型,在MobileViT块中使用n=3。特征图的空间维数通常是2和h的倍数。因此,在所有空间层面设h=w=2。MobileViT网络中的MV2块主要负责降采样。因此,这些块在MobileViT网络中是浅而窄的。下图中MobileViT的Spatial level-wise参数分布进一步说明了在不同的网络配置中,MV2块对总网络参数的影响非常小。
文章图片
Multi-Scale Sampler for training efficiency 多尺度采样训练 在基于VIT的模型中,学习多尺度表示的标准方法是微调。例如,Touvron等单独微调以224×224的空间分辨率训练的不同大小的Deit模型。这种学习多尺度表示的方法是VITS的首选方法,因为位置嵌入需要基于输入大小进行内插,并且网络的性能受内插方法的影响。与CNN类似,MobileViT不需要任何位置嵌入,它可以在训练期间受益于多尺度输入。
先前基于CNN的研究表明,多尺度训练是有效的。然而,大多数都是经过固定次数的迭代后获得新的空间分辨率。例如,YOLOv2在每10次迭代时从预定义的集合中采样一个新的空间分辨率,并在训练期间在不同的gpu上使用相同的分辨率。这导致GPU利用率不足和训练速度变慢,因为在所有分辨率中使用相同的批大小(使用预定义集中的最大空间分辨率确定)。
文章图片
文章图片
图 5 比较了标准和多尺度采样器。 在这里,我们将 PyTorch 中的 DistributedDataParallel 称为标准采样器。 总体而言,多尺度采样器 (i) 减少了训练时间,因为它需要更少的优化器更新与可变大小的批次(图 5b),(ii)将性能提高约 0.5%(图 10;§B),以及(iii)促使网络学习更好的多尺度表征,即在不同的空间分辨率下评估相同的网络,与使用标准采样器训练的网络相比,具有更好的性能。
文章图片
Experiment 在本节中,我们首先在ImageNet-1k数据集上评估MobileViT的性能,并展示MobileViT提供比最先进的网络更好的性能(§4.1)。在§4.2和§4.3中,我们分别介绍了MobileVit是通用的和移动友好的。
Image Classification on the Imagenet-1K dataset
Details
我们在ImageNet-1k分类数据集上从头开始训练MobileViT模型(Russakovsky等人,2015年)。该数据集分别提供128万张和5万张用于训练和验证的图像。MobileViT网络在8个NVIDIA图形处理器上使用PyTorch进行了300个时期的训练,有效批次大小为1,024张图像,使用AdamW优化器(Loshcheov&Hutter,2019)、标签平滑交叉熵损失(平滑=0.1)和多尺度采样器(S={(160,160),(192,192),(256,256),(288,288),(320,320)})。在最初的3k次迭代中,学习率从0.0002增加到0.002,然后使用余弦时间表退火到0.0002(LoshChilov&Hutter,2017年)。我们使用的L2权重衰减为0.01。我们使用基本数据增强(即随机调整大小的裁剪和水平翻转),并使用单个裁剪TOP-1精度来评估性能。为了进行推断,使用了模型权重的指数移动平均值。
Comparison with CNNs
图6a显示,MobileViT在不同网络规模(MobileNetv1(Howard等人,2017)、MobileNetv2(Sandler等人,2018)、ShuffleNetv2(Ma等人,2018)、ESPNetv2(Mehta等人,2019)和MobileNetv3(Howard等人,2019)上的表现优于轻量级CNN。例如,对于大约250万个参数的模型大小(图6b),在ImageNet-1k验证集上,MobileViT的性能比MobileNetv2高5%,比ShuffleNetv2高5.4%,比MobileNetv3高7.4%。图6c进一步显示,MobileViT提供的性能优于重量级CNN(ResNet(他等人,2016)、DenseNet(Huang等人,2017)、ResNet-SE(Hu等人,2018)和EfficientNet(Tan&Le,2019a))。例如,对于类似数量的参数,MobileViT的准确率比EfficentNet高2.1%。
文章图片
Comparison with ViTs
图7将MobileViT与在ImageNet-1k数据集上从头开始训练的VIT变体进行比较(Deit(Touvron等人,2021a)、T2T(Yuanet al.,2021b)、PVT(Wang等人,2021b)、Cait(Touvron等人,2021b)、DeepViT(周等人,2021a)、Ceit(袁等人,2021a)、CrossViT(Chen等人,2021a)、Pit(Heo等人,2021年)、Convit(d‘Asi.等人,2021年)、VIL(张等人,2021)、BoTNet(Srinivas等人,2021年)和移动前身(Chen等人,2021b)。与显著受益于高级增强的VIT变体不同,Mo-bileViT使用更少的参数和基本增强实现了更好的性能。例如,MobileViT比Deit小2.5倍,比Deit好2.6%(图7b中的R3比R8)。总体而言,这些结果表明,与CNN类似,MobileVits易于优化且具有健壮性,因此可以很容易地应用于新的任务和数据集。
文章图片
MobileViT as a general-purpose backbone 为了评估MobileViT的通用性,我们在两个广泛研究的移动视觉任务上对MobileViT进行了基准测试:(1)目标检测(§4.2.1)和(2)语义分割(§4.2.2)。
Mobile Object Detection
文章图片
表1a显示,在320×320的相同输入分辨率下,带有MobileViT的SSDLite的性能优于其他轻量级CNN模型(MobileNetv1/v2/v3、MNASNet和MixNet)。例如,当使用Mo-bileViT代替MNASNet作为主干时,SSDLite的性能提高了1.8%,模型规模减少了1.8倍。此外,采用MobileViT的SSD Lite性能优于采用重量级主干的标准SSD-300,而学习的参数明显更少(表1b)。此外,§F中的定性结果证实了MobileViT检测各种对象的能力。
Mobile Semantic Segmentation
文章图片
表2显示带有MobileViT的DeepLabv3更小、更好。使用MobileViT代替MobileNetv2作为骨架,DeepLabv3性能提升1.4%,体积缩小1.6倍。此外,MobileViT提供了与ResNet-101模型相当的性能,而需要的参数却少了9x;这表明MobileViT是一个强大的骨干。
推荐阅读
- 网络|MobileViT: 一种更小,更快,高精度的轻量级Transformer端侧网络架构(附代码实现)...
- #|MobileViT(A mobile-friendly Transformer-based model for image classification)
- CV|[Transformer]MobileViT(Light-weight, General-purpose, and Mobile-friendly Vision Transformer)
- 深度学习|轻量化网络结构MobileViT
- transformer|MobileViT: Light-weight, General-purpose, and Mobile-friendly Vision Transformer论文翻译理解
- 网络|MobileViT 它来了!Apple 提出轻量、通用、适用于移动设备的Transformer!
- 吴恩达深度学习专项课程3学习笔记/week1/Setting up ML Application
- TensorFlow初学者教程
- 强化学习导论