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

Эта модель была опубликована в HF papers 19.12.2022 и добавлена в Hugging Face Transformers 20.06.2023.

MatCha

Обзор

MatCha была предложена в статье MatCha: Enhancing Visual Language Pretraining with Math Reasoning and Chart Derendering, авторами которой являются Fangyu Liu, Francesco Piccinno, Syrine Krichene, Chenxi Pang, Kenton Lee, Mandar Joshi, Yasemin Altun, Nigel Collier, Julian Martin Eisenschlos.

В аннотации к статье сказано следующее:

Визуально-языковые данные, такие как графики, диаграммы и инфографики, повсеместно присутствуют в человеческом мире. Однако передовые модели, работающие с изображениями и текстом, демонстрируют неудовлетворительные результаты на таких данных. Мы предлагаем MatCha (предварительное обучение для математического рассуждения и обратного рендеринга диаграмм) для повышения возможностей визуально-языковых моделей в совместном моделировании данных диаграмм/графиков и текста. В частности, мы предлагаем несколько задач предварительного обучения, охватывающих декомпозицию графиков и числовое рассуждение, которые являются ключевыми способностями в визуально-языковом моделировании. Мы выполняем предварительное обучение MatCha, начиная с Pix2Struct — недавно предложенной визуально-языковой модели, преобразующей изображения в текст. На стандартных бенчмарках, таких как PlotQA и ChartQA, модель MatCha превосходит передовые методы почти на 20%. Мы также исследуем, насколько хорошо предварительное обучение MatCha переносится на такие области, как скриншоты, схемы из учебников и иллюстрации в документах, и наблюдаем общее улучшение, что подтверждает полезность предварительного обучения MatCha для более широкого круга визуально-языковых задач.

Описание модели

MatCha — это модель, обученная на архитектуре Pix2Struct. Дополнительную информацию об архитектуре Pix2Struct можно найти в документации Pix2Struct. MatCha представляет собой подмножество задачи визуального ответа на вопросы (Visual Question Answering) в рамках архитектуры Pix2Struct. Модель отображает входной вопрос на изображении и предсказывает ответ.

Использование

В настоящее время для MatCha доступно 6 контрольных точек:

  • google/matcha: базовая модель MatCha, используемая для дообучения MatCha на задачах целевого применения
  • google/matcha-chartqa: модель MatCha, дообученная на наборе данных ChartQA. Может использоваться для ответов на вопросы по диаграммам.
  • google/matcha-plotqa-v1: модель MatCha, дообученная на наборе данных PlotQA. Может использоваться для ответов на вопросы по графикам.
  • google/matcha-plotqa-v2: модель MatCha, дообученная на наборе данных PlotQA. Может использоваться для ответов на вопросы по графикам.
  • google/matcha-chart2text-statista: модель MatCha, дообученная на наборе данных Statista.
  • google/matcha-chart2text-pew: модель MatCha, дообученная на наборе данных Pew.

Модели, дообученные на chart2text-pew и chart2text-statista, лучше подходят для суммаризации, тогда как модели, дообученные на plotqa и chartqa, лучше подходят для ответов на вопросы.

Вы можете использовать эти модели следующим образом (пример на наборе данных 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))

Доработка

Для дообучения MatCha обратитесь к ноутбуку по дообучению pix2struct. Для моделей Pix2Struct мы выяснили, что дообучение модели с использованием Adafactor и косинусного планировщика скорости обучения приводит к более быстрой сходимости:

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 — это модель, обученная на архитектуре Pix2Struct. Дополнительную информацию об архитектуре Pix2Struct можно найти в документации Pix2Struct.

Update on GitHub