MobileViT详解:轻型,通用,移动友好的视觉变压器

MobileViT详解:轻型,通用,移动友好的视觉变压器

  • 0. 引言
  • 1. 网络结构
  • 2. 模型详解
    • 2.1 MobileViT Block
      • 2.1.1 Local representations
      • 2.1.2 Transformers as Convolutions (global representations)
      • 2.1.3 Fusion
    • 2.2 MV2
  • 3. 简化版理解
  • 4. 总结

0. 引言

轻量级卷积神经网络(CNN) 在图像领域得到了广泛的应用。他们的空间归纳偏差使他们能够在不同的视觉任务中学习参数更少的表征。然而,这些网络在空间上是局部的。为了学习全局表征,采用了基于自注意的视觉变换(ViTs)。与CNN不同,ViT重量级的。
因此,作者提出了MobileViT网络,将 CNNViT 的优势结合起来。在轻量的基础上具有可以处理全局信息的能力。
实验结果表明:在不同的任务和数据集上,MobileViT明显优于基于cnn和viti的网络。在ImageNet-1k数据集上,MobileViT在约600万个参数下达到了78.4%的前1准确率,在相同数量的参数下,比MobileNetv3(基于CNN)和 DeIT (基于ViT)的准确率分别提高了3.2%6.2%。在MS-COCO目标检测任务上,对于相似数量的参数,MobileViT比MobileNetv3的准确率高5.7%

论文名称:MobileViT: Light-weight, General-purpose, and Mobile-friendly Vision Transformer
论文地址:https://arxiv.org/abs/2110.02178
代码地址:https://github.com/apple/ml-cvnets

注意:CNN的空间归纳偏差内容如下:
CNN 的 归纳偏差(Inductive Bias) 是 局部性 (Locality) 和 空间不变性 (Spatial Invariance) / 平移等效性 (Translation Equivariance),即空间位置上的元素 (Grid Elements) 的联系/相关性近大远小,以及空间 平移的不变性 (Kernel 权重共享)。

1. 网络结构

标准 ViT 的网络结构如下图所示。关于ViT的更详细的介绍在 文章:DeiT详解中有所介绍。整体而言:在 ViT 中将图片数据(2D 数据)变为 Transformer 接受的数据(1D数据)。

在这里插入图片描述
MobileViT 的网络结构如下图所示。核心思想是学习用变压器作为卷积的全局表示,在网络中隐式地合并卷积类属性(例如,空间偏差)。

在这里插入图片描述
MobileViT Block 中, Conv-n x n 表示一个标准的 n x n的卷积; MV2 表示 MobileNetv2 block; ↓ 2 \downarrow 2 2 表示下采样。

表4展示了不同参数预算下MobileViT整体架构,可以帮助大家更清晰地理解 MobileViT 网络到底由哪些块组成。
在这里插入图片描述

2. 模型详解

为了帮助大家更好地理解模型中各个块的内容,这个章节分别介绍了 MobileViT Block 的具体内容 以及 MV2 块的结构。

2.1 MobileViT Block

MobileViT Block 旨在用更少的参数对输入张量中的局部全局信息进行建模。MobileViT Block 整体由三部分组成。分别为:Local representationsTransformers as Convolutions (global representations)Fusion

2.1.1 Local representations

Local representations 表示输入信息的局部表达。在这个部分,输入MobileViT Block 的数据会经过一个 n × n n \times n n×n 的卷积块和一个 1 × 1 1 \times 1 1×1 的卷积块。从上文所述的 CNN 的空间归纳偏差就可以得知:经过 n × n n \times n n×n 的卷积块的输出获取到了输入模型的局部信息表达(因为卷积块是对一个整体块进行操作,但是这个卷积核的 n n n 是远远小于数据规模的,所以是局部信息表达,而不是全局信息表达)。另外, 1 × 1 1 \times 1 1×1 的卷积块是为了线性投影,将数据投影至高维空间。例如:对于 9 × 9 9\times 9 9×9 的数据,使用 3 × 3 3\times 3 3×3 的卷积层,获取到的每个数据都是对 9 × 9 9\times 9 9×9 数据的局部表达

