Transformers documentation
MatCha
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 posterioresgoogle/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)Update on GitHubMatCha es un modelo entrenado con la arquitectura
Pix2Struct. Puede encontrar más información sobrePix2Structen la documentación de Pix2Struct.