Transformers documentation
DePlot
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)Update on GitHubDePlot é um modelo treinado usando a arquitetura
Pix2Struct. Para a referência da API, consulte a documentação doPix2Struct.