但其原生Self-Attention 的计算复杂度问题一直没有得到解决,Self-Attention 需要对输入的所有N个 token 计算 [公式] 大小的相互关系矩阵,考虑到视觉信息本来就就是二维(图像)甚至三维(视频),分辨率稍微高一点这计算量就很难低得下来。

Swin Transformer 想要解决的计算复杂度的问题。

1. 网络结构

简单来说就是,原生 Transformer 对 N 个 token 做 Self-Attention ,复杂度为 O ( N 2 ) O(N^2) O(N2) ,

Swin Transformer 将 N 个 token 拆为 N/n 组,(n设为常数 ;

每组 n个token 进行计算,复杂度降为 O ( N ∗ n 2 ) O(N*n^2) O(N∗n2) ,考虑到 n 是常数,那么复杂度其实为 O ( N ) O(N) O(N) 。

2. 两个问题

分组计算的方式虽然大大降低了 Self-Attention 的复杂度,但与此同时,有两个问题需要解决,

  1. 其一是分组后 Transformer 的视野局限于 n 个token,看不到全局信息;

  2. 其二是组与组之间的信息缺乏交互。

2.1 分层

对于问题一,Swin Transformer 的解决方案即 Hierarchical,每个 stage 后对 2x2 组的特征向量进行融合和压缩(空间尺寸 H ∗ W − > H 2 ∗ W 2 H * W -> \frac{H}{2} * \frac{W}{2} H∗W−>2H​∗2W​,特征维度 $ C-> 4C -> 2C$),这样视野就和 CNN-based 的结构一样,随着 stage 逐渐变大。

2.2 shifted windows;

对于问题二,Swin Transformer 的解决方法是 Shifted Windows,如下图所示:

通过 Shifted Windows 的方式,使相邻的组(patch)进行信息交互,思想上其实和shufflenet 类似,不过这里是空间邻接上的shuffle,而shufflenet是通道维度的shuffle。

此外还有一个细节就是在计算 Self-Attention 时,使用了 Relative position bias,

B 为可学习的参数,作用与 Local Relation Networks for Image Recognition中的Geometry Prior 类似。

Swin transformer 简单理解相关推荐

  1. 《预训练周刊》第29期:Swin Transformer V2:扩大容量和分辨率、SimMIM:用于遮蔽图像建模的简单框架...

    No.29 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 本期周刊,我们选择了10篇预训练相关的论文,涉及图像处理.图像屏蔽编码.推荐系统.语言模型解释.多模态表征.多语言建模.推 ...

  2. AI绘画能力的起源:通俗理解VAE、扩散模型DDPM、DETR、ViT/Swin transformer

    前言 2018年我写过一篇博客,叫:<一文读懂目标检测:R-CNN.Fast R-CNN.Faster R-CNN.YOLO.SSD>,该文相当于梳理了2019年之前CV领域的典型视觉模型 ...

  3. 有关swin transformer相对位置编码的理解:

    有关swin transformer相对位置编码的理解: 假设window_size是7*7 那么窗口中共有49个patch,共有49*49个相对位置,每个相对位置有两个索引对应x和y两个方向,每个索 ...

  4. 《预训练周刊》第29期:Swin Transformer V2:扩大容量和分辨率、SimMIM:用于遮蔽图像建模的简单框架

    关于周刊 本期周刊,我们选择了10篇预训练相关的论文,涉及图像处理.图像屏蔽编码.推荐系统.语言模型解释.多模态表征.多语言建模.推理优化.细胞抗原预测.蛋白结构理解和化学反应的探索.此外,在资源分享 ...

  5. Swin Transformer原文及其代码的理解

    Swin Transformer原文及其代码的理解 第一版 更好的排版笔记:Notion 名词解释 基础知识: 搞懂Vision Transformer 原理和代码,看这篇技术综述就够了(三) tok ...

  6. 【深度学习入门基础】二、简单理解 Transformer

    [深度学习入门基础]二.简单理解 Transformer 文章目录 [深度学习入门基础]二.简单理解 Transformer 自注意力层 多头注意力 Transformer 输入(输出)嵌入 位置编码 ...

  7. Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 阅读理解

    原文地址:https://arxiv.org/pdf/2103.14030.pdf 收录:CVPR 2021 Best paper 代码: https://github.com/microsoft/S ...

  8. 超越Swin Transformer!谷歌提出了收敛更快、鲁棒性更强、性能更强的NesT

    [导读]谷歌&罗格斯大学的研究员对ViT领域的分层结构设计进行了反思与探索,提出了一种简单的结构NesT,方法凭借68M参数取得了超越Swin Transformer的性能. 文章链接:htt ...

  9. 论文阅读 - 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 ...

最新文章

  1. rundeck入门-初步操作
  2. 谈谈分布式事务之三: System.Transactions事务详解[下篇]
  3. 生产系统支撑终端故障处理的三个误区
  4. cxTreeList交换当前两个节点的的位置
  5. 一个form 如何做两次提交_如何做一个自信魅力的女人
  6. ImageMagick还是GraphicsMagick?
  7. 配置 IIS 7 显示详细错误信息
  8. 从浏览器输入地址到渲染出网页这个过程发生了什么?
  9. oracle 11g dataguard创建的简单方法
  10. 如何到top5%?NLP文本分类和情感分析竞赛总结
  11. Flink 1.10 Container 环境实战
  12. R语言读取(加载)txt格式数据为dataframe、依据学号字段从dataframe随机抽取10位同学的数据
  13. 医学图像3D目标检测
  14. 什么软件可以测试皮肤色号,肤色测试卡怎么用?肤色测试卡的使用方法
  15. vscode代码格式化时属性不换行
  16. Unity3d:UGUI源码,Rebuild优化
  17. 《Leaflet 进阶知识点》- L.polygon 多边形绘制详解
  18. 一个女程序员职场自述:彻骨的孤独
  19. linux环境下查看ibm mq mb日志
  20. spring 是如何保证一个事务内获取同一个Connection?

热门文章

  1. 【计算机网络】第三部分 数据链路层(14) 无线局域网和蓝牙技术
  2. 网络安全-实战篇 ZZZPHP1.61 代码审计-从SQL注入到Getshell
  3. arthas 查看哪个方法调用最耗时_火眼金睛,Java诊断利器Arthas
  4. java静态代码检测 pmd,PMD使用与代码质量
  5. 电竞耳机赏心悦目之——HyperX Cloud Stinger毒刺专业电竞耳机
  6. Java学习总结:飘逸的字符串
  7. OneDrive无法正常登录
  8. BQL是什么如何使用?
  9. 个人软件测试工程师前景理解
  10. 爱立信助力辽宁开通首条“5G地铁”;凯悦旗下厦门安达仕酒店正式启幕 | 美通企业日报...