Transformers documentation
MatCha
Este modelo foi publicado no HF papers em 2022-12-19 e contribuído para o Hugging Face Transformers em 2023-06-20.
MatCha
Visão geral
MatCha foi proposto no artigo 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.
O resumo do artigo afirma o seguinte:
Dados de linguagem visual, como gráficos, tabelas e infográficos, são ubíquos no mundo humano. No entanto, os modelos de visão-linguagem de última geração não apresentam bom desempenho nesses dados. Propomos o MatCha (pré-treinamento de raciocínio matemático e re-renderização de gráficos) para aprimorar as capacidades dos modelos de linguagem visual na modelagem conjunta de gráficos/tabelas e dados de linguagem. Especificamente, propomos várias tarefas de pré-treinamento que cobrem a desconstrução de gráficos e o raciocínio numérico, que são as capacidades-chave na modelagem de linguagem visual. Executamos o pré-treinamento MatCha a partir do Pix2Struct, um modelo de linguagem visual de imagem-para-texto proposto recentemente. Em benchmarks padrão, como PlotQA e ChartQA, o modelo MatCha supera os métodos de última geração em até quase 20%. Também examinamos quão bem o pré-treinamento MatCha se transfere para domínios como capturas de tela, diagramas de livros didáticos e figuras de documentos, e observamos uma melhoria geral, verificando a utilidade do pré-treinamento MatCha em tarefas de linguagem visual mais amplas.
Descrição do modelo
MatCha é um modelo treinado usando a arquitetura Pix2Struct. Você pode encontrar mais informações sobre Pix2Struct na documentação do Pix2Struct.
MatCha é um subconjunto de Visual Question Answering da arquitetura Pix2Struct. Ele renderiza a pergunta de entrada na imagem e prevê a resposta.
Uso
Atualmente, 6 checkpoints estão disponíveis para MatCha:
google/matcha: o modelo base MatCha, usado para ajustar o MatCha em tarefas específicasgoogle/matcha-chartqa: modelo MatCha ajustado no conjunto de dados ChartQA. Pode ser usado para responder perguntas sobre gráficos.google/matcha-plotqa-v1: Modelo MatCha ajustado no conjunto de dados PlotQA. Pode ser usado para responder perguntas sobre gráficos.google/matcha-plotqa-v2: Modelo MatCha ajustado no conjunto de dados PlotQA. Pode ser usado para responder perguntas sobre gráficos.google/matcha-chart2text-statista: Modelo MatCha ajustado no conjunto de dados Statista.google/matcha-chart2text-pew: Modelo MatCha ajustado no conjunto de dados Pew.
Os modelos ajustados em chart2text-pew e chart2text-statista são mais adequados para sumarização, enquanto os modelos ajustados em plotqa e chartqa são mais adequados para resposta a perguntas.
Você pode usar esses modelos da seguinte forma (exemplo em um conjunto de dados 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))Ajuste fino
Para fazer o ajuste fino do MatCha, 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 GitHubMatCha é um modelo treinado usando a arquitetura
Pix2Struct. Você pode encontrar mais informações sobrePix2Structna documentação do Pix2Struct.