【AI系统】Transformer 模型小型化

Transformer 模型小型化

自 Vision Transformer 出现之后,人们发现 Transformer 也可以应用在计算机视觉领域,并且效果还是非常不错的。但是基于 Transformer 的网络模型通常具有数十亿或数百亿个参数,这使得它们的模型文件非常大,不仅占用大量存储空间,而且在训练和部署过程中也需要更多的计算资源。所以在本文中会介绍关于 Transformer 一些轻量化工作。

MobileVit 系列

MobileVit V1

MobileVit V1 :MobileViT 是一种基于 ViT(Vision Transformer)架构的轻量级视觉模型,旨在适用于移动设备和嵌入式系统。ViT 是一种非常成功的神经网络模型,用于图像分类和其他计算机视觉任务,但通常需要大量的计算资源和参数。MobileViT 的目标是在保持高性能的同时,减少模型的大小和计算需求,以便在移动设备上运行,据作者介绍,这是第一次基于轻量级 CNN 网络性能的轻量级 ViT 工作,性能 SOTA。性能优于 MobileNetV3、CrossviT 等网络。

Mobile ViT 块

标准卷积涉及三个操作:展开+局部处理+折叠,利用 Transformer 将卷积中的局部建模替换为全局建模,这使得 MobileViT 具有 CNN 和 ViT 的性质。MobileViT Block 如下图所示:

在这里插入图片描述

从上面的模型可以看出,首先将特征图通过一个卷积层,卷积核大小为 n × n n\times n n×n,然后再通过一个卷积核大小为 1 × 1 1\times 1 1×1 的卷积层进行通道调整,接着依次通过 Unfold、Transformer、Fold 结构进行全局特征建模,然后再通过一个卷积核大小为 1 × 1 1\times 1 1×1 的卷积层将通道调整为原始大小,接着通过 shortcut 捷径分支与原始输入特征图按通道 concat 拼接,最后再通过一个卷积核大小为 n × n n\times n n×n 的卷积层进行特征融合得到最终的输出。

多尺度采样训练

给定一系列排序的空间分辨率 S = ( H 1 , W 1 ) , ⋅ ⋅ ⋅ , ( H n , W n ) S = {(H_{1}, W_{1}), ··· , (H_{n}, W_{n})} S=(H1,W1),⋅⋅⋅,(Hn,Wn),最大空间分辨率有最小的 batch,加快优化更新;在每个 GPU 第 t 次迭代中随机抽样一个空间分辨率,然后计算迭代大小;相较于以前多尺度采样,这次它不需要自己每隔几个 iteration 微调得到新的空间分辨率,并且改变 batch 提高了训练速度;使用多 GPU 进行训练(我猜不同空间分辨率在不同的 GPU 上运行)这个可以提高网络的泛化能力,减少训练和验证之间差距;并且适用于其他网络训练。

在这里插入图片描述

MobileFormer 系列

MobileFormer

MobileFormer:一种通过双线桥将 MobileNet 和 Transformer 并行的结构。这种方式融合了 MobileNet 局部性表达能力和 Transformer 全局表达能力的优点,这个桥能将局部性和全局性双向融合。和现有 Transformer 不同,Mobile-Former 使用很少的 tokens(例如 6 个或者更少)随机初始化学习全局先验,计算量更小。

并行结构

Mobile-Former 将 MobileNet 和 Transformer 并行化,并通过双向交叉注意力连接(下见图)。Mobile(指 MobileNet)采用图像作为输入( X ∈ R H W × 3 X\in R^{HW \times 3} XRHW×3),并应用反向瓶颈块提取局部特征。Former(指 Transformers)将可学习的参数(或 tokens)作为输入,表示为 Z ∈ R M × d Z\in R^{M\times d} ZRM×d,其中 M 和 d 分别是 tokens 的数量和维度,这些 tokens 随机初始化。与视觉 Transformer(ViT)不同,其中 tokens 将局部图像 patch 线性化,Former 的 tokens 明显较少(M≤6),每个代表图像的全局先验知识。这使得计算成本大大降低。

在这里插入图片描述

低成本双线桥

