英文

Vision Transformer(基础模型)

Vision Transformer(ViT)模型在224x224分辨率下,在ImageNet-21k(1400万图像,21843个类别)上进行了预训练。它在Dosovitskiy等人的论文中被引入,首次发布于Hugging Face。然而,权重是由Ross Wightman转换自JAX到PyTorch的 timm repository 版本。感谢他的贡献。

免责声明:释放ViT的团队并未为该模型编写模型说明书,因此此模型卡片由Hugging Face团队编写。

模型描述

Vision Transformer(ViT)是一个基于transformer编码器的模型(类似BERT),以224x224像素的图像集合为监督,即ImageNet-21k,在固定大小的补丁序列(32x32分辨率)中呈现图像,然后进行线性嵌入。还在序列的开头添加了[CLS]标记,用于分类任务。在将序列输入Transformer编码器的层之前,还添加了绝对位置嵌入。

请注意,此模型不提供任何精调的头部,因为谷歌研究人员将其置零。然而,该模型包括预训练的池化器,可用于下游任务(如图像分类)。

通过对模型进行预训练,它学习了图像的内部表示,然后可以用于提取用于下游任务的特征:例如,如果您有一个标记图像的数据集,可以在预训练的编码器之上放置一个线性层,从而训练一个标准分类器。通常将线性层放置在[CLS]标记上,因为该标记的最后隐藏状态可以视为整个图像的表示。

预期用途和限制

可以使用原始模型进行图像分类。请参阅 model hub 以查找您感兴趣的任务的精调版本。

如何使用

以下是在PyTorch中使用此模型的方法:

from transformers import ViTImageProcessor, ViTModel
from PIL import Image
import requests

url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)

processor = ViTImageProcessor.from_pretrained('google/vit-base-patch32-224-in21k')
model = ViTModel.from_pretrained('google/vit-base-patch32-224-in21k')

inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
last_hidden_state = outputs.last_hidden_state

有关在TensorFlow和JAX / FLAX中使用的用法,请参考 docs .

训练数据

ViT模型在 ImageNet-21k 上进行了预训练,该数据集由1400万张图像和21k个类别组成。

训练过程

预处理

关于训练/验证期间图像的预处理的详细信息可以在 here 中找到。

图像被调整大小/缩放到相同的分辨率(224x224),并在RGB通道上进行归一化处理,平均值为(0.5, 0.5, 0.5),标准差为(0.5, 0.5, 0.5)。

预训练

该模型在TPUv3硬件(8个核心)上进行训练。所有模型变体的批量大小均为4096,学习率预热为10k步骤。对于ImageNet,作者发现另外应用全局范数1的梯度剪裁有益。预训练分辨率为224。

评估结果

关于几个图像分类基准测试的评估结果,请参阅原始论文的表2和表5。请注意,对于微调,最佳结果是在更高的分辨率(384x384)下获得的。当然,增加模型大小将会获得更好的性能。

BibTeX条目和引用信息

@misc{wu2020visual,
      title={Visual Transformers: Token-based Image Representation and Processing for Computer Vision}, 
      author={Bichen Wu and Chenfeng Xu and Xiaoliang Dai and Alvin Wan and Peizhao Zhang and Zhicheng Yan and Masayoshi Tomizuka and Joseph Gonzalez and Kurt Keutzer and Peter Vajda},
      year={2020},
      eprint={2006.03677},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}
@inproceedings{deng2009imagenet,
  title={Imagenet: A large-scale hierarchical image database},
  author={Deng, Jia and Dong, Wei and Socher, Richard and Li, Li-Jia and Li, Kai and Fei-Fei, Li},
  booktitle={2009 IEEE conference on computer vision and pattern recognition},
  pages={248--255},
  year={2009},
  organization={Ieee}
}