【论文精读】BEiT

本文提出一种掩码图像建模任务,以自监督方式预训练视觉Transformer(BEiT)。介绍了图像表示、主干网络等框架内容,阐述预训练设置并对下游任务微调实验,如图像分类和语义分割。实验表明,BEiT可减少标注工作量,推进大尺寸视觉Transformer技术水平。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要

  • 提出一种掩码图像建模任务,以自监督方式预训练视觉transformer。
  • 对BEIT进行了预训练,并对下游任务进行微调实验,如图像分类和语义分割。
  • 发现自监督BEIT的自注意力机制可以学会区分语义区域和对象边界。

框架

image
       给定输入图像xxx,BEiT将其编码为上下文向量表示。如上图,BEiT通过自监督学习掩码图像建模 (MIM) 任务进行预训练,恢复编码向量的masked image patches。对于下游任务 (如图像分类和语义分割),在经预训练的BEiT上添加任务层,并对特定数据集上的参数进行有监督微调。

图像表示

       本方法中,图像有两种表示视图,即images patches和visual tokens。两者分别在预训练任务中作为输入和输出表示。

Images patch

       输入图像xxx被splited为一个序列的patches,适应标准Transformer的输入格式。具体,先将图像x∈RH×W×Cx∈R^{H×W×C }xRH×W×Creshape为N=HW/P2N=HW/P^2N=HW/P2个patches为xp∈RN×(P2C)x^p∈R^{N×(P^2C)}xpRN×(P2C),其中CCC为通道数,(H,W)(H,W)(H,W)为输入图像分辨率,(P,P)(P,P)(P,P)为每个patch的分辨率。然后images patches{xip}i=1N{ \{x^p_i\} }^N_{i=1}{xip}i=1N被flattened为向量并经过线性投影层得到Patch Embedding,作为BEiT输入特征。

       实验中P=16P=16P=16,每幅 224×224 图像被splited成14×1414×1414×14的images patches grid(N=14×14)(N=14×14)(N=14×14),每个grid表示的patch尺寸为16×1616×1616×16

Visual token

       类似于自然语言处理,图像被表示为由image tokenizer获得的离散token序列。具体,采取离散变分自编码器(dVAE)学习到的图像tokenizer,将图像x∈RH×W×Cx∈R^{H×W×C }xRH×W×Ctokenized为z=[z1,...,zN]∈νh×wz=[z_1,...,z_N]∈ν^{h×w}z=[z1,...,zN]νh×w,其中词表 (vocabulary) ν={1,...,∣ν∣}ν={\{1,...,|ν|\}}ν={1,...,ν}包含离散的token索引。

       如dVAE,在visual token的学习过程中,有tokenizer和decoder两个模块。tokenizer qϕ(z∣x)q_ϕ(z|x)qϕ(zx)将图像像素xxx映射为离散tokens zzz。decoder pψ(x∣z)p_ψ(x|z)pψ(xz)学习基于visual token zzz重建输入图像xxx。重建的优化目标写成 Ez∼qϕ(z∣x)[logpψ(x∣z)]E_{z∼q_ϕ(z|x)}[logp_ψ(x|z)]Ezqϕ(zx)[logpψ(xz)]。由于潜在的visual tokens是离散的,模型不可微。因此,采用Gumbel-softmax训练模型。在dVAE训练过程中,qϕq_ϕqϕ会加uniform先验。

       实验中每幅图像被tokenized为14×1414×1414×14的visual tokens grid,和images patches数相同。词表大小设置为 ∣ν∣=8192|ν|=8192ν=8192