Mobile 和 Former 通过双线桥将局部和全局特征双向融合。这两个方向分别表示为 Mobile→Former 和 Mobile←Former。我们提出了一种轻量级的交叉注意力模型,其中映射( W Q W^{Q} WQ, W K W^{K} WK, W V W^{V} WV)从 Mobile 中移除,以节省计算,但在 Former 中保留。在通道数较少的 Mobile 瓶颈处计算交叉注意力。具体而言,从局部特征图 X 到全局 tokens Z 的轻量级交叉注意力计算如下:

A X − > Z = [ A t t n ( z i ~ W i Q , x i ~ , x i ~ ) ] i = 1 : h W o (1) A_{X->Z} = [Attn(\widetilde{z_{i}}W_{i}^{Q},\widetilde{x_{i}},\widetilde{x_{i}})]_{i=1:h}W^{o}\tag{1} AX>Z=[Attn(zi WiQ,xi ,xi )]i=1:hWo(1)

其中局部特征 X 和全局 tokens Z 被拆分进入 h 个头,即 X = [ x 1 ~ . . . x h ~ ] , Z = [ z 1 ~ . . . z h ~ ] X=[\widetilde{x_{1}}...\widetilde{x_{h}}],Z=[\widetilde{z_{1}}...\widetilde{z_{h}}] X=[x1 ...xh ],Z=[z1 ...zh ] 表示多头注意力。第 i 个头的拆分 z 1 ~ ∈ R M × d h \widetilde{z_{1}}\in R^{M \times \frac {d}{h} } z1 RM×hd 与第 i 个 token z 1 ~ ∈ R d \widetilde{z_{1}}\in R^{d} z1 Rd 不同。 W i Q W_{i}^{Q} WiQ 是第 i 个头的查询映射矩阵。 W O W^{O} WO 用于将多个头组合在一起。Attn(Q,K,V)是查询 Q、键 K 和值 V 的标准注意力函数,即 :

s o f t m a x ( Q K T d k ) softmax(\frac{QK^{T}}{\sqrt{d_{k}}}) softmax(dk QKT)
其中 [ . ] 1 : h [.]_{1:h} [.]1:h 表示将 h 个元素 concat 到一起。需要注意的是,键和值的映射矩阵从 Mobile 中移除,而查询的映射矩阵 W i Q W_{i}^{Q} WiQ 在 Former 中保留。类似地从全局到局部的交叉注意力计算如下:
A Z − > X = [ A t t n ( x i ~ , z i ~ ⊙ W i K , z i ~ ⊙ W i V ) ] i = 1 : h (2) A_{Z->X} = [Attn(\widetilde{x_{i}},\widetilde{z_{i}}\odot W_{i}^{K},\widetilde{z_{i}}\odot W_{i}^{V})]_{i=1:h}\tag{2} AZ>X=[Attn(xi ,zi WiK,zi WiV)]i=1:h(2)

其中 W i K W_{i}^{K} WiK W i V W_{i}^{V} WiV 分别是 Former 中键和值的映射矩阵。而查询的映射矩阵从 Mobile 中移除。

Mobile-Former 块

Mobile-Former 由 Mobile-Former 块组成。每个块包含四部分:Mobile 子块、Former 子块以及双向交叉注意力 Mobile←Former 和 Mobile→Former(如下图所示)。

在这里插入图片描述

输入和输出:Mobile-Former 块有两个输入:(a) 局部特征图 X ∈ R H W × C X\in R^{HW\times C} XRHW×C,为 C 通道、高度 H 和宽度 W,以及(b) 全局 tokens Z ∈ R M × d Z\in R^{M\times d} ZRM×d,其中 M 和 d 是分别是 tokens 的数量和维度,M 和 d 在所有块中一样。Mobile-Former 块输出更新的局部特征图 X X X 和全局 tokens Z Z Z,用作下一个块的输入。

Mobile 子块:如上图所示,Mobile 子块将特征图 X X X 作为输入,并将其输出作为 Mobile←Former 的输入。这和反向瓶颈块略有不同,其用动态 ReLU 替换 ReLU 作为激活函数。不同于原始的动态 ReLU,在平均池化特征图上应用两个 MLP 以生成参数。我们从 Former 的第一个全局 tokens 的输出 z 1 ′ z'_{1} z1 应用两个 MLP 层(上图中的θ)保存平均池化。其中所有块的 depth-wise 卷积的核大小为 3×3。

