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

Este modelo foi publicado no HF papers em 2022-12-20 e contribuído para o Hugging Face Transformers em 2023-06-20.

DePlot

Visão geral

DePlot foi proposto no artigo 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.

O resumo do artigo afirma o seguinte:

Linguagens visuais, como gráficos e plots, são ubíquas no mundo humano. Compreender plots e gráficos exige fortes habilidades de raciocínio. Modelos state-of-the-art (SOTA) anteriores exigem pelo menos dezenas de milhares de exemplos de treinamento e suas capacidades de raciocínio ainda são muito limitadas, especialmente em consultas complexas escritas por humanos. Este artigo apresenta a primeira solução one-shot para raciocínio em linguagem visual. Decompondo o desafio do raciocínio em linguagem visual em duas etapas: (1) tradução de plot para texto, e (2) raciocínio sobre o texto traduzido. A chave deste método é um módulo de conversão de modalidade, chamado DePlot, que traduz a imagem de um plot ou gráfico para uma tabela linearizada. A saída do DePlot pode então ser usada diretamente para fazer prompt a um large language model (LLM) pré-treinado, explorando as capacidades de raciocínio few-shot dos LLMs. Para obter o DePlot, padronizamos a tarefa de plot para tabela estabelecendo formatos e métricas de tarefa unificados, e treinamos o DePlot end-to-end nesta tarefa. O DePlot pode então ser usado pronto para uso junto com LLMs de forma plug-and-play. Em comparação com um modelo SOTA finetuned em mais de >28k pontos de dados, o DePlot+LLM com apenas one-shot prompting alcança uma melhoria de 24,0% em relação ao SOTA finetuned em consultas escritas por humanos da tarefa de chart QA.

DePlot é um modelo treinado usando a arquitetura Pix2Struct. Você pode encontrar mais informações sobre Pix2Struct na documentação do Pix2Struct. DePlot é um subconjunto de Visual Question Answering da arquitetura Pix2Struct. Ele renderiza a pergunta de entrada na imagem e prevê a resposta.

Exemplo de uso

Atualmente, um checkpoint está disponível para DePlot:

  • google/deplot: DePlot ajustado no dataset 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))

Ajuste fino

Para fazer o ajuste fino do DePlot, consulte o notebook de ajuste fino do pix2struct. Para os modelos Pix2Struct, verificamos que o ajuste fino do modelo com Adafactor e agendador de taxa de aprendizado cossenoidal leva a uma convergência mais 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)

DePlot é um modelo treinado usando a arquitetura Pix2Struct. Para a referência da API, consulte a documentação do Pix2Struct.

Update on GitHub