BEiT: BERT Pre-Training of Image Transformers 论文笔记

news2025/4/16 17:33:04

BEiT: BERT Pre-Training of Image Transformers 论文笔记

论文名称:BEiT: BERT Pre-Training of Image Transformers

论文地址:2106.08254] BEiT: BERT Pre-Training of Image Transformers (arxiv.org)

代码地址:unilm/beit at master · microsoft/unilm (github.com)

作者讲解:BiLiBiLi

作者PPT:文章资源


文章目录

    • BEiT: BERT Pre-Training of Image Transformers 论文笔记
      • Visual Tokens
    • 1.1 总体方法
    • 1.2 图像表示
      • 1.2.1 图像块 (Image Patches)
      • 1.2.2 视觉标记 (Visual Tokens)
    • 1.3 ViT Backbone
    • 2. BEiT的预训练:掩码图像建模
      • 2.1. Masked Image Modeling (MIM)
      • 2.2. Blockwise Masking 分块遮蔽
      • 2.3. From VAE Perspective 从VAE的角度
    • 3. 实验结果
      • 3.1. ImageNet-1K 和 ImageNet-22K 预训练,以及在 ImageNet-1K 上的图像分类
      • 3.2. ADE20K的语义分割
      • 3.3. 消融研究
      • 3.4. 自注意力图分析


整体结构图

在这里插入图片描述


Visual Tokens

将图像分解为离散的标记

  • 离散 variational autoencoder

  • 学习通过视觉令牌的条件来重建原始图像

在这里插入图片描述

  • 图像表示(两个视角)

在这里插入图片描述


  • 分块遮罩
    • 每次都会对图像块进行遮罩处理

在这里插入图片描述


  • 将受损图像补丁输入到 Transformer
    • 最终的隐向量被视为编码表示

在这里插入图片描述


  • 在给定受损图像的情况下恢复正确的视觉标记
    • 视觉标记将细节总结为高层抽象

在这里插入图片描述


1.1 总体方法

  • BERT 启发,提出了一项预训练任务,即掩码图像建模(MIM)
  • MIM为每个图像使用了两种视图,即图像块(image patches)和视觉标记(visual tokens)
  • 图像被分割成一个网格的图像块,这些图像块是骨干Transformer的输入表示。
  • 通过离散变分自编码器(discrete variational autoencoder),图像被“标记化”(tokenized)为离散的视觉标记,其中离散变分自编码器来自于 DALL·E。

在预训练阶段,图像的一部分图块(image patches)会被随机地遮挡(masked),然后将这些被遮挡的输入提供给Transformer模型。模型会学习如何从遮挡后的输入中恢复原始图像中的视觉标记(visual tokens),而不是从遮挡的图块中恢复原始像素。

换句话说,模型在这个过程中学习了如何通过遮挡和损坏的输入来推断出原始图像的部分内容,这有助于模型学习图像的语义和特征。作者认为这种预训练策略可以增强模型在图像处理任务中的能力,使其能够更好地理解和表示图像。

1.2 图像表示

图像具有两种表示视图,即图像块视觉标记。这两种类型在预训练期间分别用作输入和输出表示。

1.2.1 图像块 (Image Patches)

在这里插入图片描述

  • 尺寸为 H × W × C H×W×C H×W×C 的二维图像被分割成大小为 P 2 P^2 P2 的图像块序列 x p x_p xp(其中 p p p 1 1 1 N N N),其中 p a t c h patch patch 的数量 N N N = H W / P 2 HW/P^2 HW/P2
  • 图像块 x p x_p xp 被展平为向量,并且进行线性投影,这与 BERT 中的词嵌入类似。

具体而言,BEiT 将每个 224 × 224 224×224 224×224 的图像分割成一个 14 × 14 14×14 14×14 的图像块网格,每个图像块大小为 16 × 16 16×16 16×16

1.2.2 视觉标记 (Visual Tokens)

在这里插入图片描述

图像不再以原始像素的形式表示,而是被分解成一系列离散的标记(tokens),这些标记是通过一个名为“图像分词器”(image tokenizer)获得的。换句话说,图像被转化成了一串由特定标记组成的序列,而不再是像素点的集合。

