经典文献阅读之--MobileViT(轻量级、通用且移动友好的网络框架)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务,并且需要GPU资源,可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时,并附带200G的免费磁盘空间。通过链接注册并联系客服,可以获得20元代金券(相当于6-7H的免费GPU资源)。欢迎大家体验一下~

0. 简介

轻量级卷积神经网络(CNNs)已成为移动视觉任务的标准选择。它们的空间归纳偏置使得它们能在各种视觉任务中通过较少的参数学习表示。然而,这些网络在空间上具有局部性。为了学习全局性表示,人们开始采用基于自注意力机制的视觉Transformer(ViTs)。不同于CNNs,ViTs模型较大。在《MOBILEVIT: LIGHT-WEIGHT, GENERAL-PURPOSE, AND MOBILE-FRIENDLY VISION TRANSFORMER》文中,我们探讨了这样一个问题:是否可以结合CNNs和ViTs的优点,为移动视觉任务构建一个轻量级且延迟低的网络?为此,我们介绍了MobileViT,一种适用于移动设备的轻量级和通用视觉Transformer。MobileViT为Transformer处理信息的全局性提供了一种不同的视角。我们的研究结果显示,MobileViT在不同任务和数据集中显著优于基于CNN和ViT的网络。

1. 主要贡献

  1. MobileViT模块能够有效地在一个张量中同时编码局部信息和全局信息(如图1b所示)
  2. MobileViT提供了一种学习全局表示的新视角。标准卷积涉及三个步骤:展开、局部处理和折叠。MobileViT模块用变换器的全局处理替代了卷积的局部处理。这使得MobileViT模块同时具备了CNN和ViT的特性,帮助它以更少的参数和简单的训练方法(如基本增强)学习到更优的表征
  3. 首次证明轻量级ViTs可以在不同的移动视觉任务中,通过简单的训练方法达到与轻量级CNN相当的性能。在大约5-6百万参数的预算下,MobileViT在ImageNet-1k数据集上达到了78.4%的Top-1准确率,比MobileNetv3高出3.2%

在这里插入图片描述

图2:与轻量级CNN模型相比,MobileViT展现了更好的任务级泛化特性。图中列出了不同特征提取器(MobileNetv1(Howard等人,2017年)、MobileNetv2(Sandler等人,2018年)、MobileNetv3(Howard等人,2019年)、MNASNet(Tan等人,2019年)、MixNet(Tan & Le,2019年b)和MobileViT(我们的研究))在MS-COCO数据集上的SSDLite网络参数。

2. 3 移动视觉变换器:一个轻量级变换器

标准的ViT模型,如图1a所示,将输入 X ∈ R H × W × C X∈\mathbb{R}^{H×W×C} XRH×W×C重塑为一系列展平的补丁 X f ∈ R N × P C X_f∈\mathbb{R}^{N×PC} XfRN×PC,将其投影到固定的 d d d维空间 X p ∈ R N × d X_p∈\mathbb{R}^{N×d} XpRN×d中,然后使用 L L L层变换器模块学习补丁之间的表示视觉变换器中自注意力的计算成本为 O ( N 2 d ) O(N^2d) O(N2d)。这里, C C C H H H W W W分别代表张量的通道、高度和宽度, P = w h P=wh P=wh是补丁中的像素数,其高度为 h h h,宽度为 w w w N N N是补丁的数量。由于这些模型忽略了CNN中固有的空间归纳偏置,它们需要更多的参数来学习视觉表示。例如,基于ViT的网络DPT(Dosovitskiy等人,2021年)与基于CNN的网络DeepLabv3(Chen等人,2017年)相比,学习的参数多了6倍,以提供类似的分割性能(DPT vs. DeepLabv3:345M vs. 59M)。此外,与CNN相比,这些模型的优化性不佳。这些模型对L2正则化敏感,并需要大量的数据增强以防止过拟合(Touvron等人,2021a;Xiao等人,2021年)。
在这里插入图片描述

(a) 标准视觉变换器(ViT)
(b) MobileViT。在这里,MobileViT模块中的 C o n v − n × n Conv-n×n Convn×n代表标准的 n × n n×n n×n卷积,而MV2指的是MobileNetv2模块。执行下采样的模块标记为↓2。

本文介绍了一种轻量级的ViT模型,MobileViT。其核心思想是像卷积一样使用变换器来学习全局表示。这使我们能够隐式地将类似卷积的特性(例如,空间偏置)融入网络中,通过简单的训练方法(例如,基本增强)学习表示,并轻松地将MobileViT与下游架构(例如,用于分割的DeepLabv3)集成起来

3. MobileViT架构

3.1 MobileViT模块