2.1.2 Transformers as Convolutions (global representations)

Transformers as Convolutions (global representations) 表示输入信息的全局表示。在Transformers as Convolutions 中首先通过Unfold 对数据进行转换,转化为 Transformer 可以接受的 1D 数据。然后,将数据输入到Transformer 块中。最后,通过Fold再将数据变换成原有的样子。
具体而言:

  • 数据 X ∈ R H × W × C X \in R^{H\times W \times C} XRH×W×C在经过 Local representations 后得到数据 X L ∈ R H × W × d X_L \in R^{H\times W \times d} XLRH×W×d,其中 d > C d>C d>C。然后,数据被切分为多个patch,patch的长和宽分别为 h , w h,w h,w,patch的总数量为 N = H W P N =\frac{HW}{P} N=PHW,其中 P = w h P=wh P=wh。最终经过Unfold 后得到的数据 X U ∈ R P × N × d X_U \in R^{P\times N \times d} XURP×N×d注意:此时的数据还是2D数据,在代码中为了处理该数据,将Batch_size 跟P叠加在一起,得到数据: X U ∈ R B P × N × d X_U \in R^{BP\times N \times d} XURBP×N×d,其中 B B B 表示Batch_size 。
  • 在对于每一个 p ∈ { 1 , . . . , P } p\in \{1,...,P\} p{1,...,P},通过Transformer 对patch间关系进行编码,得到 X G ∈ R P × N × d X_G \in R^{P\times N \times d} XGRP×N×d
    X G ( p ) = T r a n s f o r m e r ( X U ( p ) ) 1 ≤ p ≤ P X_G(p) = Transformer(X_U(p)) \ \ \ \ \ \ \ \ \ \ 1 \leq p \leq P XG(p)=Transformer(XU(p))          1pP
  • 与丢失像素空间顺序的ViTs不同,MobileViT既不丢失补丁顺序,也不丢失每个补丁内像素的空间顺序。因此,可以重新Fold X G ∈ R P × N × d X_G \in R^{P\times N \times d} XGRP×N×d 得到 X F ∈ R H × W × d X_F \in R^{H\times W \times d} XFRH×W×d

请注意,由于 X U ( p ) X_U(p) XU(p) 使用卷积编码来自 n × n n × n n×n 区域的局部信息,而 X G ( p ) X_G(p) XG(p) 对第p个位置的p个补丁编码全局信息,因此 X G X_G XG 中的每个像素都可以编码来自 X X X 中所有像素的信息,如下图所示。因此,MobileViT的整体有效接受野为: H × W H × W H×W
在这里插入图片描述
如上图所示,蓝色的部分表示经过 n × n n × n n×n 获取到的局部信息,即周围区域的局部信息用一个蓝色方框表示;红色方框表示 Transformer 部分,获取所有蓝色方框的信息。总的来说:红色方框可以获取到全部方框的信息,因此说:MobileViT的整体有效接受野为: H × W H × W H×W

2.1.3 Fusion

Fusion中,得到的信息与原始输入信息 X ∈ R H × W × C X \in R^{H\times W \times C} XRH×W×C)进行合并,然后使用另一个 n × n n × n n×n 卷积层来融合这些连接的特征。这里,得到的信息指:全局表征 X F ∈ R H × W × d X_F \in R^{H\times W \times d} XFRH×W×d 经过逐点卷积( 1 × 1 1\times 1 1×1 卷积)得到的输出 X F u ∈ R H × W × d X_{Fu} \in R^{H\times W \times d} XFuRH×W×d ,并通过串联操作与 X X X 组合。

2.2 MV2

MV2 块指MobileNet v2 block,是一个倒残差结构。 在倒残差结构中,高维信息通过ReLU激活函数后丢失的信息更少(注意倒残差结构中基本使用的都是ReLU6激活函数,但是最后一个1x1的卷积层使用的是线性激活函数)。具体网络结构如下图所示。
在这里插入图片描述

左:stride=1                      右:stride=2

3. 简化版理解

