Bien que de grands progrès aient été réalisés grâce aux récentes méthodes de compréhension des tableaux basées sur LLM, elles reposent fortement sur le principe selon lequel les tableaux donnés doivent être convertis en une certaine séquence de texte (telle que Markdown ou HTML) pour servir d'entrée de modèle. Cependant, il est difficile d'accéder à des représentations textuelles de tableaux de haute qualité dans certains scénarios du monde réel, comme les documents numérisés et les captures d'écran de pages Web, et les images de tableaux sont beaucoup plus accessibles. Par conséquent, comprendre directement les tableaux à l’aide d’informations visuelles intuitives constitue un défi crucial et urgent pour développer des applications plus pratiques.
Face au défi ci-dessus, nous proposons le problème de compréhension de table multimodale, où le modèle doit générer des réponses correctes à différentes requêtes liées à la table (par exemple, des questions) de bout en bout, basées sur l'image de la table. En conséquence, nous construisons MMTab , le premier ensemble de données open source à grande échelle pour les problèmes de compréhension de tables multimodales, qui peut prendre en charge à la fois la formation et l'évaluation de MLLM généralistes vers la compréhension de tables multimodales. Sur la base de l'ensemble de données MMTab organisé, nous développons un MLLM tabulaire polyvalent nommé Table-LLaVA avec un paradigme de formation amélioré en deux étapes de LLaVA v1.5. Table-LLaVA bat les bases de référence MLLM solides sur 17 benchmarks retenus et 6 benchmarks retenus, et est même compétitif avec le puissant GPT-4V sur 14 benchmarks sous un sous-ensemble d'échantillons de test. La figure de droite montre une comparaison intuitive de la table LLaVA 7B et des MLLM existants sur divers benchmarks de compréhension de tables multimodales.
Nous avons construit MMTab sur la base de 14 ensembles de données de tableaux accessibles au public de 8 domaines. Nous concevons soigneusement des scripts pour convertir les tableaux textuels originaux de ces ensembles de données en images de tableau mettant en évidence une large couverture de structures et de styles de tableau, et transformons tous les échantillons spécifiques à une tâche en échantillons de réglage d'instructions multimodaux avec un format unifié de Des exemples d'ensembles de données sont présentés dans la figure suivante et d'autres exemples sont présentés dans l'annexe A du document original. Le tableau LLaVA suit l'architecture LLaVA v1.5, avec CLIP-ViT-L-336px comme encodeur visuel (résolution d'image 336*336), Vicuna-v1.5-7B ou Vicuna-v1.5-13B comme LLM de base et un MLP à deux couches comme connecteur vision-langage. Les points de contrôle du modèle enregistrés peuvent être téléchargés à partir du référentiel Hugging Face suivant : Remarque : Les points de contrôle Table-LLaVA ci-dessus sont enregistrés à partir du référentiel LLaVA d'origine, qui n'est pas directement compatible avec les Transformers, c'est-à-dire qu'ils ne peuvent pas être directement chargés de la même manière que Nous utilisons la base de code de LLaVA v1.5 pour la formation et l'inférence de modèles. Ainsi, la table LLaVA peut être utilisée comme le modèle LLaVA v1.5 normal et l'environnement peut être installé de la même manière. Notez que notre base de code est téléchargée en décembre 2023 et peut-être pas au plus tard. Veuillez vous référer au github officiel de LLaVA v1.5 pour sa dernière mise à jour. La formation Tableau LLaVA se compose de deux étapes : (1) Étape de pré-formation : le connecteur vision-langage (un MLP à deux couches) est formé pour connecter l'encodeur de vision pré-entraîné gelé (ViT) au LLM gelé (Vicuna v1.5) ; (2) Étape de réglage des instructions : le connecteur vision-langage et le LLM de base sont formés pour suivre les instructions multimodales. Les données d'entraînement de chaque étape sont présentées ci-dessous : Les données fusionnées de pré-entraînement et de réglage fin des instructions au format de données LLaVA peuvent être trouvées dans l'ensemble de données MMTab, c'est-à-dire La table LLaVA a été formée sur 8 GPU A800 avec 80 Go de mémoire. Nous utilisons un ensemble d'hyperparamètres similaire à celui de LLaVA v1.5, sauf que nous avons augmenté la longueur maximale de la séquence de 2 048 à 2 560 pour accueillir des séquences de texte plus longues. Les hyperparamètres utilisés dans le pré-entraînement et le réglage fin sont fournis ci-dessous. Les données d'inférence doivent être stockées au format jsonl de LLaVA. Chaque ligne du fichier d'entrée correspond à un échantillon d'entrée, qui est une chaîne JSON (générée par Pour l'inférence sur MMTab-eval, téléchargez les échantillons de test 49K MMTab-eval au format jsonl (MMTab-eval_test_data_49K_llava_jsonl_format.jsonl) et ses fichiers image (MMTab-eval_table_images_23K.zip). Créez ensuite un dossier nommé « LLaVA-Inference » et organisez les données comme suit : Inférence sur multi-GPU : Avec le script d'inférence officiel, le format du résultat de l'inférence dans Les scripts d'évaluation sont stockés dans le dossier Pour l'évaluation sur l'ensemble de test ToTTo, vous devez organiser la sortie du modèle dans un fichier txt et le télécharger dans le classement officiel ToTTo. . L'ensemble de données résultant contient trois parties et peut être téléchargé à partir de l'ensemble de données Hugging Face. Au cours de la construction de l'ensemble de données, des augmentations de données à plusieurs niveaux (par exemple, au niveau de la table, au niveau de la tâche) ont été adoptées pour améliorer encore la diversité des données.
Fractionnement de l'ensemble de données #Tableau Images #Échantillons MMTab-pré 97 Ko 150 000 échantillons de reconnaissance de table pour la pré-formation Instruction MMTab 82 Ko 232 000 échantillons de 14 tâches basées sur des tableaux pour le réglage des instructions MMTab-évaluation 23K 45 000 échantillons de 17 benchmarks retenus et 4 000 échantillons de 7 benchmarks retenus pour évaluation 3. Poids du modèle
Version Taille Calendrier LLM de base Encodeur visuel Couche de projection Points de contrôle Tableau LLaVA 7B full_finetune-1_epoch Vicuna-v1.5-7B CLIP-ViT-L-336px MLP-2x SpursgoZmy/table-llava-v1.5-7b Tableau LLaVA 13B full_finetune-1_epoch Vigogne-v1.5-13B CLIP-ViT-L-336px MLP-2x SpursgoZmy/table-llava-v1.5-13b pretrained_mm_projector du tableau LLaVA 7B 5M full_finetune-1_epoch Vicuna-v1.5-7B CLIP-ViT-L-336px MLP-2x SpursgoZmy/table-llava-v1.5-pretrained_mm_projector pretrained_mm_projector du tableau LLaVA 13B 5M full_finetune-1_epoch Vigogne-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')
. Ce problème est mentionné dans ce numéro github. Je vais essayer le script de conversion fourni pour rendre les points de contrôle Table-LLaVa compatibles avec Transformers et télécharger de nouveaux points de contrôle sur un nouveau hub. Mais pour l'instant, peut-être que les points de contrôle ne peuvent être chargés qu'avec le référentiel LLaVA comme celui-ci au lieu de se charger directement depuis HuggingFace. Désolé pour ce désagrément ! 4. Formation
4.1 Configuration de l'environnement
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 Données de formation et hyperparamètres
Étape de formation Description des données Taille des données Ensemble de données sur le visage câlin Pré-formation 558 000 données originales de pré-entraînement LLaVA-1.5 558 Ko blip_laion_cc_sbu_558k.json 150 000 données de reconnaissance de table (MMTab-pre) 150K MMTab-pre_pretrain_data_llava_format_150K.json Instruction Mise au point 665K données de réglage fin d'origine LLaVA-1.5 665 Ko llava_v1_5_mix665k.json 232 000 données de réglage d'instructions multimodales de 14 tâches tabulaires (MMTab-instruct) 232 Ko MMTab-instruct_sft_data_llava_format_232K.json enhanced_llava_pretrain_data_708K.json
et enhanced_llava_sft_data_898K.json
, qui peuvent être directement utilisés pour entraîner la table LLaVA. Scène Poids entraînés Taille globale du lot Taux d'apprentissage Époques Longueur maximale Perte de poids rapport d'échauffement Scène de grande vitesse Pré-formation connecteur vision-langage 256 1e-3 1 2560 0 0,03 ZÉRO-2 Instruction Mise au point base LLM et connecteur vision-langage 128 2e-5 1 2048 0 0,03 ZÉRO-3 4.3 Pré-formation
images.zip
à partir d'ici. Mettez-le sous ./LLaVA-Pretrain/images
et décompressez-le.MMTab-instruct_table_images_82K.zip
et MMTab-pre_table_images_part_2_16K.zip
à partir de l'ensemble de données MMTab. Mettez-les sous ./LLaVA-Pretrain/images
et décompressez-les. Renommez le répertoire IID_train_image
en table_pretrain_part_1
.enhanced_llava_pretrain_data_708K.json
depuis l'ensemble de données MMTab vers ./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
. Si vous ne pouvez pas télécharger automatiquement le modèle de base Vicuna v1.5 et ViT via HuggingFace, vous pouvez télécharger ces modèles manuellement et définir les paramètres de ligne de commande correspondants ( model_name_or_path
et vision_tower
) sur les chemins du modèle local. Une fois la pré-formation terminée, le projecteur de langage visuel formé sera enregistré dans le output_dir
spécifié. 4.4 Mise au point
./LLaVA-Finetune/images
dont les noms sont respectivement coco
, gqa
, ocr_vqa
, textvqa
et vg
. Suivez les instructions d'ici pour télécharger des images de ces 5 ensembles de données pour le réglage fin de LLaVA v1.5. Placez les fichiers zip dans les dossiers correspondants et décompressez-les.MMTab-instruct_table_images_82K.zip
à partir de l'ensemble de données MMTab. Mettez-le sous ./LLaVA-Finetune/images/table_instructV
et décompressez-le. Renommez le répertoire IID_train_image
résultant en images
.enhanced_llava_sft_data_898K.json
depuis l'ensemble de données MMTab vers ./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
. Définissez le paramètre pretrain_mm_mlp_adapter
sur le chemin de votre projecteur de langage de vision pré-entraîné, tel que ./pretrained_mm_projector/llava-v1.5-7b-with-table-pretrain/mm_projector.bin
. Le modèle llava de table entraîné sera enregistré dans le output_dir
spécifié. 5. Inférence
json.dumps()
) d'un dict Python. L'exemple de format devrait ressembler à : { "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
. Vous pouvez également faire des déductions sur vos propres données. N'oubliez pas d'ajuster les paramètres tels que « question-file
» (chemin du fichier d'entrée), « image-folder
» (chemin du dossier d'images) dans le table_llava_inference.sh
. Les résultats de l'inférence ( merge.jsonl
) seront stockés dans le chemin du paramètre ' answers-file
', par exemple ./eval_results/answers/MMTab_eval/table-llava-v1.5-7b/merge.jsonl
.merge.jsonl
devrait ressembler à : { '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. Évaluation
MMTab-eval_evaluation
. Tout d'abord, cd MMTab-eval_evaluation
et pip install -r eval_requirements.txt
pour installer les packages nécessaires comme 'Sacrebleu' pour l'évaluation. Pour la tâche de reconnaissance de table, nous utilisons le script de calcul TEDS de PubTabNet pour l'évaluation. Ensuite, téléchargez les données de test MMTab-eval (MMTab-eval_test_data_49K.json) et les tables de test (MMTab-eval_test_tables_23K.json), et placez-les dans le dossier MMTab-eval_evaluation
avec le résultat d'inférence de LLaVA ( merge.jsonl
). Utilisez le bloc-notes MMTab_evaluation.ipynb pour une évaluation automatique. 7. Limites et orientations futures
À FAIRE
LlavaForConditionalGeneration.from_pretrained('SpursgoZmy/table-llava-v1.5-7b')
. Ce problème est mentionné dans ce numéro Citation
@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 } ,
}
}