CLIP (Contrastive Language-Image Pre-training)
CLIP es un modelo de OpenAI que representa imágenes y texto en un mismo espacio compartido, por lo que clasifica imágenes mediante etiquetas en lenguaje natural. Descubre cómo funcionan el entrenamiento y el aprendizaje sin ejemplos.
CLIP (preentrenamiento contrastivo de lenguaje e imagen) es un modelo de OpenAI que aprende a relacionar imágenes con sus descripciones textuales. Combina un codificador de imágenes con uno de texto y los entrena para que una imagen y el pie de foto que la describe se representen como vectores cercanos en un mismo espacio de incrustaciones. Entrenado con 400 millones de pares de imagen y pie de foto recopilados de internet, CLIP puede clasificar imágenes en categorías indicadas únicamente como texto, sin ejemplos etiquetados de esas categorías; esta capacidad se denomina aprendizaje de disparo cero. En el artículo de 2021, su mejor modelo alcanzó una precisión de disparo cero top-1 del 76,2 % en ImageNet, igualando al ResNet-50 original, totalmente supervisado, sin usar ninguna de las 1,28 millones de imágenes etiquetadas con las que se entrenó ResNet-50.
Cómo se entrena CLIP#
CLIP tiene dos codificadores. El codificador de imágenes es un ResNet o un Transformer de visión (ViT), y el codificador de texto es un Transformer de 12 capas con 63 millones de parámetros en su tamaño base. Una proyección lineal asigna la salida de cada codificador al espacio compartido, donde todos los vectores se normalizan a longitud unidad.
El entrenamiento utiliza aprendizaje contrastivo con lotes de 32 768 pares de imagen y pie de foto. Para un lote de N pares, CLIP calcula la similitud coseno de cada imagen con cada pie de foto y obtiene una matriz N×N cuya diagonal contiene los pares correctos. Una pérdida de entropía cruzada con softmax aplicada a cada fila pide a cada imagen que elija su propio pie de foto entre N opciones; una segunda pérdida aplicada a cada columna pide a cada pie de foto que elija su imagen. Una temperatura aprendida escala las similitudes antes de aplicar softmax.
Como los pies de foto son textos libres, CLIP aprende de todo lo que describe la web, incluidos objetos, escenas, estilos artísticos, texto en imágenes y acciones, en lugar de una lista fija de clases.
Clasificación de disparo cero#
Para clasificar una imagen, CLIP convierte cada etiqueta candidata en una frase corta, como «una foto de un perro», representa la imagen y elige la etiqueta con mayor similitud coseno. La redacción de la instrucción importa: el artículo indica que la plantilla «Una foto de {label}.» por sí sola mejoró la precisión en ImageNet un 1,3 %, y que promediar las incrustaciones de texto de 80 plantillas añadió otro 3,5 %. La canalización de Transformers de Hugging Face que aparece a continuación incluye cada etiqueta en la plantilla «Esto es una foto de {}.» y ejecuta el modelo ViT-B/32 original:
from transformers import pipeline
# Load OpenAI's CLIP ViT-B/32 for zero-shot image classification
classifier = pipeline("zero-shot-image-classification", model="openai/clip-vit-base-patch32")
# The classes are free-form text, chosen at inference time
labels = ["a city bus", "a tram", "a delivery truck", "a bicycle"]
predictions = classifier("https://ultralytics.com/images/bus.jpg", candidate_labels=labels)
# Scores are a softmax over the image's similarity to each caption
for prediction in predictions:
print(f"{prediction['label']}: {prediction['score']:.3f}")Imprime a city bus: 0.657, a tram: 0.341, a delivery truck: 0.001 y a bicycle: 0.000. El tranvía, otro vehículo grande de pasajeros, concentra casi toda la probabilidad restante, y para usar un nuevo conjunto de etiquetas basta con crear una nueva lista de cadenas.
Aplicaciones en el mundo real#
- Búsqueda semántica: Las colecciones de imágenes se representan una sola vez y se guardan en una base de datos vectorial. Una consulta de texto como «zapatillas rojas sobre un suelo de madera» se representa en el momento de la búsqueda y se compara con ellas, para encontrar imágenes por su contenido sin etiquetas manuales.
- Generación de texto a imagen: Stable Diffusion 1.x condiciona su generador de imágenes con las incrustaciones de texto de CLIP ViT-L/14, y la similitud de CLIP se utiliza ampliamente para puntuar hasta qué punto una imagen generada se ajusta a su instrucción.
- Detección de vocabulario abierto: Los modelos YOLO-World de Tencent AI Lab, que se ejecutan en el paquete de Ultralytics, codifican los nombres de clase que se pasan a
set_classescon el codificador de texto ViT-B/32 de CLIP, de modo que un detector entrenado una sola vez puede encontrar objetos por su nombre, como «mochila roja» o «carretilla elevadora». - Codificadores de visión para VLM: Muchos modelos de visión y lenguaje parten de un codificador de imágenes CLIP preentrenado. Por ejemplo, LLaVA introduce las características de CLIP ViT-L/14 en un modelo de lenguaje.
- Filtrado de conjuntos de datos: Los grandes conjuntos abiertos de imágenes y texto, como LAION-5B, conservan solo los pares web cuya similitud entre imagen y texto en CLIP supera un umbral, y eliminan los pies de foto que no describen la imagen.
CLIP y métodos relacionados#
- Clasificadores de aprendizaje supervisado: Un clasificador estándar tiene una salida por cada clase de entrenamiento y no puede puntuar una clase que nunca haya visto. El «clasificador» de CLIP es el conjunto de incrustaciones de texto, por lo que cambia cuando cambian las etiquetas.
- SigLIP: La variante de Google sustituye la softmax de todo el lote de CLIP por una pérdida sigmoide que puntúa cada par de imagen y texto de forma independiente. Así consume menos memoria y funciona mejor con lotes pequeños.
- Aprendizaje contrastivo autosupervisado: Métodos como SimCLR contrastan dos versiones aumentadas de una misma imagen y aprenden únicamente de imágenes. CLIP contrasta dos modalidades, lo que vincula sus características de imagen con las palabras.
- VLM generativos: CLIP puntúa la similitud entre imagen y texto, pero no puede redactar un pie de foto ni responder a una pregunta. Los modelos generativos conectan un modelo de lenguaje a un codificador de imágenes, a menudo el propio CLIP.
Limitaciones#
La precisión de disparo cero de CLIP disminuye en categorías detalladas, como modelos de aviones o coches, al contar objetos y en tareas abstractas, como estimar distancias. También aprende los sesgos de los pies de foto de la web. Como CLIP aprendió a leer texto en imágenes, este puede engañarlo: en la investigación de OpenAI sobre neuronas multimodales, una manzana con una etiqueta manuscrita que decía «iPod» se clasificó como un iPod.










