apple-aiml-research/ml-mobileclip

This repository contains the official implementation of the research papers, "MobileCLIP" CVPR 2024 and "MobileCLIP2" TMLR August 2025

📦 What is MobileCLIP?

MobileCLIP (およびその新しいバージョン MobileCLIP2) は、スマートフォンなどの計算リソースが限られたデバイス上でのゼロショット分類およびキャプション生成のために設計された軽量・高速な画像・テキストモデルです。これらは、大規模な画像・テキストデータ (DataCompDR, DFNDR) と CoCa モデルによって生成された合成キャプションを組み合わせた multi-modal reinforced training スキームで訓練されています。目標は、2-5倍少ないパラメータ数大幅に低いレイテンシ (特に iPhone ハードウェア上) を実現しながら、重量級の CLIP スタイルモデルの精度に匹敵する精度を実現することです。


🎯 Key Features & Highlights (from the README)

| Feature | Detail | |---|---|| | Model families | MobileCLIP-S0…S4, MobileCLIP-B, MobileCLIP-L/14 および新しい MobileCLIP2-S0…S4, MobileCLIP2-B, MobileCLIP2-L/14 | | Speed / size | 最小バリアント (MobileCLIP-S0) は、OpenAI の ViT-B/16 と比較して4.8倍速く2.8倍小さいサイズでありながら、同様のゼロショット性能を維持しています。MobileCLIP2-S4 は iPhone 12 Pro Max 上で約 20 ms (画像 + テキスト) で動作し、非常に大きなモデルに匹敵する精度を提供します。 | | Accuracy | MobileCLIP-B (LT) は ImageNet-1k ゼロショットで 77.2% top-1 に到達しています。MobileCLIP2-S4 は、わずか 13B の学習サンプルで 81.9% に達しています。 | | Training data | MobileCLIPDataCompDR-1B データセット (for MobileCLIP) で、MobileCLIP2DFNDR データセット (for MobileCLIP2) で訓練されています。 | | Open-source tooling | 推論、訓練、および評価スクリプトが提供されています。モデルは、小さなパッチを適用することで OpenCLIP とも互換性があります。 | | Mobile demo | iOS アプリ (ios_app/) により、デバイス上でのリアルタイム・ゼロショット分類が可能です。 | | Model releases | 事前学習済みチェックポイントは HuggingFace にホストされています (例: apple/MobileCLIP2-S0)。 |


🚀 Getting Started (quick-start)

  1. Create a conda environment
    conda create -n clipenv python=3.10
    conda activate clipenv
    pip install -e .
    
  2. Download a checkpoint (example for the smallest MobileCLIP2 model)
    hf download apple/MobileCLIP2-S0   # stores the .pt file locally
    
  3. Run a one-liner inference
    import torch, open_clip
    from PIL import Image
    from mobileclip.modules.common.mobileone import reparameterize_model
    
    model_name = "MobileCLIP2-S0"
    model_path = "/path/to/MobileCLIP2-S0.pt"
    model, _, preprocess = open_clip.create_model_and_transforms(
        model_name, pretrained=model_path)
    tokenizer = open_clip.get_tokenizer(model_name)
    model.eval()
    model = reparameterize_model(model)   # required for batch-norm based models
    
    img = preprocess(Image.open("docs/fig_accuracy_latency.png").convert("RGB")).unsqueeze(0)
    txt = tokenizer(["a diagram", "a dog", "a cat"])
    with torch.no_grad(), torch.cuda.amp.autocast():
        img_feat = model.encode_image(img)
        txt_feat = model.encode_text(txt)
        img_feat = img_feat / img_feat.norm(dim=-1, keepdim=True)
        txt_feat = txt_feat / txt_feat.norm(dim=-1, keepdim=True)
        probs = (100.0 * img_feat @ txt_feat.T).softmax(dim=-1)
    print("Label probs:", probs)
    
    これにより、3つのテキストプロンプトの確率が表示されます。

📚 Training & Evaluation

  • Training – 本リポジトリには、OpenCLIP コードベースを使用して MobileCLIP/2 モデルを訓練するための training/ フォルダが含まれています。README には、大規模なマルチモーダル強化データセットを生成するための別リポジトリ (ml-mobileclip-dr) が記載されています。
  • Evaluation – ゼロショット ImageNet-1k 評価は、以下のコマンドで実行可能です:
    python eval/zeroshot_imagenet.py --model-arch mobileclip_s0 \
        --model-path /path/to/mobileclip_s0.pt
    
    完全な 38 データセットのベンチマークは、datacomp リポジトリの指示に従ってください。

📱 iOS Demo

ios_app/ ディレクトリには、MobileCLIP モデルをロードしてカメラフレーム上でリアルタイム分類を行う最小限の iOS アプリケーションが含まれています。これは、モデルのデバイス上でのレイテンシの主張を実証しています。


📦 Model Zoo (selected checkpoints)

Model Params (M) Latency (ms) img+txt ImageNet-1k Zero-Shot
MobileCLIP2-S0 11.4 + 63.4 1.5 + 3.3 71.5
MobileCLIP2-S2 35.7 + 63.4 3.6 + 3.3 77.2
MobileCLIP2-B 86.3 + 63.4 10.4 + 3.3 79.4
MobileCLIP2-S4 321.6 + 123.6 19.6 + 6.6 81.9
MobileCLIP-B (LT) 86.3 + 63.4 10.4 + 3.3 77.2

すべてのチェックポイントは、README にリンクされている HuggingFace コレクションからダウンロード可能です。


🧩 CoCa Caption Models

本リポジトリには、DFNDR-2B データセット用の合成キャプションを生成するために使用された CoCa モデルも同梱されています。これらは OpenCLIP を介して CLIP モデルと同様にロード可能であり、キャプション生成の短い例が提供されています。


📜 License

  • Code – MIT License
  • Model weights – Apple ML Research Model Terms of Use (研究専用の許容的なライセンス)
  • Data – CC-BY-NC-ND 4.0 (非営利, 派生作品禁止)

📖 Citation

研究で MobileCLIP または MobileCLIP2 を使用する場合、README に記載されている 2 つの論文 (CVPR 2024 および TMLR 2025) を引用してください。


TL;DR

MobileCLIP は、モバイルデバイス向けに最適化された極小・高速な CLIP スタイルの視覚言語モデルです。本リポジトリでは、準備が使える事前学習済みチェックポイント、訓練スクリプト (OpenCLIP 経由)、評価ツール、および iOS デモを提供しており、すべて permissive なライセンスの下で公開されています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト