在Swin-Transformer一文中,有这样两个公式,分别为:

1. Transformer中提出的Multi-head Self-Attention模块(MSA)
2. Swin-Transformer中提出的Window Multi-head Self-Attention模块(W-MSA)

两者计算量即计算复杂度分别为:

Ω ( M S A ) = 4 h w C 2 + 2 ( h w ) 2 C Ω(MSA) = 4hwC^2 + 2(hw)^2C Ω(MSA)=4hwC2+2(hw)2C
Ω ( W − M S A ) = 4 h w C 2 + 2 M 2 h w C Ω(W-MSA) = 4hwC^2 + 2M^2hwC Ω(W−MSA)=4hwC2+2M2hwC

一、MSA模块计算量

Transformer中提出的多头自注意力模块运算公式为
A t t e n t i o n ( Q , K , V ) = S o f t m a x ( Q K T d k ) V Attention(Q,K,V)=Softmax(\frac {QK^T} {\sqrt{d_k} \quad})V Attention(Q,K,V)=Softmax(dk​ ​QKT​)V
运算过程以及计算量如下图
(注:图中黑色字体为矩阵维度,橙色字体为计算量)
1. 首先,一张维度为H * W * C的图片,分别通过乘上一个CC的变换矩阵,分别变成QKV矩阵,维度仍为H * W * C。这样三个变换用到的计算量都为:HW * C^2,加起来为: 3 H W ∗ C 2 3HW*C^2 3HW∗C2
2. 然后做Q
K的转置,(HW * C) * (C * HW),得到的矩阵维度为HW * HW,计算量为: ( H W ) 2 ∗ C (HW)^2*C (HW)2∗C
3. 忽略根号dk和softmax的计算量,2中得到的 A矩阵 × V矩阵 ,结果的维度为HW * C,计算量为: ( H W ) 2 ∗ C (HW)^2*C (HW)2∗C
4. 因为是多头自注意力,所以在做完矩阵乘法后,需要矩阵拼接融合,做一个Proj映射,得到输出矩阵,维度和输入一样为HW * C,计算量为: H W ∗ C 2 HW*C^2 HW∗C2
5. 最后计算量加起来,为: Ω ( M S A ) = 4 h w C 2 + 2 ( h w ) 2 C Ω(MSA) = 4hwC^2 + 2(hw)^2C Ω(MSA)=4hwC2+2(hw)2C

二、W-MSA模块计算量

W-MSA与MSA总体的计算过程是一致的,区别在于:W-MSA的长宽不再是H和W,而是 窗 口 : M ∗ M 窗口: M*M 窗口:M∗M并且有 H M ∗ W M 个 窗 口 需 要 计 算 \frac{H}{M}*\frac{W}{M}个窗口需要计算 MH​∗MW​个窗口需要计算

所以它的计算量为:
( h M ∗ w M ) ∗ ( 4 M 2 C 2 + 2 M 4 C ) = 4 h w C 2 + 2 M 2 h w C (\frac{h}{M}*\frac{w}{M})*(4M^2C^2+2M^4C)=4hwC^2+2M^2hwC (Mh​∗Mw​)∗(4M2C2+2M4C)=4hwC2+2M2hwC

分析

从他们公式可以看出区别主要在于两个公式的后半部分
带一点数进去就可以看出W-MSA在计算量上比MSA少很多,比如以原文中的一些参数设定为例:HW都为56,C为96,M为7

前者MSA为: 2 ∗ ( 56 ∗ 56 ) 2 ∗ 96 = 1888223232 2*(56*56)^2*96=1888223232 2∗(56∗56)2∗96=1888223232
后者为W-MSA为: 2 ∗ 7 2 ∗ 56 ∗ 56 ∗ 96 = 29503488 2*7^2*56*56*96=29503488 2∗72∗56∗56∗96=29503488
二者相差了64倍。

论文名称:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
原论文地址: https://arxiv.org/abs/2103.14030

