1.Vision Transformer
整体框架
算法流程
- 使用大小为P的区块将H*W*C的二维图像分为N个P*P*C的区块(patch),N=H*W/(P*P)
- 将区块使用线性变换转为D维特征向量,再加上位置编码向量
- Transformer Encoder过程执行的任务加入了LayerNorm、Multi-Head Attention和MLP
- 分类头很简单,加入了LayerNorm和两层全连接层实现的,采用的是GELU激活函数
效果
2.Swim Transformer
整体框架
算法流程
整个模型一共包含4个Stage,每个stage都会缩小输入特征图的分辨率,类似CNN逐层扩大感受野。
- 在输入开始的时候,做了一个Patch Embedding,将图片切成一个个图块,并嵌入到Embedding。
- 在每个Stage里,由Patch Merging和多个Block组成。
- 其中Patch Merging模块主要在每个Stage一开始降低图片分辨率。
- 而Block具体结构如右图所示,主要是LayerNorm,MLP,Window Attention 和 Shifted Window Attention组成
效果
与Vit的不同之处
- Vit在输入会给embedding进行位置编码。而Swin-T这里则是作为一个可选项,Swin-T是在计算Attention的时候做了一个相对位置编码
- Vit会单独加上一个可学习参数,作为分类的token。而Swin-T则是直接做平均,输出分类,有点类似CNMM最后的全局平均池化层
3.Aggregating Nested Transformers
整体框架
算法流程
- 图像分块(patch)处理、平展
- 每个图像块内,简单堆叠多个transformer层,每个层包含一个多头自注意力(MSA)后接全连接层与跳过连接、LayerNorm,可训练的位置嵌入向量将倍加到所有序列向量中以编码空间位置信息
- 采用所提块集成构建一个分层嵌套:即每四个空域相邻的块合并为一个块
效果
参考文献:
1.https://zhuanlan.zhihu.com/p/317756159
2.https://zhuanlan.zhihu.com/p/367111046
3.https://baijiahao.baidu.com/s?id=1701234040616039586&wfr=spider&for=pc