模型:
deepmind/vision-perceiver-learned
Perceiver IO模型在ImageNet(1400万张图像,1000个类别)数据集上进行了预训练,分辨率为224x224。该模型由Jaegle等人在 Perceiver IO: A General Architecture for Structured Inputs & Outputs 论文中介绍,并在 this repository 中首次发布。
免责声明:发布Perceiver IO的团队没有为该模型编写模型卡片,因此该模型卡片是由Hugging Face团队编写的。
Perceiver IO是一个可以应用于任何模态(文本、图像、音频、视频等)的Transformer编码器模型。其核心思想是在一组不太大的潜在向量(例如256或512)上使用自注意机制,并且仅使用输入与潜在向量进行交叉注意力计算。这样可以使自注意机制的时间和内存要求不依赖于输入的大小。
为了解码,作者采用了所谓的解码器查询,这允许灵活地将潜在向量的最终隐藏状态解码为任意大小和语义的输出。对于图像分类,输出是一个包含对数概率的张量,形状为(batch_size,num_labels)。
Perceiver IO架构。
由于自注意机制的时间和内存要求不依赖于输入的大小,Perceiver IO的作者可以直接在原始像素值上训练模型,而不是像ViT那样对图像进行分块。这个特定的模型仅在像素值上添加了学习到的1D位置嵌入,因此它没有关于图像的2D结构的特殊信息。
通过预训练模型,它学习到了图像的内部表示,可以用于提取对下游任务有用的特征:例如,如果你有一个带标签的图像数据集,可以通过替换分类解码器来训练一个标准分类器。
您可以使用原始模型进行图像分类。查看 model hub 以寻找您感兴趣的其他经过微调的版本的任务。
以下是在PyTorch中使用该模型的方法:
from transformers import PerceiverFeatureExtractor, PerceiverForImageClassificationLearned import requests from PIL import Image feature_extractor = PerceiverFeatureExtractor.from_pretrained("deepmind/vision-perceiver-learned") model = PerceiverForImageClassificationLearned.from_pretrained("deepmind/vision-perceiver-learned") url = "http://images.cocodataset.org/val2017/000000039769.jpg" image = Image.open(requests.get(url, stream=True).raw) # prepare input encoding = feature_extractor(image, return_tensors="pt") inputs = encoding.pixel_values # forward pass outputs = model(inputs) logits = outputs.logits print("Predicted class:", model.config.id2label[logits.argmax(-1).item()]) >>> should print Predicted class: tabby, tabby cat
该模型在 ImageNet 上进行了预训练,该数据集包含1400万张图像和1k个类别。
图像进行中心裁剪和调整大小为224x224,并在RGB通道上进行归一化。请注意,预训练过程中使用了数据增强,详见 paper 的附录H。
超参数详细信息可在 paper 的附录H中找到。
尽管没有关于图像的2D结构的特殊信息,该模型在ImageNet-1k上能够实现72.7的top-1准确率。
@article{DBLP:journals/corr/abs-2107-14795, author = {Andrew Jaegle and Sebastian Borgeaud and Jean{-}Baptiste Alayrac and Carl Doersch and Catalin Ionescu and David Ding and Skanda Koppula and Daniel Zoran and Andrew Brock and Evan Shelhamer and Olivier J. H{\'{e}}naff and Matthew M. Botvinick and Andrew Zisserman and Oriol Vinyals and Jo{\~{a}}o Carreira}, title = {Perceiver {IO:} {A} General Architecture for Structured Inputs {\&} Outputs}, journal = {CoRR}, volume = {abs/2107.14795}, year = {2021}, url = {https://arxiv.org/abs/2107.14795}, eprinttype = {arXiv}, eprint = {2107.14795}, timestamp = {Tue, 03 Aug 2021 14:53:34 +0200}, biburl = {https://dblp.org/rec/journals/corr/abs-2107-14795.bib}, bibsource = {dblp computer science bibliography, https://dblp.org} }