如图1b所示,MobileViT模块旨在用较少的参数对输入张量的局部和全局信息进行建模。具体来说,对于给定的输入张量 X ∈ R H × W × C X ∈ \mathbb{R}^H×W×C XRH×W×C,MobileViT首先应用一个 n × n n×n n×n的标准卷积层,然后跟随一个逐点(或1×1)卷积层,生成 X L ∈ R H × W × d X_L ∈ \mathbb{R}^{H×W×d} XLRH×W×d n × n n×n n×n卷积层对局部空间信息进行编码,而逐点卷积则将张量投影到高维空间(或 d d d维,其中 d > C d > C d>C),通过学习输入通道的线性组合。

通过MobileViT,我们希望在拥有有效感受野 H × W H×W H×W的同时,模拟长距离的非局部依赖关系。模拟长距离依赖的一个广泛研究方法是空洞卷积。然而,这种方法需要谨慎选择空洞率,否则权重会应用在填充的零上,而不是有效的空间区域(Yu & Koltun, 2016; Chen et al., 2017; Mehta et al., 2018)。另一个有前景的解决方案是自注意力机制(Wang et al., 2018; Ramachandran et al., 2019; Bello et al., 2019; Dosovitskiy et al., 2021)。在自注意力方法中,采用多头自注意力的视觉变换器(ViTs)被证明对视觉识别任务有效。然而,ViTs结构庞大且优化性能不佳。这是因为ViTs缺乏空间感知偏置(Xiao et al., 2021; Graham et al., 2021)。

为了使MobileViT能够在具有空间感知偏置的情况下学习全局表示,我们将 X L X_L XL展开为 N N N个不重叠的平坦化补丁 X U ∈ R P × N × d X_U ∈ \mathbb{R}^{P×N×d} XURP×N×d。这里, P = w h P=wh P=wh N = H W P N=\frac{HW}{P} N=PHW是补丁的数量, h ≤ n h≤n hn w ≤ n w≤n wn分别是补丁的高度和宽度。对于每个 p ∈ { 1 , ⋅ ⋅ ⋅ , P } p ∈ \{1, ···, P\} p{1,⋅⋅⋅,P},通过应用变换器对补丁间关系进行编码,得到 X G ∈ R P × N × d X_G ∈ \mathbb{R}^{P×N×d} XGRP×N×d

在这里插入图片描述
与ViTs丢失像素的空间顺序不同,MobileViT既不会丢失补丁顺序,也不会丢失每个补丁内像素的空间顺序(见图1b)。因此,我们可以折叠 X G ∈ R P × N × d X_G ∈ \mathbb{R}^{P×N×d} XGRP×N×d 以获得 X F ∈ R H × W × d X_F ∈ \mathbb{R}^{H×W×d} XFRH×W×d。然后通过逐点卷积将 X F X_F XF 投影到低维 C C C 空间,并通过拼接操作与 X X X 结合起来。接着,又一个 n × n n × n n×n 卷积层被用来融合这些拼接后的特征。请注意,由于 X U ( p ) X_U (p) XU(p) 通过卷积从 n × n n × n n×n 区域编码局部信息,而 X G ( p ) X_G(p) XG(p) 通过变换器层编码 P P P 个补丁的全局信息,所以 X G X_G XG 中的每个像素都可以编码 X X X 中所有像素的信息,如图4所示。因此,MobileViT的整体有效感受野是 H × W H × W H×W
在这里插入图片描述

图4:MobileViT模块中的每个像素都与其他像素相互作用。在此示例中,红色像素通过变换器关注蓝色像素(其他补丁中相应位置的像素)。由于蓝色像素已经使用卷积编码了关于相邻像素的信息,这使得红色像素能够从图像中的所有像素编码信息。这里,黑色和灰色网格中的每个单元分别代表一个补丁和一个像素。

…详情请参照古月居

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

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

相关文章

尚品汇-(七)

