最近在看Swin-Transformer时,发现在网络中存在许多的数据尺度变换。本博文主要是从图像数据的输入逐步分析一张RGB图像在Swim-Transformer中是如何进行尺度变换的。至于Swin-Transformer网络的详细内容,本博文不会展开说明,可参考Swin-T .

下面先给出Swin-Transformer的网络架构图:

这里以Swin-Transformer-Tiny版本为例。假设,输入图像的尺寸为224x224x3(H,W,C)。

首先,将图片输入到Patch Partition模块中进行分块,即每4x4相邻的像素为一个Patch,然后在通道方向展平(flatten)。即每个patch有4x4=16个像素,然后每个像素有R、G、B三个值所以展平后是16x3=48,所以通过Patch Partition后图像shape由 [224,224, 3]变成了 [56, 56, 48]。然后在通过Linear Embeding层对每个像素的channel数据做线性变换,由48变成96,即图像shape再由 [56, 56, 48]变成了 [56,56, 96]。其实在源码中Patch Partition和Linear Embeding就是直接通过一个卷积操作实现的。

其次,进入第一个Swin-Transformer-block,注意,这里的block有两种结构,区别在于一个使用了W-MSA结构,一个使用了SW-MSA结构,并且这两种不同的block是成对组成的,所以,你会发现堆叠的Swin Transformer Block的次数都是偶数。在Swin-Transformer-block中,我们要对输入的feature-map按照Window_size的大小进行一个一个的划分。例如,经过上一层,我们输入的feature-map为[56x56x96],这里设置Window_size的大小为7x7,那么会被分为8x8总共64个shape为[7x7x96]的Swin窗口,这一步骤在源码中称为window_partition,此步骤的图像shape变换为[56x56x96]-->[64x7x7x96]--->[64x49x96], 64是窗口个数,不是数据维度,所以将3维数据转为2维数据,可以使用transformer_attention。这里还需要注意,我们在每次进入block_stage时,都会创建一个feature_mask,通过它,我们可以实现SW-MSA,具体较复杂,这里不展开说。做完attention操作后(这里还有相对位置偏执也不展开说了)再将分开的Swin窗口拼接成一个完整的feature_map,这一操作源码中称作window_reverse,此步骤的图像shape变换为[64x49x96]-->[64x7x7x96]-->[56x56x96]。在Swin-Transformer-block中还有一个MLP结构,此结构的shape变化较为简单[56x56x96]-->[56x56x384]-->[56x56x96]。所以,Swin-Transformer-block的输入尺寸和输出尺寸是一致的。总结下来,shape的变化过程[1,56,56,96](B,H,W,C)-->[64,7,7,96]-->[64,49,96]-->[64,7,7,96]-->[1,56,56,96]-->[1,56,56,384]-->[1,56,56,96]。上述过程为第一个stage中第一个Swin-Transformer-block的尺度变换,stage中其他Swin-Transformer-block的尺度变化可依次类推。在经过stage1以后shape为[56x56x96]。

接着,通过Patch Merging,具体操作不展开说明,shape变化从[56x56x96]-->[28x28x192],其他的Patch Merging shape变换也可以类推。

最终,在经过4个stage后,原始尺寸从[224x224x3]-->[7x7x768],在经过一个全局平均池化操作shape[7x7x768]-->[1x1x768],最后,经过一个线性分类器进行分类预测输出[768]-->[num_classes]

这就是Swin-Transfomer网络大致的数据尺度变换。

后续有时间再完整的补充下。

