Хотя в недавних методах понимания таблиц на основе 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 доменов. Мы тщательно разрабатываем сценарии для преобразования исходных текстовых таблиц в этих наборах данных в изображения таблиц, подчеркивая широкий охват структур и стилей таблиц, а также преобразуем все образцы для конкретных задач в мультимодальные образцы настройки инструкций с унифицированным форматом Примеры наборов данных показаны на следующем рисунке, а дополнительные примеры показаны в Приложении A оригинальной статьи. Таблица LLaVA соответствует архитектуре LLaVA v1.5, с CLIP-ViT-L-336px в качестве визуального кодировщика (разрешение изображения 336*336), Vicuna-v1.5-7B или Vicuna-v1.5-13B в качестве базового LLM и двухслойный MLP в качестве соединителя визуального языка. Сохраненные контрольные точки модели можно загрузить из следующего репозитория Hugging Face: Примечание. Вышеуказанные контрольные точки Table-LLaVA сохраняются из исходного репозитория LLaVA, который не совместим напрямую с Transformers, т. е. его нельзя напрямую загрузить таким образом, как Мы используем кодовую базу LLaVA v1.5 для обучения модели и вывода. Таким образом, Table LLaVA можно использовать как обычную модель LLaVA v1.5, а среду можно установить аналогичным образом. Обратите внимание, что наша база кода загружена в декабре 2023 года и, возможно, не самая последняя. Пожалуйста, обратитесь к официальному GitHub LLaVA v1.5 для получения последнего обновления. Обучение с использованием таблицы LLaVA состоит из двух этапов: (1) Этап предварительной подготовки: соединитель визуального языка (двухслойный MLP) обучается для подключения замороженного предварительно обученного видеокодера (ViT) к замороженному LLM (Vicuna v1.5). ; (2) Этап настройки инструкций: соединитель визуального языка и базовый LLM обучаются следовать мультимодальным инструкциям. Данные обучения каждого этапа показаны ниже: Объединенные данные предварительного обучения и точной настройки инструкций в формате данных LLaVA можно найти в наборе данных MMTab, т. е. Таблица LLaVA обучалась на 8 графических процессорах A800 с памятью 80 ГБ. Мы используем тот же набор гиперпараметров, что и LLaVA v1.5, за исключением того, что мы увеличили максимальную длину последовательности с 2048 до 2560, чтобы разместить более длинные текстовые последовательности. Гиперпараметры, используемые при предварительном обучении и точной настройке, представлены ниже. Данные вывода должны храниться в формате JSONL LLaVA. Каждая строка во входном файле соответствует входному образцу, который представляет собой строку JSON (сгенерированную Для получения заключения по MMTab-eval загрузите 49 тысяч тестовых образцов MMTab-eval в формате jsonl (MMTab-eval_test_data_49K_llava_jsonl_format.jsonl) и файлы изображений (MMTab-eval_table_images_23K.zip). Затем создайте папку с именем «LLaVA-Inference» и организуйте данные следующим образом: Вывод на нескольких графических процессорах: При использовании официального сценария вывода формат результата вывода в Сценарии оценки хранятся в папке Для оценки набора тестов ToTTo вам необходимо организовать выходные данные модели в текстовый файл и загрузить его в официальную таблицу лидеров ToTTo. . Полученный набор данных состоит из трех частей и может быть загружен из набора данных Hugging Face. Во время построения набора данных были приняты дополнения к данным на нескольких уровнях (например, на уровне таблицы, на уровне задач) для дальнейшего улучшения разнообразия данных.
Разделение набора данных #Изображения стола #Образцы ММТаб-пре 97К 150 тысяч образцов распознавания таблиц для предварительного обучения MMTab-инструкция 82К 232 тыс. образцов 14 табличных задач для настройки инструкций. MMTab-eval 23 тыс. 45 000 образцов из 17 сохраненных тестов и 4 000 образцов из 7 сохраненных тестов для оценки 3. Вес модели
Версия Размер Расписание База 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 LlavaForConditionalGeneration.from_pretrained('SpursgoZmy/table-llava-v1.5-7b')
. Эта проблема упоминается в этом выпуске GitHub. Я попробую предоставленный скрипт преобразования, чтобы сделать контрольные точки Table-LLaVa совместимыми с Transformers, и загрузю новые контрольные точки в новый хаб. Но на данный момент, возможно, контрольные точки можно загружать только из репозитория LLaVA, а не напрямую из HuggingFace. Извините за неудобства! 4. Обучение
4.1 Настройка среды
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 .
4.2 Обучающие данные и гиперпараметры
Этап обучения Описание данных Размер данных Набор данных «Обнимающее лицо» Предварительная подготовка 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 enhanced_llava_pretrain_data_708K.json
и enhanced_llava_sft_data_898K.json
, которые можно непосредственно использовать для обучения таблицы LLaVA. Этап Тренированные веса Глобальный размер пакета Скорость обучения Эпохи Максимальная длина Снижение веса коэффициент прогрева Этап глубокой скорости Предварительная подготовка соединитель визуального языка 256 1е-3 1 2560 0 0,03 ЗеРО-2 Инструкция Тонкая настройка базовый LLM и разъем визуального языка 128 2е-5 1 2048 0 0,03 ЗеРО-3 4.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
. 4.4 Точная настройка
./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
. 5. Вывод
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.
}
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
6. Оценка
MMTab-eval_evaluation
. Сначала выполните cd MMTab-eval_evaluation
и pip install -r eval_requirements.txt
чтобы установить необходимые пакеты, такие как «Sacrebleu», для оценки. Для задачи распознавания таблиц мы используем для оценки сценарий вычисления TEDS PubTabNet. Затем загрузите тестовые данные MMTab-eval_eval_ (MMTab-eval_test_data_49K.json) и тестовые таблицы (MMTab-eval_test_tables_23K.json) и поместите их в папку MMTab-eval_evaluation
вместе с результатом вывода LLaVA ( merge.jsonl
). Используйте блокнот MMTab_evaluation.ipynb для автоматической оценки. 7. Ограничения и будущие направления
TODO
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 } ,
}
}