Apple MobileCLIP : Modèle Vision Mobile Open‑Source
MobileCLIP d'Apple – Le modèle vision mobile open‑source
Apple a publié les bibliothèques MobileCLIP et MobileCLIP2 en 2024‑2025, fournissant des modèles image‑texte haute précision qui fonctionnent confortablement sur le matériel iPhone. Le dépôt GitHub ml‑mobileclip inclut la mise en œuvre complète – des pipelines d'entraînement à une application iOS de bout en bout – en faisant une étude de cas idéale pour les développeurs qui souhaitent créer des fonctionnalités vision‑langage sur mobile.
Qu'est‑ce que MobileCLIP ?
MobileCLIP est une famille de modèles multimodaux légers qui adaptent l'architecture CLIP en utilisant les backbones MobileOne. Il atteint les performances zero‑shot de pointe tout en maintenant les paramètres et la latence à un niveau minimal.
- Variantes : S0 (Small 0) à S4 (Small 4), B (standard), et L‑14 (grand). La nouvelle MobileCLIP2 apporte une stabilité d'entraînement, des jeux de données plus larges, et une nouvelle paire S3 / S4.
- Données d'entraînement : DataCompDR‑1B (1 B paires image‑texte) pour MobileCLIP ; DFNDR‑2B pour MobileCLIP2, plus des légendes synthétiques optionnelles provenant des modèles CoCa.
- Performances : Sur ImageNet‑1k zero‑shot top‑1, MobileCLIP‑S0 correspond à ViT‑B/16 tout en étant 4,8× plus rapide et 2,8× plus léger. MobileCLIP2‑S4 atteint 81,9 % de précision avec 19,6 ms de latence sur un iPhone 12 Pro Max.
Points forts du dépôt
| Section | Ce que vous trouverez |
|---|---|
mobileclip/ |
Code du modèle principal (MobileOne, têtes de transformeur, réparamétrisation pour une inférence efficace). |
training/ |
Pipelines pour fine‑tuner sur des jeux de données personnalisés, scripts en ligne de commande, utilitaires d'entraînement distribué. |
eval/ |
Scripts d'évaluation zero‑shot (ImageNet, benchmarks 38‑ensembles). |
ios_app/ |
Projet Swift démontrant la classification zero‑shot en temps réel sur un iPhone. |
docs/ |
Courbes précision‑vs‑latence, diagrammes d'architecture, informations de licence. |
Tous les modules sont installables via pip (pip install -e .) et s'intègrent sans problème avec le framework populaire OpenCLIP.
Démarrage rapide : Inférence avec OpenCLIP
# 1️⃣ Créer un environnement virtuel et installer la bibliothèque
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"
# Si vous voulez le modèle pré‑entraîné depuis HuggingFace
# hf download apple/MobileCLIP2-S0 --> point de contrôle local
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) # accélération pour le déploiement
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"]) # liste de prompts
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)
L'aide reparameterize_model() réduit les couches batch‑norm, transformant MobileCLIP en un Transformer pur qui fonctionne plus rapidement sur GPU/CPU.
Évaluation zero‑shot
# Exécuter le script pré‑construit pour ImageNet‑1k
python eval/zeroshot_imagenet.py \
--model-arch mobileclip_s0 \
--model-path /path/to/mobileclip_s0.pt
Le script affiche la précision top‑1, la latence (ms), le nombre d'échantillons vus et une métrique de performance agrégée sur 38 ensembles de données.
Exécution de la démo iOS
Le dépôt inclut une application iOS qui peut être construite avec Xcode 15+ :
- Clonez le dépôt et localisez le dossier
ios_app. - Ouvrez
AppleMobileCLIP.xcodeproj. - Récupérez le checkpoint pré‑entraîné
mobileclip_s0.ptdepuis HuggingFace ou votre chemin local. - Ajoutez le fichier au projet Xcode sous Resources.
- Appuyez sur Run – l'application chargera le modèle, capturera depuis l'appareil photo et classera les images en temps réel.
La démo montre MobileCLIP2‑S0 fonctionnant sur un iPhone 12 Pro Max, atteignant ~2 ms d'inférence image‑texte.
Extension & Fine‑tuning
- Custom Dataset – Glissez un jeu de données style HuggingFace dans
training/et modifieztrain.py. - Nouvelle architecture – Forkez MobileOne, ajoutez votre propre
headet réparamétrez. - Quantisation – Utilisez OpenCLIP‑Q ou les utilitaires de quantisation PyTorch pour encore réduire la latence.
La communauté est encouragée à ouvrir des tickets pour des demandes de fonctionnalités telles que l'export TensorRT ou le support Android.
Performances en contexte
| Modèle | Params (M) | Latence (ms) | ImageNet‑1k Top‑1 | Acc. moyenne 38‑Data |
|---|---|---|---|---|
| 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 % |
Ces chiffres illustrent que MobileCLIP2 peut rivaliser avec des modèles ViT plus gros tout en étant deux fois plus rapide sur un matériel courant.
Dernières réflexions
Les bibliothèques MobileCLIP d'Apple offrent un stack complet, prêt à la production pour les tâches vision‑langage fonctionnant sur un téléphone portable. En fournissant le code source, les checkpoints pré‑entraînés, les scripts d'évaluation et une démo iOS, le dépôt donne aux chercheurs et aux développeurs d'apps la possibilité d'expérimenter, de fine‑tuner et de lancer rapidement de nouveaux services. Que vous construisiez un filtre AR détectant des objets via des invites textuelles ou que vous déployiez un backend zéro‑shot sur le bord, MobileCLIP vous fournit les outils et la performance nécessaires pour y parvenir.
Pour plus d'informations, consultez le dépôt GitHub officiel, lisez les papiers de recherche associés et explorez les modèles pré‑entraînés sur HuggingFace.