CLIP claramente explicado. ¿Qué es y cómo funciona?

  • Autor de la entrada:
En este momento estás viendo CLIP claramente explicado. ¿Qué es y cómo funciona?
Imagen de Imagenet-R clasificada como Husky Siberian (probabilidad 76.01%) por CLIP en web de OpenAI

Tiempo estimado de lectura: 8 minutos.

CLIP («Contrastive language-image pre-training» en inglés), es una técnica de pre-entrenamiento que para representar un texto junto con su imagen.

Desarrollada por OpenAI a principios de 2021, no es una técnica novedosa aunque establece un marco de trabajo de referencia para realizar representaciones conjuntas de distintos tipos de datos (multimodales).

En este artículo explico en qué consiste y cómo funciona de forma clara.

¿En qué consiste CLIP?

El propósito de CLIP es representar una imagen con su texto asociado y lo realiza buscando relaciones semánticas entre texto e imagen mediante un aprendizaje «por contraste».

Para ello:

  • Se entrena un conjunto muy grande de datos, más de 400 millones de datos.
  • Se realiza un aprendizaje supervisado porque, en el momento de entrenar, conocemos los conjuntos de pares (imagen, texto asociado).
  • Todas las imágenes y sus textos (pies de foto) se representan en un espacio m-dimensional.
  • Se calcula la similitud coseno de cada par (imagen, texto).
  • El objetivo del entrenamiento es maximizar la similitud coseno de los pares (imagen, texto) correctos al tiempo que minimiza los de los pares que no se corresponden.
Preentrenamiento CLIP
Imagen 1: Proceso de entrenamiento CLIP

La matriz de relaciones entre las imágenes y textos obtenida se puede utilizar como entrada para realizar tareas específicas de reconocimiento de imágenes mediante una transferencia de conocimiento zero-shot.

¿Cómo funciona CLIP?

Clasificador de imagenes con CLIP
Imagen 2: Imagen de OpenAI. (1) CLIP pre-entrena un codificador de imágenes y un codificador de textos para predecir qué imágenes se emparejan con qué textos en nuestro conjunto de datos, (2) creamos la salida del clasificador de imágenes a partir de los tipos del conjunto de datos de texto, por ejemplo  «una foto de un perro», y (3) transferencia zero-shot donde predecimos la clase que el modelo pre-entrenado en (1) estima que se corresponde mejor con la imagen que queremos clasificar.

Para ilustrar el funcionamiento de CLIP utilizaré el ejemplo utilizando en la publicación original de OpenAI, una arquitectura de clasificación de imágenes en tres pasos:

  • Primero se realiza el pre-entrenamiento CLIP con los conjuntos de datos disponibles para encontrar la relación entre imágenes y sus textos asociados según hemos visto en el apartado anterior.
  • Segundo, se generan las representaciones o embedding de las clases del clasificador a partir de los textos de los datos de entrenamiento.

Utilizaremos estas representaciones para dos cosas: (1) como entrada (prompt) para configurar el predictor zero-shot y (2) como salida de la predicción para indicar la clase de la imagen.

  • Tercero, se infiere la tarea, en este caso clasificación de una imagen, a través de una transferencia «zero-shot«.

En una transferencia zero-shot se predice la tarea a realizar a partir de una orden en texto (prompt) y de los resultados del pre-entrenamiento de modelo de datos a gran escala.

En esta línea, se configura el clasificador de imágenes (Image Encoder) con las relaciones (texto, imagen) aprendidas en el modelo de pre-entrenamiento CLIP para el conjunto de clases del clasificador.

Y ya estaría listo para ejecutar las predicciones.

Principales características de CLIP

  • El volumen de datos usado para pre-entrenar.

Utiliza un conjunto muy grande, unos 400 millones de imágenes con su texto extraídas de internet.

Con este tamaño, es capaz de aprender muchas representaciones y relaciones de la información, mejorando los resultados con respecto a modelos anteriores que usaban bases de datos de imágenes etiquetadas específicamente para estos usos (Imagenet).

  • Entrenamiento por contraste («contrastive training«).

Hasta el momento, las técnicas que asociaban una imagen con una etiqueta se basaban en predecir la probabilidad de identificar la palabra exacta. El problema es que encontrar la palabra concreta es muy complicado debido a la gran cantidad de información existente normalmente en los metadatos o datos asociados a cada foto.

Por ello, surge el aprendizaje por contraste que aprende las relaciones entre un texto con su imagen maximizando las relaciones entre los pares correctos y minimizando las relaciones entre los que no se corresponden. De ahí el nombre «por contraste».

Ya no es necesario acertar con la palabra exacta sino con la más parecida.

  • Eficiencia computacional.

Uno de los principales problemas de los grandes modelos de lenguaje y de los sistemas de visión artificial es que demandan mucha capacidad de procesamiento.

El desarrollo de CLIP se realizó con el objetivo de seleccionar la técnica de pre-entrenamiento que optimizara la eficiencia. En este caso, el mejor resultado, y el utilizado finalmente, se consiguió con codificadores Transformers tanto para texto como para imagen (Vision Transformer) que permiten paralelizar el proceso.

  • Mejores representaciones de texto-imagen y sus relaciones.

El aprendizaje por contraste captura mejor la información semántica de las imágenes que otros modelos de referencia hasta el momento como las redes convolucionales.

Esto es lo que permite completar la información en la transferencia zero-shot para inferir la tarea.

¿Eh? ¿Qué significa esto? Básicamente, lo que se muestra en el paso 2 de la imagen 2. Podemos hacer clases más detalladas y que den mayor contexto a la hora de clasificar (las llamaré etiquetas extendidas).

Por ejemplo, podemos hacer las siguientes etiquetas extendidas:

  1. «esta foto es un {objeto}»: estamos indicando que la imagen del objeto es una foto.
  2. «esta imagen por satélite de una {objeto}»: estamos apuntando que la imagen del objeto es una foto por satélite.

Así, se puede dar una orden más precisa para realizar la transferencia del conocimiento del pre-entrenamiento a la tarea que se quiere realizar.

CLIP tiene algunas limitaciones

El estudio original de esta técnica incluye una lista exhaustiva de limitaciones, que adelanta los problemas de utilización en un modelo productivo:

  • Difícil escalabilidad de los conjuntos de datos, que ya son muy grandes, para mejorar los resultados.
  • Pobres resultados para tareas más específicas como por ejemplo, identificar el número de objetos en una foto o los tipos diferentes de un objeto (por ejemplo: razas de perro).
  • Solo es capaz de extraer información de la imagen pero no de generarla. Es decir, puede clasificar pero no puede generar «pies de foto».
  • Eficiencia de los datos. Como es un aprendizaje supervisado, aprende de los datos que tenemos en conjunto de entrenamiento pero, si estas etiquetas asociadas a las imágenes son incorrectas, aprende mal.

Aplicaciones de CLIP

A pesar de las limitaciones es un método exitoso y las representaciones (texto, imagen) obtenidas con CLIP se utilizan cada vez más en aplicaciones de reconocimiento de imágenes y aprendizaje multimodal para:

  • Clasificación detallada de imágenes (ejemplo que hemos visto).
  • Búsqueda de imágenes.
  • Reconocimiento óptico de caracteres (OCR).
  • Geolocalización.
  • Reconocimiento de acciones en vídeos.
  • Es uno de los elementos clave de DALL-E2, una de las arquitecturas más innovadoras para síntesis de imágenes a partir de texto.

Referencias