主干网络:Transformer

       使用标准Transformer作为骨干网络。Transformer的输入是images patches序列{xip}i=1N{ \{x^p_i\} }^N_{i=1}{xip}i=1N,images patcher经线性投影获得Patch EmbeddingExipEx^p_iExip,其中E∈R(P2C)×DE ∈ R^{(P^2C)×D}ER(P2C)×D;然后,在输入序列前添加一个特殊标记[S][S][S],在将标准的可学习1D position embedding Epos∈RN×DE_{pos} ∈ R^{N×D}EposRN×D添加到Patch Embedding中,得到Transformer的输入向量H0=[e[S],Exip,...,ExNp]+EposH_0 = [e_{[S]}, Ex^p_i , . . . , Ex^p_N ] + E_{pos}H0=[e[S],Exip,...,ExNp]+Epos

       编码器包含LLL层的Transformer blocksHl=Transformer(Hl−1),l=1,...,LH^l =Transformer(H^{l−1}),l = 1, . . . , LHl=Transformer(Hl1),l=1,...,L。最后一层的输出向量HL=[h[S]L,h1L,...,hNL]H^L = [h^L_{[S]}, h^L_1, . . . , h^L_ N ]HL=[h[S]L,h1L,...,hNL]即为经编码的images patches(共N+1 个向量),其中hiLh^L_ ihiL是第iii个图像块的images patcher向量。

预训练 BEiT:掩码图像建模

       结合上述,进行整体建模。给定一个输入图像xxx,将其split为 N个images patches({xip}i=1N)({\{x^p_i\}}^N_{i=1})({xip}i=1N),并 tokenized为N个visual tokens({zi}i=1N)({\{ z_i\}}^N_{i=1})({zi}i=1N)。然后随机mask 40%(掩码率为 0.4)的images patches,其中masked的位置表示为M∈{1,...,N}0.4NM∈{ \{ 1,...,N \}}^{0.4N}M{1,...,N}0.4N,这些位置使用可学习的嵌入e[M]∈RDe_{[ M ] }∈R^De[M]RD来替换(用于训练)。

       被masked后的图像xM={xip:i∉M}i=1N⋃{e[M]:i∈M}i=1Nx^M={\{ x^p_i:i∉M \}}^N_{i=1}⋃{\{ e_{[M]}:i∈M \}}^N_{i=1}xM={xip:i/M}i=1N{e[M]:iM}i=1N将馈入LLL层Transformer中,得到的最后隐层向量{hiL}i=1N{\{h^L_i\}}^N_{i=1}{hiL}i=1N为输入patch的编码表示。对于每个mask位置的{hiL:i∈M}i=1N{\{h^L_i:i∈M\}}^N_{i=1}{hiL:iM}i=1N,使用softmax分类器预测相应的visual tokens pMIM(z′∣xM)=softmaxz′(WchiL+bc)p_{MIM}(z^′|x^M)=softmax_{z′}(W_ch^L_i+b_c)pMIM(zxM)=softmaxz(WchiL+bc),其中xMx^MxM是被masked的images patches,Wc∈R∣ν∣×DW_c∈R^{|ν|×D}WcRν×Dbc∈R∣ν∣b_c∈R^{|ν|}bcRν

       预训练的目标为最大化masked patches在图像中正确的visual tokens ziz_izi的对数似然(log-likelihood)。
max⁡∑x∈DEM[∑i∈Mlog⁡pMIM(zi∣xM)]\max \sum_{x \in D}\mathbb{E}_M[\sum_{i \in M}\log p_{MIM}(z_i|x^M)]maxxDEM[iMlogpMIM(zixM)]

       其中,D为训练语料库,M为随机masked的位置,xMx^MxM为根据M来masked的已损坏图像。

       本算法掩码采用blockwise masking,而非随机选择patches进行mask。如下图所示,每次先计算出s,r,a,ts,r, a,ts,r,a,t,在mask掉i∈[t,t+a),j∈[l,l+b)i\in[t,t+a),j\in[l,l+b)i[t,t+a),j[l,l+b)的部分。重复上述2个步骤,直到获得足够的masked patches。
image
       MIM主要受到MLM的启发,MLM是NLP中最成功的预训练目标之一。blockwise masking也被广泛应用于 BERT-like模型。然而,直接使用像素级自编码(即恢复 masked patches 的像素)进行视觉预训练,会促使模型聚焦于短程依赖和高频细节。BEiT通过预测离散visual tokens来克服上述问题,该tokens会将细节总结为高级抽象。

VAE分析

       BEiT预训练从理论上可视为变分自动编码器训练。设xxx为原始图像,x^\hat xx^为masked图像,zzz为visual tokens。考虑VAE的对数似然p(x∣x^)p(x|\hat x)p(xx^)的下界 (ELBO),带入解释即从其mask图像中恢复原始图像:
