许可协议:apache-2.0
标签:
- 视觉
- 图像分类
数据集:
- imagenet-1k
- imagenet-21k
示例展示:
- 图片链接:https://huggingface.co/datasets/mishig/sample_images/resolve/main/tiger.jpg
示例标题:老虎
- 图片链接:https://huggingface.co/datasets/mishig/sample_images/resolve/main/teapot.jpg
示例标题:茶壶
- 图片链接:https://huggingface.co/datasets/mishig/sample_images/resolve/main/palace.jpg
示例标题:宫殿
视觉变换器(基础尺寸模型)
视觉变换器(ViT)模型在ImageNet-21k(1400万张图像,21,843个类别)上以224x224分辨率进行预训练,并在ImageNet 2012(100万张图像,1,000个类别)上以相同分辨率进行微调。该模型由Dosovitskiy等人在论文《一张图片相当于16x16个词:大规模图像识别的变换器》中提出,并首次发布于此代码库。不过,权重是由Ross Wightman从timm代码库转换而来,他此前已将权重从JAX格式转换为PyTorch格式。荣誉归于他。
免责声明:发布ViT的团队未为此模型编写模型卡片,因此本卡片由Hugging Face团队撰写。
模型描述
视觉变换器(ViT)是一种类似BERT的变换器编码器模型,以监督方式在大量图像(即ImageNet-21k)上以224x224像素分辨率进行预训练。随后,模型在ImageNet(也称ILSVRC2012)上微调,该数据集包含100万张图像和1,000个类别,同样采用224x224分辨率。
图像以固定大小(16x16)的补丁序列形式输入模型,并进行线性嵌入。序列开头添加了[CLS]标记用于分类任务。在将序列输入变换器编码器层之前,还添加了绝对位置嵌入。
通过预训练,模型学习到图像的内在表示,可用于提取下游任务所需的特征:例如,如果有标注图像数据集,可在预训练编码器顶部添加线性层来训练标准分类器。通常会在[CLS]标记顶部添加线性层,因为该标记的最后隐藏状态可视为整张图像的表示。
预期用途与限制
可直接使用该模型进行图像分类。访问模型中心寻找针对特定任务微调的版本。
使用方法
以下示例展示如何将COCO 2017数据集的图像分类为1,000个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
predicted_class_idx = logits.argmax(-1).item()
print("预测类别:", 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)可获得最佳结果。当然,增大模型尺寸会提升性能。
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}
}