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

news2024/11/15 5:38:16

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://www.coloradmin.cn/o/612381.html

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

相关文章

Ubuntu系统搭建FTP服务器

Ubuntu 系统版本:Ubuntu 22.04.2 LTS 安装 vsftpd 软件包 sudo apt-get update sudo apt-get install vsftpd查看版本,验证是否安装成功:vsftpd -v 配置文件 以下是我翻译后的默认配置文件(地址 /etc/vsftpd.conf)&a…

[NOI2009] 描边

题目描述 小 Z 是一位杰出的数学家。聪明的他特别喜欢研究一些数学小问题。 有一天,他在一张纸上选择了 n 个点,并用铅笔将它们两两连接起来,构成 (�−1)22n(n−1)​ 条线段。由于铅笔很细,可以认为这些线段的宽度为…

ROS:参数的使用与编程方法

目录 一、参数模型二、 创建功能包三、参数命令行的使用(rosparam)四、使用程序来使用参数(C)4.1创建代码4.2编译4.3运行 一、参数模型 在ROS Master中,存在一个参数服务器(Parameter Server),它是一个全局…

Python高光谱遥感数据处理与机器学习实践技术丨Matlab高光谱遥感数据处理与混合像元分解

目录 Python高光谱遥感数据处理与机器学习实践技术 第一章 高光谱基础 第二章 高光谱开发基础(Python) 第三章 高光谱机器学习技术(python) 第四章 典型案例操作实践 Matlab 高光谱遥感数据处理与混合像元分解 第一章 理论…

java SSM 互助旅游管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM 互助旅游管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采…

预制菜进击万亿市场,谁能更快上桌“吃菜”?

文 | 螳螂观察 作者 | 图霖 消费行业很少有可持续的风口,这两年的预制菜算其中一个。 艾媒咨询发布的行业预测显示,2026年我国预制菜市场规模有望达到10720亿元。 过去这一年,武汉、大同等地已相继召开了预制菜相关的产业峰会。峰会规模有…

gismo-3维IGA

文章目录 前言一、简单示例二、gismo-3维IGA3维程序中的几何模型 三、xml文件的理解1、xml文件示例2、gismo中二维示例文件-一个曲面(简单) 四、三维程序中xml文件的理解三维几何模型边界信息 五、三维程序运行细化四次细化5次 总结 #pic_center 前言 只…

C#读写FDX-B ISO11784/85协议动物标签源码

一个FDX-B ISO11784/85协议动物标签内包括了以下信息: 11位的前导码;38位的SN序号;10位国家代码;1位data block标识;14位保留位;1位Animal动物标识;以上64位数据的crc16ccitt校验码&#xff0c…

短视频矩阵源码系统打包.源码

Masayl是一款基于区块链技术的去中心化应用程序开发平台,可帮助开发者快速、便捷地创建去中心化应用程序。Masayl拥有丰富的API和SDK,为开发者们提供了支持。此外,Masayl还采用了高效的智能合约技术,确保应用程序的稳定、安全和高…

项目集管理—项目集治理

一、概述 项目集治理是实现和执行项目集决策,为支持项目集而制定实践,并维持项目集监督的绩效领域。 本章包括: 项目集治理实践项目集治理角色项目集治理设计与实施 项目集治理包括为了满足组织战略和运营目标的要求,对项目集实…

【虹科案例】虹科数字化仪在激光雷达大气研究中的应用

01 莱布尼茨研究所使用激光雷达进行大气研究 图 1:在 Khlungsborn 的 IAP 办公室测试各种激光器 大气研究使用脉冲激光束通过测量大气中 100 公里高度的多普勒频移和反向散射光来测量沿光束的温度和风速。返回的光信号非常微弱,会被阳光阻挡&#xff0c…

90后的心声:都别卷了,上年纪了真的卷不动.....

内卷,是现在热度非常高的一个词汇,随着热度不断攀升,隐隐到了“万物皆可卷”的程度。 内卷的来源 内卷最早的“出处”是几张名校学霸的图片。 大学生们刷爆朋友圈的几张“内卷”图片是这样的:有的人骑在自行车上看书&#xff0c…

如何处理亿级图片排重(精准排重,相似排重)

图片相似度对比 1、需求 假如有一个图片池,存有1亿图片。给一张目标图片,在图片池中做匹配。 判断一张图片是否在图片池中出现过。(完全一样)判断有没有相似的出现过。比如两张图相似度90,两张图片是在描述一件事情。 …

系统架构师之高内聚低耦合

一、概念: 标记耦合(Stamp Coupling)和数据耦合(Data Coupling)是软件设计中两种不同的耦合类型,它们之间的区别如下: 标记耦合:标记耦合是指模块之间通过参数传递标记或标识符来进…

对安装Linux的服务器进行缓存清除

安装Linux的服务器缓存过高导致服务器运行速度慢 第一步,查看当前服务器中Linux系统的状态。 命令:free -h 第二步:备份内存缓冲区中的数据到磁盘中。 命令:sync 在大多数情况下,不需要手动使用sync命令&#xff0…

跨境电商如何进行仓储物流管理?

跨境电商如何进行仓储物流管理? 01跨境电商仓储物流管理痛点在哪? 供应链不稳定:因为要涉及多个国家的生产和供应环节,跨境物流的过程中还需要遵守目的地国家和货物品类的规定,这会增加仓储和物流成本,并…

创新需求:台灯加装语音识别芯片,打造智能化生活方式

为了满足人们对于智能化生活的需求,现在有一种创新的需求——为台灯加装语音识别芯片,从而实现远程控制、语音操控等更为智能的功能。 科技行业的快速发展,使得语音识别芯片也越来越普及。它们可以使电子产品具有智能化、人性化的交互方式。…

【Java系列】MyBatis-Plus常见面试题

问题列表 Q1:MyBatis-Plus是什么?它有什么优点? MyBatis-Plus是MyBatis框架的一个扩展库,它提供了一系列方便的API和工具,可以简化常见的数据库操作。MyBatis-Plus的优点包括: 提高开发效率:My…

第1章:SpringMVC简介

一、SpringMVC 1.Java语言学习流程 2.SpringMVC的主要内容 二、SpringMVC简介 1.什么是MVC MVC是一种软件架构的思想,将软件按照模型,视图,控制器划分M:Model,模型层,指工程中的JavaBean,作用…

用Python构建大数据推荐系统:一个世界500强企业的成功案例

推荐系统是大数据时代的利器,它能够为企业提升用户体验、增加用户粘性、促进销售转化、提高营销效率等。但是,搭建一个成功的推荐系统并不容易,它需要综合考虑多方面的因素,并根据业务场景、用户需求、数据变化等不断地进行迭代和…