FastViT: A Fast Hybrid Vision Transformer using Structural Reparameterization

news2024/11/14 16:32:06

FastViT: A Fast Hybrid Vision Transformer using Structural Reparameterization

论文地址:https://arxiv.org/pdf/2303.14189.pdf


概述

本文提出了一种通用的 CNN 和 Transformer 混合的视觉基础模型

移动设备和 ImageNet 数据集上的精度相同的前提下,FastViT 比 CMT 快3.5倍,比 EfficientNet 快4.9倍,比 ConvNeXt 快1.9倍

本文是 MobileOne 原班人马打造,可以看做是 MobileOne 的方法在 Transformer 上的一个改进型的应用

作者取名 FastViT,是一种 CNN,Transformer 混合架构的低延时模型

作者引入了一种新的 token mixer,叫做 RepMixer,它使用结构重新参数化技术,通过删除网络中的 Shortcut 来降低内存访问成本

进一步使用大核卷积使得 FastViT 精度得到提升,而且不怎么影响延时

在移动设备和 ImageNet 数据集上的精度相同的前提下,FastViT 比 CMT 快3.5倍,比 EfficientNet 快4.9倍,比 ConvNeXt 快1.9倍

在类似的延迟下,FastViT 在 ImageNet 上获得的 Top-1 准确率比 MobileOne 高 4.2%,是一种极具竞争力的混合架构模型


背景

本文的目标是做一个卷积,Attention 的低延时混合架构

因为这种架构有效地结合了 CNN 和 Transformer 的优势,在多个视觉任务上有竞争力

本文的目标是建立一个模型,实现 SOTA 的精度-延时 Trade-off

像 CMT,LIT等 CNN 和 Transformer 混合架构的模型都遵循 MetaFormer的架构

它由带有 skip-connection 的 token mixer 和带有 skip-connection 的前馈网络 (Feed Forward Network) 组成

由于增加了内存访问成本 (memory access cost),这些跳过连接在延迟方面占了很大的开销

为了解决这个延迟开销,本文提出 RepMixer,这是一个完全可以重参数化的混合器

它的特点有:

  1. 是使用结构重参数化来删除 skip-connection
  2. 在训练期间为主要的层添加一些过参数化的额外的分支,以在训练时提升模型的精度,在推理时全部消除
  3. 在网络中使用了大核卷积在前几个阶段替换掉 Self-Attention

具体是在前馈网络 (FFN) 层和 Patch Embedding 层中加入了大核卷积

这些更改对模型的总体延迟影响很小,同时提高了性能

对于性能这块作者在 iPhone 12 Pro 设备和 NVIDIA RTX-2080Ti desktop GPU 上进行了详尽的分析
在这里插入图片描述
可以看到在两种设备上,FastViT 都实现了最佳的精度-延时的权衡


FastViT 模型架构

在这里插入图片描述
Stage 的内部架构

FastViT 采用了4个 stage 的架构,每个 stage 相对于前一个的分辨率减半,通道数加倍。前3个 stage 的内部架构是一样的

第4个 stage采用 Attention 来作为 token mixer,可能是为了性能考虑,宁愿不采用结构重参数化,牺牲延时成本,以换取更好的性能

值得注意的是,每个 Stage 中的 FFN 使用的并不是传统的 FFN 架构,而是带有大核 7×7 卷积的 ConvFFN 架构

Stem 的结构

Stem 是整个模型的起点,FastViT 的 Stem 在推理时的结构是 3×3 卷积 + 3×3 Depth-wise 卷积 + 1×1 卷积

在训练时分别加上 1×1 分支或者 Identity 分支做结构重参数化

Patch Embedding 的架构

Patch Embedding 是模型在 Stage 之间过渡的部分

FastViT 的 Patch Embedding 在推理时的结构是 7×7 大 Kernel 的 Depth-wise 卷积 + 1×1 卷积

在训练时分别加上 3×3 分支做结构重参数化

位置编码

位置编码使用条件位置编码,它是动态生成的,并以输入 token 的局部邻域为条件

这些编码是由 depth-wise 运算符生成的,并添加到 Patch Embedding 中


RepMixer 的延时优势

作者对比了 RepMixer 和高效的 Pooling 操作的延时情况

