从ViT到MAE,transformer架构改造Autoencoder

Vision Transformer (ViT)

论文出处[2010.11929] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (arxiv.org)

传统的卷积神经网络(CNN)在图像分类、目标检测等任务上表现出色,但其局限性也逐渐显露:对大规模数据的依赖、对局部特征的过度关注等。ViT的出现颠覆了传统认知,它采用了自注意力机制(self-attention)来捕捉图像全局信息,避免了CNN中固有的局部感知问题。

但是图片数据是信息量十分大的,这个和1语言有着本质区别。人们日常沟通的语言都是具备高密度信息的,是高度凝练的结果。所以再注意力机制解决NLP问题的任务中,一般是以句子的形式去处理文本。但是在图片的角度来说这是完全不可行的。我们不能直接无脑的把一个图片按照所有的像素来展开,这样去做注意力机制产生的计算量是十分惊人的。

为了解决这个问题,ViT模型将输入图像分成若干个图块,通过线性变换后将它们展平成序列,然后引入自注意力机制对序列进行处理,最终完成图像分类等任务。这种全注意力的机制使得ViT在一定程度上克服了CNN的不足,并在多个视觉任务上展现了出色的性能,比如在ImageNet数据集上的表现超越了传统CNN模型。

工作流程

  1. 图像分块: 首先,输入的图像被分割成固定大小的图块。每个图块包含像素信息,并被视为序列化的数据。

  2. 嵌入式嵌入(Embedding): 接下来,每个图块通过一个线性投影(projection)转换为具有更高维度的特征向量,以便进行后续处理。

  3. 位置编码(Positional Encoding): 为了保留图块之间的空间位置信息,一个位置编码向量被添加到每个图块的特征向量中,以区分它们在输入图像中的位置。

  4. Transformer编码器: 特征向量(包含位置编码)随后被输入到Transformer编码器中。这里的Transformer编码器通常包含多个Transformer块,每个块由多头自注意力机制(Multi-head Self-Attention)和前馈神经网络(Feed-Forward Neural Network)组成。

    • 自注意力机制(Self-Attention): 通过自注意力机制,每个图块可以“关注”其他所有图块,从而捕捉全局特征。这种机制使得ViT能够实现对整个图像的全局感知,而非局部。

    • 前馈神经网络(Feed-Forward Neural Network): 在自注意力机制之后,每个位置的特征向量会经过一个前馈神经网络进行非线性变换,以更好地学习特征表示。

  5. Transformer解码器(可选): 在某些任务中,ViT可能还包含一个Transformer解码器,用于执行特定的输出任务,如图像分类、目标检测等。

  6. 输出层: 最终,ViT的输出会通过一个适当的输出层结构进行处理,如全连接层用于图像分类,或者特定的检测头用于目标检测。

Masked Autoencoder (MAE)

论文出处

[2111.06377] Masked Autoencoders Are Scalable Vision Learners (arxiv.org)

MAE其实就是ViT的一个改进。这个改进有点类似于Denoising Autoencoder的思想。作者把图片的可见patch转成序列形式,用编码器进行编码,前后的维度是不变的,根据位置嵌入给序列加上被掩码的部分,再做decoder解码,解码后的维度也不变,但是解码器预测还原出了一个patch序列,然后转化可以成为一个新的清晰图片。可以观察到encoder画的比decoder更大,因为编码器是更加复杂的,需要深层网络去学习图片的特征,但是decoder只是一个轻量的解码器

MAE模型预训练

  1. 切分图片,随机均匀的采样策略,挑选其中的一小部分作为训练的输入,其余都被mask

  2. 针对可见的部分做位置编码得到encoder patches

  3. 做位置还原,加入被掩码的部分mask ed patches

  4. decoder做预测,预测缺失部分的像素点

  5. loss部分就是和原来的图片计算MSE

linear probing:在预训练模型的后面加上一些线性变换层来做下游任务改造,不会影响到整个模型的参数

fine tune:微调模型,会修改整个模型的参数

几个关键的点

  1. 不同的mask对应的是不同的语义输出,模型可以有泛化能力。作者选用了75%的mask比例,他们对模型的linear probing和fine tune统计比较实验都发现这个比例最合适

  2. decoder的深度和宽度对于linear probing影响很大,对于fine tune比较小,这是因为linear probing只会调整模型的浅层,受预训练模型约束较大

  3. encoder不需要使用masked token,这个位置和NLP有区别,因为下游任务是看不到这些部分的。BERT的encoder和MAE的decoder的类似,MAE先用不带mask的部分encoder是为了获取高维语义信息,提高信息的密度,这是图片和文字任务区别,文字本身就是一个高密度的信息,而图片中含有很多的无用信息。这也解释了为什么要选用75%这么高比例的mask,因为图片本身的冗余信息太多了,只有mask高到了一定的比例任务才会具有挑战性,模型才能更好地学习

  4. 重建像素用到了归一化像素值的方式,这样可以让patch之间的差异更加明显模型能够学习到更多的特征

  5. 数据增强的效果其实不是很明显,因为MAE这个操作本身就是一个数据增强

Partial Fine-tuning:

作者提出的一个概念,结合linear probing和fine tune,调整encoder的最后一部分的层,达到两者之间效果的一个均衡

  • 30
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ViT(Vision Transformer)是一种用于计算机视觉任务的Transformer模型。它在处理图像数据时,将图像划分为一系列的图像块,然后将这些图像块转换为序列数据,并使用Transformer编码器对其进行处理。ViT利用了Transformer的自注意力机制,通过学习将图像块之间的关系建模,从而实现对图像的特征提取和表征学习。 ViT模型的核心思想是引入了位置嵌入(position embedding)来为序列数据引入位置信息。位置嵌入是Transformer模型中的一部分,它可以将每个序列元素与其在原始图像中的位置相关联。这样,模型就可以利用位置信息来捕捉图像中不同区域的上下文关系。关于Transformer位置嵌入的详细信息,可以参考中的《【机器学习】详解 Transformer_闻韶-CSDN博客_机器学习transformer》的解读。 另外,关于ViT的更多研究论文和应用实例,可以参考中的GitHub资源,该资源收集了一些关于Transformer与计算机视觉结合的论文。同时,中的《机器学习》也提供了对Transformer编码器结构的详细解释,可以进一步了解Transformer模型的工作原理。 总结起来,ViT是一种通过将图像转换为序列数据,并利用Transformer模型进行特征提取和表征学习的方法。它利用位置嵌入来引入图像中不同区域的位置信息,并通过自注意力机制来建模图像块之间的关系。通过研究论文和资源,我们可以深入了解ViT模型的原理和应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哆啦叮当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值