Swin-Transformer 从数据尺度变换角度解析相关推荐

  1. Swin Transformer 论文精读,并解析其模型结构

    计算机视觉的建模从AlexNet在ImageNet分类挑战的良好表现开始,然后到目标检测的SSD.RCNN.YOLO等模型,一直由CNN主导.直到NLP领域中Transformer的崛起,并经ViT应 ...

  2. Swin Transformer, SwinIR, SwinFIR

    Swin Transformer 痛点:尺度变化 – 提出Hieracical attention的变化: sliding window attention,减少了attention的计算复杂度,同时 ...

  3. 【Swin Transformer原理和源码解析】Hierarchical Vision Transformer using Shifted Windows

    目录 前言 一.动机和改进点 二.整体架构:SwinTransformer 三.输入设置:PatchEmbed 四.4个重复的Stage:BasicLayer 4.1.SwinTransformerB ...

  4. 深度学习之目标检测(Swin Transformer for Object Detection)

    目录 1.MMdetection系列版本​编辑 2. MMDetection和MMCV兼容版本 3.Installation(Linux系统环境安装) 3.1 搭建基本环境 3.2 安装mmcv-fu ...

  5. 当Swin Transformer遇上DCN,效果惊人!

    来源:机器之心 Transformer 近来在各种视觉任务上表现出卓越的性能,感受野赋予 Transformer 比 CNN 更强的表征能力.然而,简单地扩大感受野会引起一些问题.一方面,使用密集注意 ...

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

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

  7. 专访 Swin Transformer 作者胡瀚:面向计算机视觉中的「开放问题」 原创

    文 | 刘冰一.Echo 编辑 | 极市平台 本文原创首发于极市平台,转载请获得授权并标明出处. 胡瀚,湖北潜江人,本博均毕业于清华大学自动化系,曾就职于百度研究院深度学习实验室,目前任职于微软亚洲研 ...

  8. 霸榜各大CV任务榜单,Swin Transformer横空出世!

    1. ImageNet-1K的图像分类 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 一元@炼丹笔记 ...

  9. 当Swin Transformer遇上DCN,清华可变形注意力Transformer模型优于多数ViT

    ©作者 | 小舟 来源 | 机器之心 本文中,来自清华大学.AWS AI 和北京智源人工智能研究院的研究者提出了一种新型可变形自注意力模块,其中以数据相关的方式选择自注意力中键值对的位置,使得自注意力 ...

最新文章

  1. 漫画:禅道程序员的一天
  2. PPIO 商业化架构解析
  3. python基础语法第10关作业-【python基础语法】第8天作业练习题
  4. 单应性矩阵和仿射变换_单应矩阵 基本矩阵 本质矩阵的区别与联系
  5. python实现whois查询_利用Python实现域名查询和whois查询
  6. html左侧隐藏菜单栏,如何制作一个炫酷的隐藏侧边栏菜单
  7. C语言 知识点总结完美版
  8. Hibernate中的一级缓存、二级缓存和懒加载
  9. MATLAB多元线性拟合——03
  10. 百度tts语音合成使用
  11. TPP:你的数据你做主 TPP将撤销政府的数据主权
  12. 按头安利 好看又实用的冰淇淋VRay材质球素材看这里
  13. python获取股票的市盈率_如何利用python获取股票行情信息?
  14. Adobe国际认证证书对于设计师而言,真的很重要?
  15. pandas读取Excel判断指定列是否有空值
  16. bit,Byte,Word,DWORD(DOUBLE WORD,DW)
  17. PC分享插件js - sosh.min.js
  18. 如何轻松记账,记录日常收支选对账本很重要
  19. matlab 电力电子元件对应名称,MATLAB在电力电子技术的应用
  20. 银保监会计算机类专业知识,国家公务员局2019中国银保监会国考内容:计算机类专业知识...

热门文章

  1. 简单理解call_user_func和call_user_func_array两个函数
  2. 谁说程序员薪资高?她在上海工作了五年,却连20元以上的外卖都不敢点!
  3. 【思想】——‌设计思想理念的重要性
  4. 浅析数据中心机架配电母线的应用及监控产品选型
  5. python中保留两位小数
  6. linux qt compiler叹号,qt里感叹号什么意思
  7. 计算机 正高级专业技术资格,[所有分类]正高级专业技术职务任职资格.doc
  8. js换一批功能的实现
  9. Fiddler抓包工具使用
  10. 汽车车身冲压模具是冲制汽车车身上所有冲压件的模具