架构使用的是 MetaFormer S12,大概有 1.8 GFLOPs

在 iPhone 12 Pro 移动设备上为从 224×224 到 1024×1024 的各种输入分辨率的模型计时

可以看到 RepMixer 明显优于 Pooling,尤其是在较高分辨率的时候

在分辨率为 384×384 时,使用 RepMixer 可以降低 25.1% 的延迟,而在分辨率为 1024×1024 时

使用 RepMixer 可以降低 43.9% 的延迟

在这里插入图片描述


FastViT 的大核卷积

RepMixer 的感受野是局部的

我们知道 Self-Attention 操作的感受野是全局的,但是 Self-Attention 操作计算量昂贵

因此之前有工作说使用大核卷积可以在计算量得到控制的情况下有效增加感受野的大小

FastViT 在两个位置引入了大核卷积,分别是 Patch Embedding 层和 FFN

将 V5 与 V3 进行比较,模型大小增加了 11.2%,延迟增加了 2.3 倍,而 Top-1 精度的增益相对较小,只有 0.4%

说明使用大核卷积来替换 Self-Attention 是一种高效,节约延时的方式

V2 比 V4 大 20%,延时比 V4 高 7.1%,同时在 ImageNet 上获得相似的 Top-1 精度
在这里插入图片描述

随着感受野的增加,大核卷积也有助于提高模型的鲁棒性,FastViT 各种模型的超参数配置如下

在这里插入图片描述


ImageNet-1K 图像分类实验结果

对于 iPhone 设备延时的测量,作者使用 Core ML Tools (v6.0) 导出模型,并在带有 iOS 16 的 iPhone12 Pro Max 上运行

并将所有模型的 Batch Size 大小设置为1

对于 GPU延时的测量,作者把模型导出为 TensorRT (v8.0.1.6) 格式,并在 NVIDIA RTX-2080Ti 上运行

Batch Size 大小为8,报告100次运行的中位数

与 SOTA 模型的性能比较

本文的 FastViT 实现了最佳的精度-延时均衡

比如 FastViT-S12 在 iPhone 12 Pro 上比 MobileOne-S4 快 26.3%,GPU 上快 26.9%

在 83.9% 的 Top-1 精度下,FastViT-MA36 比 iPhone 12 Pro 上优化的 ConvNeXt-B 模型快 1.9倍, GPU上快2.0倍
在这里插入图片描述


知识蒸馏实验结果

FastViT 作为学生模型的知识蒸馏实验结果

作者遵循 DeiT 中的实验设置,RegNet16GF 作为教师模型,使用 Hard Distillation

其中教师的输出设置为 true label,一共训练300个 Epochs

FastViT 优于最近最先进的模型 EfficientFormer

FastViT-SA24 的性能与 EfficientFormer-L7 相似,但参数少3.8倍,FLOPs 少2.7倍,延迟低2.7倍

在这里插入图片描述


目标检测和语义分割实验结果

对于语义分割,作者在 ADE20k 上验证了模型的性能语义分割模型头使用的是 Semantic FPN

所有的模型都是用预先训练好的对应图像分类模型的权重进行初始化

在 512×512 的设置上估计 FLOPs 和延迟

由于输入图像的分辨率较高,在表9和表10中,GPU 延迟在测量时使用了大小为2的 Batch Size

作者将 FastViT 与最近的工作进行了比较

FastViT-MA36 的 mIoU 比 PoolFormer-M36 高 5.2%,但是 PoolFormer 具有更高的 FLOPs、参数量和延迟

在这里插入图片描述
目标检测和实例分割实验实验 MS-COCO 数据集

所有模型都使用 Mask-RCNN 目标检测和实例分割头按照 1x schedule 进行训练

所有的模型都是用预先训练好的对应图像分类模型的权重进行初始化

结果显示出 FastViT 在多种延迟机制下实现了最先进的性能

FastViT-MA36 模型的性能与 CMT-S 相似,但在桌面GPU 和移动设备上分别快2.4倍和4.3倍

在这里插入图片描述


总结

本文提出了一种通用的 CNN 和 Transformer 混合的视觉基础模型,是由 MobileOne 原班人马打造

