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 openmind_hub import snapshot_download
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)
model_path = snapshot_download("PyTorch-NPU/vit_base_patch16_224", revision="main", resume_download=True, ignore_patterns=["*.h5", "*.ot", "*.msgpack"])
processor = ViTImageProcessor.from_pretrained(model_path)
model = ViTForImageClassification.from_pretrained(model_path)
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上进行微调,该数据集包含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}
}