图像分类篇章-4-transformer,Vision TransFormer,swinTrans

transformer:

相比 可以并行化

RNN【时序网络】:记忆长度比较短。

transformer:记忆长度无限长

self-attention结构:

核心:Attention的公式《矩阵相乘的公式》——并行化

x通过embedding生成a

q代表query,后续会去和每一个k 进行匹配
k 代表key,后续会被每个q 匹配
v 代表从a 中提取得到的信息
后续q和k 匹配的过程可以理解成计算两者的相关性,相关性越大对应v 的权重也就越

之后利用attention公式match QK 【d:k的dimension】,

首先使用embedding层:

embedding层是全连接层的一个特例。设输入向量为x,全连接层的权重参数矩阵为W,则该层的输出向量为y=Wx;只是在embedding层中,x为one-hot向量,例如:[0,1,0,0,0],则线性变换就退化成了一个查表操作。

self-attention理论:

点乘生成a11 a12 再利用softmax生成a^11 a^12 以及后面的变量。【各个V的权重】【多线程】

利用softmax获得与k最匹配的q

第二步:

前面的乘上V获得bi【多线程】[qk 相当于v的权重大小]

Multi Head self-attention结构:

结构展示:

multi:简单的是将q1转换为q11,q12【简单均分/线性映射】

之后对每个head使用和Self-Attention中相同的方法即可得到对应的结果:

进行划分 类似于分组 获得bij 在进行拼接【头相同、第一个数字相同的进行拼接】

最后进行融合 得到最终结果b1 b2 【类似于组卷积】

位置编码:

问题:输入交换 结果交换

 确定输入和输出的位置。

Vision TransFormer

1.首先分成图像patches 再用embedding层转化为token +classtoken +位置token

2.需要预训练训练参数 否则效果不好

1.Embedding层:

图像利用卷积 14*14块 再展平 196*768

之后获得 class的token 

再将两者相加

2.使用位置编码可以提高3%准确率【0-9】 且各类位置编码精度提高差不多 故使用1D位置编码

MLP层用于分类的层结构

位置编码余弦相似度:

Transformer Encoder:

【类似于组卷积】

2.MLP Head层

MLP Head是全连接或者fc+tanh+linear

整体结构:vit-b/16

code:

1.embedding:

        self.proj = nn.Conv2d(in_c, embed_dim, kernel_size=patch_size, stride=patch_size)
        self.norm = norm_layer(embed_dim) if norm_layer else nn.Identity()
        # flatten: [B, C, H, W] -> [B, C, HW]
        # transpose: [B, C, HW] -> [B, HW, C]
        x = self.proj(x).flatten(2).transpose(1, 2)
        x = self.norm(x)

2.self-attention模块

3.MLP

4.encoder block

5.ViTrans

其他结构:

swinTrans:

1.与vitrans区别:

1.4 8 16三种下采样

2.使用窗口

主要结构:

类似resnet下采样。

每次下采样中channel翻倍

重复偶数次swintransblock  因为两个匹配使用。

patchpartion:

调整通道

patch Mearging:

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Swin-TransformerVision Transformer(ViT)都是基于Transformer架构的图像分类模型,但它们在一些方面有所不同。 1. 窗口机制 ViT使用patch-based方法将图像分成固定大小的图像块,然后将这些图像块转换为向量,这些向量成为“patches”。然后,这些patches通过Transformer编码器进行处理。相比之下,Swin-Transformer使用了一种称为“窗口机制”的新方法,它将图像分成多个窗口,每个窗口包含几个连续的图像块。这种方法可以更好地利用图像的局部信息。 2. 编码器结构 在ViT中,Transformer编码器通常由多个Transformer块组成,每个块由多头注意力和前馈神经网络组成。Swin-Transformer也使用了Transformer编码器,但是它使用的是分层的Transformer结构,每个层级都由若干个小型Transformer块组成。这种结构可以更好地平衡模型的复杂度和性能。 3. 训练策略 在ViT中,研究人员使用了一个称为“预训练-微调”(pre-training-fine-tuning)的策略,其中模型首先在大规模图像数据集上进行预训练,然后在特定的图像分类任务上进行微调。相比之下,Swin-Transformer使用了一种称为“自监督学习”(self-supervised learning)的方法,其中模型从未标记的数据中自动学习图像表示。这种方法可以提高模型的泛化能力和鲁棒性。 总的来说,Swin-Transformer和ViT都是Transformer架构的图像分类模型,但它们在一些方面有所不同,包括窗口机制、编码器结构和训练策略。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值