【论文笔记】BEIT: BERT Pre-Training of Image Transformers(BEIT)

文章目录

  • BEIT: BERT Pre-Training of Image Transformers
  • 基本信息
  • 摘要
  • 模型结构
    • Image Patch
    • Visual Token
    • Backbone Network: Image Transformer
    • Pre-tTraining BEIT: Masked Image Modeling
  • 实验
  • 总结

BEIT: BERT Pre-Training of Image Transformers

基本信息

  • 论文链接:arxiv
  • 发表时间:2021
  • 应用场景:VIT预训练、图像分类

摘要

存在什么问题 解决了什么问题
1. 之前基于VIT的预训练方法大都是基于像素级别的复原任务,比如预测某个patch内像素的平均值,这可能会浪费模型容量。 1. 提出了自监督视觉表达模型BEIT,创新性的通过masked image modeling(MIM)方式对VIT模型进行预训练,即让模型直接预测离散的视觉token数值。BEIT在下游任务图像分类上精度超越了MoCoV3,语义分割任务上精度可比。

模型结构

【论文笔记】BEIT: BERT Pre-Training of Image Transformers(BEIT)_第1张图片

Image Patch

和VIT完全一致。

具体流程为:打patch->flatten->fc维度映射。其中patch_size=16x16

Visual Token

目的是要为每个image patch预测一个离散的值,进而可以通过CE Loss进行端到端训练。

这就需要一个image tokenizer,作者这里直接用预训练好的DALL-E作为image tokenizer,省去了自己训练一个dVAE模型的前置工作量。

Backbone Network: Image Transformer

和VIT几乎一致。

组好的patch加上一个特殊token——[S](其实就是将VIT中的 < c l s > <cls>换成了 < s > <s>),再和一个可学习的1d position embedding相加后送进transoformer encoder,取网络最后一层的输出 H L H^L HL作为每个patch的特征表示。

Pre-tTraining BEIT: Masked Image Modeling

BEIT的预训练任务。

随机mask掉40%的image patch,mask方法采取Blockwise Masking策略,具体算法如下,比较简单,不再赘述。

【论文笔记】BEIT: BERT Pre-Training of Image Transformers(BEIT)_第2张图片

对于被mask掉的patch,将其替换成token < M > <M>即可(M是一个可学习向量,替换过程发生在加position embedding vector之前)。

对于输出层,接一个输出维度为8192的全连接层对被mask掉的patch进行端到端训练即可。

实验

预训练阶段,模型配置和VIT完全一致,预训练数据集采用ImageNet-1K,数据增强采用flip、color jitter,预训练方法采用MIM,所以用不到图片原有的label,最后FC层输出维度为8192。

finetune阶段

  • 对于图像分类,对网络最后一层的输出做AvgPool,然后通过FC层预测相应的类别数目,再通过CELoss做端到端训练。
  • 对于语义分割,将网络SETR-PUP的backbone换成预训练好的Beit即可。

ImageNet-1k以及CIFAR-100上的精度超越了之前的预训练方法:

【论文笔记】BEIT: BERT Pre-Training of Image Transformers(BEIT)_第3张图片

在ImageNet-1k上,同参数量下精度超越DeiT和VIT:

【论文笔记】BEIT: BERT Pre-Training of Image Transformers(BEIT)_第4张图片

语义分割任务,ADE20K数据集上达到47.7的miou:

【论文笔记】BEIT: BERT Pre-Training of Image Transformers(BEIT)_第5张图片

总结

  1. 基于VIT提出了一个新的预训练任务MIM,不需要任何图片类别信息的情况下,通过预测离散化的image token类别进行预训练(前提是要有一个训练好的dVAE模型),并由此衍生出BEIT模型(VIT)。该模型在下游图像分类以及语义分割任务上取得了comparable results。
  2. 直接预测image token的离散数值,屏蔽掉了图像中的相关细节,尽可能的构建一个泛化能力更强的backbone。
  3. 没发现 < S > <S> token到底有啥附加功能,fine tune阶段用的是avg策略,并没有用到 < s > <s> token……

你可能感兴趣的:(VIT,bert,深度学习,计算机视觉)