Transformers documentation

MatCha

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Este modelo se publicó en HF papers el 2022-12-19 y se contribuyó a Hugging Face Transformers el 2023-06-20.

MatCha

Resumen

MatCha se propuso en el artículo MatCha: Enhancing Visual Language Pretraining with Math Reasoning and Chart Derendering, de Fangyu Liu, Francesco Piccinno, Syrine Krichene, Chenxi Pang, Kenton Lee, Mandar Joshi, Yasemin Altun, Nigel Collier, Julian Martin Eisenschlos.

El resumen del artículo establece lo siguiente:

Los datos de lenguaje visual, como gráficos, diagramas e infografías, son omnipresentes en el mundo humano. Sin embargo, los modelos de visión-lenguaje de última generación no rinden bien con estos datos. Proponemos MatCha (preentrenamiento de razonamiento matemático y redibujado de gráficos) para mejorar las capacidades de los modelos de lenguaje visual en el modelado conjunto de gráficos/diagramas y datos de lenguaje. Específicamente, proponemos varias tareas de preentrenamiento que cubren la deconstrucción de gráficos y el razonamiento numérico, que son las capacidades clave en el modelado de lenguaje visual. Realizamos el preentrenamiento de MatCha a partir de Pix2Struct, un modelo de lenguaje visual de imagen a texto propuesto recientemente. En benchmarks estándar como PlotQA y ChartQA, el modelo MatCha supera a los métodos de última generación en hasta casi un 20 %. También examinamos qué tan bien se transfiere el preentrenamiento de MatCha a dominios como capturas de pantalla, diagramas de libros de texto y figuras de documentos, y observamos una mejora general, lo que verifica la utilidad del preentrenamiento de MatCha en tareas de lenguaje visual más amplias.

Descripción del modelo

MatCha es un modelo entrenado con la arquitectura Pix2Struct. Puede encontrar más información sobre Pix2Struct en la documentación de Pix2Struct. MatCha es un subconjunto de Visual Question Answering de la arquitectura Pix2Struct. Representa la pregunta de entrada en la imagen y predice la respuesta.

Uso

Actualmente hay 6 puntos de control disponibles para MatCha:

  • google/matcha: el modelo base de MatCha, utilizado para ajustar MatCha en tareas posteriores
  • google/matcha-chartqa: Modelo MatCha ajustado finamente en el conjunto de datos ChartQA. Puede usarse para responder preguntas sobre gráficos.
  • google/matcha-plotqa-v1: Modelo MatCha ajustado en el conjunto de datos PlotQA. Puede usarse para responder preguntas sobre gráficos.
  • google/matcha-plotqa-v2: Modelo MatCha ajustado en el conjunto de datos PlotQA. Puede usarse para responder preguntas sobre gráficos.
  • google/matcha-chart2text-statista: Modelo MatCha ajustado finamente en el conjunto de datos Statista.
  • google/matcha-chart2text-pew: Modelo MatCha ajustado finamente en el conjunto de datos Pew.

Los modelos ajustados en chart2text-pew y chart2text-statista son más adecuados para la resumición, mientras que los modelos ajustados en plotqa y chartqa son más adecuados para la respuesta a preguntas.

Puede utilizar estos modelos de la siguiente manera (ejemplo en un conjunto de datos de ChartQA):

import requests
from PIL import Image

from transformers import AutoProcessor, Pix2StructForConditionalGeneration


model = Pix2StructForConditionalGeneration.from_pretrained("google/matcha-chartqa").to(0, device_map="auto")
processor = AutoProcessor.from_pretrained("google/matcha-chartqa")
url = "https://raw.githubusercontent.com/vis-nlp/ChartQA/main/ChartQA%20Dataset/val/png/20294671002019.png"
image = Image.open(requests.get(url, stream=True).raw)

inputs = processor(images=image, text="Is the sum of all 4 places greater than Laos?", return_tensors="pt").to(0)
predictions = model.generate(**inputs, max_new_tokens=512)
print(processor.decode(predictions[0], skip_special_tokens=True))

Ajuste fino

Para ajustar MatCha, consulte el cuaderno de ajuste fino de pix2struct. Para los modelos Pix2Struct, hemos encontrado que ajustar el modelo con Adafactor y un programador de tasa de aprendizaje coseno conduce a una convergencia más rápida:

from transformers.optimization import Adafactor, get_cosine_schedule_with_warmup


optimizer = Adafactor(self.parameters(), scale_parameter=False, relative_step=False, lr=0.01, weight_decay=1e-05)
scheduler = get_cosine_schedule_with_warmup(optimizer, num_warmup_steps=1000, num_training_steps=40000)

MatCha es un modelo entrenado con la arquitectura Pix2Struct. Puede encontrar más información sobre Pix2Struct en la documentación de Pix2Struct.

Update on GitHub