🚀 MobileViT (超小型モデル)
MobileViTは、解像度256x256のImageNet-1kで事前学習されたモデルです。Sachin MehtaとMohammad RastegariによるMobileViT: Light-weight, General-purpose, and Mobile-friendly Vision Transformerで導入され、このリポジトリで最初に公開されました。使用されているライセンスはAppleサンプルコードライセンスです。
🚀 クイックスタート
MobileViTを使用することで、画像分類タスクを行うことができます。以下のセクションでは、モデルの詳細、使用方法、トレーニングデータや手順などについて説明します。
✨ 主な機能
- MobileViTは、軽量で低レイテンシの畳み込みニューラルネットワークで、MobileNetV2スタイルのレイヤーと、畳み込みにおける局所処理をトランスフォーマーを用いたグローバル処理に置き換える新しいブロックを組み合わせています。
- 画像データは、トランスフォーマーレイヤーで処理される前に平坦化されたパッチに変換され、その後、パッチは特徴マップに戻されます。これにより、MobileViTブロックをCNN内の任意の場所に配置することができます。
- MobileViTは、位置埋め込みを必要としません。
📦 インストール
このモデルを使用するには、transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers
💻 使用例
基本的な使用法
以下は、COCO 2017データセットの画像を1,000のImageNetクラスのいずれかに分類する方法の例です。
from transformers import MobileViTFeatureExtractor, MobileViTForImageClassification
from PIL import Image
import requests
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
feature_extractor = MobileViTFeatureExtractor.from_pretrained("apple/mobilevit-xx-small")
model = MobileViTForImageClassification.from_pretrained("apple/mobilevit-xx-small")
inputs = feature_extractor(images=image, return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits
predicted_class_idx = logits.argmax(-1).item()
print("Predicted class:", model.config.id2label[predicted_class_idx])
現在、特徴抽出器とモデルの両方がPyTorchをサポートしています。
📚 ドキュメント
モデルの説明
MobileViTは、軽量で低レイテンシの畳み込みニューラルネットワークです。MobileNetV2スタイルのレイヤーと、畳み込みにおける局所処理をトランスフォーマーを用いたグローバル処理に置き換える新しいブロックを組み合わせています。ViT (Vision Transformer) と同様に、画像データはトランスフォーマーレイヤーで処理される前に平坦化されたパッチに変換され、その後、パッチは特徴マップに戻されます。これにより、MobileViTブロックをCNN内の任意の場所に配置することができます。MobileViTは、位置埋め込みを必要としません。
想定される用途と制限
このモデルは、画像分類に使用できます。関心のあるタスクに対する微調整済みのバージョンを探すには、モデルハブを参照してください。
🔧 技術詳細
トレーニングデータ
MobileViTモデルは、100万枚の画像と1,000クラスから構成されるImageNet-1kデータセットで事前学習されています。
トレーニング手順
前処理
トレーニングには、ランダムなリサイズクロッピングと水平反転といった基本的なデータ拡張のみが必要です。
マルチスケール表現を学習するために、トレーニング中にマルチスケールサンプラーが使用され、画像サイズは(160, 160)、(192, 192)、(256, 256)、(288, 288)、(320, 320)からランダムにサンプリングされます。
推論時には、画像は同じ解像度(288x288)にリサイズ/リスケールされ、256x256で中央クロップされます。
ピクセルは[0, 1]の範囲に正規化されます。画像はRGBではなくBGRのピクセル順序であることが期待されます。
事前学習
MobileViTネットワークは、8台のNVIDIA GPUでImageNet-1k上で300エポックのスクラッチからトレーニングされます。有効なバッチサイズは1024で、学習率は3kステップのウォームアップの後、コサインアニーリングが適用されます。また、ラベルスムージング交差エントロピー損失とL2重み減衰も使用されます。トレーニング解像度は、マルチスケールサンプリングを使用して160x160から320x320まで変化します。
評価結果
モデル |
ImageNetトップ1精度 |
ImageNetトップ5精度 |
パラメータ数 |
URL |
MobileViT-XXS |
69.0 |
88.9 |
1.3 M |
https://huggingface.co/apple/mobilevit-xx-small |
MobileViT-XS |
74.8 |
92.3 |
2.3 M |
https://huggingface.co/apple/mobilevit-x-small |
MobileViT-S |
78.4 |
94.1 |
5.6 M |
https://huggingface.co/apple/mobilevit-small |
BibTeXエントリと引用情報
@inproceedings{vision-transformer,
title = {MobileViT: Light-weight, General-purpose, and Mobile-friendly Vision Transformer},
author = {Sachin Mehta and Mohammad Rastegari},
year = {2022},
URL = {https://arxiv.org/abs/2110.02178}
}
📄 ライセンス
このモデルはAppleサンプルコードライセンスの下で提供されています。