Apple の MobileCLIP:オープンソースのモバイルビジョンモデル
Apple の MobileCLIP – オープンソースのモバイルビジョンモデル
Apple は 2024‑2025 年に MobileCLIP と MobileCLIP2 ライブラリをリリースし、iPhone ハードウェア上で快適に動作する高精度のイメージ‑テキストモデルを提供しています。GitHub リポジトリ ml‑mobileclip は 完全実装 を配布 – トレーニングパイプラインからエンドツーエンド iOS アプリまで – したがって、モバイル環境でビジョン‑ランゲージ機能を構築したい開発者にとって理想的なケーススタディです。
MobileCLIP とは?
MobileCLIP は MobileOne のバックボーンを使用して CLIP アーキテクチャを適応化した軽量マルチモーダルモデルファミリーです。ゼロショット性能で最先端を保持しつつ、パラメーターとレイテンシを最小化します。
- バリアント: S0 (Small 0) から S4 (Small 4)、B (スタンダード)、L‑14 (ラージ)。新しい MobileCLIP2 はトレーニング安定性、より大きなデータセット、そして新しい S3 / S4 ペアを追加しています。
- トレーニングデータ: MobileCLIP 用の DataCompDR‑1B (1 B のイメージ‑テキストペア)、MobileCLIP2 用の DFNDR‑2B、さらに CoCa モデルによる合成キャプションのオプションがあります。
- 性能: ImageNet‑1k でのゼロショット top‑1 では、MobileCLIP‑S0 は ViT‑B/16 と同等の精度を達成しながら 4.8 倍速、2.8 倍小さくしています。MobileCLIP2‑S4 は 81.9% の精度を 19.6 ms のレイテンシで iPhone 12 Pro Max 上で達成します。
Repo のハイライト
| セクション | 内容 |
|---|---|
mobileclip/ |
コアモデルコード (MobileOne, Transformer ヘッド, 効率的推論のための再パラメータ化) |
training/ |
カスタムデータセットでのファインチューニング用パイプライン、コマンドラインスクリプト、分散トレーニングユーティリティ |
eval/ |
ゼロショット評価スクリプト (ImageNet, 38 データセットベンチマーク) |
ios_app/ |
Swift プロジェクトで iPhone 上でのリアルタイムゼロショット分類を実演 |
docs/ |
精度対レイテンシプロット、アーキテクチャ図、ライセンス情報 |
すべてのモジュールは pip でインストール可能 (pip install -e .) で、人気の OpenCLIP フレームワークとシームレスに統合します。
クイックスタート: OpenCLIP での推論
# 1️⃣ 仮想環境を作成し、ライブラリをインストール
conda create -n clipenv python=3.10 -y
conda activate clipenv
pip install -e .
import torch, open_clip
from PIL import Image
from mobileclip.modules.common.mobileone import reparameterize_model
model_name = "MobileCLIP2-S0"
# HuggingFace から事前学習済みモデルを取得したい場合
# hf download apple/MobileCLIP2-S0 --> ローカルチェックポイント
model, _, preprocess = open_clip.create_model_and_transforms(
model_name,
pretrained="/path/to/mobileclip2_s0.pt",
image_mean=(0,0,0), image_std=(1,1,1)
)
model.eval()
model = reparameterize_model(model) # デプロイの高速化
image = preprocess(Image.open("path/to/image.jpg").convert("RGB")).unsqueeze(0)
text = open_clip.get_tokenizer(model_name)(["a dog", "a cat", "a tree"]) # プロンプトリスト
with torch.no_grad():
i_f = model.encode_image(image)
t_f = model.encode_text(text)
i_f /= i_f.norm(dim=-1, keepdim=True)
t_f /= t_f.norm(dim=-1, keepdim=True)
probs = torch.softmax(100.0 * i_f @ t_f.T, dim=-1)
print("label probs:", probs)
reparameterize_model() ヘルパーはバッチノーマル層を統合し、MobileCLIP をピュア Transformer に変換して GPU/CPU 上で高速に動作させます。
ゼロショット評価
# ImageNet-1k の事前構築スクリプトを実行
python eval/zeroshot_imagenet.py \
--model-arch mobileclip_s0 \
--model-path /path/to/mobileclip_s0.pt
スクリプトは top‑1 精度、レイテンシ (ms)、サンプル数、38 データセットにわたる統合性能メトリックを出力します。
iOS デモを実行する
リポジトリは Xcode 15+ でビルドできる iOS アプリを提供します。
- リポジトリをクローンし、
ios_appフォルダーを見つけます。 AppleMobileCLIP.xcodeprojを開きます。- HuggingFace から事前学習済みの
mobileclip_s0.ptをダウンロードするか、ローカルパスを指定します。 - Xcode プロジェクトの Resources 下にファイルを追加します。
- Run を押すと、アプリはモデルを読み込み、カメラからキャプチャしてフレームをリアルタイムで分類します。
デモは MobileCLIP2‑S0 が iPhone 12 Pro Max 上で動作し、約 2 ms のイメージ‑テキスト推論時間を達成することを示します。
拡張とファインチューニング
- カスタムデータセット –
training/に HuggingFace スタイルのデータセットを配置し、train.pyを修正。 - 新しいアーキテクチャ – MobileOne をフォークし、独自の
headを追加し再パラメータ化。 - 量子化 – OpenCLIP‑Q か PyTorch の量子化ユーティリティを使用してレイテンシをさらに削減。
コミュニティは TensorRT エクスポートや Android サポートなどの機能リクエストのためにイシューを開くことが奨励されています。
コンテキストでの性能
| モデル | パラメーター (M) | レイテンシ (ms) | ImageNet‑1k Top‑1 | 38 データセット平均精度 |
|---|---|---|---|---|
| MobileCLIP‑S0 | 11.4 + 63.4 | 1.5 + 3.3 | 67.8 % | 58.1 % |
| MobileCLIP2‑S0 | 11.4 + 63.4 | 1.5 + 3.3 | 71.5 % | 59.7 % |
| MobileCLIP2‑S2 | 35.7 + 63.4 | 3.6 + 3.3 | 77.2 % | 64.1 % |
| MobileCLIP2‑L‑14 | 304.3 + 123.6 | 57.9 + 6.6 | 81.9 % | 67.8 % |
これらの数値は MobileCLIP2 がより大きな ViT モデルに匹敵しつつ、一般的なハードウェアで 2 倍速く動作することを示しています。
最終的な思考
Apple の MobileCLIP ライブラリは、携帯電話上で動作するビジョン‑ランゲージタスクのための 完全で商用レディなスタック を提供します。ソースコード、事前学習済みチェックポイント、評価スクリプト、iOS デモの提供により、リサーチャーとアプリ開発者の双方が迅速に実験、ファインチューニング、サービスリリースを行うことが可能です。AR フィルタでテキストプロンプトを用いてオブジェクトを検出したり、ゼロショット分類バックエンドをエッジへ展開するなど、MobileCLIP は目的を達成するために必要なツールとパフォーマンスを提供します。
詳細については、公式 GitHub リポジトリ を確認し、併記の研究論文を読み、HuggingFace 上の事前学習済みモデルを探索してください。