license: apache-2.0
datasets:
视觉感知器IO(学习型位置嵌入)
该感知器IO模型在ImageNet(1400万张图像,1000个类别)数据集上以224x224分辨率进行了预训练。该模型由Jaegle等人在论文《Perceiver IO: A General Architecture for Structured Inputs & Outputs》中提出,并首次发布于此代码库。
免责声明:发布Perceiver IO的团队未为此模型编写模型卡,因此本模型卡由Hugging Face团队撰写。
模型描述
Perceiver IO是一种可应用于任何模态(文本、图像、音频、视频等)的Transformer编码器模型。其核心思想是在一组规模适中的潜在向量(如256或512)上使用自注意力机制,仅利用输入数据与潜在向量进行交叉注意力计算。这使得自注意力机制的时间和内存需求不依赖于输入数据的大小。
解码时,作者采用所谓的解码查询机制,能够灵活地将潜在向量的最终隐藏状态解码为任意大小和语义的输出。对于图像分类任务,输出是一个包含逻辑值的张量,形状为(批次大小,标签数量)。
Perceiver IO架构示意图。
由于自注意力机制的时间和内存需求与输入大小无关,Perceiver IO的作者可以直接在原始像素值上训练模型,而无需像ViT那样对图像分块处理。此特定模型仅向像素值添加学习型的一维位置嵌入,因此未赋予模型任何关于图像二维结构的先验信息。
通过预训练,模型学习到图像的内在表示,可用于提取对下游任务有用的特征:例如,如果您有一个带标签的图像数据集,可以通过替换分类解码器来训练标准分类器。
预期用途与限制
您可以将此原始模型用于图像分类任务。请访问模型中心查找其他针对您感兴趣任务进行微调的版本。
使用方法
以下是在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)
encoding = feature_extractor(image, return_tensors="pt")
inputs = encoding.pixel_values
outputs = model(inputs)
logits = outputs.logits
print("预测类别:", model.config.id2label[logits.argmax(-1).item()])
>>> 应输出:预测类别: 虎斑猫
训练数据
此模型在ImageNet上进行了预训练,该数据集包含1400万张图像和1000个类别。
训练流程
预处理
图像经过中心裁剪并调整至224x224分辨率,同时对RGB通道进行归一化处理。请注意,预训练过程中使用了数据增强技术,详见论文附录H。
预训练
超参数详情可参阅论文附录H。
评估结果
尽管未获得关于图像二维结构的任何先验信息,该模型在ImageNet-1k上仍能达到72.7%的Top-1准确率。
BibTeX条目及引用信息
@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}
}