[MobileViT] 适合移动使用的轻量级ViT
三个要点
✔️ 一个轻量级的模型,采用了CNN和ViT的优点,并使其适合移动。
✔️ ViT训练不需要复杂的数据填充要求
✔️ 可作为各种任务的骨干,在所有实验中实现SOTA
MobileViT: Light-weight, General-purpose, and Mobile-friendly Vision Transformer
written by Sachin Mehta, Mohammad Rastegari
(Submitted on 5 Oct 2021)
Comments: Published on arxiv.
Subjects: Computer Vision and Pattern Recognition (cs.CV); Artificial Intelligence (cs.AI); Machine Learning (cs.LG)
code:![]()
![]()
本文所使用的图片要么来自论文、介绍性幻灯片,要么是参考这些图片制作的。
简介
变换器已被应用于广泛的自然语言处理任务,包括自它首次在机器翻译中提出以来的BERT,而应用于图像识别领域的视觉变换器(ViT)则继续在各种任务中产生SOTA。
然而,ViT没有像CNN那样的机制来检测局部特征,因此它需要大量的数据集和比CNN更多的参数来达到比CNN更好的性能,这也是在移动设备上使用ViT的瓶颈。另一方面,ViT的自我关注机制能够考虑到全局关系,这使得它成为CNN的一个有前途的替代架构。
mobileViT是一个轻量级的模型,它是CNN(用于局部检测)和ViT(用于全局信息处理)的混合体。mobileViT不仅以较少的参数取得了比CNN更好的性能,而且在基本的数据填充下也很准确。mobileViT是一个轻型模型。该论文还报告说,在物体检测和语义分割等任务中,以类似的参数作为骨干,其表现最好。
论文摘要
mobileViT在两个方面与传统ViT不同
- 与CNN相同的参数数量下的准确度
- 不需要各种数据填充
与CNN相同的参数数量下的准确度
虽然Attention机制具有能够考虑来自远处斑块的信息的特性,但它不具有卷积层所具有的聚集局部信息的特性,因此可以知道,要想拥有与CNN相同的性能水平,需要更多的参数。例如,对于语义分割,基于ViT的DPT需要345M,而基于CNN的DeepLabv3只需要59M,就可以达到相同的性能水平。然而,mobileViT能够达到与CNN相同的精确度,甚至更好。
不需要各种数据填充
ViT有过度学习的倾向,需要各种数据填充。ViT也容易受到L2正则化的影响,这使得它难以学习。然而,在本文中,只有基本的数据填充,如随机调整大小的裁剪和水平裁剪,就足以达到良好的效果。
模型结构
mobileViT的架构如下:MV2是mobilenetv2块,其中↓2代表下采样;MV2捕捉局部特征,而新颖的提议块MobileViT则寻找全局关系。
MobileViT块
在MobileViT块中,有三个过程被执行
- 地方代表
- 变形金刚为共变
- 融合
地方代表
输入的张量X∈RH×W×C在经过n×n法线卷积层后,在点式卷积层中被转换为高维张量XL∈RH×W×d,其中d大于C。在实现代码中,一个填充为1的3×3卷积层被用作n×n正常卷积层。
变形金刚为共变
然后将包含局部信息的XL划分为斑块,并转化为XU∈RP×N×d,其中N为斑块的数量,P为宽度为w、高度为h的斑块。
然后,贴片的每个像素被传递给变压器。
这些图像显示在下面的图片中。从红色像素指向另一个补丁中的蓝色像素的箭头对应于我们在转化器中看到的全局关系。来自蓝色像素的蓝色箭头表示,该像素通过本地表征充满了本地信息。
这样得到的XG∈RP×N×d又被转化为XF∈RH×W×d。
融合
重新排序的张量XF通过点对点卷积减少到C维,变成RH×W×C,然后与原张量X∈RH×W×C结合,形成RH×W×2C,再通过n×n卷积减少到RH×W×C。
作者将mobileViT块描述为一个转化器(Transformer as Convolution),它执行的功能与卷积层相同。其原因是卷积层将特征分解成若干部分,进行矩阵运算,并将结果累积起来,这对mobileViT块来说是共同的。
实验
与CNN的比较(准确性
我们在ImageNet-1k上进行了从头开始的训练,并将各种模型的性能与提议的模型进行了比较,具体如下轻量级具有类似参数的模型在参数相近的情况下,CNN模型比参数较少的重型CNN模型更好。与重型CNN模型相比,参数更少。结果是非常令人印象深刻的。它也比2019年备受关注的EfficientNet要准确2.1%。
与其他ViTs的比较(准确性
与各种ViTs相比,mobileViT被证明是更有效的。正如你所看到的,尽管它的参数数量最少,但却取得了最好的性能。而且不仅如此。随机调整大小的裁剪和水平裁剪的基本数据填充方法足以实现这些结果。
PiT是一个先进的数据填充方法(见R4和R17),但PiT取得的性能要比PiT能够通过基本的数据填充来实现这一目标,这表明它很容易使用。
使用MobileViT作为骨干网
物体检测
用最少的参数也能达到最佳的物体检测精度。
在实验中,与SSDLite进行了比较,这是一个更轻的SSD版本。SSDLite与SSD不同的是,SSDLite的头部是一个可分离的卷积。以各种ImageNet-1k训练的模型为骨干,对MS-COCO数据集进行微调的结果如下。

语义分割
语义分割也能以最少的参数得到最好的结果。
这些实验在DeepLabv3中进行了比较。使用ImageNet-1k的训练模型作为骨干,在PASCAL VOC2012上进行微调。所用的指标是mIOU(平均相交于联盟)。以下是实验结果,表明mobileViT的表现与Resnet-101一样好,尽管它的规模只有后者的十分之一。
提高学习效率的多尺度采样器
在正常的ViT中,微调主要用于对不同分辨率的图像进行训练。如果图像尺寸发生变化,DeIT需要对位置嵌入进行插值,所以它被固定为由于DeIT需要在图像尺寸发生变化时对位置嵌入进行插值,因此它被固定为224x224的图像。
MobileViT不需要使用位置嵌入,因此不需要进行微调。MobileViT不需要使用位置嵌入,因此不需要进行微调,并采用多尺度采样器进行训练,在多个分辨率下进行训练。
在多尺度采样器中,为了更有效地使用GPU,批量大小是根据分辨率来改变的。要使用的图像的分辨率集合S={(H1,W1),....(Hn,Wn)}(Hn,Wn)是分辨率最高的一个,那么第t次迭代中使用的分辨率是(Ht,Wt)将用于以下方面批量尺寸bt.
移动设备上的处理速度
实验是在iPhone12上使用CoreMLTools转换为CoreML的全精度训练的mobileViT的100次平均运行上进行比较的。
MobileViT和其他ViT的推理时间比MobileNetv2慢,原因有二。
- 不使用CUDA的内核来支持GPU变换器的可扩展性和效率。
- 事实上,CNN有一个硬件层面的优化,结合了批量正则化和卷积层,但Transformer没有这样的模块
摘要
由于ViT无法捕捉局部特征,因此被认为需要比CNN更多的参数,但所提出的mobileViT可以在类似的参数数量下取得更好的性能。此外,mobileViT在基本的数据填充方法下可以有足够的表现,作为物体检测和语义分割的骨干也有很好的表现,所以我认为未来的研究将以mobileViT为基础。然而,与CNN相比,它仍然存在推理时间慢的问题,降低NLP的转化器的计算复杂性的研究将被应用。
与本文相关的类别