Introducción
2023 ha sido un año de IA, desde modelos de lenguaje hasta modelos de difusión estable. Uno de los nuevos jugadores que ha tomado protagonismo es el KOSMOS-2, desarrollado por Microsoft. Es un modelo de lenguaje grande multimodal (MLLM) que está causando sensación con capacidades innovadoras para comprender texto e imágenes. Desarrollar un modelo de lenguaje es una cosa, mientras que crear un modelo para la visión es otra, pero tener un modelo con ambas tecnologías es otro nivel de Inteligencia Artificial. En este artículo, profundizaremos en las características y aplicaciones potenciales de KOSMOS-2 y su impacto en la IA y el aprendizaje automático.
Objetivos de aprendizaje
- Comprensión del modelo de lenguaje grande multimodal KOSMOS-2.
- Descubra cómo KOSMOS-2 realiza la conexión a tierra multimodal y la generación de expresiones de referencia.
- Obtenga información sobre las aplicaciones del mundo real de KOSMOS-2.
- Ejecutando una inferencia con KOSMOS en Colab
Este artículo fue publicado como parte del Blogatón de ciencia de datos.
Comprender el modelo KOSMOS-2
KOSMOS-2 es una creación de un equipo de investigadores de Microsoft en su artículo titulado “Kosmos-2: Grounding Multimodal Large Language Models to the World”. Diseñado para manejar texto e imágenes simultáneamente y redefinir cómo interactuamos con datos multimodales, KOSMOS-2 se basa en una arquitectura de modelo de lenguaje causal basada en Transformer, similar a otros modelos de renombre como LLaMa-2 y el modelo 7b de Mistral ai.
Sin embargo, lo que distingue a KOSMOS-2 es su proceso de entrenamiento único. Está entrenado en un vasto conjunto de datos de pares imagen-texto fundamentados conocido como GRIT, donde el texto contiene referencias a objetos en imágenes en forma de cuadros delimitadores como tokens especiales. Este enfoque innovador permite a KOSMOS-2 proporcionar una nueva comprensión del texto y las imágenes.
¿Qué es la puesta a tierra multimodal?
Una de las características destacadas de KOSMOS-2 es su capacidad para realizar una “conexión a tierra multimodal”. Esto significa que puede generar leyendas para imágenes que describen los objetos y su ubicación dentro de la imagen. Esto reduce las “alucinaciones”, un problema común en los modelos de lenguaje, y mejora drásticamente la precisión y confiabilidad del modelo.
Este concepto conecta el texto con los objetos en imágenes a través de tokens únicos, “consolidando” efectivamente los objetos en el contexto visual. Esto reduce las alucinaciones y mejora la capacidad del modelo para generar títulos de imágenes precisos.
Generación de expresiones de referencia
KOSMOS-2 también destaca en la “generación de expresiones de referencia”. Esta característica permite a los usuarios indicarle al modelo un cuadro delimitador específico en una imagen y una pregunta. Luego, el modelo puede responder preguntas sobre ubicaciones específicas de la imagen, proporcionando una poderosa herramienta para comprender e interpretar el contenido visual.
Este impresionante caso de uso de “generación de expresiones de referencia” permite a los usuarios utilizar indicaciones y abre nuevas vías para interacciones de lenguaje natural con contenido visual.
Demostración de código con KOSMOS-2
Veremos cómo ejecutar una inferencia en Colab usando el modo KOSMOS-2. Encuentre el código completo aquí: https://github.com/inuwamobarak/KOSMOS-2
Paso 1: configurar el entorno
En este paso, instalamos las dependencias necesarias como Transformers, Accelerate y Bitsandbytes. Estas bibliotecas son cruciales para una inferencia eficiente con KOSMOS-2.
!pip install -q git+https://github.com/huggingface/transformers.git accelerate bitsandbytes
Paso 2: Cargue el modelo KOSMOS-2
A continuación cargamos el modelo KOSMOS-2 y su procesador.
from transformers import AutoProcessor, AutoModelForVision2Seq
processor = AutoProcessor.from_pretrained("microsoft/kosmos-2-patch14-224")
model = AutoModelForVision2Seq.from_pretrained("microsoft/kosmos-2-patch14-224", load_in_4bit=True, device_map={"": 0})
Paso 3: Cargue la imagen y solicite
En este paso, realizamos la conexión a tierra de la imagen. Cargamos una imagen y proporcionamos un mensaje para que se complete el modelo. Usamos el token único, crucial para hacer referencia a objetos en la imagen.
import requests
from PIL import Image
prompt = "<grounding>An image of"
url = "https://huggingface.co/microsoft/kosmos-2-patch14-224/resolve/main/snowman.png"
image = Image.open(requests.get(url, stream=True).raw)
image
Paso 4: generar finalización
A continuación, preparamos la imagen y solicitamos el modelo utilizando el procesador. Luego dejamos que el modelo genere una finalización de forma autorregresiva. La finalización generada proporciona información sobre la imagen y su contenido.
inputs = processor(text=prompt, images=image, return_tensors="pt").to("cuda:0")
# Autoregressively generate completion
generated_ids = model.generate(**inputs, max_new_tokens=128)
# Convert generated token IDs back to strings
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)(0)
Paso 5: posprocesamiento
Observamos el texto sin procesar generado, que puede incluir algunos tokens relacionados con parches de imágenes. Este paso de posprocesamiento garantiza que obtengamos resultados significativos.
print(generated_text)
<image>. the, to and of as in I that' for is was- on’ it with The as at bet he have from by are " you his “ this said not has an ( but had we her they will my or were their): up about out who one all been she can more would It</image><grounding> An image of<phrase> a snowman</phrase><object><patch_index_0044><patch_index_0863></object> warming up by<phrase> a fire</phrase><object><patch_index_0006><patch_index_0879></object>
Paso 6: procesamiento adicional
Este paso se centra en el texto generado más allá de los tokens iniciales relacionados con la imagen. Extraemos detalles, incluidos nombres de objetos, frases y tokens de ubicación. Esta información extraída es más significativa y nos permite comprender mejor la respuesta del modelo.
# By default, the generated text is cleaned up and the entities are extracted.
processed_text, entities = processor.post_process_generation(generated_text)
print(processed_text)
print(entities)
An image of a snowman warming up by a fire
(('a snowman', (12, 21), ((0.390625, 0.046875, 0.984375, 0.828125))), ('a fire', (36, 42), ((0.203125, 0.015625, 0.484375, 0.859375))))
end_of_image_token = processor.eoi_token
caption = generated_text.split(end_of_image_token)(-1)
print(caption)
<grounding> An image of<phrase> a snowman</phrase><object><patch_index_0044><patch_index_0863></object> warming up by<phrase> a fire</phrase><object><patch_index_0006><patch_index_0879></object>
Paso 7: Trazar cuadros delimitadores
Mostramos cómo visualizar los cuadros delimitadores de los objetos identificados en la imagen. Este paso nos permite comprender dónde ha ubicado el modelo objetos específicos. Aprovechamos la información extraída para anotar la imagen.
from PIL import ImageDraw
width, height = image.size
draw = ImageDraw.Draw(image)
for entity, _, box in entities:
box = (round(i, 2) for i in box(0))
x1, y1, x2, y2 = tuple(box)
x1, x2 = x1 * width, x2 * width
y1, y2 = y1 * height, y2 * height
draw.rectangle(xy=((x1, y1), (x2, y2)), outline="red")
draw.text(xy=(x1, y1), text=entity)
image
Paso 8: Respuesta a preguntas fundamentadas
KOSMOS-2 le permite interactuar con objetos específicos en una imagen. En este paso, le indicamos al modelo un cuadro delimitador y una pregunta relacionada con un objeto en particular. El modelo proporciona respuestas basadas en el contexto y la información de la imagen.
url = "https://huggingface.co/ydshieh/kosmos-2-patch14-224/resolve/main/pikachu.png"
image = Image.open(requests.get(url, stream=True).raw)
image
Podemos preparar una pregunta y un cuadro delimitador para Pikachu. El uso de tokens especiales indica la presencia de una frase en la pregunta. Este paso muestra cómo obtener información específica de una imagen con respuestas a preguntas fundamentadas.
prompt = "<grounding> Question: What is<phrase> this character</phrase>? Answer:"
inputs = processor(text=prompt, images=image, bboxes=((0.04182509505703422, 0.39244186046511625, 0.38783269961977185, 1.0)), return_tensors="pt").to("cuda:0")
Paso 9: Generar una respuesta fundamentada
Permitimos que el modelo complete la pregunta de forma autorregresiva, generando una respuesta basada en el contexto proporcionado.
generated_ids = model.generate(**inputs, max_new_tokens=128)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)(0)
# By default, the generated text is cleaned up, and the entities are extracted.
processed_text, entities = processor.post_process_generation(generated_text)
print(processed_text)
print(entities)
Question: What is this character? Answer: Pikachu in the anime.
(('this character', (18, 32), ((0.046875, 0.390625, 0.390625, 0.984375))))
Aplicaciones de KOSMOS-2
Las capacidades de KOSMOS-2 se extienden mucho más allá del laboratorio y llegan a aplicaciones del mundo real. Algunas de las áreas donde puede tener un impacto incluyen:
- Robótica: Imagínese si pudiera decirle a su robot que lo despierte si la nube parece pesada. Necesita poder ver el cielo contextualmente. La capacidad de los robots para ver contextualmente es una característica valiosa. KOSMOS-2 se puede integrar en robots para comprender su entorno, seguir instrucciones y aprender de sus experiencias observando y comprendiendo su entorno e interactuando con el mundo a través de texto e imágenes.
- Inteligencia documental: Aparte del entorno externo, KOSMOS-2 se puede utilizar para la inteligencia de documentos. Esto podría consistir en analizar y comprender documentos complejos que contienen texto, imágenes y tablas, haciendo más accesible la extracción y el procesamiento de información relevante.
- Diálogo multimodal: Dos usos comunes de la IA han sido más comunes en el lenguaje o la visión. Con KOSMOS-2, podemos emplear chatbots y asistentes virtuales para trabajar juntos, permitiéndoles comprender y responder a las consultas de los usuarios que involucran texto e imágenes.
- Subtítulos de imágenes y respuesta visual a preguntas: Estos implican generar automáticamente subtítulos para imágenes y responder preguntas basadas en información visual, lo que tiene aplicaciones en industrias como la publicidad, el periodismo y la educación. Esto incluye generar versiones especializadas o ajustadas que dominen casos de uso específicos.
Casos de uso prácticos del mundo real
Hemos visto que las capacidades de KOSMOS-2 se extienden más allá de los modelos tradicionales de lenguaje e inteligencia artificial. Veamos aplicación específica:
- Conducción automatizada: Tiene el potencial de mejorar los sistemas de conducción automatizados al detectar y comprender las posiciones relativas de los objetos en el vehículo, como el traficante y las ruedas, lo que permite una toma de decisiones más inteligente en escenarios de conducción complejos. Podría identificar a los peatones y decirles sus intenciones en la carretera según la posición de su cuerpo.
- Seguridad y proteccion: Al construir robots de seguridad policial, la arquitectura KOSMOS-2 se puede entrenar para detectar cuándo las personas están “congeladas” o no.
- Investigación de mercado: Además, puede suponer un punto de inflexión en la investigación de mercado, donde se pueden analizar juntos grandes cantidades de comentarios, imágenes y reseñas de los usuarios. KOSMOS-2 ofrece nuevas formas de sacar a la luz conocimientos valiosos a escala cuantificando datos cualitativos y combinándolos con análisis estadístico.
<h2 class="wp-block-heading" id="h-the-future-of-multimodal-ai“>El futuro de la IA multimodal
KOSMOS-2 representa un gran avance en el campo de la IA multimodal. Su capacidad para comprender y describir con precisión textos e imágenes abre posibilidades. A medida que la IA crece, modelos como KOSMOS-2 nos acercan más a la realización de inteligencia artificial avanzada y están destinados a revolucionar las industrias.
Este es uno de los modelos más cercanos que conducen a la inteligencia artificial general (AGI), que actualmente es solo un tipo hipotético de agente inteligente. Si se hiciera realidad, una AGI podría aprender a realizar tareas que los humanos pueden realizar.
Conclusión
KOSMOS-2 de Microsoft es un testimonio del potencial de la IA al combinar texto e imágenes para crear nuevas capacidades y aplicaciones. Al abrirse camino en dominios, podemos esperar ver innovaciones impulsadas por la IA que se consideraban fuera del alcance de la tecnología. El futuro está cada vez más cerca y modelos como KOSMOS-2 le están dando forma. Modelos como KOSMOS-2 son un paso adelante para la IA y el aprendizaje automático. Cerrarán la brecha entre el texto y las imágenes, revolucionando potencialmente las industrias y abriendo puertas a aplicaciones innovadoras. A medida que continuamos explorando las posibilidades de los modelos de lenguaje multimodal, podemos esperar avances interesantes en la IA, allanando el camino para la realización de inteligencia artificial avanzada como las AGI.
Conclusiones clave
- KOSMOS-2 es un innovador modelo de lenguaje multimodal de gran tamaño que puede comprender texto e imágenes, con un proceso de entrenamiento único que involucra referencias de cuadros delimitadores en el texto.
- KOSMOS-2 destaca en la conexión a tierra multimodal para generar leyendas de imágenes que especifican la ubicación de los objetos, reduciendo las alucinaciones y mejorando la precisión del modelo.
- El modelo puede responder preguntas sobre ubicaciones específicas en una imagen utilizando cuadros delimitadores, abriendo nuevas posibilidades para interacciones de lenguaje natural con contenido visual.
Preguntas frecuentes
R1: KOSMOS-2 es un modelo de lenguaje grande multimodal desarrollado por Microsoft. Lo que lo distingue es su capacidad para comprender texto e imágenes simultáneamente, con un proceso de entrenamiento único que involucra referencias de cuadros delimitadores en el texto.
R2: KOSMOS-2 mejora la precisión al realizar una conexión a tierra multimodal, que genera títulos de imágenes con ubicaciones de objetos. Esto reduce las alucinaciones y proporciona una comprensión del contenido visual.
R3: La conexión a tierra multimodal es la capacidad de KOSMOS-2 para conectar texto con objetos en imágenes utilizando tokens únicos. Esto es crucial para reducir la ambigüedad en los modelos de lenguaje y mejorar su desempeño en tareas de contenido visual.
R4: KOSMOS-2 se puede integrar en robótica, inteligencia de documentos, sistemas de diálogo multimodal y subtítulos de imágenes. Permite a los robots comprender su entorno, procesar documentos complejos e interactuar en lenguaje natural con contenido visual.
R5: KOSMOS-2 utiliza tokens únicos y cuadros delimitadores en referencias de texto para ubicaciones de objetos en imágenes. Estos tokens guían al modelo en la generación de leyendas precisas que incluyen las posiciones de los objetos.
Referencias
- https://github.com/inuwamobarak/KOSMOS-2
- https://github.com/NielsRogge/Transformers-Tutorials/tree/master/KOSMOS-2
- https://arxiv.org/pdf/2306.14824.pdf
- https://huggingface.co/docs/transformers/main/en/model_doc/kosmos-2
- https://huggingface.co/datasets/zzliang/GRIT
- Peng, Z., Wang, W., Dong, L., Hao, Y., Huang, S., Ma, S. y Wei, F. (2023). Kosmos-2: Conexión de modelos de lenguajes grandes multimodales al mundo. ArXiv. /abs/2306.14824
Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.