Transformers documentation
MatCha
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écifiquesgoogle/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)Update on GitHubMatCha est un modèle entraîné à l'aide de l'architecture
Pix2Struct. Vous trouverez plus d'informations surPix2Structdans la documentation Pix2Struct.