Transformers documentation

DePlot

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-20 et contribué à Hugging Face Transformers le 2023-06-20.

DePlot

Aperçu

DePlot a été proposé dans l’article DePlot: One-shot visual language reasoning by plot-to-table translation de Fangyu Liu, Julian Martin Eisenschlos, Francesco Piccinno, Syrine Krichene, Chenxi Pang, Kenton Lee, Mandar Joshi, Wenhu Chen, Nigel Collier, Yasemin Altun.

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

Le langage visuel, tel que les graphiques et les diagrammes, est omniprésent dans le monde humain. La compréhension des graphiques et des diagrammes nécessite de solides compétences en raisonnement. Les modèles d'état de l'art (SOTA) antérieurs nécessitent au moins des dizaines de milliers d'exemples d'entraînement et leurs capacités de raisonnement restent très limitées, en particulier sur des requêtes complexes rédigées par des humains. Cet article présente la première solution one-shot pour le raisonnement en langage visuel. Nous décomposons le défi du raisonnement en langage visuel en deux étapes : (1) la traduction de graphique en texte, et (2) le raisonnement sur le texte traduit. La clé de cette méthode est un module de conversion de modalité, nommé DePlot, qui traduit l'image d'un graphique ou d'un diagramme en un tableau linéarisé. La sortie de DePlot peut ensuite être utilisée directement pour interroger un grand modèle de langage (LLM) pré-entraîné, en exploitant les capacités de raisonnement few-shot des LLM. Pour obtenir DePlot, nous standardisons la tâche de conversion de graphique en tableau en établissant des formats de tâche et des métriques unifiés, et nous entraînons DePlot de bout en bout sur cette tâche. DePlot peut ensuite être utilisé tel quel avec des LLM de manière plug-and-play. Par rapport à un modèle SOTA affiné sur plus de >28k points de données, DePlot+LLM avec un simple prompting one-shot atteint une amélioration de 24,0 % par rapport au SOTA affiné sur les requêtes rédigées par des humains de la tâche de chart QA.

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

Exemple d'utilisation

Un point de contrôle est actuellement disponible pour DePlot :

  • google/deplot : DePlot fine-tuné sur le jeu de données ChartQA
import requests
from PIL import Image

from transformers import AutoProcessor, Pix2StructForConditionalGeneration


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

inputs = processor(images=image, text="Generate underlying data table of the figure below:", return_tensors="pt").to(model.device)
predictions = model.generate(**inputs, max_new_tokens=512)
print(processor.decode(predictions[0], skip_special_tokens=True))

Ajustement fin

Pour affiner DePlot, 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)

DePlot est un modèle entraîné à l'aide de l'architecture Pix2Struct. Pour la référence de l'API, consultez la documentation de Pix2Struct.

Update on GitHub