点击上面的计算机视觉车间,选择星标
第一时间送达干货
作者丨ChaucerG
来源集智书童
Vision Transformers
(ViT
) 在计算机视觉任务中取得了快速进展,并在各种基准测试中取得了令人满意的结果。然而,由于基于注意力机制等大量参数和模型设计ViT
的模型通常比轻量级卷积网络慢几倍。因此,应用部署ViT
特别是在移动设备等资源有限的硬件上,具有很大的挑战性。最近的许多工作都试图通过网络架构搜索或与之合作
MobileNet Block
减少混合设计ViT
计算复杂性,但推理速度仍不尽如人意。这就导致了一个重要的问题:Transformer
它能在获得高性能的同时运行吗?MobileNet
一样快?为了回答这个问题,首先基于重新审视
ViT
在模型中使用的网络架构和ViT
算子,并确定其低效的设计。然后介绍了一个相同维度的纯度Transformer
(没有MobileNet Block
)作为设计范式。最后,为了获得一系列最终模型,实施延迟驱动的减肥被称为EfficientFormer
。大量实验表明
EfficientFormer
在移动设备的性能和速度方面具有优势。EfficientFormer-L1
在ImageNet-1K
上实现了 79.2% 的 Top-1 准确率,在iPhone 12
(使用CoreML
只有编译) 1.6 ms 推理延迟甚至比MobileNetV2
(1.7 ms,71.8% Top-1),EfficientFormer-L7
获得了 83.3% 延迟的准确性仅为 7.0 ms。EfficientFormer
正确设计的证明Transformer
在保持高性能的同时,移动设备可以达到极低的延迟。
1简介
最初是自然语言处理 (NLP) 任务设计的 Transformer
结构引入多头自注意力 (MHSA
) 该机制允许网络建模长期依赖关系,易于并行化。在这种情况下,Dosovitskiy 等注意力机制应用于其他人 2D 并提出了图像 Vision Transformer
(ViT
):通过 MHSA 学习块间表示缺乏归纳偏差。
卷积神经网络在计算机视觉任务上 (CNN) 相比,ViT
展示了令人满意的结果。成功后,通过改进训练策略、引入架构变化、重新设计注意力机制、提高各种视觉任务(如分类、分割和测试)的性能,探索 ViT
的潜力。
不利的一面是,Transformer
模型通常比 CNN
慢几倍。限制的因素有很多。 ViT
推理速度,包括大量参数,关于Token
长度二次增加的计算复杂性、不可整合的归一化层和编译级别的缺乏优化(例如,CNN
的 Winograd
)。高延迟使得 Transformer
对于移动设备和可穿戴设备上的增强或虚拟现实应用,资源有限硬件上的实际应用程序是不现实的。因此,轻量级 CNN
仍然是实时推理的默认选择。
为了缓解 Transformer
已经提出了许多延迟瓶颈的方法。例如,一些努力通过改变线性层和卷积层来考虑(Conv)设计新的架构或算子,注意自己 MobileNet Block
结合或引入稀疏的注意力来降低计算成本,而其他努力则使用网络搜索算法或修剪来提高效率。虽然现有的工作已经改善了计算性能的平衡 Transformer
与模型适用性相关的基本问题尚未得到回答:强大的 Vision Transformers
能否以 MobileNet
速度运行并成为边缘应用程序的默认选项?这项工作通过以下贡献研究了答案:
首先,通过延迟分析重新审视
ViT
及其变体的设计原则。现有工作后使用 iPhone12 并作为测试平台使用CoreML
作为编译器;其次,根据分析确定
ViT
中低效的设计和操作符是Vision Transformers
提出了新的尺寸一致设计范式;最后,从新设计范式开始
supernet
一开始,提出了一个简单有效的方法latency-driven slimming
获得新模型族的方法,即EfficientFormers
。直接优化推理速度而不是 MAC 或参数量。
EfficientFormer-L1
在 ImageNet-1K
实现了分类任务 79.2% 的 top-1 准确性,推理时间只是 1.6 ms,与 MobileNetV2
延迟减少了 6%,top-1 准确率提高了 7.4%。有希望的结果表明,延迟不再被广泛使用Vision Transformers
的障碍。
EfficientFormer-L7
实现了 83.3% 延迟的准确性仅为 7.0 ms,大大优于 ViT×MobileNet
混合设计(MobileViT-XS
,74.8%,7.2ms)。
另外,通过使用 EfficientFormer
作为图像检测和分割的基准Backbone
,观察到卓越的性能。对上述问题提供初步答案,ViTs
超快速度超快,性能强。
2Vision Transformers的延迟分析
大多数现有方法通过从服务器 GPU 计算的复杂性 (MAC) 或者优化吞吐量(图像/秒)Transformer
推理速度。虽然这些指标不能反映真正的设备延迟。为了清楚地了解哪些操作和设计选择会减缓边缘设备 ViT
推理,作者对许多模型和操作进行了全面的延迟分析,如图所示 2 由此得出以下观察结果。
:具有大
kernel
和stride
的Patch embedding
是移动设备的速度瓶颈。
Patch embedding
通常使用较大kernel-size
和stride
实现非重叠卷积层。一种常见的观点是,transformer
网络中Patch embedding
计算成本不显著或可以忽略不计。然而,在图中 2 中比较大kernel
和stride
的Patch embedding
模型,即 DeiT-S
和 PoolFormer-s24
,而且没有它的模型,也就是说 LeViT-256
和 EfficientFormer
,表明Patch embedding
相反,移动设备上的速度瓶颈。
大多数编译器不能很好地支持大内核卷积,也不能通过 Winograd
等待现有算法加速。或者,非重叠Patch embedding
可以快速采样卷积stem
取而代之的是,卷积干是由几个硬件高效制成的 3×3 卷积组成。
:对于一致的特征维度
token mixer
选择很重要。MHSA
不一定是速度瓶颈。
基于最近的工作 ViT
将模型扩展到由 MLP
块和未指定的 token mixer
组成的 MetaForme
架构。在构建基于 ViT
的模型时,选择 token mixer
是必不可少的设计选择。选项很多——具有全局感受野的传统 MHSA、更复杂的移位窗口注意力或非参数运算符(如池化)。
这里将比较范围缩小到池化
和 MHSA
这两个 token mixer
,选择前者是因为它的简单性和效率,而后者是为了更好的性能。大多数公共移动编译器目前不支持更复杂的 token mixer
,如移位窗口,因此将它们排除。此外,不使用深度卷积来代替池化,因为模型更专注于在没有轻量级卷积帮助的情况下构建架构。
为了了解这2个 token mixer
的延迟,进行了以下两个比较:
首先,通过比较
PoolFormer-s24
和LeViT-256
,观察到Reshape
操作是LeViT-256
的瓶颈。LeViT-256
的大部分是在 4D 张量上使用 Conv 实现的,在将特征转发到MHSA
时需要频繁的Reshape
操作,因为必须在修补后的 3D 张量上执行注意力(丢弃注意力头的额外维度)。Reshape
的广泛使用限制了LeViT
在移动设备上的速度(图 2)。另一方面,当网络主要由基于 Conv 的实现组成时,池化自然适合 4D 张量,例如,作为 MLP 实现的 Conv 1×1 和用于下采样的 Conv stem。因此,PoolFormer
表现出更快的推理速度。其次,通过比较
DeiT-S
和LeViT-256
发现如果特征尺寸一致且不需要Reshape
,MHSA
不会给手机带来显著的计算开销。尽管计算量更大,但具有一致 3D 特征的DeiT-S
可以实现与新的ViT
变体(即LeViT-256
)相当的速度。
因此在本文的工作中,提出了一个具有 4D 特征实现和 3D MHSA 的维度一致网络,但消除了低效的频繁 Reshape
操作。
观察3
:CONV-BN
比LN-Linear
更利于延迟,并且精度降低通常是可以接受的。
选择 MLP 实现是另一个重要的设计选择。通常,选择以下2个选项之一:使用 3D
线性投影的 层归一化
(LN
)和使用 批量归一化
(BN
) 的 Conv1×1
。Conv-BN
对延迟更有利,因为 BN
可以融合到前面的卷积中以加快推理速度,而 LN
仍然在推理阶段收集运行统计信息,从而导致延迟。根据实验结果和之前的工作,LN
引入的延迟占整个网络延迟的 10%-20% 左右。
根据消融研究,与 LN
相比,Conv-BN
仅略微降低了性能。在这项工作中,尽可能多地应用 Conv-BN
以获得可忽略不计的性能下降的延迟增益,同时将 LN
用于 3D 特征,这与 ViT
中的原始 MHSA
设计一致并且产生更好准确性。
:非线性的延迟取决于硬件和编译器
最后,研究非线性,包括 GeLU
、ReLU
和 HardSwish
。以前的工作表明 GeLU
在硬件上效率不高,并且会减慢推理速度。但是,作者观察到 GeLU
得到 iPhone 12 的良好支持,并且几乎不比其对应的 ReLU
慢。相反,在实验中,HardSwish
的速度出奇地慢,编译器可能无法很好地支持(LeViT-256
的 HardSwish
延迟为 44.5 毫秒,而 GeLU
为 11.9 毫秒)。得出的结论是,非线性应该根据特定硬件和编译器的具体情况逐个确定。在这项工作中,使用了 GeLU
激活。
3EfficientFormer的设计
基于延迟分析,提出了 EfficientFormer
的设计,如图 3 所示。该网络由 patch embedding
(PatchEmbed
) 和meta transformer blocks,
堆栈组成,表示为 MB
:
其中 是输入图像,批大小为 B,空间大小为 [H,W],Y是所需的输出,m是Block
的总数(深度)。MB
由未指定的TokenMixer
和一个MLP Block
组成,可以表示如下:
其中 是转发到第 i 个 MB 的中间特征。进一步将 Stage 定义为处理具有相同空间大小的特征的几个 MetaBlock
的堆栈,例如图 3 中的 表示 S1 具有 个 MetaBlock
。
该网络包括 4 个阶段。在每个阶段中,都有一个嵌入操作来投影嵌入维度和下采样Token
长度,在图 3 中表示为嵌入。在上述架构下,EfficientFormer
是一个完全基于Transformer
的模型,没有集成 MobileNet
结构。
3.1 维度一致的设计
本文提出了一种维度一致的设计,将网络分成一个 4D
分区,其中算子以 ConvNet
样式 (MB4D
) 实现,以及一个 3D
分区,其中线性投影和注意力在 3D
张量上执行,以利用 MHSA
的全局建模能力,而无需牺牲效率(MB3D
),如图3所示。具体来说,网络从4D
分区开始,而3D
分区在最后阶段应用。请注意,图 3 只是一个实例,4D
和 3D
分区的实际长度是稍后通过架构搜索指定的。
首先,使用由具有2个 kernel-size
为3×3, Stride
为 2的卷积组成的 Conv stem
处理后的图像作为 patch embedding
,
其中 是第 j 个阶段的通道数(宽度)。然后网络从 MB4D
开始,使用简单的Pool mixer
来提取 low level
特征,
其中是指卷积后是否分别跟BN
和GeLU
。注意这里没有在Pool mixer
之前使用 Group Normalization
或 Layer Normalization
(LN
),因为 4D
分区是基于 CONV-BN
的设计,因此每个Pool mixer
前面都有一个 BN
。
在处理完所有 MB4D
块后,执行一次Reshape
以变换特征大小并进入 3D
分区。MB3D
遵循传统的 ViT
结构,如图 3 所示。形式上,
其中 表示线性后跟 GeLU
,并且
其中 Q、K、V 表示通过线性投影学习的query
、key
和value
,b 是作为位置编码的参数化注意力偏差。
3.2 延迟驱动Slimming
1、SuperNet的设计
基于维度一致的设计,构建了一个Supernet
,用于搜索图 3 所示网络架构的高效模型(图 3 显示了搜索到的最终网络的示例)。为了表示这样一个Supernet
,定义了 MetaPath
(MP
),它是可能块的集合:
其中 I 表示identity path
,j 表示第 j 个阶段,i 表示第 i 个块。Supernet
可以通过用 MP 代替图 3 中的 MB。
在Supernet
的第1阶段和第2阶段中,每个Block
可以选择 MB4D
或 I,而在第3阶段和第4阶段中,Block
可以是 MB3D
、MB4D
或 I。
本文只在最后两个阶段启用 MB3D
,原因有2个:首先,由于 MHSA 的计算相对于Token
长度呈二次增长,因此在早期集成它会大大增加计算成本。其次,将全局 MHSA 应用于最后阶段符合直觉,即网络的早期阶段捕获低级特征,而后期层则学习长期依赖关系。
2、搜索空间
搜索空间包括 (每个 Stage 的宽度)、(每个 Stage 中的块数,即深度)和最后 N 个要应用 MB3D 的块。
3、搜索算法
以前的硬件感知网络搜索方法通常依赖于每个候选者在搜索空间中的硬件部署来获得延迟,这是非常耗时的。在这项工作中,提出了一种简单、快速但有效的基于梯度的搜索算法,以获得只需要训练一次Supernet
的候选网络。
3.3 模型架构
4实验
4.1 分类实验
4.2 目标检测与语义分割
5参考
[1].EfficientFormer: Vision Transformers at MobileNet Speed
本文仅做学术分享,如有侵权,请联系删文。
后台回复:
后台回复:
后台回复:
1.面向自动驾驶领域的多传感器数据融合技术
2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进4.国内首个面向工业级实战的点云处理课程5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
9.从零搭建一套结构光3D重建系统[理论+源码+实践]
10.单目深度估计方法:算法梳理与代码实现
11.自动驾驶中的深度学习模型部署实战
12.相机模型与标定(单目+双目+鱼眼)
13.重磅!四旋翼飞行器:算法与实战
14.ROS2从入门到精通:理论与实战
15.国内首个3D缺陷检测教程:理论、源码与实战
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在
▲长按加微信群或投稿
▲长按关注公众号
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题