可以看做是 MobileOne 的方法在 Transformer 上的一个改进型的应用

作者引入了一种新的 token mixer,叫做 RepMixer,它使用结构重新参数化技术

通过删除网络中的 Shortcut 来降低内存访问成本,尤其是在较高分辨率时

作者还提出了进一步的架构更改,以提高 ImageNet 分类任务和其他下游任务的性能

在移动设备和 ImageNet 数据集上的精度相同的前提下,FastViT 比 CMT 快3.5倍,比 EfficientNet 快4.9倍,比 ConvNeXt 快1.9倍

在类似的延迟下,FastViT 在 ImageNet 上获得的 Top-1 准确率比 MobileOne 高 4.2%,是一种极具竞争力的混合架构模型


参考文献

  1. https://arxiv.org/pdf/2303.14189.pdf
  2. https://arxiv.org/pdf/2107.06263.pdf
  3. https://arxiv.org/pdf/2105.14217.pdf
  4. https://arxiv.org/pdf/2105.14217.pdf
  5. https://mp.weixin.qq.com/s/uqcWy4sx1NQuqOplsGDUlg

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

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

相关文章

SpringBoot自动配置原理分析

前言: 虽然工作中一直使用的是自研的一款基于spring的框架,但是随着springboot在各公司的广泛使用,公司的一些新项目也开始逐渐使用springBoot了,那么springBoot的一些特性就要仔细学习一下了。 什么是自动配置? 还记…

【牛客刷题专栏】0x21:JZ20 表示数值的字符串(C语言编程题)

前言 个人推荐在牛客网刷题(点击可以跳转),它登陆后会保存刷题记录进度,重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏:个人CSDN牛客刷题专栏。 题目来自:牛客/题库 / 在线编程 / 剑指offer: 目录 前言问…

Voice Control for ChatGPT 轻松实现使用语音与ChatGPT进行对话。

缘由 日常生活中,我们与亲人朋友沟通交流一般都是喜欢语音的形式来完成的,毕竟相对于文字来说语音就不会显的那么的苍白无力,同时最大的好处就是能解放我们的双手吧,能更快实现两者间的对话,沟通便更高效了。Voice Co…

【瑞吉外卖】002 -- 后台登录功能开发

