视觉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的输出特征

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