具体而言,尺寸为 H × W × C H×W×C H×W×C 的图像被标记化为 z = [ z 1 , … , z N ] z=[z1, …, zN] z=[z1,,zN],其中词汇表 V = { 1 , 2 , … , ∣ V ∣ } V=\{1, 2, …, |V|\} V={1,2,,V} 包含离散的标记索引。

  • 由 DALL·E 学习的离散变分自编码器(dVAE)直接使用了图像标记器。

  • 在视觉标记学习过程中,存在两个模块,即标记器tokenizer)和解码器decoder)。

  • 标记器 q ( z ∣ x ) q(z|x) q(zx) 将图像像素 x x x 映射为离散标记 z z z,根据一个视觉码本(即词汇表)。

  • 解码器 $p(x|z) $学习基于视觉标记 z z z 重构输入图像 x x x

  • 词汇表大小设置为 ∣ V ∣ = 8192 |V| = 8192 V=8192


1.3 ViT Backbone

  • ViT的基础上,使用了 T r a n s f o r m e r Transformer Transformer 骨干网络。

  • T r a n s f o r m e r Transformer Transformer 的输入是图像块序列 x i p x_i^p xip

  • 然后,图像块通过线性投影得到块嵌入 E x i p Ex^p_i Exip

  • 标准的可学习的一维位置嵌入 E p o s E_{pos} Epos 被添加到块嵌入中:

H 0 = [ e [ S ] , E x i p , … , E x N p ] + E p o s \boldsymbol{H}_{0}=\left[\boldsymbol{e}_{[\mathrm{S}]}, \boldsymbol{E} \boldsymbol{x}_{i}^{p}, \ldots, \boldsymbol{E} \boldsymbol{x}_{N}^{p}\right]+\boldsymbol{E}_{p o s} H0=[e[S],Exip,,ExNp]+Epos

  • 编码器包含 L L L T r a n s f o r m e r Transformer Transformer 块:

H l =  Transformer  ( H l − 1 ) \boldsymbol{H}^{l}=\text { Transformer }\left(\boldsymbol{H}^{l-1}\right) Hl= Transformer (Hl1)

  • 最后一层的输出向量为:

在这里插入图片描述

这些向量被用作图像块的编码表示,其中 h i L h^L_i hiL 是第 i i i 个图像块的向量。

  • 使用了ViTBase,它是一个包含 12 12 12 T r a n s f o r m e r Transformer Transformer 的模型,每层有 768 768 768 的隐藏大小和 12 12 12 个注意力头。前馈网络的中间大小为 3072 3072 3072

2. BEiT的预训练:掩码图像建模

2.1. Masked Image Modeling (MIM)

img

  • 将图像分割成图像块后,如上所述,大约 40 % 40\% 40% 的图像块会被随机遮蔽,遮蔽的位置标记为M。被遮蔽的块会被可学习的嵌入e[M]所取代。在 BEiT 中,最多会遮蔽 75 75 75 个图像块。

  • 然后,好的和被遮蔽的图像块被输入到 L L L T r a n s f o r m e r Transformer Transformer 中。

  • 使用softmax分类器来预测相应的视觉标记:

img

预训练目标是最大化给定受损图像情况下正确视觉标记 z i z_i zi 的对数似然:

在这里插入图片描述

  • BEiTImageNet-1K 的训练集上进行预训练。

  • 预训练大约运行了500k步(即800epoch),使用了2k的批大小。这500k个训练步骤使用了16Nvidia Tesla V100 32GB GPU 卡,大约花费了五天的时间。

2.2. Blockwise Masking 分块遮蔽

在这里插入图片描述

补丁块是随机遮蔽的,如上图和算法所示,而不是以随机方式逐个遮蔽每个补丁。

2.3. From VAE Perspective 从VAE的角度

  • BEiT 的预训练可以看作是变分自编码器的训练:

    原始图像: x x x

    当前图像: x ~ \widetilde{x} x

    视觉标记: z z z

在这里插入图片描述

  • 在第一阶段,图像标记器作为一个离散变分自编码器获得。具体来说,第一阶段最小化重构损失,使用均匀先验。
  • 在第二阶段,保持 q φ q_φ qφ p ψ p_ψ pψ 固定的同时学习先验 p θ p_θ pθ
  • 因此,上述方程被重写为:

在这里插入图片描述

其中第二项是提出的 BEiT 预训练目标。

