『论文精读』FastViT(ICCV 2023,Apple开源)论文解读

news2024/11/25 14:49:53
『论文精读』FastViT(ICCV 2023,Apple开源)论文解读

文章目录

  • 一. FastViT简介
  • 二. 模型架构
    • 2.1. Stage 的内部架构
    • 2.2. Stem 的结构
    • 2.3. Patch Embedding 的架构
    • 2.4. 位置编码
  • 三. 参考文献

  • 论文下载链接:https://arxiv.org/pdf/2303.14189.pdf
  • 论文代码链接:https://github.com/apple/ml-fastvit
  • 关于VIT论文的解读可以关注我之前的文章:『论文精读』Vision Transformer(VIT)论文解读
  • 关于Deit论文的解读可以关注我之前的文章:『论文精读』Data-efficient image Transformers(DeiT)论文解读

一. FastViT简介

  • 最近transformer和卷积设计的融合导致了模型的准确性和效率的稳步提高。本文提出FastViT,一种混合视觉transformer架构,可获得最先进的延迟-精度权衡。本文提出一种新的token混合算子RepMixer,FastViT的一个构建模块,使用结构重参数化,通过删除网络中的跳跃连接(skip-connections)来降低内存访问成本。进一步应用训练时间过参数化和大核卷积来提高精度,并根据经验表明这些选择对延迟的影响最小。所提出模型比最近最先进的混合transformer架构CMT快3.5x,比EfficientNet快4.9×,比ConvNeXt在移动设备上快1.9×,以获得在ImageNer数据集上的相同精度。在相似的延迟下,该模型在ImageNet上的Top-1准确率比MobileOne高出4.2%。所提出模型在图像分类、检测、分割和3D网格回归等任务中始终优于竞争架构,在移动设备和桌面GPU上的延迟都有显著改善。此外,该模型对分布外样本和损坏具有高度的鲁棒性,优于竞争的鲁棒模型。
  • 本文提出基于三个关键设计原则的FastViT:①使用RepMixer块来删除跳跃连接(skip-connections);②使用线性训练时间过参数化来提高精度;③在早期阶段使用大型卷积核来替代自注意力层。
  • FastViT 性能对比: (a) 最新方法的准确性与移动延迟缩放曲线。 这些模型在 iPhone 12 Pro 上进行了基准测试,如下 [57]。 (b) 最新方法的准确度与 GPU 延迟缩放曲线。 为了获得更好的可读性,仅绘制 Top-1 精度优于 79% 的模型。 有关更多情节,请参阅补充材料。 在这两种计算结构中,我们的模型具有最佳的准确性与延迟权衡。 iPhone 12 Pro 设备和 NVIDIA RTX-2080Ti desktop GPU
  • 最近最先进的移动架构和 FastViT 变体的准确性与移动延迟缩放曲线。 这些模型使用表 16 中描述的适当图像尺寸在 iPhone 12 Pro 上进行基准测试。

在这里插入图片描述

二. 模型架构

  • FastViT 整体框架图2: (a) FastViT 架构概述,它将训练时间和推理时间架构解耦。 第 1、2、3 阶段具有相同的架构,并使用 RepMixer 进行token混合。 在第 4 阶段,自注意力层用于令牌混合。 (b) 卷积干的架构。 © 卷积 FFN 的架构 (d) RepMixer 块概述,该块在推理时重新参数化跳跃连接。

在这里插入图片描述

