Pregunta y respuesta visual modular a través de generación de código

Generación de código para pregunta y respuesta visual modular

Publicado por Sanjay Subramanian, estudiante de doctorado en UC Berkeley, y Arsha Nagrani, científico investigador de Google Research, Equipo de Percepción

La respuesta visual a preguntas (VQA, por sus siglas en inglés) es una tarea de aprendizaje automático que requiere que un modelo responda una pregunta sobre una imagen o un conjunto de imágenes. Los enfoques convencionales de VQA necesitan una gran cantidad de datos de entrenamiento etiquetados que consisten en miles de pares de preguntas y respuestas anotadas por humanos asociadas con imágenes. En los últimos años, los avances en el pre-entrenamiento a gran escala han llevado al desarrollo de métodos de VQA que funcionan bien con menos de cincuenta ejemplos de entrenamiento (pocos ejemplos) y sin ningún dato de entrenamiento VQA anotado por humanos (cero ejemplos). Sin embargo, todavía existe una brecha significativa de rendimiento entre estos métodos y los métodos de VQA totalmente supervisados de última generación, como MaMMUT y VinVL. En particular, los métodos de pocos ejemplos tienen dificultades con el razonamiento espacial, el conteo y el razonamiento de múltiples saltos. Además, los métodos de pocos ejemplos generalmente se han limitado a responder preguntas sobre imágenes individuales.

Para mejorar la precisión en ejemplos de VQA que implican razonamiento complejo, en “Modular Visual Question Answering via Code Generation”, que aparecerá en ACL 2023, presentamos CodeVQA, un marco que responde preguntas visuales mediante la síntesis de programas. Específicamente, cuando se le da una pregunta sobre una imagen o un conjunto de imágenes, CodeVQA genera un programa en Python (código) con funciones visuales simples que le permiten procesar imágenes y ejecuta este programa para determinar la respuesta. Demostramos que en el entorno de pocos ejemplos, CodeVQA supera el trabajo anterior en aproximadamente un 3% en el conjunto de datos COVR y un 2% en el conjunto de datos GQA.

CodeVQA

El enfoque de CodeVQA utiliza un modelo de lenguaje de programación grande (LLM, por sus siglas en inglés), como PALM, para generar programas en Python (código). Guíamos al LLM para que utilice correctamente las funciones visuales creando una indicación que consiste en una descripción de estas funciones y menos de quince ejemplos “en contexto” de preguntas visuales combinadas con el código Python asociado para ellas. Para seleccionar estos ejemplos, calculamos incrustaciones para la pregunta de entrada y todas las preguntas para las cuales tenemos programas anotados (un conjunto elegido al azar de cincuenta). Luego, seleccionamos las preguntas que tienen la mayor similitud con la entrada y las usamos como ejemplos en contexto. Dada la indicación y la pregunta que queremos responder, el LLM genera un programa en Python que representa esa pregunta.

Instanciamos el marco de CodeVQA utilizando tres funciones visuales: (1) query, (2) get_pos y (3) find_matching_image.

  • Query, que responde una pregunta sobre una sola imagen, se implementa utilizando el método de VQA Plug-and-Play de pocos ejemplos (PnP-VQA). PnP-VQA genera subtítulos utilizando BLIP, un transformador de generación de subtítulos de imágenes pre-entrenado en millones de pares de imágenes y subtítulos, y alimenta estos subtítulos a un LLM que produce las respuestas a la pregunta.
  • Get_pos, que es un localizador de objetos que toma una descripción de un objeto como entrada y devuelve su posición en la imagen, se implementa utilizando GradCAM. Específicamente, la descripción y la imagen se pasan a través del codificador conjunto de texto-imagen BLIP, que predice una puntuación de coincidencia entre la imagen y el texto. GradCAM toma el gradiente de esta puntuación con respecto a las características de la imagen para encontrar la región más relevante para el texto.
  • Find_matching_image, que se utiliza en preguntas de múltiples imágenes para encontrar la imagen que mejor coincide con una frase de entrada determinada, se implementa utilizando los codificadores de texto e imagen de BLIP para calcular una incrustación de texto para la frase y una incrustación de imagen para cada imagen. Luego, los productos punto de la incrustación de texto con cada incrustación de imagen representan la relevancia de cada imagen para la frase, y seleccionamos la imagen que maximiza esta relevancia.

Las tres funciones se pueden implementar utilizando modelos que requieren muy poca anotación (por ejemplo, pares de texto e imagen-texto recopilados de la web y un pequeño número de ejemplos de VQA). Además, el marco de CodeVQA se puede generalizar fácilmente más allá de estas funciones para otras que un usuario podría implementar (por ejemplo, detección de objetos, segmentación de imágenes o recuperación de bases de conocimiento).

Ilustración del método CodeVQA. Primero, un modelo de lenguaje grande genera un programa en Python (código) que invoca funciones visuales que representan la pregunta. En este ejemplo, se utiliza un método simple de VQA (query) para responder una parte de la pregunta, y un localizador de objetos (get_pos) se utiliza para encontrar las posiciones de los objetos mencionados. Luego, el programa produce una respuesta a la pregunta original combinando las salidas de estas funciones.

