Хотя в недавних методах понимания таблиц на основе LLM был достигнут большой прогресс, они в значительной степени полагаются на предпосылку, что данные таблицы должны быть преобразованы в определенную текстовую последовательность (например, Markdown или HTML), чтобы служить входными данными модели. Однако в некоторых реальных сценариях, таких как отсканированные документы и снимки экрана веб-страниц, трудно получить доступ к высококачественным текстовым представлениям таблиц, а изображения таблиц гораздо более доступны. Таким образом, как напрямую понимать таблицы, используя интуитивно понятную визуальную информацию, является важной и неотложной задачей для разработки более практических приложений.
Столкнувшись с вышеупомянутой проблемой, мы предлагаем задачу понимания мультимодальной таблицы, где модель должна генерировать правильные ответы на различные запросы, связанные с таблицей (например, вопросы), сквозным способом на основе изображения таблицы. Соответственно, мы создаем MMTab , первый крупномасштабный набор данных с открытым исходным кодом для проблемы понимания мультимодальных таблиц, который может поддерживать как обучение, так и оценку универсальных MLLM для понимания мультимодальных таблиц. На основе тщательно подобранного набора данных MMTab мы разрабатываем универсальный табличный MLLM под названием Table-LLaVA с расширенной парадигмой двухэтапного обучения LLaVA v1.5. Table-LLaVA превосходит базовые показатели MLLM по 17 удерживаемым и 6 удерживаемым тестам и даже конкурирует с мощным GPT-4V по 14 тестам в подмножестве тестовых образцов. На рисунке справа показано интуитивное сравнение таблицы LLaVA 7B и существующих MLLM по различным критериям понимания мультимодальных таблиц.
Мы построили MMTab на основе 14 общедоступных наборов табличных данных из 8 доменов. Мы тщательно разрабатываем сценарии для преобразования исходных текстовых таблиц в этих наборах данных в изображения таблиц, подчеркивая широкий охват структур и стилей таблиц, а также преобразуем все примеры для конкретных задач в мультимодальные образцы настройки инструкций с унифицированным форматом <table image, input request, output response>
. Полученный набор данных состоит из трех частей и может быть загружен из набора данных Hugging Face. Во время построения набора данных были приняты дополнения к данным на нескольких уровнях (например, на уровне таблицы, на уровне задач) для дальнейшего улучшения разнообразия данных.
Разделение набора данных | #Изображения стола | #Образцы |
---|---|---|
ММТаб-пре | 97К | 150 тысяч образцов распознавания таблиц для предварительного обучения |
MMTab-инструкция | 82К | 232 тыс. образцов 14 табличных задач для настройки инструкций. |
MMTab-eval | 23 тыс. | 45 000 образцов из 17 сохраненных тестов и 4 000 образцов из 7 сохраненных тестов для оценки |
Примеры наборов данных показаны на следующем рисунке, а дополнительные примеры показаны в Приложении A оригинальной статьи.
Таблица LLaVA соответствует архитектуре LLaVA v1.5, с CLIP-ViT-L-336px в качестве визуального кодировщика (разрешение изображения 336*336), Vicuna-v1.5-7B или Vicuna-v1.5-13B в качестве базового LLM и двухслойный MLP в качестве соединителя визуального языка. Сохраненные контрольные точки модели можно загрузить из следующего репозитория Hugging Face:
Версия | Размер | Расписание | База LLM | Видеокодер | Проекционный слой | Контрольно-пропускные пункты |
---|---|---|---|---|---|---|
Стол ЛЛаВА | 7Б | full_finetune-1_epoch | Викунья-v1.5-7B | CLIP-ViT-L-336px | МЛП-2х | SpursgoZmy/table-llava-v1.5-7b |
Стол ЛЛаВА | 13Б | full_finetune-1_epoch | Викунья-v1.5-13B | CLIP-ViT-L-336px | МЛП-2х | SpursgoZmy/table-llava-v1.5-13b |
pretrained_mm_projector стола LLaVA 7B | 5М | full_finetune-1_epoch | Викунья-v1.5-7B | CLIP-ViT-L-336px | МЛП-2х | SpursgoZmy/table-llava-v1.5-pretrained_mm_projector |
pretrained_mm_projector стола LLaVA 13B | 5М | full_finetune-1_epoch | Викунья-v1.5-13B | CLIP-ViT-L-336px | МЛП-2х | SpursgoZmy/table-llava-v1.5-pretrained_mm_projector |
Примечание. Вышеупомянутые контрольные точки Table-LLaVA сохраняются из исходного репозитория LLaVA, который не совместим напрямую с Transformers, т. е. его нельзя напрямую загрузить таким образом, как LlavaForConditionalGeneration.from_pretrained('SpursgoZmy/table-llava-v1.5-7b')
. Эта проблема упоминается в этом выпуске GitHub. Я попробую предоставленный скрипт преобразования, чтобы сделать контрольные точки Table-LLaVa совместимыми с Transformers, и загрузю новые контрольные точки в новый хаб. Но на данный момент, возможно, контрольные точки можно загружать только из репозитория LLaVA, а не напрямую из HuggingFace. Извините за неудобства!
Мы используем кодовую базу LLaVA v1.5 для обучения модели и вывода. Таким образом, Table LLaVA можно использовать как обычную модель LLaVA v1.5, а среду можно установить аналогичным образом. Обратите внимание, что наша база кода загружена в декабре 2023 года и, возможно, не самая последняя. Пожалуйста, обратитесь к официальному GitHub LLaVA v1.5 для получения последнего обновления.
git clone https://github.com/SpursGoZmy/Table-LLaVA.git
cd Table-LLaVA
conda create -n table_llava python=3.10 -y
conda activate table_llava
pip install --upgrade pip # enable PEP 660 support
pip install -e .
Обучение с использованием таблицы LLaVA состоит из двух этапов: (1) Этап предварительной подготовки: соединитель визуального языка (двухслойный MLP) обучается для подключения замороженного предварительно обученного видеокодера (ViT) к замороженному LLM (Vicuna v1.5). ; (2) Этап настройки инструкций: соединитель визуального языка и базовый LLM обучаются следовать мультимодальным инструкциям.
Данные обучения каждого этапа показаны ниже:
Этап обучения | Описание данных | Размер данных | Набор данных обнимающего лица |
---|---|---|---|
Предварительная подготовка | 558 тыс. исходных данных предварительного обучения LLaVA-1.5 | 558К | blip_laion_cc_sbu_558k.json |
150 тыс. данных распознавания таблиц (MMTab-pre) | 150 тыс. | MMTab-pre_pretrain_data_llava_format_150K.json | |
Инструкция Тонкая настройка | 665 тыс. исходных данных тонкой настройки LLaVA-1.5 | 665 тыс. | llava_v1_5_mix665k.json |
232 тыс. данных настройки мультимодальных инструкций для 14 табличных задач (MMTab-instruct) | 232К | MMTab-instruct_sft_data_llava_format_232K.json |
Объединенные данные предварительного обучения и точной настройки инструкций в формате данных LLaVA можно найти в наборе данных MMTab, т. е. enhanced_llava_pretrain_data_708K.json
и enhanced_llava_sft_data_898K.json
, которые можно непосредственно использовать для обучения таблицы LLaVA.
Таблица LLaVA обучалась на 8 графических процессорах A800 с памятью 80 ГБ. Мы используем тот же набор гиперпараметров, что и LLaVA v1.5, за исключением того, что мы увеличили максимальную длину последовательности с 2048 до 2560, чтобы разместить более длинные текстовые последовательности. Гиперпараметры, используемые при предварительном обучении и точной настройке, представлены ниже.
Этап | Тренированные веса | Глобальный размер пакета | Скорость обучения | Эпохи | Максимальная длина | Снижение веса | коэффициент прогрева | Этап глубокой скорости |
---|---|---|---|---|---|---|---|---|
Предварительная подготовка | соединитель визуального языка | 256 | 1е-3 | 1 | 2560 | 0 | 0,03 | ЗеРО-2 |
Инструкция Тонкая настройка | базовый LLM и разъем визуального языка | 128 | 2е-5 | 1 | 2048 | 0 | 0,03 | ЗеРО-3 |
images.zip
отсюда. Поместите его в ./LLaVA-Pretrain/images
и разархивируйте.MMTab-instruct_table_images_82K.zip
и MMTab-pre_table_images_part_2_16K.zip
из набора данных MMTab. Поместите их в ./LLaVA-Pretrain/images
и разархивируйте. Переименуйте каталог IID_train_image
в table_pretrain_part_1
.enhanced_llava_pretrain_data_708K.json
из набора данных MMTab в ./LLaVA-Pretrain
. LLaVA-Pretrain
├── images
│ ├── table_pretrain_part_1
| ├── table_pretrain_part_2
| ├── 00453
| ├── 00019
| ├── ...
| └── 00095
└── enhanced_llava_pretrain_data_708K.json
pretrain_table_llava.sh
. Если вы не можете автоматически загрузить базовую модель Vicuna v1.5 и ViT через HuggingFace, вы можете загрузить эти модели вручную и установить соответствующие параметры командной строки ( model_name_or_path
и vision_tower
) для путей к локальной модели. После завершения предварительного обучения обученный проектор языка видения будет сохранен в указанном output_dir
../LLaVA-Finetune/images
с именами coco
, gqa
, ocr_vqa
, textvqa
и vg
соответственно. Следуйте инструкциям здесь, чтобы загрузить изображения из этих 5 наборов данных для тонкой настройки LLaVA v1.5. Поместите zip-файлы в соответствующие папки и разархивируйте их.MMTab-instruct_table_images_82K.zip
из набора данных MMTab. Поместите его в ./LLaVA-Finetune/images/table_instructV
и разархивируйте. Переименуйте полученный каталог IID_train_image
в images
.enhanced_llava_sft_data_898K.json
из набора данных MMTab в ./LLaVA-Finetune
. LLaVA-Finetune
├── images
│ ├── coco
| | └── train2017
| ├── gqa
| | └── images
| ├── ocr_vqa
| | └── images
| ├── textvqa
| | └── train_images
| ├── vg
| | ├── VG_100K
| | └── VG_100K_2
| ├── table_instructV
| | └── images
└── enhanced_llava_sft_data_898K.json
continue_sft_table_llava.sh
. Установите для параметра pretrain_mm_mlp_adapter
путь к предварительно обученному проектору языка видения, например ./pretrained_mm_projector/llava-v1.5-7b-with-table-pretrain/mm_projector.bin
. Обученная модель таблицы llava будет сохранена в указанном output_dir
. Данные вывода должны храниться в формате JSONL LLaVA. Каждая строка во входном файле соответствует входному образцу, который представляет собой строку JSON (сгенерированную json.dumps()
) словаря Python. Образец формата должен выглядеть так:
{ "question_id" : "TSD_test_item_17" , # item_id
"image" : "TABMWP_24663.jpg" , # corresponding image file
"text" : "This image displays a table. Could you provide me ..." , # input text
"category" : "TABMWP_for_TSD" # {dataset_name}_for_{task_type}, which can be used to separate data of different benchmarks.
}
Для получения заключения по MMTab-eval загрузите 49 тысяч тестовых образцов MMTab-eval в формате jsonl (MMTab-eval_test_data_49K_llava_jsonl_format.jsonl) и файлы изображений (MMTab-eval_table_images_23K.zip). Затем создайте папку с именем «LLaVA-Inference» и организуйте данные следующим образом:
LLaVA-Inference
├── MMTab-eval_test_data_49K_llava_jsonl_format.jsonl
└── all_test_image
Вывод на нескольких графических процессорах: start_multicard_inference.sh
. Вы также можете сделать вывод на основе своих собственных данных. Не забудьте настроить такие параметры, как « question-file
» (путь к входному файлу), « image-folder
» (путь к папке с изображением) в table_llava_inference.sh
. Результаты вывода ( merge.jsonl
) будут храниться по пути к параметру answers-file
, например ./eval_results/answers/MMTab_eval/table-llava-v1.5-7b/merge.jsonl
.
При использовании официального сценария вывода формат результата вывода в merge.jsonl
должен выглядеть так:
{ 'question_id' : 'TABMWP_8' , # item_id
'prompt' : 'Problem: n Hannah baked cookies each day ...' , # input_prompt
'text' : 'Find the numbers in the table. n n Saturday: ...' , # model_output
'answer_id' : 'jELcxSPcXHBj3xvHfm5r8T' , # answer_id
'model_id' : 'table-llava-7b' , # model_id
'category' : 'TABMWP_for_TQA'
} # item category
Сценарии оценки хранятся в папке MMTab-eval_evaluation
. Сначала выполните cd MMTab-eval_evaluation
и pip install -r eval_requirements.txt
чтобы установить необходимые пакеты, такие как «Sacrebleu», для оценки. Для задачи распознавания таблиц мы используем для оценки сценарий вычисления TEDS PubTabNet. Затем загрузите тестовые данные MMTab-eval_eval_evaluation (MMTab-eval_test_data_49K.json) и тестовые таблицы (MMTab-eval_test_tables_23K.json) и поместите их в папку MMTab-eval_evaluation
вместе с результатом вывода LLaVA ( merge.jsonl
). Используйте блокнот MMTab_evaluation.ipynb для автоматической оценки.
Для оценки набора тестов ToTTo вам необходимо организовать выходные данные модели в текстовый файл и загрузить его в официальную таблицу лидеров ToTTo.
LlavaForConditionalGeneration.from_pretrained('SpursgoZmy/table-llava-v1.5-7b')
. Эта проблема упоминается в этом выпуске @misc { zheng2024multimodal ,
title = { Multimodal Table Understanding } ,
author = { Mingyu Zheng and Xinwei Feng and Qingyi Si and Qiaoqiao She and Zheng Lin and Wenbin Jiang and Weiping Wang } ,
year = { 2024 } ,
eprint = { 2406.08100 } ,
archivePrefix = { arXiv } ,
}
}