网站首页 > 技术文章 正文
我们都知道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
猜你喜欢
- 2024-11-01 ViT再升级!9个视觉transformer最新改进方案让性能飞跃
- 2024-11-01 腾讯 AI Lab 开源世界首款自动化模型压缩框架PocketFlow
- 2024-11-01 速度提200倍,爱奇艺北航提基于耦合知识蒸馏视频显著区域检测算法
- 2024-11-01 ICCV2019 | 港科大、清华与旷视提出元学习的自动化神经剪枝网络
- 2024-11-01 NetAdapt:MobileNetV3用到的自动化网络简化方法 | ECCV 2018
- 2024-11-01 ICLR 2019 | 有限计算资源下“可动态瘦身”的神经网络
- 2024-11-01 新论文|一种新型吸附式无人机检测系统
- 2024-11-01 CVPR 2022 | 升级传统模型量化STE反向求导?CMU,脸书,港科提出新思路
- 2024-11-01 LeNet5那些经典的CNN网络结构到底是从何而来的?
- 2024-11-01 人人都是圣斗士,如何做好移动端动作捕捉特效?
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)