EfficientFormer 系列

EfficientFormer V1

EfficientFormer V1:基于 ViT 的模型中使用的网络架构和具体的算子,找到端侧低效的原因。然后引入了维度一致的 Transformer Block 作为设计范式。最后,通过网络模型搜索获得不同系列的模型 —— EfficientFormer。

EfficientFormer 结构

在这里插入图片描述

基于延迟分析,作者提出了 EfficientFormer 的设计,如上图所示。该网络由 patch 嵌入(PatchEmbed)和 meta transformer 块堆栈组成,表示为 MB:
y = ∏ i m M B i ( P a t c h E m b e d ( X 0 B , 3 , H , W ) ) y = \prod_{i}^{m}MB_{i}(PatchEmbed(X_{0}^{B,3,H,W})) y=imMBi(PatchEmbed(X0B,3,H,W))

其中 X 0 X_{0} X0 是 Batch 大小为 B、空间大小为 [ H , W ] [H,W] [HW] 的输入图像, y y y 是所需输出, m m m 是块的总数(深度)。 M B MB MB 由未指定的 token 混合器(TokenMixer)和一个 MLP 块组成,可以表示为:

X i + 1 = M B i ( X i ) = M L P ( T o k e n M i x e r ( X i ) ) X_{i+1} = MB_{i}(X_{i})=MLP(TokenMixer(X_{i})) Xi+1=MBi(Xi)=MLP(TokenMixer(Xi))

其中, X i ∣ i > 0 X_{i|i>0} Xii>0 是输入到第 i i i M B MB MB 的中间特征。作者进一步将 Stage(或 S)定义为多个 MetaBlocks 的堆栈,这些 MetaBlocks 处理具有相同空间大小的特征,如上图中的 N 1 × N1× N1× 表示 S 1 S1 S1 具有 N 1 N1 N1 个 MetaBlocks。该网络包括 4 个阶段。在每个阶段中,都有一个嵌入操作来投影嵌入维度和下采样 token 长度,如上图所示。在上述架构中,EfficientFormer 是一个完全基于 Transformer 的模型,无需集成 MobileNet 结构。接下来,作者深入研究了网络设计的细节。

Dimension-consistent Design

作者提出了一种维度一致性设计,该设计将网络分割为 4D 分区,其中操作符以卷积网络样式实现(MB4D),以及一个 3D 分区,其中线性投影和注意力在 3D 张量上执行,以在不牺牲效率的情况下享受 MHSA 的全局建模能力(MB3D),如上图所示。具体来说,网络从 4D 分区开始,而 3D 分区应用于最后阶段。注意,上图只是一个实例,4D 和 3D 分区的实际长度稍后通过架构搜索指定。

首先,输入图像由一个具有两个步长为 2,感受野为 3×3 卷积的 Conv stem 处理:

X 1 B , C j ∣ j = 1 , H 4 , W 4 = P a t c h E m b e d ( X 0 B , 3 , H , W ) X_{1}^{B,C_{j|j=1,\frac{H}{4},\frac{W}{4}}} = PatchEmbed(X_{0}^{B,3,H,W}) X1B,Cjj=1,4H,4W=PatchEmbed(X0B,3,H,W)

其中, C j C_{j} Cj 是第 j 级的通道数量。然后,网络从 MB4D 开始,使用一个简单的池化混合器来提取低级特征:

I i = P o o l ( X i B , C , H 2 j + 1 , W 2 j + 1 ) + X i B , C , H 2 j + 1 , W 2 j + 1 I_{i} = Pool(X_{i}^{B,C,\frac{H}{2^{j+1}},\frac{W}{2^{j+1}}})+X_{i}^{B,C,\frac{H}{2^{j+1}},\frac{W}{2^{j+1}}} Ii=Pool(XiB,C,2j+1H,2j+1W)+XiB,C,2j+1H,2j+1W

X i + 1 B , C , H 2 j + 1 , W 2 j + 1 = C o n v B ( C o n v B , G ( I i ) ) + I i X_{i+1}^{B,C,\frac{H}{2^{j+1}},\frac{W}{2^{j+1}}}=Conv_{B}(Conv_{B,G(I_{i}))}+I_{i} Xi+1B,C,2j+1H,2j+1W=ConvB(ConvB,G(Ii))+Ii

