DL-Paper精读:Vision Transformer

AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE

https://openreview.net/pdf?id=YicbFdNTTy

 

background

Transformer已经成为了NLP领域的“the model of choice”, 主流做法(如BERT, GPT等)一般为在一个巨大的文本库上进行预训练,然后再在 一个较小的具体任务数据集上进行fine-tune。受益于Transformer 结构的计算效率及可扩展性,尽管目前模型及数据集尺寸不断增长,Transformer结构仍未到达性能上限。

limit

但它在CV领域的应用依然很受限,受其启发,有一些工作采用了例如self-attention等结构,与CNN相结合,或者在保持CNN架构的情况下取代某些组件,虽然也获得了一些精度上的提升,但这些特殊的attention结构,目前还无法在实际硬件部署中获得加速效果。因此在CV领域依然是ResNet类型的结构占据主流。

novel point

本文将图片进行切片,直接将patch序列输入到原始的Transformer中(Vision Transformer, ViT),在classification任务上取得了最优的结构,证明了CNN的结构并不是必须的。同时该工作还证明了ViT直接在ImageNet等数据集上进行训练效果不是太好,但经过在超大数据集(JFT-300M等)上进行预训练,再迁移到ImageNet等任务上时,可以获得极高的精度。

methodology

为了能直接使用NLP中对Transformer的一系列研究工作,本文所采用的模型结构,尽量贴近于原始的Transformer,如下所示:

  

输入:标准的Transformer采用的是1-D的序列,为处理2-D的图像信息,这里采用将图像切分的做法。首先将输入图像 x\in R^{H\times W\times C}进行reshape到x\in R^{N\times \left ( P^{2}\cdot C \right )},其中P为分割的patch的尺寸,N为输入序列的长度。将patch的图像信息,位置信息及图像类别信息flatten到1-D作为输入,见公式1。若采用变体Hybrid Archetecture,结合CNN与Transformer,则将CNN输出的feature map代替此处的patch图像。

输出:与encoder的输出直接相连,在pre-training阶段采用一个一层的MLP,在fine-tuning阶段采用一个linear层.

Encoder: 详见上图左侧encoder部分。中间部分即为一个encoder,与原始的Transformer相同,由交替的Multiheaded self-attention(MSA)和MLP组成,每个block头尾还加入了LN和skip_connection,具体公式见2.3.

微调:ViT首先在超大数据集上预训练 ,然后迁移到下游的小数据集上进行微调。移除预训练的预测head,并添加了一个零初始化的 D × K 前馈层,其中 K 表示分类任务的类别。当下游任务图像分辨率不同时,选择固定patch尺寸不变。虽然这会导致更大的输入尺寸(ViT可以处理内存限制内任意尺寸的输入),但高分辨率的微调更有益处。但是此时预训练得到的position embeddings将失去意义,因此根据position embeddings在原始图像中的位置,进行2维插值。

evaluation(benchmark, experiments design)

文中对ViT,及其变体进行了验证,在多个数据集上均达到了超越目前SOTA的精度。同时在ImageNet上还证明了当模型尺寸较小时,hybrid变体比ViT精度更高,但随着模型增大,这种优势将逐渐消失。此外,还通过一个小实验证明了ViT在自监督学习任务上同样具有可观的未来。下图给出了在三个不同数据集上预训练后,在下游任务迁移的结果。

 

Thoughts:

  • Describe what the authors of the paper aim to accomplish, or perhaps did achieve.

将Transfomer用于CV领域

  • If a new approach/ technique/ method was introduced in a paper, what are the key elements of the newly proposed approach?

结构采用原始的Transformer,需要考虑的就是如何处理输入输出,如何将2-D的图像信息转换为1-D的序列信息传入Transformer结构中。本文采用简单的patch切分及position embedding,再进行flatten的方法,实现了这一目标。同时,可以思考的是,采用图像patch并进行位置embedding的方法,本质上类似于对图像不同位置的attetion,有利于图像内容的理解。

  • What content within the paper is useful to you?

这两年Transformer已经逐渐攻破了CV的一个又一个领域,但自己一直都未有具体的研究。以后,还需要对其在检测,超分,视频等领域的工作也一一进行学习。

猜你喜欢

转载自blog.csdn.net/li6016265/article/details/113801953