∑(xi,x^i)∈Dlog⁡p(xi∣x^i)≥∑(xi,x^i)∈D(Ezi∼qϕ(z∣xi)[log⁡pψ(xi∣zi)]⏟Visual Token Reconstruction−DKL[qϕ(z∣xi),pθ(z∣x^i)])\sum_{(x_i,\hat x_i)\in D}\log p(x_i|\hat x_i)\ge \sum_{(x_i,\hat x_i)\in D}(\underbrace{\mathbb{E}_{z_i \sim q_{\phi}(z|x_i)}[\log p_{ψ}(x_i|z_i)]}_{Visual \ Token \ Reconstruction}-D_{KL}[q_{\phi}(z|x_i),p_{\theta}(z|\hat x_i)])(xi,x^i)Dlogp(xix^i)(xi,x^i)D(Visual Token ReconstructionEziqϕ(zxi)[logpψ(xizi)]DKL[qϕ(zxi),pθ(zx^i)])

       其中,qϕ(z∣x)q_ϕ(z|x)qϕ(zx)表示图像tokenizer,即基于输入图像采用dVAE的Tokenizer获取visual tokens;pψ(x∣z)p_ψ(x|z)pψ(xz)表示输入visual tokens解码原始图像,即通过dVAE的Decoder把visual tokens重建成reconstructed image;pθ(z∣x^)p_θ(z|\hat x)pθ(zx^)表示基于masked图像恢复visual tokens,此即BEIT的预训练任务。

       总结为两阶段过程学习模型:第一阶段,使用uniform作为先验最小化图像重建(Visual Token Reconstruction)损失。即保持pθp_θpθ固定的情况下,学习qϕq_ϕqϕpψp_ψpψ。第二阶段,保持qϕq_ϕqϕpψp_ψpψ固定的情况下,学习先验pθp_θpθ。若qϕ(z∣x)q_ϕ(z|x)qϕ(zx)已为最优,则z^i=argmaxzqϕ(z∣x)\hat z_i=argmax_zq_ϕ(z|x)z^i=argmaxzqϕ(zx),则上条公式可重写为:
∑(xi,x^i)∈D(Ezi∼qϕ(z∣xi)[log⁡pψ(xi∣zi)]⏟Stage 1:Visual Token Reconstruction+log⁡pθ(z^i∣x^i)⏟Stage 2:Masked Image Modeling)\sum_{(x_i,\hat x_i)\in D} \underbrace{(\mathbb{E}_{z_i \sim q_{\phi}(z|x_i)}[\log p_{ψ}(x_i|z_i)]}_{Stage \ 1:Visual \ Token \ Reconstruction}+ \underbrace{\log p_{\theta}(\hat z_i|\hat x_i)}_{Stage \ 2: Masked \ Image \ Modeling})(xi,x^i)DStage 1:Visual Token Reconstruction(Eziqϕ(zxi)[logpψ(xizi)]+Stage 2:Masked Image Modelinglogpθ(z^ix^i))
       Stage 2即为BEiT的预训练目标。

预训练设置

       BEIT的网络架构与ViT-Base相同。使用768隐层大小的12层Transformer,注意力头数为12。FFN的中间尺寸是3072,默认patch size尺寸为16×1616 × 1616×16,采样已训练好的图像tokenizer。视觉token词表大小为8192。

       在ImageNet-1K数据集上自监督预训练BEIT,其中包含大约1.2M张图像。数据增强策略包括随机调整大小的裁剪,水平翻转,颜色抖动。输入图像尺寸为224×224224 × 224224×224,输入被分割为14×1414 × 1414×14的images patches和相同数量的visual token。随机掩码最多75个patch(总图像补丁的40%)。

       预训练运行大约500k step(即800 epoch),batchsize为2k。采用β1=0.9β1 = 0.9β1=0.9, β2=0.999β2 = 0.999β2=0.999的Adam优化。学习率设置为1.5e-3,预热10 epochs余弦学习率衰减,权重衰减是0.05。采用rate=0.1rate = 0.1rate=0.1的stochastic depth(训练时每个batch随机dropout网络的一些layers,测试时用完整网络),禁用dropout。

       适当的初始化对稳定Transformer训练很重要。故在一个小范围内随机初始化所有参数,例如[−0.02, 0.02]。对于第lll层Transformer,用缩放率为1/2l1/\sqrt{2l}1/2l重新缩放自注意力模块和FFN的输出矩阵。