其中, C o n v B , G Conv_{B,G} ConvB,G 表示卷积后分别接 BN 和 GeLU。注意,这里作者没有在池化混合器之前使用 LN,因为 4D 分区是基于 CONV-BN 的设计,因此每个池化混合器前面都有一个 BN。

在处理完所有 MB4D 块后,作者执行一次 reshape 以变换特征大小并进入 3D 分区。MB3D 遵循传统 ViT 结构,如上图所示:

I i = L i n e a r ( M H S A ( L i n e a r ( L N ( X i B , H W 4 j + 1 , C j ) ) ) ) + X i B , H W 4 j + 1 , C j I_{i} = Linear(MHSA(Linear(LN(X_{i}^{B,\frac{HW}{4^{j+1}},C_{j}}))))+X_{i}^{B,\frac{HW}{4^{j+1}},C_{j}} Ii=Linear(MHSA(Linear(LN(XiB,4j+1HW,Cj))))+XiB,4j+1HW,Cj

X i + 1 B , H W 4 j + 1 , C j = L i n e a r ( L i n e a r G ( L N ( I i ) ) ) + I i X_{i+1}^{B,\frac{HW}{4^{j+1}},C_{j}} = Linear(Linear_{G}(LN(I_{i})))+I_{i} Xi+1B,4j+1HW,Cj=Linear(LinearG(LN(Ii)))+Ii

其中, L i n e a r G Linear_{G} LinearG 表示线性,后跟 GeLU。

M H S A ( Q , K , V ) = S o f t a m a x ( Q ⊙ K T C j ) . V MHSA(Q,K,V) = Softamax(\frac{Q\odot K^{T}}{\sqrt{C_{j}}}). V MHSA(Q,K,V)=Softamax(Cj QKT).V

其中 Q、K、V 表示通过线性投影学习的查询、键和值,b 表示作为位置编码的参数化注意力 bias。

如果您想了解更多AI知识,与AI专业人士交流,请立即访问昇腾社区官方网站或者深入研读《AI系统:原理与架构》一书,这里汇聚了海量的AI学习资源和实践课程,为您的AI技术成长提供强劲动力。不仅如此,您还有机会投身于全国昇腾AI创新大赛和昇腾AI开发者创享日等盛事,发现AI世界的无限奥秘~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

hhdb数据库介绍(10-43)

安全 密码安全管理 密码安全管理为用户提供了对计算节点数据库用户与存储节点的连接用户、备份用户的密码有效期监控提醒。到期后自动提示用户修改密码以提升系统的安全性。 数据库用户密码 (一)密码修改 用户可以在“安全->密码安全管理->数据…

MagicAnimate 技术浅析(五):视频融合策略浅析

视频融合策略(Video Fusion Strategy)是 MagicAnimate 中用于处理长视频动画生成的关键组件。它通过将长视频分解为多个重叠的片段,并在推理过程中对重叠帧的预测结果进行融合,确保生成的长视频动画在时间上平滑过渡,避…

【SNIP】《An Analysis of Scale Invariance in Object Detection – SNIP》

