从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的最后一部分的层,达到两者之间效果的一个均衡

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/408161.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《Docker 简易速速上手小册》第3章 Dockerfile 与镜像构建(2024 最新版)

文章目录 3.1 编写 Dockerfile3.1.1 重点基础知识3.1.2 重点案例:创建简单 Python 应用的 Docker 镜像3.1.3 拓展案例 1:Dockerfile 优化3.1.4 拓展案例 2:多阶段构建 3.2 构建流程深入解析3.2.1 重点基础知识3.2.2 重点案例:构建…

GO-ICP的使用(一)

一、代码下载以、修改以及使用 下载: 链接:yangjiaolong/Go-ICP: Implementation of the Go-ICP algorithm for globally optimal 3D pointset registration (github.com) 解压之后 : 首先visual studio项目,配置好PCL环境&…

计算机组成原理(13)-----硬件多线程

目录 1.细粒度多线程 2.粗粒度多线程 3.同时多线程(SMT) 在不支持硬件多线程的处理器中,若要进行线程的切换,就需要保存和恢复线程的运行环境(否则会出现数据覆盖引起的错误)。 但在支持硬件多线程的处…

五篇保姆级分类诊断教程,数据特征提取+优化算法+机器学习

今天水一期,总结一下以前写过的几篇保姆级故障诊断。学会这几篇,机器学习的故障诊断你就基本合格了! 本期内容:基于SABO-VMD-CNN-SVM的分类诊断。 依旧是采用经典的西储大学轴承数据。基本流程如下: 首先是以最小包络熵…

Github代码仓库SSH配置流程

作者: Herman Ye Auromix 测试环境: Ubuntu20.04 更新日期: 2024/02/21 注1: Auromix 是一个机器人爱好者开源组织。 注2: 由于笔者水平有限,以下内容可能存在事实性错误。 相关背景 在为Github代码仓库配…

RocketMQ快速实战以及集群架构原理详解

RocketMQ快速实战以及集群架构原理详解 组成部分 启动Rocket服务之前要先启动NameServer NameServer 提供轻量级Broker路由服务,主要是提供服务注册 Broker 实际处理消息存储、转发等服务的核心组件 Producer 消息生产者集群,通常为业务系统中的一个功…

基础光学系列:(四)机器视觉中的光圈、焦距与景深调整技巧

控制景深和成像质量是摄影和机器视觉领域的关键技能。通过调整光圈、焦距、和感光元件(如数码相机的图像传感器)的位置,可以精细地控制图像的外观。下面是如何通过这些参数来控制景深和提高成像质量的一些建议: 调整光圈来控制景…

学生管理系统简易版(C语言)

简介: 有登录功能,这个功能是利用文本文件来保存用户名和密码彩色的菜单页面多种功能较好的排版含有文件夹图标 目录展示: 页面展示: 下载链接:https://download.csdn.net/download/liyankang/88873436 度盘链接&…

BUU [GWCTF 2019]mypassword

BUU [GWCTF 2019]mypassword 开题,是个登录界面,也有注册功能 首先我们注册个号看看。然后登录 提示不是SQL注入 有反馈界面,反馈应该管理员会看,可能存在XSS。 查看源码,注释给出了后端源码,对XSS进行了…

GEE数据集——GLANCE 全球土地覆被训练数据集

GLANCE 全球土地覆被训练数据集 GLanCE 培训数据集向公众开放,专为区域到全球土地覆被和土地覆被变化分析而设计。该数据集的中等空间分辨率为 30 米,时间跨度为 1984 年至 2020 年,在地理和光谱上代表了全球所有生态区域。每个训练单元提供多…

极狐GitLab 使用指南:如何使用极狐GitLab 进行第一次 git commit

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 进行第一次 Git 提交 本教程包含一些关于 Git 的工作原理&…

Escalate_Linux-环境变量劫持提权(5)

环境变量劫持提权 在Shll输入命令时,Shel会按PAH环境变量中的路径依次搜索命令,若是存在同名的命令,则执行最先找到的,若是PATH中加入了当前目录,也就是“”这个符号,则可能会被黑客利用,例如在…

RM电控讲义【HAL库篇】(二)

8080并口模式是一种常见的计算机接口模式,主要用于LCD(液晶显示屏)模块。 在8080并口模式中,通信端口包括多种信号线,用于实现数据的读写和控制功能。主要的信号线包括: CS(片选信号&#xff…

ArcgisForJS如何将ArcGIS Server发布的点要素渲染为热力图?

文章目录 0.引言1.ArcGIS创建点要素2.ArcGIS Server发布点要素3.ArcgisForJS将ArcGIS创建的点要素渲染为热力图 0.引言 ArcGIS For JS 是一个强大的地理信息系统(GIS)工具,它允许开发者使用 JavaScript 语言来创建各种 GIS 应用。ArcGIS Ser…

Java——防止SQL注入的几种策略

一、什么是SQL注入 SQL注入(SQL Injection)是一种常见的网络安全漏洞,它允许攻击者通过操纵应用程序的输入来执行恶意的SQL查询。这种漏洞发生在应用程序没有正确验证、过滤或转义用户提供的输入数据时。攻击者可以利用这个漏洞来执行未经授…

Flask基础学习3

参考视频:41-【实战】答案列表的渲染_哔哩哔哩_bilibili flask 实现发送短信功能 pip install flask-mail # 安装依赖 我这里用登录的网易邮箱获取的授权码(登录QQ邮箱的授权码总是断开收不到邮件), # config # config mail MAI…

Python入门必学:单引号、双引号与三引号的差异与应用

Python入门必学:单引号、双引号与三引号的差异与应用 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得…

HC595级联原理及实例 - STM32

74HC595的最重要的功能就是:串行输入,并行输出。其次,74HC595里面有2个8位寄存器:移位寄存器、存储寄存器。74HC595的数据来源只有一个口,一次只能输入一个位,那么连续输入8次,就可以积攒为一个…

MiKTeX安装后,Latex编译后PDF无法预览,是灰色的

解决方式删掉编译器就可以, 即删掉MiKTeX MiKTeX安装后会将编译器默认修改为MiKTeX,这个时候会显示报错,简单粗暴的方式是删掉MiKTeX软件

python统计分析——单因素方差分析

参考资料:用python动手学统计学 方差分析:analysis of variance,缩写为ANOVA 1、背景知识 1.1 要使用方差分析,数据的总体必须服从正态分布,而且各个水平内部的方差必须相等。 1.2 反复检验导致显著性结果更易出现…
最新文章