license: apache-2.0
tags:
- 视觉
datasets:
- imagenet-21k
inference: false
视觉Transformer(基础规模模型)
该视觉Transformer(ViT)模型基于ImageNet-21k数据集(1400万张图像,21,843个类别)以224x224分辨率进行预训练。该模型由Dosovitskiy等人在论文《一张图片相当于16x16个单词:大规模图像识别的Transformer》中提出,并首次发布于此代码库。不过,权重是由Ross Wightman从timm代码库转换而来,他此前已将权重从JAX格式转换为PyTorch格式。荣誉归功于他。
免责声明:发布ViT的团队未为此模型编写模型卡,因此本模型卡由Hugging Face团队撰写。
模型描述
视觉Transformer(ViT)是一种类似于BERT的Transformer编码器模型,通过监督学习在大量图像(即ImageNet-21k)上以224x224像素分辨率进行预训练。
图像被分割为固定大小的块(16x16分辨率)并线性嵌入后输入模型。序列开头会添加一个[CLS]标记用于分类任务,并在输入Transformer编码器层之前加入绝对位置嵌入。
请注意,此模型未提供任何微调头部,因为这些部分已被谷歌研究人员清零。但模型包含预训练的池化器,可用于下游任务(如图像分类)。
通过预训练,模型学习到图像的内在表示,可用于提取对下游任务有用的特征:例如,如果有带标签的图像数据集,可以在预训练编码器顶部添加线性层来训练标准分类器。通常会在[CLS]标记顶部添加线性层,因为该标记的最后隐藏状态可视为整个图像的表示。
预期用途与限制
原始模型可用于图像分类。请查看模型中心寻找感兴趣任务的微调版本。
使用方法
以下是在PyTorch中使用该模型的方式:
from transformers import ViTImageProcessor, ViTModel
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-in21k')
model = ViTModel.from_pretrained('google/vit-base-patch16-224-in21k')
inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
last_hidden_states = outputs.last_hidden_state
以下是在JAX/Flax中使用该模型的方式:
from transformers import ViTImageProcessor, FlaxViTModel
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-in21k')
model = FlaxViTModel.from_pretrained('google/vit-base-patch16-224-in21k')
inputs = processor(images=image, return_tensors="np")
outputs = model(**inputs)
last_hidden_states = outputs.last_hidden_state
训练数据
ViT模型在ImageNet-21k上预训练,该数据集包含1400万张图像和21k个类别。
训练流程
预处理
训练/验证期间图像预处理的具体细节可在此处找到。
图像被调整/缩放至相同分辨率(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}
}