视觉Transformer和Swin Transformer

视觉Transformer概述

ViT的基本结构:

①输入图片首先被切分为固定尺寸的切片;

②对展平的切片进行线性映射(通过矩阵乘法对维度进行变换);

③为了保留切片的位置信息,在切片送入Transformer编码器之前,对每个切片加入位置编码信息;

④Transformer编码器由L个Transformer模块组成,每个模块由层归一化(LN)、多头自注意力模块(MHSA)、多层感知机(MLP)及残差连接等构成;

多层感知机(MLP)icon-default.png?t=N7T8https://blog.csdn.net/JasonH2021/article/details/131021534

其中,z_{l}^{'} 和z_{l} 分别表示第 l 个模块中MHSA和MLP的输出特征

z_{l}^{'}=MSA(LN(z_{l-1}))+z_{l-1}

z_{l}=MLP(LN(z_{l}^{'}))+z_{l}^{'}

由于ViT关注分类问题,编码器的输出只关注最后一个Transformer模块的MLP头部信息,y=LN(z_{L}^{0})。只有在大规模数据集上进行预训练再迁移到中小规模数据集的条件下,ViT才能取得与当时最新卷积结构媲美的性能。

Swin Transformer

最大的贡献在于降低了self-attention的计算复杂度。

Swin Transformer在视觉Transformer的基础上引入了移动窗口(shifted windows)机制,采用“分而治之”的思想,将自注意力的计算限制在各个窗口内从而使得模型只有和输入图片尺寸相关的线性复杂度。

连续Swin Transformer块

其在Transformer编码器基础上,将对头自注意力模块(MHSA)替换为常规窗口多头自注意力(W-MHSA)和移动窗口多头自注意力(SW-MHSA)模块。

\hat{z}^{l}=W-MHSA(LN(z^{l-1}))+z^{l-1}

z^{l}=MLP(LN(\hat{z}^{l}))+\hat{z}^{l}

\hat{z}^{l+1}=SW-MHSA(LN(z^{l}))+z^{l}

z^{l+1}=MLP(LN(\hat{z}^{l+1}))+\hat{z}^{l+1}

其中,\hat{z}^{l}z^{l}分别表示第l个模块中(S)W-MSA和MLP的输出特征

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-02 06:34:01       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-02 06:34:01       5 阅读
  3. 在Django里面运行非项目文件

    2024-04-02 06:34:01       4 阅读
  4. Python语言-面向对象

    2024-04-02 06:34:01       6 阅读

热门阅读

  1. kafka面试常见问题

    2024-04-02 06:34:01       23 阅读
  2. redis -List

    2024-04-02 06:34:01       27 阅读
  3. 数据库设计-MySQL设计小册

    2024-04-02 06:34:01       21 阅读
  4. 谈一谈React的setState的执行机制

    2024-04-02 06:34:01       19 阅读
  5. springboot注解及GET、POST接口写法

    2024-04-02 06:34:01       23 阅读
  6. Towhee

    Towhee

    2024-04-02 06:34:01      32 阅读