许可协议:apache-2.0
标签:
- 视觉
- 图像分类
数据集:
- imagenet
- imagenet-21k
Vision Transformer(基础规模模型)
Vision Transformer(ViT)模型先在ImageNet-21k(1400万张图像,21,843个类别)上以224x224分辨率进行预训练,随后在ImageNet 2012(100万张图像,1,000个类别)上以384x384分辨率进行微调。该模型由Dosovitskiy等人在论文《一张图片相当于16x16个词:大规模图像识别的Transformer》中提出,并首次发布于此代码库。不过,权重是由Ross Wightman从timm代码库转换而来,他此前已将权重从JAX格式转换为PyTorch格式。荣誉归于他。
免责声明:发布ViT的团队未为此模型编写模型卡,因此本模型卡由Hugging Face团队撰写。
模型描述
Vision Transformer(ViT)是一种类似BERT的Transformer编码器模型,通过监督学习在大量图像(即ImageNet-21k,分辨率为224x224像素)上进行预训练。随后,模型在更高分辨率(384x384)的ImageNet(也称ILSVRC2012)数据集上微调,该数据集包含100万张图像和1,000个类别。
图像以固定大小的块序列(分辨率为16x16)形式输入模型,这些块经过线性嵌入。序列开头还添加了一个[CLS]标记,用于分类任务。在将序列输入Transformer编码器层之前,还会添加绝对位置嵌入。
通过预训练,模型学习到图像的内在表示,可用于提取下游任务所需的特征:例如,如果有标注图像数据集,可以在预训练编码器顶部添加线性层来训练标准分类器。通常会在[CLS]标记顶部添加线性层,因为该标记的最后隐藏状态可视为整个图像的表示。
预期用途与限制
可直接使用该原始模型进行图像分类。请参阅模型中心寻找您感兴趣任务的微调版本。
使用方法
以下示例展示如何使用该模型将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-base-patch16-384')
model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-384')
inputs = feature_extractor(images=image, return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits
predicted_class_idx = logits.argmax(-1).item()
print("预测类别:", model.config.id2label[predicted_class_idx])
目前,特征提取器和模型均支持PyTorch。TensorFlow和JAX/FLAX即将推出,且ViTFeatureExtractor的API可能会变更。
训练数据
ViT模型先在ImageNet-21k上预训练,该数据集包含1,400万张图像和21k个类别;随后在ImageNet上微调,该数据集包含100万张图像和1k个类别。
训练流程
预处理
训练/验证期间图像预处理的具体细节详见此处。
图像被调整大小/缩放至相同分辨率(预训练时为224x224,微调时为384x384),并在RGB通道上以均值(0.5, 0.5, 0.5)和标准差(0.5, 0.5, 0.5)进行归一化。
预训练
模型在TPUv3硬件(8核)上训练。所有模型变体均以4,096的批量大小和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}
}