Embora um grande progresso tenha sido feito pelos métodos recentes de compreensão de tabelas baseados em LLM, eles se baseiam fortemente na premissa de que determinadas tabelas devem ser convertidas em uma determinada sequência de texto (como Markdown ou HTML) para servir como entrada do modelo. No entanto, é difícil acessar representações de tabelas textuais de alta qualidade em alguns cenários do mundo real, como documentos digitalizados e capturas de tela de páginas da Web, e as imagens de tabelas são muito mais acessíveis. Portanto, compreender tabelas diretamente usando informações visuais intuitivas é um desafio crucial e urgente para o desenvolvimento de aplicações mais práticas.
Enfrentando o desafio acima, propomos o problema de compreensão de tabelas multimodais, onde o modelo é obrigado a gerar respostas corretas para diferentes solicitações relacionadas à tabela (por exemplo, perguntas) de ponta a ponta com base na imagem da tabela. Da mesma forma, construímos MMTab , o primeiro conjunto de dados de código aberto em grande escala para problemas de compreensão de tabelas multimodais, que pode apoiar tanto o treinamento quanto a avaliação de MLLMs generalistas para a compreensão de tabelas multimodais. Com base no conjunto de dados MMTab curado, desenvolvemos um MLLM tabular versátil denominado Table-LLaVA com um paradigma de treinamento aprimorado em dois estágios de LLaVA v1.5. O Table-LLaVA supera fortes linhas de base MLLM em 17 benchmarks mantidos e 6 benchmarks mantidos, e é ainda competitivo com o poderoso GPT-4V em 14 benchmarks em um subconjunto de amostras de teste. A figura à direita mostra uma comparação intuitiva da Tabela LLaVA 7B e MLLMs existentes em vários benchmarks de compreensão de tabelas multimodais.
Construímos o MMTab com base em 14 conjuntos de dados de tabelas disponíveis publicamente de 8 domínios. Projetamos scripts cuidadosamente para converter tabelas textuais originais nesses conjuntos de dados em imagens de tabela, destacando uma ampla cobertura de estruturas e estilos de tabela, e transformamos todas as amostras específicas de tarefas em amostras multimodais de ajuste de instrução com um formato unificado de Exemplos de conjuntos de dados são mostrados na figura a seguir e mais exemplos são mostrados no Apêndice A do artigo original. A tabela LLaVA segue a arquitetura LLaVA v1.5, com CLIP-ViT-L-336px como codificador visual (resolução de imagem 336*336), Vicuna-v1.5-7B ou Vicuna-v1.5-13B como LLM base e um MLP de duas camadas como conector da linguagem de visão. Os pontos de verificação do modelo salvos podem ser baixados do seguinte repositório Hugging Face: Nota: Os checkpoints Table-LLaVA acima são salvos do repositório LLaVA original, que não é diretamente compatível com os Transformers, ou seja, não pode ser carregado diretamente da forma como Usamos a base de código do LLaVA v1.5 para treinamento e inferência de modelo. Assim, o Table LLaVA pode ser utilizado como o modelo LLaVA v1.5 normal e o ambiente pode ser instalado de forma semelhante. Observe que nossa base de código foi baixada em dezembro de 2023 e talvez não seja a mais recente. Consulte o github oficial do LLaVA v1.5 para obter a atualização mais recente. O treinamento Table LLaVA consiste em dois estágios: (1) Estágio de pré-treinamento: o conector de linguagem de visão (um MLP de duas camadas) é treinado para conectar o codificador de visão pré-treinado congelado (ViT) ao LLM congelado (Vicuna v1.5) ; (2) Estágio de ajuste de instrução: o conector visão-linguagem e o LLM básico são treinados para seguir instruções multimodais. Os dados de treinamento de cada etapa são mostrados abaixo: Os dados mesclados de pré-treinamento e ajuste fino de instrução no formato de dados LLaVA podem ser encontrados no conjunto de dados MMTab, ou seja, A Tabela LLaVA foi treinada em 8 GPUs A800 com 80 GB de memória. Usamos um conjunto semelhante de hiperparâmetros como LLaVA v1.5, exceto que aumentamos o comprimento máximo da sequência de 2.048 para 2.560 para acomodar sequências de texto mais longas. Os hiperparâmetros usados no pré-treinamento e no ajuste fino são fornecidos abaixo. Os dados de inferência devem ser armazenados no formato jsonl do LLaVA. Cada linha no arquivo de entrada corresponde a uma amostra de entrada, que é uma string JSON (gerada por Para inferência no MMTab-eval, baixe as amostras de teste 49K MMTab-eval no formato jsonl (MMTab-eval_test_data_49K_llava_jsonl_format.jsonl) e seus arquivos de imagem (MMTab-eval_table_images_23K.zip). Em seguida, crie uma pasta chamada ‘LLaVA-Inference’ e organize os dados da seguinte forma: Inferência em multi-GPU: Com o script de inferência oficial, o formato do resultado da inferência em Os scripts de avaliação são armazenados na pasta Para a avaliação no conjunto de testes ToTTo, você precisa organizar a saída do modelo em um arquivo txt e carregá-lo no placar oficial do ToTTo. . O conjunto de dados resultante contém três partes e pode ser baixado do conjunto de dados Hugging Face. Durante a construção do conjunto de dados, foram adotados aumentos de dados em vários níveis (por exemplo, nível de tabela, nível de tarefa) para melhorar ainda mais a diversidade de dados.
Divisão do conjunto de dados #Imagens de mesa #amostras MMTab-pré 97K 150 mil amostras de reconhecimento de tabela para pré-treinamento Instrução MMTab 82K 232 mil amostras de 14 tarefas baseadas em tabela para ajuste de instruções Avaliação MMTab 23K 45 mil amostras de 17 benchmarks mantidos e 4K amostras de 7 benchmarks mantidos para avaliação 3. Pesos do modelo
Versão Tamanho Agendar Base LLM Codificador de visão Camada de projeção Pontos de verificação Tabela LLaVA 7B full_finetune-1_época Vicuna-v1.5-7B CLIP-ViT-L-336px MLP-2x SpursgoZmy/table-llava-v1.5-7b Tabela LLaVA 13B full_finetune-1_época Vicuna-v1.5-13B CLIP-ViT-L-336px MLP-2x SpursgoZmy/table-llava-v1.5-13b pretrained_mm_projector da Tabela LLaVA 7B 5 milhões full_finetune-1_época Vicuna-v1.5-7B CLIP-ViT-L-336px MLP-2x SpursgoZmy/table-llava-v1.5-pretrained_mm_projector pretrained_mm_projector da Tabela LLaVA 13B 5 milhões full_finetune-1_época Vicuna-v1.5-13B CLIP-ViT-L-336px MLP-2x SpursgoZmy/table-llava-v1.5-pretrained_mm_projector LlavaForConditionalGeneration.from_pretrained('SpursgoZmy/table-llava-v1.5-7b')
. Este problema é mencionado nesta edição do github. Tentarei o script de conversão fornecido para tornar os pontos de verificação do Table-LLaVa compatíveis com os Transformers e fazer upload de novos pontos de verificação para um novo hub. Mas, por enquanto, talvez os pontos de verificação só possam ser carregados com o repositório LLaVA desta forma, em vez de serem carregados diretamente do HuggingFace. Desculpe por esse inconveniente! 4. Treinamento
4.1 Configuração do ambiente
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 Dados de treinamento e hiperparâmetros
Estágio de treinamento Descrição dos dados Tamanho dos dados Abraçando conjunto de dados de rosto Pré-treino Dados de pré-treinamento LLaVA-1.5 originais de 558K 558K blip_laion_cc_sbu_558k.json Dados de reconhecimento de tabela de 150 mil (MMTab-pre) 150 mil MMTab-pre_pretrain_data_llava_format_150K.json Ajuste fino de instruções Dados de ajuste fino LLaVA-1.5 originais de 665K 665 mil llava_v1_5_mix665k.json Dados de ajuste de instruções multimodais de 232K de 14 tarefas tabulares (MMTab-instruct) 232 mil MMTab-instruct_sft_data_llava_format_232K.json enhanced_llava_pretrain_data_708K.json
e enhanced_llava_sft_data_898K.json
, que pode ser usado diretamente para treinar a Tabela LLaVA. Estágio Pesos Treinados Tamanho global do lote Taxa de aprendizagem Épocas Comprimento máximo Decadência de peso taxa de aquecimento Estágio de velocidade profunda Pré-treino conector de linguagem de visão 256 1e-3 1 2560 0 0,03 ZeRO-2 Ajuste fino de instruções base LLM e conector de linguagem de visão 128 2e-5 1 2048 0 0,03 ZeRO-3 4.3 Pré-treinamento
images.zip
aqui. Coloque-o em ./LLaVA-Pretrain/images
e descompacte-o.MMTab-instruct_table_images_82K.zip
e MMTab-pre_table_images_part_2_16K.zip
do conjunto de dados MMTab. Coloque-os em ./LLaVA-Pretrain/images
e descompacte-os. Renomeie o diretório IID_train_image
para table_pretrain_part_1
.enhanced_llava_pretrain_data_708K.json
do conjunto de dados MMTab para ./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
. Se você não puder fazer download automaticamente do modelo base Vicuna v1.5 e ViT por meio do HuggingFace, poderá fazer download desses modelos manualmente e definir os parâmetros de linha de comando correspondentes ( model_name_or_path
e vision_tower
) para os caminhos do modelo local. Assim que o pré-treinamento for concluído, o projetor de linguagem visual treinado será salvo no output_dir
especificado. 4.4 Ajuste fino
./LLaVA-Finetune/images
cujos nomes são coco
, gqa
, ocr_vqa
, textvqa
e vg
, respectivamente. Siga as instruções aqui para baixar imagens desses 5 conjuntos de dados para ajuste fino do LLaVA v1.5. Coloque os arquivos zip nas pastas correspondentes e descompacte-os.MMTab-instruct_table_images_82K.zip
do conjunto de dados MMTab. Coloque-o em ./LLaVA-Finetune/images/table_instructV
e descompacte-o. Renomeie o diretório IID_train_image
resultante para images
.enhanced_llava_sft_data_898K.json
do conjunto de dados MMTab para ./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
. Defina o parâmetro pretrain_mm_mlp_adapter
para o caminho do seu projetor de linguagem de visão pré-treinado, como ./pretrained_mm_projector/llava-v1.5-7b-with-table-pretrain/mm_projector.bin
. O modelo llava da tabela treinado será salvo no output_dir
especificado. 5. Inferência
json.dumps()
) de um ditado Python. O formato de amostra deve ser semelhante a: { "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
. Você também pode inferir seus próprios dados. Lembre-se de ajustar parâmetros como ' question-file
' (caminho do arquivo de entrada), ' image-folder
' (caminho da pasta de imagens) em table_llava_inference.sh
. Os resultados da inferência ( merge.jsonl
) serão armazenados no caminho do parâmetro ' answers-file
', por exemplo, ./eval_results/answers/MMTab_eval/table-llava-v1.5-7b/merge.jsonl
.merge.jsonl
deve ser semelhante a: { '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. Avaliação
MMTab-eval_evaluation
. Primeiro, cd MMTab-eval_evaluation
e pip install -r eval_requirements.txt
para instalar os pacotes necessários como 'Sacrebleu' para avaliação. Para tarefa de reconhecimento de tabela, usamos o script de cálculo TEDS do PubTabNet para avaliação. Em seguida, baixe os dados de teste MMTab-eval (MMTab-eval_test_data_49K.json) e as tabelas de teste (MMTab-eval_test_tables_23K.json) e coloque-os na pasta MMTab-eval_evaluation
junto com o resultado de inferência do LLaVA ( merge.jsonl
). Use o notebook MMTab_evaluation.ipynb para avaliação automática. 7. Limitações e direções futuras
TODOs
LlavaForConditionalGeneration.from_pretrained('SpursgoZmy/table-llava-v1.5-7b')
. Este problema é mencionado nesta edição Citação
@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 } ,
}
}