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

Ce modèle a été publié dans HF papers le 2022-12-19 et ajouté à Hugging Face Transformers le 2023-06-20.

MatCha

Aperçu

MatCha a été proposé dans l'article 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.

L'abstract de l'article énonce ce qui suit :

Les données de langage visuel, telles que les graphiques, les diagrammes et les infographies, sont omniprésents dans le monde humain. Cependant, les modèles de vision-langage de pointe ne parviennent pas à bien traiter ces données. Nous proposons MatCha (pré-entraînement pour le raisonnement mathématique et le re-rendu de graphiques) afin d’améliorer les capacités des modèles de langage visuel à modéliser conjointement les graphiques/diagrammes et les données textuelles. Plus précisément, nous proposons plusieurs tâches de pré-entraînement couvrant la déconstruction des graphiques et le raisonnement numérique, qui sont des capacités clés en modélisation de langage visuel. Nous effectuons le pré-entraînement MatCha à partir de Pix2Struct, un modèle de langage visuel image-vers-texte récemment proposé. Sur des benchmarks standard tels que PlotQA et ChartQA, le modèle MatCha surpasse les méthodes de pointe de près de 20 %. Nous examinons également dans quelle mesure le pré-entraînement MatCha se transfère à des domaines tels que les captures d’écran, les schémas de manuels scolaires et les figures de documents, et observons une amélioration globale, confirmant l’utilité du pré-entraînement MatCha pour des tâches de langage visuel plus larges.

Description du modèle

MatCha est un modèle entraîné à l’aide de l’architecture Pix2Struct. Vous trouverez plus d’informations sur Pix2Struct dans la documentation Pix2Struct. MatCha est un sous-ensemble de Question Answering visuel de l’architecture Pix2Struct. Il affiche la question d’entrée sur l’image et prédit la réponse.

Utilisation

Actuellement, 6 points de contrôle sont disponibles pour MatCha :

  • google/matcha : le modèle MatCha de base, utilisé pour l’ajustement fin de MatCha sur des tâches spécifiques
  • google/matcha-chartqa : modèle MatCha ajusté sur le jeu de données ChartQA. Il peut être utilisé pour répondre à des questions sur des graphiques.
  • google/matcha-plotqa-v1 : modèle MatCha ajusté sur le jeu de données PlotQA. Il peut être utilisé pour répondre à des questions sur des graphiques.
  • google/matcha-plotqa-v2 : modèle MatCha ajusté sur le jeu de données PlotQA. Il peut être utilisé pour répondre à des questions sur des graphiques.
  • google/matcha-chart2text-statista : modèle MatCha affiné sur le jeu de données Statista.
  • google/matcha-chart2text-pew : modèle MatCha affiné sur le jeu de données Pew.

Les modèles affinés sur chart2text-pew et chart2text-statista sont plus adaptés à la synthèse, tandis que les modèles affinés sur plotqa et chartqa sont plus adaptés au question-réponse.

Vous pouvez utiliser ces modèles comme suit (exemple sur un jeu de données 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))

Ajustement fin

Pour affiner MatCha, reportez-vous au notebook d’affinage de pix2struct. Pour les modèles Pix2Struct, nous avons constaté que l’affinage du modèle avec Adafactor et un planificateur de taux d’apprentissage cosinus conduit à une convergence plus rapide :

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 est un modèle entraîné à l'aide de l'architecture Pix2Struct. Vous trouverez plus d'informations sur Pix2Struct dans la documentation Pix2Struct.

Update on GitHub