CVPR-2018 Singh B, Davis L S. An analysis of scale invariance in object detection snip[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 3578-3587. https://github.com/bharatsingh430/snip?tabreadme-ov-file 文章目录 …

GPS周和周内秒 UTC时 格林尼治时间

1.GPS周和周内秒介绍 GPS周和周内秒是全球定位系统(GPS)中用于时间表示的两个重要概念,它们共同构成了GPS时间系统。以下是对这两个概念的详细介绍: GPS周(GPS Week) GPS周是GPS系统内部所采用的时间单位…

探索JavaScript数组API:提升你的编程效率

大家好,今天我们来聊聊JavaScript中数组的常用API。数组是JavaScript中非常重要的一种数据结构,掌握数组的API对于提高编程效率具有重要意义。以下是一些实用的JavaScript数组API,让我们一起来看看吧! 一、创建数组 1、使用Arra…

PHP Paypal支付restful API接口集成插件教程

最近在做一个PHP外贸独立站,想集成PayPal在线支付,于是就想把PayPal做成一个插件。下面就教大家如何一步步来开发PayPal整个流程,有需要的朋友点赞收藏,或下载本插件代码参考。 Paypal接口申请 必须是企业认证的帐号才能申请在…

Visual Studio开发lua脚本环境搭建

在Visual Studio上开发lua脚本环境搭建 1、下载lua的jdk安装,以及环境变量配置 下载LuaForWindows_v5.1.5-52.exe安装, 安装好之后,检查是否路径自动。 下载地址: https://github.com/rjpcomputing/luaforwindows/releases (1…

MySQL 性能优化详解

MySQL 性能优化详解 硬件升级系统配置优化调整buffer_pool数据预热降低日志的磁盘落盘 表结构设计优化SQL语句及索引优化SQL优化实战案例 MySQL性能优化我们可以从以下四个维度考虑:硬件升级、系统配置、表结构设计、SQL语句和索引。 从成本上来说:硬件升…

智已汽车x-signature 登录算法 签到

智已汽车x-signature 登录算法 签到 python代码成品

Android 使用 Canvas 和 Paint 实现圆角图片

学习笔记 效果展示: 全部代码: public class YuanActivity extends AppCompatActivity {private ActivityYuanBinding binding;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 通过 DataBinding 获取布局文件binding …

掌控时间,成就更好的自己

在个人成长的道路上,时间管理是至关重要的一环。有效的时间管理能够让我们更加高效地完成任务,实现自己的目标,不断提升自我。 时间对每个人都是公平的,一天只有 24 小时。然而,为什么有些人能够在有限的时间里做出卓…

flask-socketio相关总结

flask-socketio是一个为flask应用程序添加的实时双向通信功能的扩展库,有了这个库,就可以在flask应用中应用websocket协议,帮助flask实现低延迟、双向的客户端、服务端通信。客户端通过任何SocketIO官方库,都能与服务器建立长连接…

YOLOv8改进,YOLOv8引入CARAFE轻量级通用上采样算子,助力模型涨点

摘要 CARAFE模块的设计目的是在不增加计算复杂度的情况下,提升特征图的质量,特别是在视频超分辨率任务中,提升图像质量和细节。CARAFE结合了上下文感知机制和聚合特征的能力,通过动态的上下文注意力机制来提升细节恢复的效果。 理论介绍 传统的卷积操作通常依赖于局部区域…

如何把阿里云ECS里的文件下载到本地(免登录免配置)

如何把阿里云ECS里的文件下载到本地(免登录免配置) 作为一个阿里云ECS的用户,Up时长会遇到希望把ECS里的文件下载到自己的个人电脑,然后在自己的电脑里面查看,保存或者发送给别人。最近发现阿里云新上了一个功能&…

【Notepad++】---设置背景为护眼色(豆沙绿)最新最详细

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【Notepad】---设置背景为护眼色&#xf…

【Axios】如何在Vue中使用Axios请求拦截器

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

在服务器上实现本地python文件的依赖

1、在python中,一个python文件就可以视为一个模块进行导入 2、使用import 导入时,若使用pip 下载过可以直接导入 3、假如是自己写的同项目中的文件会去sys.path 中查找 比如说 我现在 test 下有一个 python文件 运行 下面的代码 打印的数据如上图所示p…

emacs 折腾日记(一)——序言

初次知道emacs这个东西是在《程序员的呐喊》这本书。书中的作者提倡学习编译原理,推崇emacs。现在距离我知道emacs已经过去了快8年,期间不断的重复学习——放弃——学习的路子。与过去学习vim类似,vim我也经历过放弃到学习,最后有…

【二分查找】力扣 875. 爱吃香蕉的珂珂

一、题目 二、思路 速度 k(单位:根/小时)是存在一个取值范围的。 速度越大肯定在规定的时间之内一定会吃完全部的香蕉,但也是可以确定出一个上界的。由于只要保证一小时之内,可以吃完香蕉数目最多的那一堆的香蕉&…

如何找到你的决定性优势

在任何高风险竞争中,无论是争取客户还是发展职业生涯,拥有决定性优势至关重要。沃伦巴菲特称之为“持久竞争优势”,迈克尔波特将其称为“竞争优势”。无论名称如何,核心理念是相同的: 永远不要参与你没有绝对优势的竞争…