本文章为对 黑马程序员Java项目实战《瑞吉外卖》的学习记录 目录 一、需求分析 1、页面原型展示 2、登录页面展示 3、查看登录请求信息 4、数据模型 二、代码开发 1、创建实体类Employee,和employee表进行映射 2、创建包结构:(Controller、Se…

基于TCP协议的Socket通信

上节中我们给大家接触了Socket的一些基本概念以及使用方法,相信大家对Socket已经有了初步的掌握。本节我们学习使用Socket来实现大文件的断点续传!在这里我们以他人的案例进行讲解,这是别人写好的一个Socket上传大文件的例子,不要…

TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:6~11

原文:Mobile Deep Learning with TensorFlow Lite, ML Kit and Flutter 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的…

MySQL(表的增删改查)

文章目录 0. 前言1. Create1.1 单行数据 全列插入1.2 多行数据 指定列插入1.3 插入否则更新1.4 替换 2. Retrieve2.1 SELECT 列2.1.1 全列查询2.1.2 指定列查询2.1.3 查询字段为表达式2.1.4 为查询结果指定别名2.1.5 结果去重 2.2 WHERE 条件2.2.1 英语不及格的同学及英语成绩…

【消息队列】聊一下Kafka多线程消费实例

Kafka Java Consumer设计原理 目前市面上大多数计算机都采用多核CPU来提升系统的处理性能,但是如果在程序开发层面使用单线程的话,那么必定不能完全发挥出系统的真实性能,而kafka Consumer就是单线程的。而这个只是针对于消费消息这个层面来…

【AI热点技术】ChatGPT开源替代品——LLaMA系列之「羊驼家族」

ChatGPT开源替代品——LLaMA系列之「羊驼家族」 1. Alpaca2. Vicuna3. Koala4. ChatLLaMA5. FreedomGPT6. ColossalChat完整的 ChatGPT 克隆解决方案中英双语训练数据集完整的RLHF管线 相关链接 现在如果问什么最火,很多人第一反应肯定就是ChatGPT。的确&#xff0c…

Redis集群模式下使用config set 命令所有节点都会生效吗?

Redis集群模式下使用config set 命令所有节点都会生效吗? 问题: Redis集群模式下使用config set 命令所有节点都会生效吗? 实践检验真理: 前置准备 Redis版本:5.0.5版本 Redis集群模式:三主三从 操作步骤: 分别连接7001节点与7002节点,准备在7001节点使用”config get”…

交友项目【查询好友动态,查询推荐动态】实现

目录 1:圈子 1.1:查询好友动态 1.1.1:接口分析 1.1.2:流程分析 1.1.2:代码实现 1.2:查询推荐动态 1.2.1:接口分析 1.2.2:流程分析 1.2.3:代码实现 1&#xff1a…

Python教程:如何用PIL将图片转换为ASCII艺术

Python教程:如何用PIL将图片转换为ASCII艺术 ASCII 艺术是一种将图像转换为由字符组成的艺术形式。Python 是一种灵活而强大的编程语言,可以使用它来将图片转换为 ASCII 艺术。本文将介绍如何使用 Python 和 PIL 库来实现这一功能。 文末有完整代码 效…

数学建模第一天:数学建模先导课之MATLAB的入门

目录 一、MATLAB的简介 二、Matlab基础知识 1. 变量 ①命名规则 ②特殊变量名 2、数学符号与函数调用 ①符号 ②数学函数 ③自定义函数 三、数组与矩阵 1、数组 ①创建数组 ②访问数组元素 ③数组运算 2、矩阵 ①定义 ②特殊矩阵 ③矩阵运算 四、控制流 …

若依项目springcloud启动

若依项目springcloud启动 参考:http://doc.ruoyi.vip/ruoyi-cloud/document/hjbs.html 1、概述 1.1、学习前提 熟练使用springboot相关技术了解springcloud相关技术电脑配置可以支持 1.2、需要的配置 JDK > 1.8 (推荐1.8版本) Mysql > 5.7.0 (推荐5.7版…

若依数据隔离 ${params.dataScope} 替换 优化为sql 替换

若依数据隔离 ${params.dataScope} 替换 优化为sql 替换 安全问题:有风险的SQL查询:MyBatis解决 若依框架的数据隔离是通过 ${params.dataScope} 实现的 但是在代码安全扫描的时候$ 符会提示有风险的SQL查询:MyBatis 所以我们这里需要进行优化参考: M…

凌恩生物文献分享|IF31.316→一网打尽与婴儿疾病相关的病毒组研究

期刊:Cell Host & Microbe 影响因子:31.316 发表时间:2022年4月 研究团队:清华大学医学院梁冠翔课题组与宾夕法尼亚大学医学院Frederic Bushman课题组 一、研究背景 已知微生物为人类提供营养物质和代谢物&…

AD、PADS、Cadence各有什么优势?

读者中有很大一部分是电子工程师,先想问下大家:你们画PCB常用什么软件? **函第一的AD? 还是最贵Cadence(Allegro)? 看到有读者在问:AD、PADS、Cadence各有什么优势? 这里就简单分…

一文吃透Java线程池——实现机制篇

前言 本篇博客是《一文吃透Java线程池》系列博客的下半部分。 上半部分链接:一文吃透Java线程池——基础篇 实现机制(源码解析) 根据前面的学习,我们知道,线程池是如下的运作机制 解析: 一开始&#…

Flutter插件开发-(进阶篇)

一、概述 Flutter也有自己的Dart Packages仓库。插件的开发和复用能够提高开发效率,降低工程的耦合度,像网络请求(http)、用户授权(permission_handler)等客户端开发常用的功能模块,我们只需要引入对应插件就可以为项目快速集成相关能力&…

2023-04-15 学习记录--C/C++-mac vscode配置并运行C/C++

mac vscode配置并运行C/C 一、vscode安装 ⭐️ 去官网下载安装mac版的vscode。 二、vscode配置 ⭐️ (一)、安装C/C扩展插件及必装好用插件 1、点击左边的 图标(扩展: 商店),如下图: 2、先安装 C/C、C/CExtension Pack插件&…