下游视觉任务微调 BEiT

       预训练BEiT后,可以Transformer末尾追加一个任务层,用于微调下游任务。以图像分类和语义分割为例。

  • 图像分类:对于图像分类,直接使用一个简单的线性分类器作为任务层。具体地,类别概率计算为 softmax(avg({hiL}i=1NWc))softmax(avg(\{{h^L_i}\}^N_{i=1}W_c))softmax(avg({hiL}i=1NWc)),其中hiLh^L_ihiL是第iii个images patcher的最终编码向量,Wc∈RD×CW_c∈R^{D×C}WcRD×C是一个参数矩阵,CCC是类别数。通过有监督训练,对有标签数据进行最大似然估计。
  • 语义分割:对于语义分割,遵循SETRPUP中使用的任务层。具体地,使用预训练BEiT作为主干编码器,合并几个反卷积层 (deconv) 作为解码器来产生分割。
  • 中间微调:经过自监督的预训练,BEiT可以在中间数据集上进一步训练,然后在目标下游任务上微调模型 (自监督预训练 → 中间数据集微调 → 下游任务微调),可以直接采用BEIT的方法。

实验

图像分类实验

       以下为在ILSVRC-2012 ImageNet数据集上用1k类和1.3M张图像评估BEIT。
image
       BEIT实验的做法遵循下游任务Fine-tuning的做法,为预训练模型在具体小数据集上面Fine-tune之后得到的结果。分类实验在CIFAR-10和ImageNet这两个数据集上进行,训练配置如上图。
image
       上图为CIFAR-100上的测试top-1精度。观察到,在较小的CIFAR-100数据集上,从头训练的ViT仅达到48.5%精度,BEIT通过预训练实现了90.1%,实验结果表明BEIT可以大大降低标注工作量。BEIT也优于MoCo v3、DINO。另外,在ImageNet-1K上的中间微调可改善在CIFAR-100上的结果。
image
       上图显示了在ImageNet上,从头开始训练时ViT-384-L比ViT-384差,验证了Vision Transformer模型的data hungry的问题,解决方法为用更大的数据集ImageNet-22K,用了以后 ViT-384-L 最终比ViT-384涨了1.2个点。相比之下,BEIT-L比BEIT好2个点,BEIT-384-L比BEIT-384好1.7个点,说明大数据集对BEIT的帮助更大。

       当输入图像尺寸为384×384时,在数据集上Fine-tune10个epochs,patch的大小保持不变的情况下。观察到,更高的分辨率可以提高1个精度点。当使用相同的输入分辨率时,用ImageNet-1K进行预训练的BEIT-384比使用 ImageNet-22K进行监督预训练的 ViT-384表现更好。
image
       与最先进的监督预训练在ImageNet微调上进行了比较。除了使用ImageNet-1K还在ImageNet-22K上对BEIT进行了预训练150 epochs,在自监督预训练之后,在ImageNet-22K进行了90 epoch的中间微调。此外,使用一个内部数据集,其中约有7000万张带标签的图像,作为ImageNet-22K的直接替代。BEIT +为增加了LayerScale和相对位置偏差模块。

       上图结果看到。 BEIT-L在ImageNet-22K上进行了微调,取得了与在谷歌JFT-3B上训练的ViT-L相当的性能。此外,BEIT -L在对内部70M数据集进行中间微调后,在ImageNet上获得了89.5% top-1的精度。结果表明,BEIT预训练大大减少了所需的标记工作,并推进了大尺寸视觉transformer的新技术水平。
image
       上图显示了在ADE20K语义分割基准上的微调结果。在Swin中,使用与BEiT相同的任务层(即UperNet)并在640 × 640分辨率下评估模型。BEiT-L模型在ADE20K上获得最先进的性能。
image
       上图二比较了从零开始训练和先训练再微调两种范式的收敛曲线。微调BEIT不仅实现了更好的性能,而且收敛速度比从头训练DeiT快得多。

