Vision Transformer(ViT)模型在 ImageNet-21k(1400 万张图像,21,843 个类别)上以 224x224 的分辨率进行预训练,并在 ImageNet 2012(100 万张图像,1,000 个类别)上以 224x224 的分辨率进行微调。它由 Dosovitskiy 等人在论文《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》中提出,并首次在 此仓库 发布。不过,这些权重是由 Ross Wightman 从 timm 仓库 转换而来,他已将权重从 JAX 转换为 PyTorch。在此表示感谢。
免责声明:发布 ViT 的团队未为此模型编写模型卡片,因此本模型卡片由 Hugging Face 团队编写。
Vision Transformer(ViT)是一种 transformer 编码器模型(类 BERT),在大量图像集合上以监督方式进行预训练,即 ImageNet-21k,分辨率为 224x224 像素。接下来,该模型在 ImageNet(也称为 ILSVRC2012)上进行微调,这是一个包含 100 万张图像和 1,000 个类别的数据集,分辨率同样为 224x224。
图像以固定大小的补丁序列(分辨率 16x16)形式输入模型,这些补丁经过线性嵌入。为了用于分类任务,还会在序列开头添加一个 [CLS] 标记。在将序列输入 Transformer 编码器的各层之前,还会添加绝对位置嵌入。
通过预训练模型,它学习图像的内部表示,这些表示可用于提取对下游任务有用的特征:例如,如果您有一个带标签的图像数据集,可以通过在预训练编码器之上放置一个线性层来训练标准分类器。通常会在 [CLS] 标记之上放置一个线性层,因为该标记的最后一个隐藏状态可以看作是整个图像的表示。
您可以将原始模型用于图像分类。请参阅模型中心,查找您感兴趣的任务的微调版本。
以下是如何使用此模型将 COCO 2017 数据集的图像分类为 1000 个 ImageNet 类别之一的方法:
from transformers import ViTImageProcessor, ViTForImageClassification
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-patch16-224')
model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224')
inputs = processor(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])如需更多代码示例,请参阅文档。
ViT 模型在 ImageNet-21k 上进行了预训练,该数据集包含 1400 万张图像和 21k 个类别,并在 ImageNet 上进行了微调,ImageNet 数据集包含 100 万张图像和 1k 个类别。
训练/验证期间图像预处理的确切细节可参见此处。
图像被调整大小/缩放至相同分辨率(224x224),并在 RGB 通道上进行归一化,均值为(0.5, 0.5, 0.5),标准差为(0.5, 0.5, 0.5)。
该模型在 TPUv3 硬件(8 核)上进行训练。所有模型变体均采用 4096 的批大小和 10k 步的学习率预热。对于 ImageNet,作者发现额外应用全局范数为 1 的梯度裁剪是有益的。训练分辨率为 224。
有关多个图像分类基准的评估结果,请参阅原始论文的表 2 和表 5。请注意,在微调时,使用更高的分辨率(384x384)可获得最佳结果。当然,增大模型尺寸会带来更好的性能。
@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}
}