可能看了上述的内容,大家对于 MobileViT 的整体还是不太理解。这里对文章内容进行口语式解答来帮助大家理解文章内容。
MobileViT 这篇文章使用CNN和Transformer相融合的方案,在减少模型复杂度的同时,提高了模型的精度和鲁棒性。
具体而言:

  • 对于一个模型,如果全都使用 CNN 结构。模型只能获取到数据的局部信息而获取不到全局信息。
  • 对于一个模型,如果全部使用 Transformer 结构。模型可以获取到全局信息。但是,全都使用 Transformer 结构会带来较大的复杂度,存在训练时间上升,模型容易过拟合等等问题。

因此,基于上述问题。作者先使用CNN获取局部信息,然后使用 Transformer 结构获取全局信息。通过上述的理解可以发现:在MobileViT 中的Transformer 结构中,复杂度相比于 ViT 结构 中复杂度降低了很多(因为输入数据复杂度的降低)。
最终实验结果同时表明:MobileViT 精度更高且鲁棒性更好。

4. 总结

整体而言,MobileViT 通过融合CNN和 Transformer 来得到了不错的效果。同时,也让我们了解:Transformer 虽好,但是也存在一系列的问题,不能强行使用Transformer 。如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。

到此,有关MobileViT的内容就基本讲完了。如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/353292.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

html5需要很高的电脑配置,上古卷轴5需要什么配置要求 配置要求高吗

