Swin Transformer与Vision Transformer的不同设计

Swin Transformer与Vision Transformer的不同设计

  • 图片分割
  • cls_token
  • 位置编码
  • attention层

图片分割

  • Swin使用一个卷积层进行分割,卷积层的滑动补偿等于核的尺寸,因此图片每个像素不会重复框选,卷积核数等于embedding编码长度,同时完成分割与掩码
  • Vision先老老实实地分割,并把每个patch的像素如(3, 16, 16)拉平,再接入mlp中转化为预定的embedding长度

cls_token

  • Swin不用cls_token,最后使用全局池化产生送入mlp中的向量
  • Vision可以使用cls_token,最后直接将cls_token提取出来送入mlp中,也可以选择不用

位置编码

  • Swin采用二维的相对位置编码,而且是在QK求完内积得到注意力分数之后作为偏置加在注意力分数上的,此后才做softmax处理。
  • Vision采用一维的绝对位置编码,在对图片切割为patches并embedding,再并上cls_token后进行一维绝对位置编码
  • Swin在在对图片切割为patches并embedding后,不适用cls_token,可选择添加绝对位置编码

attention层

  • Swin规定了头数与且QKV总的向量长度应与embdiing长度相等,因此每个头的QKV向量长度为embdiing长除以头数,经过多头自注意力后拼接各个头的V,得到的V向量的长度即为embedding长度,以此来保证embedding长度经过自注意力处理后不发生改变
  • Vision规定了头数和每个头的QKV向量长度,这样比较灵活,经过多头自注意力后拼接各个头的V,经过mlp将得到的V向量的长度转化为embedding长度,以此来保证embedding长度经过自注意力处理后不发生改变

你可能感兴趣的:(Vision,Transformer,transformer,深度学习,人工智能,pytorch,计算机视觉)