Swin-Transformer中MSA和W-MSA模块计算复杂度推导(非常详细,最新)相关推荐

  1. 【Swin Transformer】Win10使用Swin Transformer做目标检测 (使用自己的数据集 + 图解超详细)

    文章目录 Swin Transformer 环境搭建 VS2019配置 conda虚拟环境 Pytorch安装 mmcv安装 查看匹配版本 安装mmcv mmdet安装 apex安装 下载权重 dem ...

  2. Idea中Maven控制的多模块项目运行不到最新的代码,写的代码不生效问题解决方法记录。

    文章目录 写在前边 我的情况 解决办法 原因分析 写在前边 这个方法不一定适合所有情况,兄弟遇到这种情况首先需要保持冷静.可以先参考我们的情况是否一致,再决定是否看下去. 我的情况 idea版本:20 ...

  3. 【读点论文】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows通过窗口化进行局部MSA,sw-MSA融合信息

    Swin Transformer: Hierarchical Vision Transformer using Shifted Windows abstract 本文提出了一种新的视觉transfor ...

  4. 论文阅读 - Video Swin Transformer

    文章目录 1 概述 2 模型介绍 2.1 整体架构 2.1.1 backbone 2.1.2 head 2.2 模块详述 2.2.1 Patch Partition 2.2.2 3D Patch Me ...

  5. 【CV】Swin Transformer:使用 Shifted Windows 的分层视觉 Transformer

    论文名称:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 论文下载:https://arxiv.org/ ...

  6. OUC暑期培训(深度学习)——第六周学习记录:Vision Transformer amp; Swin Transformer

    第六周学习:Vision Transformer & Swin Transformer Part 1 视频学习及论文阅读 1.Vision Transformer 原文链接:https://a ...

  7. 【CV】SwinIR:使用 Swin Transformer 进行图像恢复

    论文名称:SwinIR: Image Restoration Using Swin Transformer 论文下载:https://arxiv.org/abs/2108.10257 论文年份:ICC ...

  8. [Transformer]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

    Swin Transformer:基于移动窗口的层级视觉Transformer
 Abstract Section I Introduction Section II Related Work Sec ...

  9. Swin Transformer详解: Hierarchical Vision Transformer using Shifted Windows

    这篇文章结合了CNN的归纳偏置,基于局部窗口做注意力,并且逐步融合到深层transformer层中构建表征,来达到扩大感受野,并且极大降低了计算量.是一个特征提取的主干网络,backbone.构建了一 ...

最新文章

  1. 向阿里学数字化转型,驱动业绩新增长
  2. python 免费课程-2019年10种免费的Python学习课程
  3. ALV中动态内表+行转化为列
  4. python display update用不了能用filp_疯狂的Pygame——使用python写游戏(yuyu版)——基础讲解部分——第一章...
  5. Python 可变数据类型和不可变数据类型 - Python零基础入门教程
  6. JAVA环境配置 ECLIPSE配置(转)
  7. webstorm apache设置 很方便啦
  8. 设计灵感素材网站:美工设计者必备
  9. 栈在表达式求值中的应用
  10. resiprocate 之repro使用
  11. RIA 应用程序模式
  12. svn开发环境代码合并到生产
  13. 【礼仪大赛常识】 女人宴会搭配必学的礼服文化
  14. 如何测试蓝牙设备的延时
  15. 为省手续费 上淘宝拍“生活费”
  16. 益智拼图APP隐私政策
  17. iPhone设置中的“开发者”选项
  18. SCRM营销: 关于微信个人号批量运营的干货分享!
  19. 蓝牙的配对和连接的建立过程
  20. c语言程序学生籍贯信息记录,C语言程序设计学生籍贯信息记录簿

热门文章

  1. .net 字符串逗号隔开去重
  2. App集成ApplePay的一些资料整理
  3. 不懂FAQ页面怎么设计?一些产品FAQ页面模板展示!
  4. AWS中EBS相关概念
  5. 微型计算机输入设备 导学案,输入与输出设备
  6. 网口调试基础之一网口phy驱动
  7. unity2d水果忍者案例
  8. 可被路由的协议 路由协议 不可路由协议 的区别
  9. mysql临时表(可以将查询结果存在临时表中)
  10. 酷睿i7和i5对计算机专业要求,i5和i7有什么区别?电脑CPU i7和i5的区别分享