3. 实验结果

3.1. ImageNet-1K 和 ImageNet-22K 预训练,以及在 ImageNet-1K 上的图像分类

img

  • 一个简单的线性分类器被用作任务层。平均池化被用来聚合表示,并将全局表示输入到一个 softmax 分类器中。
  • 预训练的 BEiT 显著提高了在这两个数据集上的性能。

BEiT 在 ImageNet 上提高了性能,显示了在资源丰富的设置下的有效性。

  • 更高的分辨率在 ImageNet 上将 BEiT 的结果提高了 1+ 个百分点。

更重要的是,即使在使用相同输入分辨率时,预训练于 ImageNet-1KBEiT384 甚至在性能上超越了使用 ImageNet-22K 进行监督预训练的 ViT384

img

BEiT 进行微调不仅实现了更好的性能,而且收敛速度比从零开始训练的 DeiT 快得多。

3.2. ADE20K的语义分割

img

  • 使用了 SETR-PUP 中使用的任务层

  • 具体来说,将预训练的 BEiT 用作骨干编码器,并结合几个反卷积层作为解码器来产生分割。

BEiT 比监督式预训练具有更好的性能,尽管 BEiT 不需要手动注释进行预训练。

  • 在 ImageNet上对 BEiT 进行中间微调,即首先在ImageNet上对预训练的 BEiT 进行微调,然后在ADE20K上对模型进行微调。

中间微调进一步改善了语义分割的 BEiT

3.3. 消融研究

img

  • 块屏蔽(Blockwise masking)对这两个任务都是有益的,尤其是在语义分割方面

  • 所提出的掩蔽图像建模(MIM)任务明显优于朴素像素级自动编码。结果表明,视觉代币的预测是 BEiT 的关键要素。

  • 恢复所有视觉对象令牌会损害下游任务的性能。

  • 对模型进行更长时间的预训练(800 个 epoch)可以进一步提高下游任务的性能

3.4. 自注意力图分析

img

  • BEiT 中的自我注意机制可以分离物体。

    经过预训练后,BEiT 学会使用自我注意头来区分语义区域,而无需任何特定于任务的监督。BEiT 获得的这些知识有可能提高微调模型的泛化能力,特别是在小规模数据集上。


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

恒运资本:如何融券做空?融资做多?

在股票商场经常听到做多、做空两种战略。那么。如何融券做空?融资做多?下面恒运资本为大家准备了相关内容,以供参阅。 如何融券做空? 融券做空的意思是投资者以为未来某只股票会跌落,因而向证券公司借入某只股票&…

浅谈智能建筑中电力监控系统的应用与产品选型

贾丽丽 安科瑞电气股份有限公司 上海嘉定201801 摘要:近几十年,中国现代化经济不断发展,计算机技术、信息技术等相关产业也取得了飞跃性的进步。随着商业、生活以及公共建筑不断提高智能管理和节能的要求,电力监控系统开始逐渐渗…

带你掌握Stable Diffution商业级玩法

课程介绍 学习地址 《Stable Diffusion商业级玩法》通过详细讲解AI绘画技巧、实操演示和个性化指导,帮助您从零基础成为绘画高手,帮助您有效推广产品或服务,提升市场份额。教您掌握稳定扩散绘画技巧,开启艺术创作新篇章。

【力扣每日一题】2023.8.18 3n块披萨

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们一个披萨,分成了3n块,每次我们可以选择一块,而我们的两个小伙伴会拿走我们选的披萨的相邻的…

【广州华锐视点】AR配电所巡检系统:可视化巡检利器

随着科技的发展,人工智能、大数据等技术逐渐应用于各个领域,为人们的生活带来便利。在电力行业,AR(增强现实)技术的应用也日益广泛。AR配电所巡检系统作为一种新型的巡检方式,可以实现多种功能,提高巡检效率&#xff0…

C++函数模板和类模板

C另一种编程思想称为泛型编程,主要利用的技术是模板 C提供两种模板机制:函数模板和类模板 C提供了模板(template)编程的概念。所谓模板,实际上是建立一个通用函数或类, 其类内部的类型和函数的形参类型不具体指定, 用…

【网络安全】跨站脚本(xss)攻击

