🚀 画像認識用Perceiver IO(畳み込み処理)
Perceiver IOモデルは、解像度224x224のImageNet(1400万枚の画像、1000クラス)で事前学習されています。このモデルは、Jaegleらによる論文Perceiver IO: A General Architecture for Structured Inputs & Outputsで導入され、このリポジトリで最初に公開されました。
🚀 クイックスタート
Perceiver IOは、任意のモダリティ(テキスト、画像、音声、ビデオなど)に適用できるトランスフォーマーエンコーダモデルです。このモデルは、ImageNetで事前学習されており、画像分類などの下流タスクに使用できます。
✨ 主な機能
- 任意のモダリティに適用可能なトランスフォーマーエンコーダモデル。
- 自己注意機構の時間とメモリ要件が入力サイズに依存しないため、生のピクセル値で直接学習できます。
- デコーダクエリを使用して、任意のサイズとセマンティクスの出力を柔軟に生成できます。
📦 インストール
このモデルを使用するには、transformers
ライブラリをインストールする必要があります。
pip install transformers
💻 使用例
基本的な使用法
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()])
>>> 予測されたクラス: tabby, tabby cat と出力されるはず
📚 ドキュメント
モデルの説明
Perceiver IOは、任意のモダリティ(テキスト、画像、音声、ビデオなど)に適用できるトランスフォーマーエンコーダモデルです。核心的な考え方は、比較的小さな潜在ベクトルセット(例えば256または512)に自己注意機構を適用し、入力を使用して潜在ベクトルとの交差注意を実行することです。これにより、自己注意機構の時間とメモリ要件が入力サイズに依存しなくなります。
デコードには、いわゆるデコーダクエリを使用して、潜在ベクトルの最終的な隠れ状態を柔軟にデコードし、任意のサイズとセマンティクスの出力を生成します。画像分類の場合、出力はロジットを含むテンソルで、形状は (batch_size, num_labels) です。
Perceiver IOのアーキテクチャ。
自己注意機構の時間とメモリ要件が入力サイズに依存しないため、Perceiver IOの著者らは、ViTのようにパッチではなく、生のピクセル値で直接モデルを学習させることができます。この特定のモデルは、ピクセル値に対して単純な2D畳み込み+最大プーリングの前処理ネットワークを適用した後、入力を潜在ベクトルとの交差注意に使用します。
モデルを事前学習することで、画像の内部表現を学習し、下流タスクに有用な特徴を抽出することができます。たとえば、ラベル付き画像のデータセットがある場合、分類デコーダを置き換えて標準的な分類器を学習させることができます。
想定される用途と制限
このモデルは、画像分類に使用できます。他の微調整されたバージョンを探すには、モデルハブを参照してください。
学習データ
このモデルは、ImageNetという1400万枚の画像と1000クラスからなるデータセットで事前学習されています。
学習手順
前処理
画像は中央切り抜きされ、解像度224x224にリサイズされ、RGBチャネル全体で正規化されます。事前学習中にデータ拡張が使用されたことに注意してください。詳細は、論文の付録Hを参照してください。
事前学習
ハイパーパラメータの詳細は、論文の付録Hに記載されています。
評価結果
このモデルは、ImageNet-1kで82.1のトップ1精度を達成しています。
🔧 技術詳細
- モデルタイプ: トランスフォーマーエンコーダ
- 学習データ: ImageNet(1400万枚の画像、1000クラス)
- 前処理: 2D畳み込み+最大プーリング
- 評価指標: トップ1精度
📄 ライセンス
このモデルは、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}
}