🚀 用於視覺的Perceiver IO(卷積處理)
Perceiver IO是一種可應用於任何模態(文本、圖像、音頻、視頻等)的Transformer編碼器模型。本模型在分辨率為224x224的ImageNet(1400萬張圖像,1000個類別)上進行了預訓練。它由Jaegle等人在論文Perceiver IO: A General Architecture for Structured Inputs & Outputs中提出,並首次在此倉庫中發佈。
聲明:發佈Perceiver IO的團隊並未為此模型撰寫模型卡片,此模型卡片由Hugging Face團隊編寫。
✨ 主要特性
- 多模態適用性:可應用於文本、圖像、音頻、視頻等多種模態。
- 高效的注意力機制:通過對少量潛在向量應用自注意力機制,使時間和內存需求不依賴於輸入大小。
- 靈活的解碼方式:使用解碼器查詢,可靈活解碼潛在向量的最終隱藏狀態,以產生任意大小和語義的輸出。
📚 詳細文檔
模型描述
Perceiver IO是一個Transformer編碼器模型,其核心思想是在一組數量不大的潛在向量(例如256或512)上應用自注意力機制,僅使用輸入與潛在向量進行交叉注意力計算。這樣,自注意力機制的時間和內存需求就不依賴於輸入的大小。
為了解碼,作者採用了所謂的解碼器查詢,它可以靈活地將潛在向量的最終隱藏狀態解碼為任意大小和語義的輸出。對於圖像分類任務,輸出是一個包含對數概率的張量,形狀為(batch_size, num_labels)。

Perceiver IO架構。
由於自注意力機制的時間和內存需求不依賴於輸入大小,Perceiver IO的作者可以直接在原始像素值上訓練模型,而不是像ViT那樣在圖像塊上訓練。這個特定的模型在使用輸入與潛在向量進行交叉注意力計算之前,會在像素值上應用一個簡單的2D卷積+最大池化預處理網絡。
通過對模型進行預訓練,它可以學習到圖像的內部表示,這些表示可用於提取對下游任務有用的特徵。例如,如果你有一個帶標籤的圖像數據集,可以通過替換分類解碼器來訓練一個標準的分類器。
預期用途和限制
你可以使用原始模型進行圖像分類。請查看模型中心,以尋找其他可能符合你需求的微調版本。
訓練數據
該模型在ImageNet數據集上進行了預訓練,該數據集包含1400萬張圖像和1000個類別。
訓練過程
預處理
圖像會進行中心裁剪並調整為224x224的分辨率,並在RGB通道上進行歸一化。請注意,在預訓練期間使用了數據增強,具體細節可參考論文Perceiver IO: A General Architecture for Structured Inputs & Outputs的附錄H。
預訓練
超參數的詳細信息可在論文Perceiver IO: A General Architecture for Structured Inputs & Outputs的附錄H中找到。
評估結果
該模型在ImageNet-1k上能夠達到82.1的top-1準確率。
💻 使用示例
基礎用法
以下是如何在PyTorch中使用此模型的示例:
from transformers import PerceiverFeatureExtractor, PerceiverForImageClassificationConvProcessing
import requests
from PIL import Image
feature_extractor = PerceiverFeatureExtractor.from_pretrained("deepmind/vision-perceiver-conv")
model = PerceiverForImageClassificationConvProcessing.from_pretrained("deepmind/vision-perceiver-conv")
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
inputs = feature_extractor(image, return_tensors="pt").pixel_values
outputs = model(inputs)
logits = outputs.logits
print("Predicted class:", model.config.id2label[logits.argmax(-1).item()])
>>> 應該輸出 Predicted class: tabby, tabby cat
📄 許可證
本項目採用Apache-2.0許可證。
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}
}