Transformers documentation

MatCha

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-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íficas
  • google/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)

MatCha é um modelo treinado usando a arquitetura Pix2Struct. Você pode encontrar mais informações sobre Pix2Struct na documentação do Pix2Struct.

Update on GitHub