【论文阅读】ViT阅读笔记

标题

一张图片可以等价于16*16的单词

transformer可以做大规模的图像识别

摘要

虽然现在transformer在nlp上得到广泛运用,但在cv上还没有运用

一般都是cnn+attention

现在用transformer用cv的效果特别好

引言

nlp的主流方式:先做预训练,再做微调

bert里支持512的序列长度

首先要把一个2d的图片,变成一个序列的集合

在视觉阶段,卷积神经网络还是占主导地位的

有些工作会把cnn和attention一起用

有些工作只用attention

有些工作用特征图作为transformer输入的方式

本工作使用一个标准的transformer直接应用于图片

vision transformer把一个图片分成很多patch,一个patch是16*16

14*14 patch = 196

对于视觉,使用有监督的方式去训练

核心:用这么简洁的框架,transformer也能在cv上得到很好的效果

viT在大规模的数据集上预训练后,可以获得更好的效果

这样就可以把cv问题和nlp问题大一统

结论

我们没有使用归纳偏置,而是直接把他看作一个序列化模型输入

效果很好且相对便宜

挖了一个新坑:如何用vision transformer来做cv

目标检测,图像分割

把cv和nlp大一统,然后也推动了多模态的工作

相关工作

自从transformer以后,感觉已经变成了nlp任务上最好的方法

BERT和GPT

自注意力的工作

在像素层面用transformer是不现实的

可以用sparse transformer,轴注意力

这些自注意力在任务上的表现上都是不错的

cnn+注意力的工作

imageGPT和我们的工作很相近

Method

把一张图打成patch

把patch转化成一个序列

patch embedding和position embedding

经过transformer以后,进mlp head

如何把一张图片,变成一系列的token

1414 得到196个patch,每个patch的维度是16 * 16 * 3 = 768

对图片进行预处理和对输出进行后处理是很关键的

消融实验用不同的位置编码:1d位置编码,2d位置编码,相对位置编码

vision transformer和cnn比要少很多归纳偏置

实验

在不同大小的数据集上做了预训练

能在大多数数据集上取得比较好的结果

数据集:ImageNet

三种模型:base, large, huge

vision transformer在中小型数据集上,效果不如resnet,因为没有用到一些先验知识和归纳偏置

在大的数据集上,用viT可以给到更好的结果,他的扩展能力更好一些

做了一些可视化,分析viT内部的表征

masked patch prediction

对比学习、自监督、无监督

你可能感兴趣的:(论文阅读,论文阅读,笔记,深度学习)