Modelo de Visión Móvil de Código Abierto de Apple MobileCLIP

Apple’s MobileCLIP – El modelo de visión móvil de código abierto

Apple lanzó las librerías MobileCLIP y MobileCLIP2 en 2024‑2025, proporcionando modelos imagen‑texto de alta precisión que funcionan cómodamente en la arquitectura de iPhone.

El repositorio en GitHub ml‑mobileclip distribuye la implementación completa – desde los pipelines de entrenamiento hasta una aplicación iOS de extremo a extremo – lo que lo convierte en un caso de estudio ideal para desarrolladores que deseen construir funcionalidades de visión‑lenguaje en móvil.


¿Qué es MobileCLIP?

MobileCLIP es una familia de modelos multimodales ligeros que adaptan la arquitectura CLIP utilizando las bases MobileOne. Logra un rendimiento cero‑shot de vanguardia, manteniendo los parámetros y la latencia al mínimo.

  • Variantes: S0 (Small 0) a S4 (Small 4), B (estándar), y L‑14 (grande). La nueva MobileCLIP2 añade estabilidad en el entrenamiento, conjuntos de datos mayores y un nuevo par S3 / S4.
  • Datos de entrenamiento: DataCompDR‑1B (1 B pares imagen‑texto) para MobileCLIP; DFNDR‑2B para MobileCLIP2, además de subtítulos sintéticos opcionales de modelos CoCa.
  • Rendimiento: En clasificación cero‑shot de ImageNet‑1k top‑1, MobileCLIP‑S0 iguala a ViT‑B/16 pero siendo 4.8× más rápido y 2.8× más pequeño. MobileCLIP2‑S4 alcanza un 81.9 % de precisión con una latencia de 19.6 ms en un iPhone 12 Pro Max.

Destacados del repositorio

Sección Lo que encontrarás
mobileclip/ Código core del modelo (MobileOne, cabezas transformadoras, re‑parametrización para inferencias eficientes).
training/ Pipelines para afinar en conjuntos de datos personalizados, scripts de línea de comandos, utilidades de entrenamiento distribuido.
eval/ Scripts de evaluación zero‑shot (ImageNet, benchmarks de 38 datasets).
ios_app/ Proyecto Swift que demuestra clasificación cero‑shot en tiempo real en un iPhone.
docs/ Gráficos de precisión‑vs‑latencia, diagramas de arquitectura, información de licencias.

Todos los módulos son instalables con pip (pip install -e .) y se integran sin problemas con el popular framework OpenCLIP.


Inicio rápido: inferencia con OpenCLIP

# 1️⃣ Create a virtual environment and install the library
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"
#  If you want the pretrained model from HuggingFace
#  hf download apple/MobileCLIP2-S0 --> local checkpoint
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)  # speed‑up for deployment

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"])  # prompt list

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)

El helper reparameterize_model() combina las capas de batch‑norm, convirtiendo MobileCLIP en un Transformer puro que ejecuta más rápido en GPU/CPU.


Evaluación Zero‑Shot

# Run the pre‑built script for ImageNet-1k
python eval/zeroshot_imagenet.py \
  --model-arch mobileclip_s0 \
  --model-path /path/to/mobileclip_s0.pt

El script imprime la precisión top‑1, latencia (ms), recuento de muestras vistas y una métrica de rendimiento agregada sobre 38 datasets.


Ejecutando la Demo iOS

La demo se construye con Xcode 15 y posteriores:

  1. Clona el repositorio y localiza la carpeta ios_app.
  2. Abre AppleMobileCLIP.xcodeproj.
  3. Descarga el modelo mobileclip_s0.pt preentrenado desde HuggingFace o tu ruta local.
  4. Añade el archivo al proyecto Xcode dentro de Resources.
  5. Pulsa Run – la app cargará el modelo, capturará desde la cámara y clasificará los frames en tiempo real.

La demo muestra MobileCLIP2‑S0 funcionando en un iPhone 12 Pro Max, logrando una inferencia imagen‑texto de ~2 ms.


Extensión y Afinación

  1. Conjunto de datos personalizado – Inserta un dataset estilo HuggingFace en training/ y modifica train.py.
  2. Nueva arquitectura – Haz un fork de MobileOne, añade tu propia head y re‑parametriza.
  3. Cuantización – Utiliza OpenCLIP‑Q o utilidades de cuantización de PyTorch para reducir aún más la latencia.

Se anima a la comunidad a abrir issues con solicitudes de características como exportación a TensorRT o soporte para Android.


Rendimiento en Contexto

Modelo Parámetros (M) Latencia (ms) Top-1 ImageNet-1k Acc. media 38‑Datos
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 %

Estos números ilustran que MobileCLIP2 puede competir con modelos ViT más grandes mientras funciona a mitad del tiempo en hardware común.


Reflexiones Finales

Las bibliotecas MobileCLIP de Apple ofrecen un stack completo y listo para producción para tareas de visión‑lenguaje que ejecutan en un teléfono. Al distribuir código fuente, checkpoints preentrenados, scripts de evaluación y una demo iOS, el repositorio capacita a investigadores y desarrolladores de apps para experimentar, afinar y lanzar nuevos servicios rápidamente. Ya sea que esté construyendo un filtro AR que detecte objetos mediante indicaciones de texto o desplegando un backend de clasificación zero‑shot en el borde, MobileCLIP le brinda las herramientas y el rendimiento necesarios para lograrlo.

Para más información, consulte el repositorio de GitHub oficial, lea los artículos de investigación adjuntos y explore los modelos preentrenados en HuggingFace.

Artículo original: Ver original

Compartir este artículo