尽管最近基于LLM的表格理解方法取得了很大进展,但它们严重依赖于给定表格必须转换为某种文本序列(例如Markdown或HTML)作为模型输入的前提。然而,在某些现实场景(例如扫描文档和网页屏幕截图)中很难访问高质量的文本表格表示,而表格图像更容易访问。因此,如何利用直观的视觉信息直接理解表格是开发更多实际应用的关键而紧迫的挑战。
面对上述挑战,我们提出了多模式表格理解问题,其中模型需要基于表格图像以端到端的方式对不同的表格相关请求(例如问题)生成正确的响应。相应地,我们构建了MMTab ,这是第一个用于多模态表理解问题的开源大规模数据集,它可以支持多模态表理解的通用 MLLM 的训练和评估。基于精心策划的 MMTab 数据集,我们开发了一种名为Table-LLaVA的多功能表格 MLLM,具有 LLaVA v1.5 的增强型两阶段训练范例。 Table-LLaVA 在 17 个保留基准和 6 个保留基准上击败了强大的 MLLM 基线,甚至在测试样本子集下的 14 个基准上与强大的 GPT-4V 竞争。右图显示了 Table LLaVA 7B 和现有 MLLM 在各种多模式表理解基准上的直观比较。
我们基于 8 个领域的 14 个公开可用的表数据集构建了 MMTab。我们精心设计脚本,将这些数据集中的原始文本表格转换为表格图像,突出显示表格结构和样式的广泛覆盖,并将所有特定于任务的样本转换为具有统一格式的多模态指令调整样本 数据集示例如下图所示,更多示例参见原论文附录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 年 12 月下载的,可能不是最新的。最新更新请参考LLaVA v1.5官方github。 表LLaVA训练由两个阶段组成:(1)预训练阶段:视觉语言连接器(两层MLP)被训练以将冻结的预训练视觉编码器(ViT)连接到冻结的LLM(Vicuna v1.5) ; (2) 指令调整阶段:视觉语言连接器和基础 LLM 接受训练以遵循多模式指令。 各阶段的训练数据如下所示: LLaVA数据格式的合并预训练和指令微调数据可以在MMTab数据集中找到,即 表 LLaVA 在 8 个具有 80GB 内存的 A800 GPU 上进行训练。我们使用与 LLaVA v1.5 类似的一组超参数,不同之处在于我们将最大序列长度从 2048 增加到 2560 以适应更长的文本序列。下面提供了预训练和微调中使用的超参数。 推理数据应以 LLaVA 的 jsonl 格式存储。输入文件中的每一行对应一个输入样本,它是 Python 字典的 JSON 字符串(由 要对 MMTab-eval 进行推理,请下载 jsonl 格式的 49K MMTab-eval 测试样本 (MMTab-eval_test_data_49K_llava_jsonl_format.jsonl) 及其图像文件 (MMTab-eval_table_images_23K.zip)。然后创建一个名为“LLaVA-Inference”的文件夹并按如下方式组织数据: 多 GPU 推理: 使用官方推理脚本, 评估脚本存储在 对于ToTTo测试集的评估,需要将模型输出整理成txt文件并上传到官方ToTTo排行榜。 .生成的数据集包含三个部分,可以从 Hugging Face 数据集下载。在数据集构建过程中,采用了多个级别(例如表级、任务级)的数据增强,以进一步提高数据多样性。
数据集分割 #表格图像 #样品 MMTab-pre 97K 150K表识别样本进行预训练 MMTab-指令 82K 14 个基于表格的任务的 232K 样本用于指令调优 MMT表评估 23K 17 个保留基准的 45K 样本和 7 个保留基准的 4K 样本进行评估 3. 模型权重
版本 尺寸 日程 基础法学硕士 视觉编码器 投影层 检查站 表 LLaVA 7B full_finetune-1_epoch 骆驼毛-v1.5-7B 剪辑-ViT-L-336px MLP-2x SpursgoZmy/table-llava-v1.5-7b 表 LLaVA 13B full_finetune-1_epoch 骆驼毛-v1.5-13B 剪辑-ViT-L-336px MLP-2x SpursgoZmy/table-llava-v1.5-13b 表 LLaVA 7B 的 pretrained_mm_projector 5M full_finetune-1_epoch 骆驼毛-v1.5-7B 剪辑-ViT-L-336px MLP-2x SpursgoZmy/table-llava-v1.5-pretrained_mm_projector 表 LLaVA 13B 的 pretrained_mm_projector 5M full_finetune-1_epoch 骆驼毛-v1.5-13B 剪辑-ViT-L-336px MLP-2x 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 训练数据和超参数
训练阶段 数据说明 数据大小 拥抱人脸数据集 预训练 558K 原始LLaVA-1.5预训练数据 558K blip_laion_cc_sbu_558k.json 150K表格识别数据(MMTab-pre) 15万 MMTab-pre_pretrain_data_llava_format_150K.json 指令微调 665K原始LLaVA-1.5微调数据 665K llava_v1_5_mix665k.json 14个表格任务的232K多模态指令调优数据(MMTab-instruct) 232K MMTab-instruct_sft_data_llava_format_232K.json enhanced_llava_pretrain_data_708K.json
和enhanced_llava_sft_data_898K.json
,可以直接用于训练Table LLaVA。阶段 训练重量 全局批量大小 学习率 纪元 最大长度 重量衰减 预热比率 深速阶段 预训练 视觉语言连接器 256 1e-3 1 2560 0 0.03 泽罗-2 指令微调 基础法学硕士和视觉语言连接器 128 2e-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
。将它们放在./LLaVA-Pretrain/images
下并解压缩。将IID_train_image
目录重命名为table_pretrain_part_1
。enhanced_llava_pretrain_data_708K.json
到./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
。如果您无法通过 HuggingFace 自动下载 Vicuna v1.5 和 ViT 基础模型,您可以手动下载这些模型,并将相应的命令行参数( model_name_or_path
和vision_tower
)设置到本地模型路径。预训练完成后,训练好的视觉语言投影仪将保存在指定的output_dir
中。 4.4 微调
./LLaVA-Finetune/images
下创建 5 个新文件夹,名称分别为coco
、 gqa
、 ocr_vqa
、 textvqa
和vg
。按照此处的说明从这 5 个数据集下载图像以进行 LLaVA v1.5 微调。将zip文件放入相应的文件夹中并解压。MMTab-instruct_table_images_82K.zip
。将其放在./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()
生成)。示例格式应如下所示: { "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
。您还可以根据自己的数据进行推断。请记住调整table_llava_inference.sh
中的“ question-file
”(输入文件路径)、“ image-folder
”(图像文件夹路径)等参数。推理结果( 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”以进行评估。对于表格识别任务,我们使用 PubTabNet 的 TEDS 计算脚本进行评估。然后,下载 MMTab-eval 测试数据 (MMTab-eval_test_data_49K.json) 和测试表 (MMTab-eval_test_tables_23K.json),并将它们与 LLaVA 的推理结果 ( merge.jsonl
) 一起放入MMTab-eval_evaluation
文件夹中。使用 MMTab_evaluation.ipynb 笔记本进行自动评估。 7. 局限性和未来方向
待办事项
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 } ,
}
}