EfficientFormer:高效低延迟的Vision Transformers

news2024/11/22 18:09:56

我们都知道Transformers相对于CNN的架构效率并不高,这导致在一些边缘设备进行推理时延迟会很高,所以这次介绍的论文EfficientFormer号称在准确率不降低的同时可以达到MobileNet的推理速度。

Transformers能否在获得高性能的同时,跑得和MobileNet一样快?为了回答这个问题,作者首先回顾了基于vit的模型中使用的网络架构和运算,并说明了一些低效的设计。然后引入一个维度一致的纯Transformer(没有MobileNet块)作为设计范例。最后以延迟为目标进行优化设计,获得一系列称为EfficientFormer的最终模型。最后还设计了EfficientFormerV2。

延迟分析

作者在论文中发现:

1、内核大、步幅大的补丁嵌入是移动设备上的速度瓶颈。

2、一致的特征维度对于令牌混合器的选择很重要。MHSA不一定是速度瓶颈。

3、convn - bn比LN (GN)-Linear更有利于延迟,对于延迟的降低,精度的小损失是可以接受的。

4、非线性的延迟取决于硬件和编译器。

EfficientFormer整体架构

该网络由补丁嵌入(PatchEmbed)和元Transformer块堆栈组成,表示为MB:

X0为批大小为B,空间大小为[H, W]的输入图像,Y为期望输出,m为块总数(深度)。MB由未指定的令牌混合器(TokenMixer)组成,后跟一个MLP块:

Xi|i>0是第i MB的中间特征。阶段Stage(或S)被定义为几个MetaBlocks的堆栈。该网络包括4个阶段。在每个阶段中,都有一个嵌入操作来投影嵌入维数和下采样令牌长度,表示为嵌入,如上图所示。

也就是说effentformer是一个完全基于transformer的模型,没有集成MobileNet结构。

Dimension-Consistent设计

网络从四维划分开始,后期进行三维划分。首先,输入图像由stem层进行处理,这是两个3 × 3,步幅为2的卷积作为patch嵌入:

其中Cj是第j级的通道号(宽度)。然后网络从MB4D开始,使用简单的Pool mixer提取低级特征:

式中,ConvB,G表示是否有BN和GeLU跟随卷积。在处理完所有MB4D块后,执行一次重塑以转换特征大小并进入3D分区。MB3D使用传统的ViT:

式中,LinearG表示线性后接GeLU, MHSA为:

其中,Q, K, V分别表示查询,键和值,b是参数化的作为位置编码的注意力偏差。

在定义了总体体系结构之后,下一步作者就开始搜索高效的体系结构。

以延迟为目标架构优化

定义了一个搜索高效模型的超级网络MetaPath (MP),它是一些可能块的集合:

其中I表示单位路径。

在网络的S1和S2中,每个区块可以选择MB4D或I,在S3和S4中,每个区块可以选择MB3D、MB4D或I。

在最后两个阶段只启用MB3D的原因有2个:1、由于MHSA的计算相对于令牌长度呈二次增长,因此在早期阶段将其集成将大大增加计算成本。2、网络的早期阶段捕获低级特征,而后期阶段学习长期依赖关系。

搜索空间包括Cj(每个Stage的宽度),Nj(每个Stage的块数,即深度)和最后N个应用MB3D的块。

搜索算法使用Gumbel Softmax采样对超级网络进行训练,以获得每个MP内块的重要性得分:

其中α评估MP中每个块的重要性,因为它表示选择一个块的概率。ε ~ U(0,1)保证探索。对于S1和S2, n∈{4D, I},对于S3和S4, n∈{4D, 3D, I}。

最后通过收集不同宽度的MB4D和MB3D的设备上延迟(16的倍数),构建一个延迟查找表。

也就是说EfficientFormer的架构不是通过人工设计的,而是通过NAS(Neural Architecture Search)搜索出来的。作者通过查找表计算每个动作产生的延迟,并评估每个动作的准确率下降。根据每延迟精度下降(-%/ms)选择动作。这个过程迭代地执行,直到达到目标延迟。(细节见论文附录)

结果展示

ImageNet上与广泛使用的基于cnn的模型相比,EfficientFormer在准确率和延迟之间实现了更好的权衡。

传统的vit在延迟方面仍然表现不佳。EfficientFormer-L3的top-1准确率比PoolFormer-S36高1%,在Nvidia A100 GPU上快3倍,在iPhone NPU上快2.2倍,在iPhone CPU上快6.8倍。

EfficientFormer-L1的Top1精度比MobileViT-XS高4.4%,并且在不同的硬件和编译器上运行得更快。

MS COCO数据集,EfficientFormers的表现始终优于CNN (ResNet)和Transformer (PoolFormer)。

使用ADE20K,在类似的计算预算下,EfficientFormer始终比基于CNN和transformer的主干性能好得多。

论文地址:

EfficientFormer: Vision Transformers at MobileNet Speed

https://avoid.overfit.cn/post/eb0e56c5753942cf8ee70d78e2cd7db7

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

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

相关文章

华为云云耀云服务器 L 实例评测:快速建站的新选择,初创企业和开发者的理想之选

华为云云耀云服务器 L 实例评测:快速建站的新选择,初创企业和开发者的理想之选 文章目录 华为云云耀云服务器 L 实例评测:快速建站的新选择,初创企业和开发者的理想之选导语:摘要: 正文产品概述部署简易性步…

TG Pro for Mac强大的硬件温度检测、风扇控制工具测评

无论您是旧机型还是全新MacBookPro,使用TG Pro均可延长Mac的使用寿命。小编就给大家详细说一下使用TG Pro的体验~ 打开TG Pro,您会注意到的第一件事是带有大量温度,风扇速度和诊断信息的主窗口。 这是您将与之交互的应用程序的主要区域之一。…