2.1. Stage 的内部架构

  • FastViT 采用了4个 stage 的架构,每个 stage 相对于前一个的分辨率减半,通道数加倍。前3个 stage 的内部架构是一样的,都是训练的时候采用下式:
    Y = DWConv(BN ( X ) ) + X (1) \bf Y=\text{DWConv(BN}(X))+X \tag{1} Y=DWConv(BN(X))+X(1)
  • 推理的时候采用结构重参数化得到下式:
    Y = DWConv ( X ) (2) \bf Y=\text{DWConv}(X) \tag{2} Y=DWConv(X)(2)
  • RepMixer 卷积混合首先在ConvMixer中引入。 对于输入张量 X \bf X X ,层中的混合块实现为:
    Y = BN ( σ (DWConv ( X ) ) + X (3) \bf Y=\text{BN}\left(\sigma\text{(DWConv}\left(\bf X\right)\right)+\bf X \tag{3} Y=BN(σ(DWConv(X))+X(3)
  • 其中 σ \sigma σ是非线性激活函数,BN是批量归一化层,DWConv是深度卷积层。虽然该块被证明是有效的,但在RepMixer中,我们只是重新安排操作并删除非线性激活函数,如下所示:
    Y = DWConv(BN ( X ) ) + X (4) \bf Y=\text{DWConv(BN}(X))+X \tag{4} Y=DWConv(BN(X))+X(4)
  • 我们设计的主要好处是,它可以在推理时重新参数化到单个深度卷积层,如下所示,如图2d所示。
    Y = DWConv ( X ) (5) \bf Y=\text{DWConv}(X) \tag{5} Y=DWConv(X)(5)
  • 第4个 stage 的内部架构如图2 (a) 所示,采用 Attention 来作为 token mixer,可能是为了性能考虑,宁愿不采用结构重参数化,牺牲延时成本,以换取更好的性能。
  • 值得注意的是,每个 Stage 中的 FFN 使用的并不是传统的 FFN 架构,而是如图2(c)所示的,带有大核 7×7 卷积的 ConvFFN 架构。

2.2. Stem 的结构

  • Stem 是整个模型的起点,如图2 (b) 所示,FastViT 的 Stem 在推理时的结构是 3×3 卷积 + 3×3 Depth-wise 卷积 + 1×1 卷积。在训练时分别加上 1×1 分支或者 Identity 分支做结构重参数化。

2.3. Patch Embedding 的架构

  • Patch Embedding 是模型在 Stage 之间过渡的部分,FastViT 的 Patch Embedding 如图2 (a) 所示,在推理时的结构是 7×7 大 Kernel 的 Depth-wise 卷积 + 1×1 卷积。在训练时分别加上 3×3 分支做结构重参数化。

2.4. 位置编码

  • 位置编码使用条件位置编码,它是动态生成的,并以输入 token 的局部邻域为条件。这些编码是由 depth-wise 运算符生成的,并添加到 Patch Embedding 中。

三. 参考文献

  • MobileOne 原班人马打造!FastViT:快速卷积 Transformer 的混合视觉架构
  • 即插即用! | 苹果推出新型网络架构 FastViT: 又快又强又稳,端侧一键部署毫无压力!

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

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

相关文章

【网络层协议】ARP攻击与欺骗常见的手段以及工作原理

个人主页:insist--个人主页​​​​​​ 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、ARP攻击的常见手段 第一种:IP…

ardupilot开发 --- 仿真篇

环境 安装wsl2,win11自带wsl,win10需要安装;git clone ardupilot 源码;安装 Linux下的build环境;安装 flightgear(非必须) sudo apt-get install flightgearbuild 想要仿真的载具类型&#xff…

shell 02(shell变量)

一、shell变量 变量用于存储管理临时的数据, 这些数据都是在运行内存中的。 1.1 变量类型 1.1.1 系统环境变量 是系统提供的共享变量.是linux系统加载Shell的配置文件中定义的变量共享给所有的Shell程序使用 shell的配置文件分类 全局配置文件 /etc/profile /et…

外贸独立站怎么做内容营销?外贸独立站内容营销的步骤e6zzseo

在如今全球化的商业环境下,外贸独立站已成为吸引国际客户、拓展市场份额的重要工具。然而,仅仅拥有一个外贸独立站还不足以保证成功,内容营销在其中扮演着至关重要的角色。本文将介绍如何在外贸独立站上实施内容营销,以及实现有效…

交换的综合实验

目录 ​编辑 一,交换层面的配置 1.channel 2.vlan 3.trunk 二,配置路由 R1 R2 LW1 LW2 三,OSPF 四,能够访问外网操作 一,交换层面的配置 配置顺序 channel vlan trunk stp svi vrrp dhcp 1.channel LW…

用了好几年的IDEA主题及配置,拿去吧不谢。

前言 最近这几年一直用一套IDEA的主题及配置,分享给各位,如果符合你的口味,可以下载了玩玩。 我个人是非常喜欢的,不管是观感还是敲代码都很爽的。 附上一张代码的主题色,大概就是这样子,我个人喜欢清爽的白…

防火墙+路由模式部署

一、防火墙 防火墙最主要功能是提供访问控制能力 防火墙默认管理口为ge0/0(部分型号有专门的MGT口),管理地址为https://192.168.1.250,默认管理口只开启了https和ping。登录防火墙串口,波特率为9600,默认…

Anaconda常用指令

导语 Python是现今较为流行的一门编程语言,解释性强,语法灵活,而且具有强大的函数库,这些函数全部都被封装成一个个的模块(Module),也称作包,所以我们在使用的时候需要进行导入(import),但是所有…

【数据结构】实现带头双向循环链表

目录 前言:一、介绍带头双向循环链表1.带头双向循环链表的结构2.带头双向循环链表的功能 二、实现带头双向循环链表1.创建节点的结构2.函数的声明2.函数的实现(1)创建一个新节点(2)初始化哨兵位(带头&#…

wx原生微信小程序入门常用总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、定义值和修改值1、定义值2、修改值(1)代码(2)代码说明(3)注意点 二、点击事件三、微…

油耳朵适合戴什么类型耳机好,适合油耳的无线耳机推荐

传说中的骨传导耳机,相信大家都不陌生吧!近年来,这种耳机以其不需要插入耳朵、不会堵塞耳道的特点,在耳机圈内迅速崛起。然而,还有一些人对骨传导耳机望而却步,不知道如何选择适合自己的产品。作为一位骨传…

信息管理系统三级等保的一些要求

一、前言 在做一些互联网系统或面向互联网的系统时,需要进行备案,需要满足网络信息安全维护规章及有关规章制度要求,才能发布到互联网。所以在做系统的需求分析时,往往需要把信息管理系统三级等保的需求加上,方便开发…

Effective C++条款09——绝不在构造和析构过程中调用virtual 函数(构造/析构/赋值运算)

本条款开始前我要先阐述重点:你不该在构造函数和析构函数期间调用virtual函数,因为这样的调用不会带来你预想的结果,就算有你也不会高兴。如果你同时也是一位Java或C#程序员,请更加注意本条款,因为这是CH与它们不相同的一个地方。…

斗鱼财报盈利的背后:左手艳舞、右手擦边

本月14日,直播平台斗鱼发布了其第二季度财报,面对“看起来还不错的数据”,其对外着重强调了“连续两个季度实现盈利”,并称“斗鱼收入结构持续优化”“斗鱼盈利能力提升”“斗鱼稳健增长可期”“督导提升了内容审核能力”。 财报…

【C++STL基础入门】深入浅出string类查找字串、返回字串和交换操作

文章目录 前言一、查找字串二、返回字串三、交换字串四、运算符重载总结 前言 本STL使用VS2022C20版本 C标准库(Standard Template Library,简称STL)是C中非常强大和常用的一组容器、算法和函数模板,它能大大简化程序开发和提高…

MySQL高级篇——MySQL架构篇2(MySQL的数据目录)

目录 1 MySQL8的主要目录结构1.1 数据库文件的存放路径1.2 相关命令目录1.3 配置文件目录 2 数据库和文件系统的关系2.1 查看默认数据库2.2 数据库在文件系统中的表示2.3.1 InnoDB存储引擎模式2.3.2 MyISAM存储引擎模式 2.4 总结2.5 视图在文件系统中的表示2.6 其他的文件 1 My…

【Linux】vim编辑器

这一趴我们要学习vim编辑器,知道vim是什么、掌握它的3种模式以及学会其常见操作。 目录 Ⅰ. 引入 Ⅱ. 什么是vim? Ⅲ. 3种模式 Ⅳ. 常见操作 命令模式下 复制粘贴组 撤销组 光标定位组 光标移动组 剪切组 切换、替换组 删除组 底行模式下 …

AI+游戏线下沙龙活动暨COC上海城市开发者社区8月活动

引言 近年来,随着人工智能技术的不断发展和游戏开发技术的不断更新,越来越多的游戏公司开始将人工智能技术应用于游戏领域,以提高开发效率、降低成本,实现游戏玩家更好的游戏体验。为了探讨AI游戏的技术实践经验,近日在…

Spring Cloud Alibaba笔记

😀😀😀创作不易,各位看官点赞收藏. 文章目录 Spring Cloud Alibaba 笔记1、Nacos 服务注册和配置中心1.1、Nacos 之下载启动1.2、Nacos 之注册中心1.3、Nacos 之服务发现1.4、Nacos 之配置中心1.5、Nacos 之分类配置1.6、Nacos 之…

【OpenGauss源码学习 —— 执行算子(Result 算子)】

执行算子(Result 算子) 控制算子Result 算子ExecInitResult 函数ResultState 结构体ExecInitResultTupleSlot 函数ExecAllocTableSlot函数 ExecResult 函数TupleTableSlot 结构体ExecProcNode 函数ExecProcNodeByType 函数ExecProject 函数 ExecEndResul…