🚀 ONNX convert of ViT (base-sized model)
このモデルは、ViT-base を変換したもので、分類ヘッドを備え、画像分類を行うことができます。
🚀 クイックスタート
Vision Transformer (ViT) モデルは、解像度224x224のImageNet-21k(1400万枚の画像、21,843クラス)で事前学習され、解像度224x224のImageNet 2012(100万枚の画像、1,000クラス)でファインチューニングされました。このモデルは、Dosovitskiy らによる論文 An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale で紹介され、このリポジトリ で最初に公開されました。ただし、重みは Ross Wightman による timm リポジトリ から変換されており、彼はすでに重みを JAX から PyTorch に変換しています。彼に感謝します。
なお、ViT を公開したチームはこのモデルのモデルカードを作成していないため、このモデルカードは Hugging Face チームによって作成されています。
✨ 主な機能
モデルの説明
Vision Transformer (ViT) は、教師あり学習により大量の画像コレクション、具体的には解像度224x224ピクセルのImageNet-21kで事前学習されたトランスフォーマーエンコーダモデル(BERT のような)です。次に、このモデルは、100万枚の画像と1,000クラスから構成されるデータセットである ImageNet(ILSVRC2012 とも呼ばれる)でも解像度224x224でファインチューニングされました。
画像は、固定サイズのパッチ(解像度16x16)のシーケンスとしてモデルに入力され、線形に埋め込まれます。また、分類タスクに使用するために、シーケンスの先頭に [CLS] トークンを追加します。シーケンスをトランスフォーマーエンコーダのレイヤーに入力する前に、絶対位置埋め込みも追加します。
モデルを事前学習することで、画像の内部表現を学習し、下流タスクに役立つ特徴を抽出するために使用できます。たとえば、ラベル付き画像のデータセットがある場合、事前学習されたエンコーダの上に線形レイヤーを配置して、標準的な分類器を学習させることができます。通常、[CLS] トークンの上に線形レイヤーを配置します。このトークンの最後の隠れ状態は、画像全体の表現と見なすことができます。
想定される用途と制限
生のモデルを画像分類に使用することができます。関心のあるタスクでファインチューニングされたバージョンを探すには、モデルハブ を参照してください。
📦 インストール
このセクションでは、インストールに関する具体的な手順が提供されていません。
💻 使用例
基本的な使用法
以下は、このモデルを使用して、COCO 2017 データセットの画像を1,000の ImageNet クラスのいずれかに分類する方法です。
from transformers import AutoFeatureExtractor
from optimum.onnxruntime import ORTModelForImageClassification
from optimum.pipelines import pipeline
feature_extractor = AutoFeatureExtractor.from_pretrained("optimum/vit-base-patch16-224")
model = ORTModelForImageClassification.from_pretrained("optimum/vit-base-patch16-224")
onnx_img_classif = pipeline(
"image-classification", model=model, feature_extractor=feature_extractor
)
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
pred = onnx_img_classif(url)
print("Top-5 predicted classes:", pred)
📚 ドキュメント
学習データ
ViT モデルは、1400万枚の画像と21kクラスから構成される ImageNet-21k で事前学習され、100万枚の画像と1kクラスから構成される ImageNet でファインチューニングされました。
学習手順
前処理
学習/検証中の画像の前処理の正確な詳細は、こちら で確認できます。
画像は、同じ解像度(224x224)にリサイズ/リスケールされ、RGBチャネル全体で平均 (0.5, 0.5, 0.5) と標準偏差 (0.5, 0.5, 0.5) で正規化されます。
事前学習
モデルは、TPUv3ハードウェア(8コア)で学習されました。すべてのモデルバリアントは、バッチサイズ4096と学習率ウォームアップ10kステップで学習されました。ImageNet の場合、著者らは、グローバルノルム1で勾配クリッピングを追加で適用することが有益であることを発見しました。学習解像度は224です。
評価結果
いくつかの画像分類ベンチマークの評価結果については、元の論文の表2と表5を参照してください。もちろん、モデルサイズを大きくすると、パフォーマンスが向上します。
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}
}
📄 ライセンス
このモデルは、Apache-2.0ライセンスの下で提供されています。
属性 |
详情 |
モデルタイプ |
Vision Transformer (ViT) のONNX変換モデル |
学習データ |
ImageNet-21k、ImageNet 2012 |