[动物文学]走红年轻人化身“精神动物”,这届年轻人不想做人了

数据洞察流行趋势,敏锐把握流量风口。本期千瓜与您分享近期小红书八大热点内容,带您看热点、追热门、借热势,为您提供小红书营销布局风向标。 「动物文学」走红 年轻人化身“精神动物” 其实,这届年轻人“不想做人”很久了………

# 深入理解高并发编程(二)

深入理解高并发编程(二) 文章目录 深入理解高并发编程(二)synchronized作用使用方法示例代码 ReentrantLock概述示例代码ReentrantLock中的方法 ReentrantReadWriteLock介绍特点示例代码 StampedLock示例代码 wait() 和 notify()示…

软件设计模式系列之十六——命令模式

目录 1 模式的定义2 举例说明3 结构4 实现步骤5 代码实现6 典型应用场景7 优缺点8 类似模式9 小结 1 模式的定义 命令模式(Command Pattern)是一种行为型设计模式,旨在将请求发送者和接收者解耦,将一个请求封装为一个对象&#x…

OmniOutliner 5 Pro for Mac(信息大纲记录工具)v5.12正式版 支持M1、M2

OmniOutliner 5 Pro是一款功能强大的大纲工具,可以帮助用户进行头脑风暴、组织思维和创建结构化的笔记。以下是这款软件的一些主要功能和特点: 大纲模式。OmniOutliner 5 Pro支持全屏模式、分屏模式、实时预览模式和导航模式等多种创作模式,…

RT-Thread 自动初始化机制

RT-Thread自动初始化机制 自动初始化机制是指初始化函数不需要被显示调用,只需要在函数定义处通过宏定义的方式进行申明,就会在系统启动过程中被执行。 例如在串口驱动中调用一个宏定义告知系统初始化需要调用的函数,代码如下: …

25814-2010 三聚氯氰 阅读笔记

声明 本文是学习GB-T 25814-2010 三聚氯氰. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了三聚氯氰的要求、采样、试验方法、检验规则以及标志、标签、包装、运输、贮存、安全、 安全技术说明书。 本标准适用于三聚氯氰的产品…

基于springboot+vue的大学生创新创业系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

idea 如何在命令行快速打开项目

背景 在命令行中从git仓库检出项目,如何在该命令行下快速用idea 打开当前项目,类似vscode 可以通过在项目根目录下执行 code . 快速打开当前项目。 步骤 以macos 为例 vim /usr/local/bin/idea 输入如下内容 #!/bin/sh open -na "IntelliJ IDE…

浅谈智能型电动机控制器在斯里兰卡电厂中的应用

摘要:传统的低压电动机保护是通过继电保护二次回路实现,但是我们结合电厂辅助控制设备的特点及其控制要求,推荐ARD2F智能型电动机控制器。以下综合介绍ARD2F智能型电动机控制器产品的特点及其智能化保护、测量、控制和通讯等。 Abstract: Th…

基于微信小程序的校园失物招领系统设计与实现(源码+lw+部署文档+讲解等)

前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻…

PS7软件功能——相位、延迟测量

PicoScope 7 (PS7)软件增添了新的测量功能——测量相位之间的角度和延迟时间(图1)。 注:Phase- 相位;Delay - 延迟。 图1 相位测量 点击“Phase”,选择需要测量的通道,如下图选择的是…

idea 2021.2.3版本中隐藏target和.iml文件问题的解决

一 idea2021.2.3 版本隐藏文件 1.1 问题描述 添加隐藏文件内容后:没有可确定的保存按钮。无法实现添加隐藏文件。 1.2 解决办法 IDEA新建项目会自动生成一个.idea文件夹和.iml文件,开发中不需要对这两个文件修改,所以对以上文件进行隐藏处理…

重要采样的原理与实现

1. 引言 在雷达系统性能仿真时,由于雷达系统对虚警概率的要求,实现一定精度的仿真,所需要的Monte-Carlo实验次数将非常地高。重要采样可以在保障精度的前提下,大大降低Monte-Carlo实验次数。 网上有很多关于重要采样的原理介绍&…

94 # express 兼容老的路由写法

上一节实现了错误处理中间件,这一节来实现兼容老的路由写法 看个 express 的二级路由的例子 const express require("express"); const userRouter require("./routes/userRouter"); const articleRouter require("./routes/articleR…

AIGC: 区块链与数据安全

随着国家将区块链纳入战略发展规划,数字经济蓬勃发展。近年来,数据的流通成为了实体经济赋能的关键,而在这一过程中,区块链技术和数据安全变得至关重要。 中国已经成为全球最大的数据体,每天产生大量数据。数字经济已…

Unity 协程(Coroutine)的原理以及用法

目录 事件函数的执行顺序定义使用yield instruction中的子类 总结 参考链接 :Unity 5分钟基础的了解协程 事件函数的执行顺序 定义 定义:开启一段和主程序异步执行的逻辑异步执行:是指语句在异步执行模式下,各语句执行结束的顺序…

Python异步编程之web框架 异步vs同步 文件IO任务压测对比

主题:比较异步框架和同步框架在文件IO操作的性能差异python版本:python 3.8压测工具:locustweb框架:同步:flask 异步:aiohttp、starlette异步文件模块:aiofiles、anyio.Path请求并发量: 模拟10个…

EPICS sequencer状态机示例

状态机源代码: #define PVSYS "pvsysca" #define LIGHT "{prefix}:light" #define LIGHTON "{prefix}:lightOn" #define LIGHTOFF "{prefix}:lightOff" #define VOLTAGE "{prefix}:voltage" #define LO…