跨站点脚本(也称为 XSS)是一种 Web 安全漏洞,允许攻击者破坏用户与易受攻击的应用程序的交互。它允许攻击者绕过同源策略,该策略旨在将不同的网站彼此隔离。跨站点脚本漏洞通常允许攻击者伪装成受害者用户,执行用户能够…

「UG/NX」Block UI 选择特征SelectFeature

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#

【IMX6ULL驱动开发学习】08.马达驱动实战:驱动编写、手动注册平台设备和设备树添加节点信息

目录 一、使用设备树 1.1 修改设备树流程 二、手动创建平台设备 三、总结(附驱动程序) 前情提要:​​​​​​​【IMX6ULL驱动开发学习】07.驱动程序分离的思想之平台总线设备驱动模型和设备树_阿龙还在写代码的博客-CSDN博客 手动注册…

SpringjDBCTemplate_spring25

1、首先导入两个包,里面有模板 2、transtion事务 jDbc操作对象,底层默认的是事务: 3、我们java一般对实体类进行操作。 4、第一步写好坐标。 创建一个Account表 数据修改用update 数据进去了

音频转换工具哪个好用?能解决音频格式转换问题吗?

大千世界中的语言自然存在差异,不同的音频格式也有着各自的方言,有时候我们需要一位翻译官来帮助我们更好地欣赏这些美妙的音符。幸运的是,现代的科技可以让音频格式转换变得轻而易举,就像是在不同乐章之间穿越。无论是将古典的FL…

arm:day6

实现UART通信: 1.键盘输入一个字符a,串口工具显示b 2.键盘输入一个字符串"nihao",串口工具显示"nihao" uart.h #ifndef __UART4_H__ #define __UART4_H__#include "stm32mp1xx_uart.h" #include "stm32mp1xx_gpio.h" #in…

Kubernetes的endpoint

简介 Kubernetes的endpoint(终结点)是用于将服务绑定到集群中其他组件的网络地址。Endpoint为服务提供了一个稳定的虚拟IP地址,它会负责将流量从Service路由到后端Pod。 下面是使用Kubernetes的endpoint的详细步骤: 创建一个Se…

超声波传感器(HC-SR04)按时序图手撕驱动

目录 1、简介 2、传感器介绍 2.1 引脚介绍 2.2 时序图介绍 3、 需求与接线 3.1 任务需求 3.2 接线 4、Cubemax配置 4.1 SYS配置 4.2 RCC配置 4.3 时钟树配置 4.4 GPIO初始化 4.5 定时器配置 4.6 生成代码 5、 keil端代码编写 5.1 微妙函数封装 5.2 超声波驱动封装…

机器学习---线性判别分析

1. 基本思想 线性判别分析(Linear Discriminant Analysis, LDA),也叫做 Fisher 线性判别(Fisher Linear Discriminant ,FLD),是模式识别的经典算法,1936年由Ronald Fisher⾸次提出,并在1996年由 Belhumeur引⼊模式识别和⼈⼯智能…

【探索C++】用实例教你理解面向对象编程(看不懂打我版)

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,Linux基础,ARM开发板,软件配置等领域博主🌍快上🚘,一起学习,让我们成为一个强大的攻城狮!送给自己和读者的…

软件系统工具-架构师真题(六)

_____不属于可修改性考虑的内容。(2016) 可维护性可扩展性结构重构可变性 答案:D 解析: 可修改性指快速较高的性能价格进行系统优化,包括可维护性、可扩展性、结构重组和可移植性四个方面。 软件系统工具中,软件评…

Docker 常规软件安装

1. 总体安装步骤 1. 搜索镜像 search 2. 拉取镜像 pull 3. 查看镜像 images 4. 启动镜像 - 端口映射 run 5. 停止容器 stop 6. 移除容器 rm 2. 安装tomcat 1. 搜索 docker search tomcat 2. 拉取 docker pull tomcat 3. 查看本地镜像 docker images tomcat 4. 创建容器实…

两个List合并、去重、排序

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

打通应用“壁垒”,数据分类分级结果与安全策略自动匹配

《网络安全法》、《数据安全法》等法律法规,以及各行业各领域与数据安全相关的标准规范,几乎都涉及对数据进行分类分级保护的要求。数据安全始于分类分级,已成为毫无疑问的行业共识。 但现实中不少用户却止步在分类分级工作,“如…