Resultados

El marco de trabajo CodeVQA genera y ejecuta correctamente programas de Python no solo para preguntas de una sola imagen, sino también para preguntas de múltiples imágenes. Por ejemplo, si se dan dos imágenes, cada una mostrando dos pandas, una pregunta que se podría hacer es: “¿Es cierto que hay cuatro pandas?” En este caso, el LLM convierte la pregunta de conteo sobre el par de imágenes en un programa en el cual se obtiene un conteo de objetos para cada imagen (usando la función de consulta). Luego, los conteos de ambas imágenes se suman para calcular un conteo total, que luego se compara con el número en la pregunta original para obtener una respuesta de sí o no.

Evaluamos CodeVQA en tres conjuntos de datos de razonamiento visual: GQA (una sola imagen), COVR (múltiples imágenes) y NLVR2 (múltiples imágenes). Para GQA, proporcionamos 12 ejemplos en contexto a cada método, y para COVR y NLVR2, proporcionamos seis ejemplos en contexto a cada método. La tabla a continuación muestra que CodeVQA mejora de manera consistente sobre el método de VQA de pocas tomas de referencia en los tres conjuntos de datos.

Método       GQA       COVR       NLVR2      
VQA de pocas tomas de referencia       46.56       49.06       63.37      
CodeVQA       49.03       54.11       64.04      
Resultados en los conjuntos de datos GQA, COVR y NLVR2, que muestran que CodeVQA mejora de manera consistente sobre VQA de pocas tomas de referencia. La métrica es la exactitud de coincidencia exacta, es decir, el porcentaje de ejemplos en los que la respuesta predicha coincide exactamente con la respuesta verdadera.

En GQA, encontramos que la precisión de CodeVQA es aproximadamente un 30% mayor que la del modelo base en preguntas de razonamiento espacial, un 4% mayor en preguntas con “y” y un 3% mayor en preguntas con “o”. La tercera categoría incluye preguntas de múltiples pasos como “¿Hay saleros o monopatines en la imagen?”, para las cuales se muestra el programa generado a continuación.

img = open_image("Image13.jpg")
salt_shakers_exist = query(img, "¿Hay algún salero?")
skateboards_exist = query(img, "¿Hay algún monopatín?")
if salt_shakers_exist == "sí" or skateboards_exist == "sí":
    answer = "sí"
else:
    answer = "no"

En COVR, encontramos que la ventaja de CodeVQA sobre el modelo base es mayor cuando el número de imágenes de entrada es más grande, como se muestra en la siguiente tabla. Esta tendencia indica que descomponer el problema en preguntas de una sola imagen es beneficioso.

         Número de imágenes      
Método    1    2    3    4    5   
Few-shot PnP-VQA     91.7    51.5    48.3    47.0    46.9   
CodeVQA    75.0    53.3    48.7    53.2    53.4   

Conclusión

Presentamos CodeVQA, un marco de trabajo para responder preguntas visuales con pocos ejemplos que se basa en la generación de código para realizar razonamiento visual de múltiples pasos. Direcciones emocionantes para trabajos futuros incluyen expandir el conjunto de módulos utilizados y crear un marco de trabajo similar para tareas visuales más allá de VQA. Se debe tener cuidado al considerar si implementar un sistema como CodeVQA, ya que se ha demostrado que los modelos de visión-lenguaje como los utilizados en nuestras funciones visuales tienen sesgos sociales. Al mismo tiempo, en comparación con los modelos monolíticos, CodeVQA ofrece una mayor interpretabilidad (a través del programa Python) y controlabilidad (modificando las indicaciones o funciones visuales), lo cual es útil en sistemas de producción.

Agradecimientos

Esta investigación fue una colaboración entre el Laboratorio de Investigación en Inteligencia Artificial (BAIR) de UC Berkeley y Google Research, y fue realizada por Sanjay Subramanian, Medhini Narasimhan, Kushal Khangaonkar, Kevin Yang, Arsha Nagrani, Cordelia Schmid, Andy Zeng, Trevor Darrell y Dan Klein.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Aprendizaje Automático

Conoce BITE Un Nuevo Método Que Reconstruye la Forma y Poses 3D de un Perro a Partir de una Imagen, Incluso con Poses Desafiantes como Sentado y Acostado.

Múltiples campos, incluyendo la biología y la conservación, así como el entretenimiento y el desarrollo de contenido ...

Inteligencia Artificial

AI Equipaje para Personas con Discapacidad Visual Recibe Excelentes Críticas

La maleta de IA ofrece características que superan a las de los sistemas de guía tradicionales de teléfonos inteligen...

Inteligencia Artificial

Mejores generadores de música de IA (septiembre de 2023)

Los generadores de música de inteligencia artificial (IA) son programas informáticos que crean música. Esto se puede ...

Inteligencia Artificial

Hugging Face presenta IDEFICS Pionero en IA Conversacional Multimodal Abierta con Modelos de Lenguaje Visual

En el dinámico panorama de la inteligencia artificial, un desafío persistente ha arrojado una sombra sobre el progres...