目录
论文阅读与视频学习
Vision Transformer
VIT:纯Transformer模型
Hybrid:传统CNN和Transformer混合模型
VIT模型三个部分:
Linear Projection of Flattened Patches(Embedding层)
Transformer Encoder
MLP Head
Embedding层:
对于标准的Transformer模块要求输入的是token(向量)序列,即二维矩阵[num_token,token-dim],在代码实现中, 直接通过一个卷积层来实现。在输入Transformer Encoder之前需要加上[class]token和Position Embedding,都是可训练参数,拼接[class]token,叠加Position Embedding。
Transformer Encoder层:
在Transformer Encoder中,Multi-Head Attention和MLP后跟着一个Dropout/DropPath。
MLP Head层:
注意在Transformer Encoder前有个Dropout层,后有一个Layer Norm层。
在训练ImageNet21K时由Linear+tanh激活函数+Linear组成,在迁移到自己数据时,只有一个Linear。
Swin Transformer
网络整体框架:
在经过Patch Merging后高和宽变为原来的一半,channel翻倍。
W-MSA:
目的:减少参数量
缺点:窗口之间无法进行信息交流
h:feature map的高度;
w:feature map的宽度;
C:feature map的深度;
M:每个窗口的大小。
Shifted Window:
目的:实现不同Window之前的信息交流。
高效批计算:
注意在全部计算完后需要将数据挪回到原来的位置上。
Relative position bias:
求得每个位置的相对位置索引 的矩阵,然后将其在行方向上进行展平得到一个矩阵。
将该矩阵偏移从0开始,行、列标加上M-1,然后行标乘上2M-1,,最后行、列标进行相加,得到一元的相对位置索引矩阵。
根据相对位置索引矩阵和相对位置偏移标表(元素有(2M-1)×(2M-1)个),得到相对位置偏移矩阵。
扩展阅读和学习
ConvNeXt
Macro design:
Swin-T的比例是1:1:3:1,Swin-L的比例是1:1:9:1,作者将ResNet50中的堆叠次数由(3,4,6,3)调整成(3:3:9:3),将stem换成卷积核大小为4,步距为4的卷积层。
ResNeXt:
ResNeXt相比普通ResNet在FLOPs以及准确率之间做到了更好的平衡,这里作者采用的是DW卷积,并增大了width。
Inverted bottleneck:
作者认为Transformer block的MLP模块类似于Inverted Bottleneck模块,于是将block中的bottleneck换成了Inverted Bottleneck。
Large kerner size:
将depthwise conv模块上移,移动至前方1×1卷积前。
增大depthwise conv卷积核尺寸,卷积核大小由3×3变为7×7。
Macro design:
将ReLu激活函数换为GELU。
使用更少激活函数。
使用更少的normalization layers。
使用LN来替换BN。
使用单独的下采样层。