视频b站链接: https://www.bilibili.com/video/BV15v411W78M
标题:【Transformer中Self-Attention以及Multi-Head Attention详解】
Self-Attention
除去V的部分
乘V的部分
Multi-head Self-Attention
Vision Transformer (2020年CVPR发表)
首先将输入图片分成多个patch,将每个patch输入到Embedding层,会得到很多向量,称为token,每个patch都对应一个token,在所有token最前边加上一个新的token (专门用于分类的token 称为 class token) ,还需要位置信息position embedding
将上边的向量和Position embedding 都输入到Transformer Encoder中。
提取class token对应的Transformer Encoder的输出输入到MLP Head中,得到最终的结果。
Embedding层
卷积核个数等于token_dim等于每个卷积核向量长度。
Position embedding
使用Position embedding和不使用Position embedding的区别。
使用不同Position embedding差异并不大。
训练得到的位置编码每个位置和其他位置的余弦相似度。得到如下图片:
比如第一行第一个与他所对应的位置编码做余弦相似度等于1
Transformer Encoder层
MLP Head层
MLP Head 为linear层,如果是分类,加上softmax。
Hybrid混合模型
输入图像先进入R50 ,然后进入Patch embedding
当epoch比较少的时候 混合模型比纯ViT模型准确率高,但是当epoch逐渐变多的时候,纯ViT模型逐渐变好,甚至超过混合模型。
Shape变化
768 = 3 * 16 * 16
Swin-Transformer
Swin-Transformer与Vision Transformer对比
网络架构图
下采样的过程,C(channel)会加倍。
Patch Merging
W-MSA模块