消融实验

image
       上图为在ImageNet (分类) 和 ADE20K (分割) 任务上进行的消融实验,行1观察到Blockwise masking在两种任务中都是有利的,特别是在语义分割上。行2为将预训练改为masked patches 的像素回归问题,观察到精度下降了一个点,行3在此之上减少 blockwise masking 的使用进一步降低了精度,发现blockwise masking 对像素级自动编码更有帮助,可缓解短距离依赖。行4预训练恢复100%的visual tokens会影响下游任务的性能,行5在此之上减少 masking 的使用会进一步降低精度。行6比较了不同训练 steps下的 BEiT,显示对模型进行更长时间的预训练可以进一步提高下游任务的性能。
image
       上图显示使用LayerScale和相对位置偏差都提高了ImageNet分类和ADE20K语义分割的性能。 根据经验注意到,当将模型扩展到数十亿参数时,vanilla Transformer是最稳定的,因此我们不将LayerScale用于超大型模型。
image
       上图为对比了在ImageNet-1K上训练的DALL-E的tokenizer和dVAE的tokenizer的性能,实验显示本文提出的tokenizer获得了更好的重构损失和ImageNet微调性能。

可视化

image
       上图绘制了图像中不同参考点的自注意力分布图,可视化通过网络最后一层的query、key的积计算出的注意力分数产生。观察到BEIT中自注意力机制可以分离对象,即使预训练完全不依赖于任何人工标注。

reference

Bao, H. , Dong, L. , & Wei, F. . (2021). Beit: bert pre-training of image transformers.

03-23
### 关于BEiT模型的详细介绍 #### BEiT的核心概念 BEiT (Bidirectional Encoder Representations from Transformers for Images) 是一种基于Transformer架构设计的视觉表示学习方法。其核心思想是通过引入掩码图像建模(Masked Image Modeling, MIM)任务来预训练视觉Transformer模型,从而获得强大的特征提取能力[^4]。 #### BEiT的主要特点 BEiT的一个重要特点是借鉴了自然语言处理中的掩码语言建模(Masked Language Modeling, MLM)。具体而言,BEiT将图像视为由离散的视觉词元(visual tokens)组成,并通过对这些视觉词元进行随机遮蔽后再重建的方式来进行自监督学习。这种方法使得BEiT能够在无需大量标注数据的情况下有效学习到高质量的视觉表征。 #### BEiT的不同版本及其改进 目前已有多个版本的BEiT被提出并不断优化: - **BEiT v1**: 初版提出了利用连续隐空间量化器(Continuous Hidden Space Quantizer, CHSQ)生成离散化的视觉词元序列作为目标标签用于重构损失计算。 - **BEiT v2**: 改进了编码方式,采用矢量量化视觉分词器(Vector-Quantized Visual Tokenizer, VQVT),进一步提升了模型效率与表现力。 #### 官方论文与代码资源 对于希望深入研究BEiT模型的研究者或开发者来说,以下是重要的参考资料: - **论文地址**: 可访问ArXiv获取最新研究成果详情:[https://arxiv.org/pdf/2208.06366.pdf](https://arxiv.org/pdf/2208.06366.pdf)[^4] - **代码仓库**: 微软开源项目提供了完整的实现细节以及实验脚本,支持快速部署和扩展开发需求。可通过GitHub克隆官方存储库:`git clone https://github.com/microsoft/unilm.git` 并切换至对应分支路径 `/master/beit2` 获取所需源码文件[^1] ```bash # 使用Git命令行工具拉取远程仓库内容 $ git clone https://github.com/microsoft/unilm.git # 转移目录进入指定子模块位置 $ cd unilm/beit2/ ``` #### 结合多模态视角下的发展动态 值得注意的是,在更广泛的多模态领域内也有类似尝试将不同形式的数据统一表达为某种共同的语言单位进而简化跨域交互过程的工作进展报道。例如有学者提出可以把图片当作另一种特殊类型的“外语”,并通过构建平行语句关系完成联合训练流程;此类思路有助于推动单一通用框架解决多种特定应用场景难题的趋势形成[^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值