🚀 ビジョントランスフォーマー (ベースサイズのモデル)
ビジョントランスフォーマー(ViT)は、解像度224x224のImageNet - 21k(1400万枚の画像、21,843クラス)で事前学習されたモデルです。このモデルは、Dosovitskiyらによる論文 An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale で導入され、このリポジトリ で最初に公開されました。ただし、重みはRoss Wightmanによって timmリポジトリ から変換されたもので、彼がすでに重みをJAXからPyTorchに変換しています。彼に感謝します。
免責事項: ViTを公開したチームはこのモデルのモデルカードを作成していないため、このモデルカードはHugging Faceチームによって作成されました。
🚀 クイックスタート
ビジョントランスフォーマー(ViT)は、224x224ピクセルの解像度で、ImageNet - 21kという大量の画像コレクションで教師あり学習により事前学習されたトランスフォーマーエンコーダモデル(BERTライク)です。
✨ 主な機能
このモデルは画像分類に使用できます。また、事前学習されたプーラーを含んでおり、下流タスク(画像分類など)に利用できます。
📦 インストール
このモデルを使用するには、transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers
💻 使用例
基本的な使用法
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
📚 ドキュメント
モデルの説明
画像は固定サイズのパッチ(解像度16x16)のシーケンスとしてモデルに入力され、線形埋め込みされます。分類タスクに使用するために、シーケンスの先頭に [CLS] トークンも追加されます。また、シーケンスをトランスフォーマーエンコーダのレイヤーに入力する前に、絶対位置埋め込みも追加されます。
このモデルは、Googleの研究者によって微調整されたヘッドを提供していません。ただし、モデルには事前学習されたプーラーが含まれており、下流タスク(画像分類など)に使用できます。
モデルを事前学習することで、画像の内部表現を学習し、下流タスクに有用な特徴を抽出することができます。たとえば、ラベル付き画像のデータセットがある場合、事前学習されたエンコーダの上に線形層を配置して、標準的な分類器を学習することができます。通常、[CLS] トークンの上に線形層を配置します。このトークンの最後の隠れ状態は、画像全体の表現と見なすことができます。
想定される用途と制限
生のモデルを画像分類に使用できます。興味のあるタスクで微調整されたバージョンを モデルハブ で探すことができます。
学習データ
ViTモデルは、1400万枚の画像と21kクラスから構成される ImageNet - 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)で最良の結果が得られます。もちろん、モデルサイズを大きくすると、パフォーマンスが向上します。
🔧 技術詳細
このモデルは、トランスフォーマーエンコーダをベースに構築されており、画像をパッチに分割して処理することで、画像認識タスクに適用されています。事前学習により、画像の内部表現を学習し、下流タスクでの特徴抽出に利用できます。
📄 ライセンス
このモデルはApache - 2.0ライセンスの下で提供されています。
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}
}