最近在看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. 74HC165的使用
  2. Zuul:Pre和Post过滤器(下)
  3. 某项目网络实施中的几个关键点解析
  4. angular-cli环境搭建过程中常遇到的npm install问题
  5. 使用ELK实时分析SSH暴力破解
  6. AcWing 901. 滑雪(记忆化搜索)
  7. 相关矩阵可视化 – corrplot() 绘图
  8. kubernetes视频教程笔记 (13)-容器start、stop、相位
  9. java递归算法 空瓶换水_公务员考试行测指导:思维策略之空瓶换水
  10. 网线制作和交换机工作原理
  11. c语言函数平方根公式,c语言求平方根公式
  12. RK3566调试外部以太网PHY
  13. VSCode沙绿色主题设置
  14. Redis中的SDS
  15. Squid代理服务器应用及配置(图文详解)
  16. 2014春晚小品《扶不扶》台词集锦
  17. android没有adm_Android--Android Studio 打开ADM报错
  18. speedoffice(Word)怎么添加页码
  19. 新鲜的蔬菜和水果中富含抗氧化物,可以有效延缓衰老和疾病
  20. 用python画星空图教程水粉_怎样用水粉颜料画星空

热门文章

  1. u-boot-2014.10移植第29天----nand flash的SPL启动(一)
  2. 武侠小说之令狐冲篇--适配器模式C++
  3. 发现孩子做作业用计算机,[随笔]小学生不能使用计算器学习哦
  4. 即将进入软件测试的萌新
  5. 超省流量的手机浏览器,多御安全浏览器手机版上线了
  6. 华为 matebook-x-pro-2020 电脑 Hackintosh 黑苹果efi引导文件
  7. java 精髓_(转)JAVA精髓
  8. WebRTC搭建流程(二)房间服务器搭建
  9. ffmpeg 视频像素尺寸转换SwsContext、sws_scale 函数解释
  10. python控制台进度条_飘逸的python - 实现控制台进度条效果