Transformers documentation
DePlot
Эта модель была опубликована в HF papers 20.12.2022 и добавлена в Hugging Face Transformers 20.06.2023.
DePlot
Обзор
DePlot был предложен в статье DePlot: One-shot visual language reasoning by plot-to-table translation авторов Fangyu Liu, Julian Martin Eisenschlos, Francesco Piccinno, Syrine Krichene, Chenxi Pang, Kenton Lee, Mandar Joshi, Wenhu Chen, Nigel Collier, Yasemin Altun.
В аннотации к статье сказано следующее:
Визуальный язык, такой как диаграммы и графики, повсеместно присутствует в человеческом мире. Понимание графиков и диаграмм требует развитых навыков рассуждения. Предыдущие модели, демонстрирующие наилучшие результаты (SOTA), требуют как минимум десятков тысяч примеров для обучения, при этом их способности к рассуждению по-прежнему сильно ограничены, особенно в случае сложных запросов, написанных человеком. В данной статье представлена первое решение задачи рассуждения на визуальном языке в режиме one-shot. Мы разбиваем задачу рассуждения на визуальном языке на два этапа: (1) перевод графика в текст и (2) рассуждение на основе переведённого текста. Ключевым элементом данного метода является модуль преобразования модальности, названный DePlot, который переводит изображение графика или диаграммы в линейную таблицу. Выходные данные DePlot можно затем напрямую использовать для формирования промпта для предобученной большой языковой модели (LLM), используя возможности few-shot рассуждения LLM. Для получения DePlot мы стандартизируем задачу перевода графика в таблицу, установив единые форматы задач и метрики, и обучаем DePlot end-to-end на этой задаче. DePlot можно использовать «из коробки» вместе с LLM в режиме plug-and-play. По сравнению с SOTA-моделью, дообученной на более чем >28k точках данных, DePlot+LLM с one-shot промптингом обеспечивает улучшение на 24,0% по сравнению с дообученной SOTA-моделью на запросах, написанных человеком, в задаче chart QA.
DePlot — это модель, обученная на архитектуре Pix2Struct. Дополнительную информацию об архитектуре Pix2Struct можно найти в документации Pix2Struct.
DePlot представляет собой подмножество задачи визуального ответа на вопросы (Visual Question Answering) в рамках архитектуры Pix2Struct. Модель отображает входной вопрос на изображении и предсказывает ответ.
Пример использования
В настоящее время для DePlot доступен один контрольный пункт:
google/deplot: DePlot, дообученный на наборе данных 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))Доработка
Для дообучения DePlot обратитесь к ноутбуку по дообучению 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)Update on GitHubDePlot — это модель, обученная с использованием архитектуры
Pix2Struct. Справочник по API см. в документацииPix2Struct.