(1)在网关中实现跨域 全局配置类实现 包名:com.atguigu.gmall.gateway.config 创建CorsConfig类 Configuration public class CorsConfig {Beanpublic CorsWebFilter corsWebFilter(){// cors跨域配置对象CorsConfiguration configuration…

私有化部署ChatGPT:潜力与挑战

背景 以ChatGPT为代表的大语言模型服务在2023年初开始大规模爆发,AI技术从来没有如此接近普通民众。随着以Microsoft, Google, Meta (Facebook)为代表的科技巨头在AI技术领域相继发布重量级产品和服务,国内…

声场合成新方法:基于声波传播的框架

声场合成是指在房间内的麦克风阵列上,根据来自房间内其他位置的声源信号,合成每个麦克风的音频信号。它是评估语音/音频通信设备性能指标的关键任务,因为它是一种成本效益高的方法,用于数据生成以替代真实的数据收集,后…

武汉星起航:挂牌上海股权交易中心,自营店铺销售额迎飞跃式增长

2023年10月30日,对于武汉星起航电子商务有限公司而言,无疑是一个载入史册的重要日子。这一天,公司成功在上海股权托管交易中心挂牌展示,正式登陆资本市场,开启了全新的发展篇章。这一里程碑式的跨越,不仅彰…

IDEA中Maven--下载安装自己适配的版本---理解

Maven解释: Maven是一个强大的项目管理工具和构建工具,主要用于Java项目。它能够帮助开发团队管理项目的依赖、构建项目、发布文档和报告,并能够自动化许多重复的任务。 Maven的主要作用包括: 依赖管理:Maven能够管理…

6.2 通过构建情感分类器训练词向量

在上一节中,我们简要地了解了词向量,但并没有去实现它。在本节中,我们将下载一个名为IMDB的数据集(其中包含了评论),然后构建一个用于计算评论的情感是正面、负面还是未知的情感分类器。在构建过程中,还将为 IMDB 数据…

第二期书生·浦语大模型实战营优秀项目一览

书生浦语社区于 2023 年年底正式推出了书生浦语大模型实战营系列活动,至今已有两期五批次同学参加大模型学习、实战,线上课程累计学习超过 10 万人次。 实战营特设项目实践环节,提供 A100 算力支持,鼓励学员动手开发。第 2 期实战…

【移动应用开发期末复习】第五/六章

系列文章 第一章——Android平台概述 第一章例题 第二章——Android开发环境 第二章例题 第三章 第三章例题 第四章 系列文章界面布局设计线性布局表格布局帧布局相对布局约束布局控制视图界面的其他方法代码控制视图界面数据存储与共享首选项信息数据文件SQLite数据库Content…

HarmonyOS Next开发学习手册——进程模型线程模型

进程模型 系统的进程模型如下图所示: 应用中(同一包名)的所有PageAbility、ServiceAbility、DataAbility、FormAbility运行在同一个独立进程中,即图中绿色部分的“Main Process”。 WebView拥有独立的渲染进程,即图中…

2023: 芒种集•序言

2023: 芒种集•序言 2023: 芒种集•序言 从西南旅游回来,一直忙着整理游记“2024:追寻红色足迹”,之后又应初建平索要刘桂蓉遗作“我们一起走过”,于是把“别了,老屋”和诗作“二月”一并合编,把我写的悼念…

oceanbase数据库安装和连接实战(阿里云服务器操作)

本文主要是安装oceanbase的单机版进行数据库的基础使用,oceanbase的数据库是兼容mysql数据库的,实际的兼容程度需要更深度的测试,本文主要是安装oceanbase并使用SQLynx的mysql驱动连接使用oceanbase数据库。 目录 1. 基础介绍 2. 安装说明 …

【Python datetime模块精讲】:时间旅行者的日志,精准操控日期与时间

文章目录 前言一、datetime模块简介二、常用类和方法三、date类四、time类五、datetime类六、timedelta类七、常用的函数和属性八、代码及其演示 前言 Python的datetime模块提供了日期和时间的类,用于处理日期和时间的算术运算。这个模块包括date、time、datetime和…

STL迭代器的基础应用

STL迭代器的应用 迭代器的定义方法: 类型作用定义方式正向迭代器正序遍历STL容器容器类名::iterator 迭代器名常量正向迭代器以只读方式正序遍历STL容器容器类名::const_iterator 迭代器名反向迭代器逆序遍历STL容器容器类名::reverse_iterator 迭代器名常量反向迭…

C# SerialPort串口通讯

串口通信 在.NET平台下创建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空间是System.IO.Ports。这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信。 创建C#串口通信程序之命名空间 System.IO.Ports命名空间中最重…

solidity智能合约如何实现跨合约调用函数

背景 比如现在有一个需求、我需要通过外部合约获取BRC20 token的总交易量。那么我需要在brc20的转账函数里面做一些调整,主要是两个函数内统计转移量。然后再提供外部获取函数。 /*** dev Sets amount as the allowance of spender over the callers tokens.** Ret…

文化财经wh6boll带macd多空转折点提示指标公式源码

文化财经wh6boll带macd多空转折点提示指标公式源码: DIFF:EMA(CLOSE,12) - EMA(CLOSE,26); DEA:EMA(DIFF,9); MACD:2*(DIFF-DEA); MID:MA(CLOSE,26);//求N个周期的收盘价均线,称为布林通道中轨 TMP2:STD(CLOSE,26);//求M个周期内的收盘价的标准差 …

onlyoffice实现在单页面加载文档的功能

草图 实现案例的基本原型 这里我们的样式库使用的是Tailwindcss,我们的前端UI组件库使用的是Ant Design Vue。 基本原型是,有个按钮,没有点击按钮的时候,页面显示的时普通的内容。当点击这个按钮的时候,页面加载文档…

【Linux】线程Thread

🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ ​ 线程概述 …

云层区分神经网络模型——二分类

云层区分神经网络模型——二分类 问奶奶,是什么让他们维护一份感情长达年,奶奶说那个年代什么东西坏了都会想要修,现在什么坏了都想着换。 安装依赖 # 要运行脚本,请先安装以下库:pip install tensorflowpip install …

JAVA每日作业day6.26

ok了家人们,今天我们学习了面向对象-多态,话不多说我们一起来看看吧 一.多态概述 面向对象的第三大特性:封装、继承、多态 我们拿一个生活中的例子来看 生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一…