En este tutorial, descubrirá cómo aplicar el modelo Meta Llama 3.2-90b-vision-instruct ahora disponible en watsonx.ai a tareas de visión artificial como subtitulado de imágenes y respuesta visual a preguntas.
Muchos de nosotros estamos familiarizados con las aplicaciones de IA unimodal. Una herramienta popular de IA unimodal es ChatGPT. Los chatbots como ChatGPT utilizan el procesamiento de lenguaje natural (PLN) para comprender las preguntas de los usuarios y automatizar las respuestas en tiempo real. El tipo de entrada al que se pueden aplicar estos modelos de lenguaje grandes (LLM) unimodales se limita al texto.
La inteligencia artificial (IA) multimodal se basa en modelos de machine learning construidos sobre redes neuronales. Estas redes neuronales son capaces de procesar e integrar información de múltiples tipos de datos empleando técnicas de aprendizaje profundo. Estas diferentes modalidades producidas por el modelo de IA generativa, pueden incluir entrada de texto, imágenes, video y audio.
Los sistemas de IA multimodal tienen muchos casos de uso en el mundo real que van desde diagnósticos de imágenes médicas en entornos de atención médica mediante visión artificial hasta reconocimiento de voz en aplicaciones de traducción. Estos avances en tecnología de IA pueden optimizar diversos ámbitos. La principal ventaja de las arquitecturas multimodales es la capacidad de procesar diferentes tipos de datos.
La IA multimodal implica tres elementos:
Módulo de entrada
El módulo de entrada se basa en múltiples redes neuronales unimodales para preprocesar diferentes tipos de datos. Aquí, los datos se preparan para los algoritmos de machine learning que se ejecutan en el módulo de fusión.
Módulo de fusión
La combinación, alineación y procesamiento de datos se produce en este módulo. El proceso de fusión ocurre para cada modalidad de datos. En este módulo se utilizan comúnmente varias técnicas. Un ejemplo es la fusión temprana, en la que se combinan los datos sin procesar de todas las entradas. Además, la fusión intermedia es cuando los datos de diferentes modalidades se codifican en diferentes etapas de preprocesamiento. Por último, la fusión tardía consolida los datos después de ser procesados inicialmente en el módulo de entrada por diferentes modelos correspondientes a cada modalidad.
Módulo de salida
El módulo de salida genera resultados en el formato deseado al dar sentido a los datos producidos en el módulo de fusión. Estos resultados pueden adoptar diversas formas, como texto, imagen o una combinación de formatos.
Consulte este video de YouTube de IBM Technology que lo guía a través de las siguientes instrucciones de configuración en los pasos 1 y 2.
Si bien puede elegir entre varias herramientas, este tutorial es el más adecuado para un Jupyter Notebook. Los Jupyter Notebooks se utilizan ampliamente dentro de la ciencia de datos para combinar código con varias fuentes de datos, como texto, imágenes y visualizaciones de datos.
Este tutorial le muestra cómo configurar una cuenta de IBM para usar un Jupyter Notebook.
Inicie sesión en watsonx.ai con su cuenta de IBM Cloud.
Cree un proyecto watsonx.ai.
Puede obtener su ID de proyecto desde dentro de su proyecto. Haga clic en la pestaña Manage. Luego, copie el ID del proyecto de la sección Details de la página General. Necesita este ID para este tutorial.
Cree un Jupyter Notebook.
Este paso abrirá un entorno de notebook donde podrá copiar el código de este tutorial para implementar el ajuste de instrucción por su cuenta. También puede descargar este Notebook en su sistema local y cargarlo en su proyecto watsonx.ai como activo. Este Jupyter Notebook y los conjuntos de datos utilizados se pueden encontrar en GitHub.
Para evitar conflictos de dependencia de paquetes de Python, recomendamos configurar un entorno virtual.
Para este tutorial, sugerimos usar el modelo Meta 3.2-90b-vision-instruct con watsonx.ai para lograr resultados similares. Usted es libre de usar cualquier modelo de IA que admita el aprendizaje multimodal de su elección. Hay varios modelos de IA multimodal para elegir, incluidos GPT-4 V(ision) y DALL-E 3 de OpenAI, así como Gemini de Google. Asegúrese de utilizar la API adecuada si trabaja con otros modelos, ya que este tutorial está diseñado para watsonx.ai.
Cree una instancia de servicio watsonx.ai Runtime (seleccione la región adecuada y elija el plan Lite, que es una instancia gratuita).
Genere una clave de API.
Asocie la instancia del servicio watsonx.ai Runtime al proyecto que creó en watsonx.ai.
Necesitaremos algunas bibliotecas y módulos para este tutorial. Asegúrese de importar los siguientes; si no están instalados, puede resolver esto con una instalación rápida de pip.
Para establecer nuestras credenciales, necesitamos el WATSONX_APIKEY y WATSONX_PROJECT_ID que generó en el paso 1. Puede almacenarlos en un archivo .env en su directorio o reemplazar el texto del marcador de posición. También estableceremos la URL que sirve como endpoint de la API.
Podemos usar la clase credenciales para encapsular nuestras credenciales aprobadas.
En este tutorial, trabajaremos con varias imágenes para aplicaciones de IA multimodal, como subtítulos de imágenes y detección de objetos. Se puede acceder a las imágenes que usaremos mediante las siguientes URL. Podemos almacenar estas URL en una lista para codificarlas iterativamente.
Para comprender mejor nuestra entrada de datos, mostremos las imágenes.
Resultado:
url_image_0
url_image_1
url_image_2
url_image_3
Para codificar estas imágenes de una manera que sea digerible para el LLM, codificaremos las imágenes en bytes que luego decodificaremos a la representación UTF-8.
Ahora que nuestras imágenes se pueden pasar al LLM, configuremos una función para nuestras llamadas a la API de watsonx. La función augment_api_request_body toma la consulta y la imagen del usuario como parámetros y aumenta el cuerpo de la solicitud de API. Usaremos esta función en cada iteración.
def augment_api_request_body(user_query, image): messages = [ { "role": "user", "content": [{ " tipo ": " texto ", " texto ": 'Eres un asistente muy útil. Responde a la siguiente consulta del usuario en 1 o 2 frases: ' + user_query }, { "type": "image_url", "image_url": { "url": f"data:image/jpeg;base64,{image}", } }] } ] return messages
Vamos a crear una instancia de la interfaz del modelo usando la clase ModelInference. En este tutorial, utilizaremos el modelo themeta-llama/llama-3-2-90b-vision-instruct.
Ahora, podemos recorrer nuestras imágenes para ver las descripciones de texto producidas por el modelo en respuesta a la consulta "¿Qué está pasando en esta imagen?".
Resultado:
Esta imagen muestra una calle concurrida de la ciudad con edificios altos y automóviles, y personas caminando por la acera. La calle está llena de semáforos, árboles y letreros, y hay varias personas cruzando la calle en una intersección.
La imagen muestra a una mujer con atuendo deportivo corriendo por la calle, con un edificio y un automóvil visibles en el fondo. La mujer lleva una sudadera con capucha amarilla, leggings negros y zapatos deportivos, y parece estar haciendo un trote o carrera casual.
La imagen muestra un área inundada, con agua cubriendo el suelo y los edificios circundantes. La inundación parece ser grave, y el nivel del agua llega a los techos de algunas estructuras.
**Descripción de la imagen**
* La imagen muestra un primer plano de una etiqueta nutricional, con un dedo que la señala.
* La etiqueta proporciona información detallada sobre el contenido nutricional de un alimento específico, incluyendo:
+ Calorías
+ Grasa
+ Sodio
+ Carbohidratos
+ Otra información relevante
* La etiqueta se muestra sobre un fondo blanco con texto negro, lo que facilita su lectura y comprensión.
El modelo Llama 3.2-90b-vision-instruct pudo colocar las leyendas correctamente en cada imagen con un detalle significativo.
Ahora que mostramos la capacidad del modelo para realizar conversión de imagen a texto en el paso anterior, hagamos algunas preguntas que requieren detección de objetos. Con respecto a la segunda imagen que muestra a la mujer corriendo al aire libre, le preguntaremos al modelo: "¿Cuántos autos hay en esta imagen?".
Salida: Hay un auto en esta imagen. El auto está estacionado en la calle, a la derecha del edificio.
El modelo identificó correctamente el vehículo singular en la imagen. Ahora, indaguemos sobre los daños representados en la imagen de la inundación.
Resultado: El daño en esta imagen es grave; las aguas de inundación cubren una parte significativa de la tierra y causan potencialmente daños extensos a las estructuras y cultivos. El nivel del agua parece estar al menos hasta la cintura, lo que podría provocar pérdidas significativas para los propietarios y agricultores de la zona.
Esta respuesta destaca el valor que tiene la IA multimodal para ámbitos como el de los seguros. El modelo fue capaz de detectar la gravedad de los daños causados a la vivienda inundada. Esta podría ser una herramienta poderosa para mejorar el tiempo de procesamiento de reclamos de seguros.
A continuación, preguntemos al modelo cuánto contenido de sodio hay en la imagen de la etiqueta nutricional.
Resultado: **Contenido de sodio:** 640 miligramos (mg)
¡Excelente! El modelo pudo discernir objetos dentro de las imágenes siguiendo las consultas de los usuarios. Le recomendamos que pruebe más consultas para demostrar aún más el rendimiento del modelo.
En este tutorial, utilizó el modelo Llama 3.2-90b-vision-instruct para realizar operaciones multimodales, incluyendo leyendas de imágenes y respuesta visual a preguntas. Para conocer más casos de uso de este modelo, le recomendamos que consulte la página de documentación oficial. Allí encontrará más información sobre los parámetros y capacidades del modelo. El resultado de Python es importante, ya que muestra la capacidad del sistema multimodal para extraer información de datos multimodales.
Entrene, valide, ajuste y despliegue IA generativa, modelos fundacionales y capacidades de machine learning con IBM watsonx.ai, un estudio empresarial de próxima generación para creadores de IA. Diseñe aplicaciones de IA en menos tiempo y con menos datos.
Ponga la IA a trabajar en su negocio con la experiencia en IA líder en la industria y la cartera de soluciones de IBM a su lado.
Reinvente los flujos de trabajo y las operaciones críticas añadiendo IA para maximizar las experiencias, la toma de decisiones en tiempo real y el valor empresarial.