Comprendiendo el modelo CLIP y sus aplicaciones en búsqueda de imágenes
Qué es CLIP - IA multimodal que conecta texto e imágenes
CLIP (Contrastive Language-Image Pre-training) es un modelo multimodal publicado por OpenAI en 2021 que puede comprender las relaciones semánticas entre imágenes y texto. Mapea imágenes y texto al mismo espacio vectorial, de modo que imágenes y textos semánticamente similares están próximos en dicho espacio.
Lo revolucionario de CLIP: no es necesario entrenar un modelo especializado para cada tarea específica. Los métodos tradicionales requieren entrenar modelos separados para "clasificación gato/perro", "reconocimiento de escenas" y "detección de objetos", mientras que CLIP, al aprender correspondencias imagen-texto, adquiere una capacidad de comprensión visual universal que puede realizar diversas tareas de clasificación y búsqueda en modo zero-shot (sin ejemplos previos).
Datos de entrenamiento: CLIP fue entrenado con 400 millones de pares imagen-texto recopilados de internet. Este aprendizaje débilmente supervisado a gran escala otorga al modelo un amplio conocimiento del mundo, capaz de comprender contenido visual desde objetos cotidianos hasta conceptos abstractos.
Escenarios de aplicación: búsqueda de texto a imagen (buscar imágenes con lenguaje natural), clasificación zero-shot de imágenes (clasificar sin datos de entrenamiento), puntuación de correspondencia imagen-texto, moderación de contenido y comprensión cross-modal en sistemas de recomendación.
Mecanismo de aprendizaje contrastivo - Aprendizaje de embeddings mediante contraste
CLIP utiliza aprendizaje contrastivo (Contrastive Learning) para entrenar los codificadores de imagen y texto, acercando los pares imagen-texto coincidentes en el espacio vectorial y alejando los no coincidentes.
Proceso de entrenamiento: cada lote contiene N pares imagen-texto. Se calculan las N² similitudes coseno entre los N embeddings de imagen y los N embeddings de texto. Los N pares correctos en la diagonal deben tener la mayor similitud, mientras que los N²-N pares incorrectos restantes deben tener baja similitud. Se optimiza con pérdida de entropía cruzada simétrica.
Parámetro de temperatura: el parámetro de temperatura aprendible τ escala las puntuaciones de similitud, controlando la "nitidez" de la distribución. Una temperatura más baja hace que el modelo sea más determinista (la probabilidad del par correcto está más concentrada), mientras que una temperatura más alta suaviza la distribución.
Entrenamiento con lotes grandes: CLIP usa un tamaño de lote ultra grande de 32,768. Lotes más grandes proporcionan más muestras negativas, haciendo el aprendizaje contrastivo más efectivo. Esta es una de las razones por las que CLIP requiere enormes recursos computacionales para su entrenamiento.
Propiedades del espacio de embeddings: después del entrenamiento, imágenes y texto comparten el mismo espacio vectorial de 512 dimensiones (o 768). El embedding de texto de "un golden retriever corriendo en la hierba" está muy cerca del embedding de imagen de la foto correspondiente en el espacio vectorial.
Arquitectura del modelo - Codificador de imagen y codificador de texto
CLIP está compuesto por dos codificadores independientes que procesan respectivamente las entradas de imagen y texto.
Codificador de imagen: puede ser ResNet (como ResNet-50x64) o Vision Transformer (como ViT-L/14). La versión ViT ofrece mejor rendimiento. La imagen de entrada se escala a un tamaño fijo (como 224x224 o 336x336), produciendo un vector de dimensión fija (como 512 o 768 dimensiones).
Codificador de texto: codificador de texto basado en Transformer, similar a la arquitectura GPT-2. El texto de entrada se tokeniza y codifica, tomando el estado oculto del token [EOS] como embedding de texto. Longitud máxima de entrada: 77 tokens.
Capa de proyección: las salidas de ambos codificadores se mapean al espacio de embeddings compartido mediante capas de proyección lineal. Después de la proyección se aplica normalización L2, colocando todos los vectores en la hiperesfera unitaria. La similitud coseno equivale al producto punto de vectores normalizados.
Variantes del modelo: CLIP tiene variantes de diferentes escalas. ViT-B/32 (más rápido, menor precisión), ViT-B/16 (equilibrado), ViT-L/14 (más preciso pero más lento). La elección depende de los requisitos de latencia y precisión.
Implementación de clasificación zero-shot - Técnicas de ingeniería de prompts
La clasificación zero-shot de CLIP no requiere datos de entrenamiento; se logra comparando la similitud entre el embedding de la imagen y los embeddings de texto de las categorías candidatas.
Flujo básico: definir descripciones textuales de las categorías candidatas (como "a photo of a cat", "a photo of a dog") → calcular el embedding de cada texto → calcular el embedding de la imagen de entrada → comparar la similitud coseno entre el embedding de imagen y todos los embeddings de texto → la categoría con mayor similitud es el resultado de predicción.
Ingeniería de prompts: la redacción de las descripciones textuales afecta significativamente la precisión de clasificación. "a photo of a {class}" funciona 5-10% mejor que el nombre de clase solo. Para dominios específicos se pueden diseñar mejores plantillas de prompt (como "a satellite photo of {class}" para imágenes satelitales).
Ensemble de prompts: usar múltiples plantillas de prompt para cada categoría y promediar los embeddings. Por ejemplo, usar simultáneamente "a photo of a cat", "a picture of a cat", "a cat in the wild", etc. El ensemble típicamente mejora la precisión en 2-5%.
Referencia de rendimiento: CLIP ViT-L/14 alcanza aproximadamente 75% de precisión top-1 zero-shot en ImageNet (sin ningún dato de entrenamiento de ImageNet). Aunque no iguala a modelos entrenados específicamente (90%+), su versatilidad y flexibilidad son incomparables.
Construcción de sistemas de búsqueda de imágenes - Integración con bases de datos vectoriales
Construir un sistema de búsqueda semántica de texto a imagen utilizando embeddings de CLIP.
Construcción del índice: calcular embeddings CLIP para todas las imágenes de la biblioteca y almacenarlos en una base de datos vectorial. Cada imagen corresponde a un vector de 512/768 dimensiones. Opciones de bases de datos vectoriales: Pinecone (servicio gestionado), Milvus (código abierto), Qdrant (código abierto, implementado en Rust), pgvector (extensión de PostgreSQL).
Flujo de búsqueda: el usuario ingresa una consulta de texto → calcular el embedding CLIP del texto → realizar búsqueda de vecinos más cercanos (ANN) en la base de datos vectorial → devolver las imágenes con mayor similitud. La latencia de búsqueda es típicamente de 10-50ms (para bibliotecas de millones de imágenes).
Búsqueda híbrida: combinar búsqueda vectorial (similitud semántica) con búsqueda tradicional por palabras clave (coincidencia exacta de etiquetas). Por ejemplo, primero reducir el alcance con búsqueda vectorial CLIP, luego filtrar con metadatos (fecha, resolución, etc.).
Búsqueda imagen a imagen: dada una imagen de entrada, encontrar imágenes visualmente similares. Comparar directamente la similitud coseno entre embeddings de imagen. Ideal para funcionalidades de "encontrar imágenes similares".
Consideraciones de escalabilidad: bibliotecas de millones de imágenes requieren algoritmos de vecinos más cercanos aproximados (ANN) (como HNSW, IVF) en lugar de búsqueda exacta. Equilibrar recall y velocidad de búsqueda. Reconstruir periódicamente el índice para incorporar nuevas imágenes.
Evolución y limitaciones de CLIP - OpenCLIP, SigLIP y restricciones prácticas
Tras la publicación de CLIP, la comunidad e instituciones de investigación han lanzado múltiples versiones mejoradas.
OpenCLIP: reproducción de código abierto por la comunidad LAION, entrenada con conjuntos de datos más grandes (LAION-5B, 5 mil millones de pares imagen-texto). Algunos modelos superan el rendimiento del CLIP original. Completamente de código abierto y de uso comercial libre.
SigLIP: versión mejorada de Google que usa pérdida Sigmoid en lugar de pérdida Softmax, sin necesidad de lotes ultra grandes para un entrenamiento efectivo. Rendimiento superior a CLIP con el mismo presupuesto computacional.
EVA-CLIP: utiliza un codificador visual más potente (EVA ViT) y estrategias de entrenamiento mejoradas. Establece nuevos récords en clasificación zero-shot en múltiples benchmarks.
Limitaciones de CLIP:
- Comprensión espacial débil: dificultad para distinguir "gato sobre la mesa" de "mesa sobre el gato"
- Capacidad de conteo deficiente: no puede determinar con precisión el número de objetos en una imagen
- Distinción de grano fino limitada: dificultad para distinguir subcategorías similares (como diferentes especies de aves)
- Límite de longitud de texto: máximo 77 tokens, no puede procesar descripciones largas
- Sesgo de datos de entrenamiento: los sesgos de los datos de internet se reflejan en el modelo
Recomendaciones de selección: OpenCLIP ViT-L/14 para escenarios generales; EVA-CLIP cuando se necesita mayor precisión; ViT-B/32 con recursos limitados; confirmar compatibilidad de licencia para uso comercial.