英文

Vision Transformer (大型模型)

Vision Transformer (ViT) 模型是在 ImageNet-21k 数据集上(包含 14 百万张图片,21,843 个类别)预训练的,分辨率为 224x224,然后在 ImageNet 2012 数据集上(包含 1 百万张图片,1,000 个类别)进行了精调,分辨率为 384x384。该模型最初在 Dosovitskiy 等人的论文中提出并在 this repository 中首次发布。然而,模型的权重是由 Ross Wightman 从 timm repository 转换为 PyTorch 的。此处感谢他的贡献。

免责声明:发布 ViT 模型的团队并未为该模型编写过模型卡片,所以此模型卡片是由 Hugging Face 团队编写的。

模型描述

Vision Transformer (ViT) 是一个在大量图像上以监督方式进行预训练的 Transformer 编码器模型(类似于 BERT),分辨率为 224x224 像素。接下来,该模型在 ImageNet 上进行了精调(也称为 ILSVRC2012),该数据集包含了 1 百万张图片和 1,000 个类别,分辨率为 384x384。

图像被作为固定大小块(分辨率为 32x32)的序列呈现给模型,然后进行线性嵌入。在序列的开头添加了一个 [CLS] 标记,用于分类任务。在将序列输入到 Transformer 编码器的层之前,还会添加绝对位置嵌入。

通过预训练模型,它可以学习图像的内部表示,并可以用于提取对下游任务有用的特征:例如,如果你有一个带标签的图像数据集,可以在预训练编码器的顶部放置一个线性层来训练一个标准分类器。通常情况下,将线性层放在 [CLS] 标记的顶部,因为该标记的最后隐藏状态可以被看作是整个图像的表示。

使用目的和限制

可以使用原始模型进行图像分类。查看 model hub 以查找您感兴趣的领域的经过微调的版本。

使用方法

以下是使用此模型将 COCO 2017 数据集中的图像分类为 1,000 个 ImageNet 类别之一的方法:

from transformers import ViTFeatureExtractor, ViTForImageClassification
from PIL import Image
import requests
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
feature_extractor = ViTFeatureExtractor.from_pretrained('google/vit-large-patch32-384')
model = ViTForImageClassification.from_pretrained('google/vit-large-patch32-384')
inputs = feature_extractor(images=image, return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits
# model predicts one of the 1000 ImageNet classes
predicted_class_idx = logits.argmax(-1).item()
print("Predicted class:", model.config.id2label[predicted_class_idx])

当前,特征提取器和模型都支持 PyTorch。Tensorflow 和 JAX/FLAX 即将支持,ViTFeatureExtractor 的 API 可能会发生更改。

训练数据

ViT 模型在包含 14 百万张图片和 21k 个类别的 ImageNet-21k 数据集上进行了预训练,并在包含 1 百万张图片和 1k 个类别的 ImageNet 数据集上进行了精调。

训练过程

预处理

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

图像被调整大小/缩放到相同的分辨率(预训练期间为 224x224,精调期间为 384x384),并在 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}
}