上古卷轴5是一款非常好玩的动作角色扮演类游戏,那么有很多用户想要在需要什么样的电脑配置才能流畅的运行这款游戏呢?下面就通过这篇文章给大家介绍一下,一起往下看吧! 处理器:Intel酷睿i5-750或AMD Phenom II X4-945(…

Java课程设计-学生管理系统《控制台版本》

博主介绍:✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

计算机资源管理窗口,资源管理器怎么打开,教您打开电脑资源管理器

资源管理器在哪儿?对于这个名词大家看到后或许会楞了一下,这是什么啊?是的,即使使用过,但是用户们在脑海里还没有多大的概念,只知道资源管理器是Windows系统提供的资源管理工具,下面&#xff0c…

一分钟快速重启资源管理器

Step1:打开电脑的任务管理器。 快捷键:EscShiftCtrl(也可以使用CtrlAlt.或者CtrlAltDelete,在弹出的窗口中,选择任务 管理器) Step2:在进程列表中下拉找到Windows进程,然后选中Windows资源管理器&#xff…

删除文件时提示已在windows资源管理器中打开怎么办?

删除文件时提示已在windows资源管理器中打开的原因是系统错误导致的,具体解决方法步骤如下: 1、首先打开计算机,在计算机桌面下方任务栏鼠标右键点击一下,在弹出来的选项点击【启动任务管理器】。 2、然后在任务管理器中&#xf…

Win10怎么重启资源管理器?重启资源管理器快捷键是什么

在Windows系统中有一个资源管理器,其实它就是用来管理电脑里所有文件的,当用户想要进行某些操作时卡住无反应,很可能就是因为Windows资源管理器出问题了,下面我来给朋友们讲讲重启资源管理器的方法吧。 Win10重启资源管理器的方法…

转载-文件资源管理器无响应的解决办法

在Win10中,文件资源管理器经常出现崩溃未响应的问题,可能出现的问题是,双击“此电脑”进入就出现Windows资源管理器未响应的问题,或者任意软件通过打开文件对话框选择文件出现资源管理器总是崩溃等等,那么Win10资源管理…

《Windows》Windows系统如何重启资源管理器

文章目录 Windows系统如何重启资源管理器方式1:直接重新启动方式2:先结束任务,再运行新任务 Windows系统如何重启资源管理器 Ctrl Shift Esc,打开任务管理器 方式1:直接重新启动 找到“Windows资源管理器”&…

删除 Windows 文件资源管理器左侧 OneDrive 图标

OneDrive 登录不同类型的账号会在 Windows 文件资源管理器左侧显示多个 OneDrive 图标。 如果想删除其中一个或多个 OneDrive 图标,可以使用修改注册表的方法(卸载 OneDrive 无法删除这个图标)。 使用快捷键 Win R 打开运行窗口&#xff1…

C#资源管理器(基本版)

背景 TreeViewListView文件操作 用到的语句 TreeView 1TreeNode tn new TreeNode(item.Name);//括号里是文本内容 1. 2 treeView1.Nodes.Add(tn); 2. ListView 2.1 public class MyFile { public float FileLength { get; set; }//文件长度(KB&#xff…

工具管理(资源管理)

子产品介绍篇--资源管理 产品定义 工具管理是对使用的工具进行领用、使用、 保管、修复而进行的有关组织管理工作。工具管理的范围很广,从物品方面来说,包括但不限于 机加行业中的各种刃具、量具、夹具、模具、磨具、装配工具、辅助工具;电…

解决win10资源管理器突然占用cpu过高问题

1.需要关闭家庭组,新版win10已经没有HomeGroup Listener和HomeGroup Provider,取而代之的是需要将这三项禁止: 2.工欲善其事必先利其器,本菜鸡想要找到到底是什么原因造成了windows资源管理器的cpu占用率飙升(也就是…

文件资源管理器

1. 选中一个文件夹 程序源码&#xff1a; /*关键头文件*/ #include <shlobj.h> #include <atlstr.h>string SelectSingleDirectory() {CString strPath(_T(""));BROWSEINFO bi;bi.hwndOwner NULL;bi.pidlRoot CSIDL_DESKTOP; //文件夹的根目录…

Win11资源管理器(文件夹)出现的工具栏怎么隐藏?

如下&#xff1a;1.先右键白色的工具栏勾选锁定工具栏 2.右键开始->运行->regedit&#xff0c;打开注册表编辑器打开&#xff1a;计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced这个选项 注册表编辑器修改完之后这个白色的工具栏…

Windows10资源管理器使用

文章目录 前言二、关联菜单操作1.分组展示2.添加选择复选框3.使用窗格模式4.功能区折叠二、“文件夹选项”对话框操作1.访问模式调整2.状态栏控制总结前言 目前Windows系统中的使用较多当属Windows10,资源管理器属于Windows系统中一个常用工具。本文总结了Windows 10 专业版下…

文件资源管理器无法打开怎么办?

文件资源管理器是我们访问、修改、编辑存储在硬盘中的文件或文件夹的基础&#xff0c;一但无法打开&#xff0c;则会影响我们的正常使用。那么文件资源管理器无法打开该怎么办呢&#xff1f; 1、通过任务管理器重启资源管理器 Windows资源管理器&#xff08;explorer.exe&…

1、资源管理器

asset目录下有Scene、Script、Texture、animation、prefab、sound文件夹 Scene:存放场景文件&#xff0c;以.fire后缀命名&#xff0c;双击场景&#xff0c;层级管理器和场景编辑器都会发生变化&#xff0c;比如HelloWorld.fire Script:存放运行代码的位置&#xff0c;双击直…

【应用推荐】常见资源管理器整理,内含使用体验和个人使用推荐

【应用推荐】常见资源管理器整理&#xff0c;含个人使用体验和产品选型推荐 写在前面常见资源管理器介绍My Files-X FreeFiles APPQT tabbarCloverQ-dirTotal CommanderXYPlorerDirectory Opus 结语 写在前面 Windows 的资源管理器一直饱受诟病&#xff0c;尤其是近期更新到wi…

干货分享:Windows资源管理器无限重启?解决方法竟然是…

Windows资源管理器无限重启&#xff1f;Windows资源管理器无限重启教程 我们的电脑一个不留神&#xff0c;就很容易跑偏。程序有bug或是软件设计上有缺陷&#xff0c;会导致程序无限循环。在系统里有表现为Windows资源管理器无限重启的故障&#xff0c;这会快速耗尽电脑资源&am…

css:CSS 线性渐变linear-gradient

CSS 渐变使您可以显示两种或多种指定颜色之间的平滑过渡。 CSS 定义了两种渐变类型&#xff1a; 线性渐变&#xff08;向下/向上/向左/向右/对角线&#xff09;径向渐变&#xff08;由其中心定义&#xff09; 参考文档 CSS 线性渐变 https://www.w3school.com.cn/css/css3_…