Obwohl die jüngsten LLM-basierten Tabellenverständnismethoden große Fortschritte gemacht haben, basieren sie stark auf der Prämisse, dass bestimmte Tabellen in eine bestimmte Textsequenz (z. B. Markdown oder HTML) konvertiert werden müssen, um als Modelleingabe zu dienen. Allerdings ist es in einigen realen Szenarien wie gescannten Dokumenten und Webseiten-Screenshots schwierig, auf qualitativ hochwertige Texttabellendarstellungen zuzugreifen, und Tabellenbilder sind viel leichter zugänglich. Daher ist das direkte Verständnis von Tabellen anhand intuitiver visueller Informationen eine entscheidende und dringende Herausforderung für die Entwicklung praktischerer Anwendungen.
Angesichts der oben genannten Herausforderung schlagen wir das Problem des multimodalen Tabellenverständnisses vor, bei dem das Modell auf der Grundlage des Tabellenbilds durchgängig korrekte Antworten auf verschiedene tabellenbezogene Anforderungen (z. B. Fragen) generieren muss. Dementsprechend erstellen wir MMTab , den ersten groß angelegten Open-Source-Datensatz für multimodale Tabellenverständnisprobleme, der sowohl das Training als auch die Bewertung generalistischer MLLMs in Richtung multimodales Tabellenverständnis unterstützen kann. Basierend auf dem kuratierten MMTab-Datensatz entwickeln wir ein vielseitiges tabellarisches MLLM namens Table-LLaVA mit einem erweiterten zweistufigen Trainingsparadigma von LLaVA v1.5. Table-LLaVA übertrifft starke MLLM-Baselines bei 17 gehaltenen und 6 gehaltenen Benchmarks und ist sogar mit dem leistungsstarken GPT-4V bei 14 Benchmarks unter einer Teilmenge von Testproben konkurrenzfähig. Die rechte Abbildung zeigt einen intuitiven Vergleich von Table LLaVA 7B und bestehenden MLLMs anhand verschiedener multimodaler Benchmarks zum Tabellenverständnis.
Wir haben MMTab auf der Grundlage von 14 öffentlich verfügbaren Tabellendatensätzen von 8 Domänen erstellt. Wir entwerfen sorgfältig Skripte, um ursprüngliche Texttabellen in diesen Datensätzen in Tabellenbilder umzuwandeln, die eine breite Abdeckung von Tabellenstrukturen und -stilen hervorheben, und wandeln alle aufgabenspezifischen Beispiele in multimodale Beispiele zur Befehlsoptimierung mit einem einheitlichen Format von Beispiele für Datensätze sind in der folgenden Abbildung dargestellt. Weitere Beispiele finden Sie im Anhang A des Originalpapiers. Tabelle LLaVA folgt der LLaVA v1.5-Architektur mit CLIP-ViT-L-336px als visuellem Encoder (Bildauflösung 336*336), Vicuna-v1.5-7B oder Vicuna-v1.5-13B als Basis-LLM und ein zweischichtiges MLP als Vision-Sprach-Verbindungsstück. Die gespeicherten Modellprüfpunkte können aus dem folgenden Hugging Face Repository heruntergeladen werden: Hinweis: Die oben genannten Table-LLaVA-Prüfpunkte werden aus dem ursprünglichen LLaVA-Repository gespeichert, das nicht direkt mit den Transformers kompatibel ist, d. h., es kann nicht direkt wie Wir verwenden die Codebasis von LLaVA v1.5 für Modelltraining und Inferenz. Somit kann Table LLaVA als normales LLaVA v1.5-Modell verwendet und die Umgebung auf ähnliche Weise installiert werden. Beachten Sie, dass unsere Codebasis im Dezember 2023 heruntergeladen wird und möglicherweise nicht die neueste ist. Das neueste Update finden Sie im offiziellen LLaVA v1.5 Github. Das LLaVA-Training in Tabelle besteht aus zwei Phasen: (1) Vortrainingsphase: Der Vision-Language-Connector (ein zweischichtiges MLP) wird trainiert, um den eingefrorenen vortrainierten Vision-Encoder (ViT) mit dem eingefrorenen LLM (Vicuna v1.5) zu verbinden. ; (2) Instruktionsabstimmungsphase: Der Vision-Language-Connector und das Basis-LLM werden darauf trainiert, multimodalen Anweisungen zu folgen. Die Trainingsdaten jeder Stufe sind unten aufgeführt: Die zusammengeführten Vortrainings- Table LLaVA wurde auf 8 A800-GPUs mit 80 GB Speicher trainiert. Wir verwenden einen ähnlichen Satz von Hyperparametern wie LLaVA v1.5, außer dass wir die maximale Sequenzlänge von 2048 auf 2560 erhöht haben, um längere Textsequenzen zu berücksichtigen. Die beim Vortraining und Feintuning verwendeten Hyperparameter sind unten aufgeführt. Die Inferenzdaten sollten im JSONL-Format der LLaVA gespeichert werden. Jede Zeile in der Eingabedatei entspricht einem Eingabebeispiel, bei dem es sich um einen JSON-String (generiert von Um Rückschlüsse auf die MMTab-eval zu ziehen, laden Sie die 49K MMTab-eval-Testbeispiele im JSONL-Format (MMTab-eval_test_data_49K_llava_jsonl_format.jsonl) und die dazugehörigen Bilddateien (MMTab-eval_table_images_23K.zip) herunter. Erstellen Sie dann einen Ordner mit dem Namen „LLaVA-Inference“ und organisieren Sie die Daten wie folgt: Rückschluss auf Multi-GPU: Mit dem offiziellen Inferenzskript sollte das Inferenzergebnisformat in Die Auswertungsskripte werden im Ordner Für die Auswertung des ToTTo-Testsatzes müssen Sie die Modellausgabe in einer TXT-Datei organisieren und in die offizielle ToTTo-Bestenliste hochladen. . Der resultierende Datensatz besteht aus drei Teilen und kann vom Hugging Face Dataset heruntergeladen werden. Während der Datensatzkonstruktion wurden Datenerweiterungen auf mehreren Ebenen (z. B. Tabellenebene, Aufgabenebene) übernommen, um die Datenvielfalt weiter zu verbessern.
Datensatzaufteilung #Tabellenbilder #Proben MMTab-pre 97K 150.000 Tabellenerkennungsbeispiele für das Vortraining MMTab-Anweisung 82K 232.000 Beispiele von 14 tabellenbasierten Aufgaben zur Unterrichtsoptimierung MMTab-eval 23K 45.000 Proben von 17 zurückgehaltenen Benchmarks und 4.000 Proben von 7 zurückgehaltenen Benchmarks zur Bewertung 3. Modellgewichte
Version Größe Zeitplan Basis-LLM Vision-Encoder Projektionsebene Kontrollpunkte Tisch LLaVA 7B full_finetune-1_epoch Vicuna-v1.5-7B CLIP-ViT-L-336px MLP-2x SpursgoZmy/table-llava-v1.5-7b Tisch LLaVA 13B full_finetune-1_epoch Vicuna-v1.5-13B CLIP-ViT-L-336px MLP-2x SpursgoZmy/table-llava-v1.5-13b pretrained_mm_projector der Tabelle 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 der Tabelle LLaVA 13B 5M full_finetune-1_epoch 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')
. Dieses Problem wird in dieser Github-Ausgabe erwähnt. Ich werde das bereitgestellte Konvertierungsskript ausprobieren, um Table-LLaVa-Prüfpunkte mit Transformers kompatibel zu machen und neue Prüfpunkte auf einen neuen Hub hochzuladen. Aber im Moment können die Checkpoints möglicherweise nur mit dem LLaVA-Repository auf diese Weise geladen werden, anstatt direkt von HuggingFace. Entschuldigung für diese Unannehmlichkeiten! 4. Ausbildung
4.1 Umgebungseinrichtung
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 Trainingsdaten und Hyperparameter
Trainingsphase Datenbeschreibung Datengröße Umarmender Gesichtsdatensatz Vorschulung 558.000 Original-LLaVA-1.5-Vortrainingsdaten 558K blip_laion_cc_sbu_558k.json 150.000 Tabellenerkennungsdaten (MMTab-pre) 150.000 MMTab-pre_pretrain_data_llava_format_150K.json Anleitung Feinabstimmung 665K originale LLaVA-1.5-Feinabstimmungsdaten 665K llava_v1_5_mix665k.json 232K multimodale Befehlsoptimierungsdaten von 14 tabellarischen Aufgaben (MMTab-instruct) 232K MMTab-instruct_sft_data_llava_format_232K.json enhanced_llava_pretrain_data_708K.json
Anweisungen-Feinabstimmungsdaten im enhanced_llava_sft_data_898K.json
-Datenformat finden Sie im MMTab-Datensatz, d. Bühne Trainierte Gewichte Globale Batchgröße Lernrate Epochen Maximale Länge Gewichtsverlust Aufwärmverhältnis Deepspeed-Bühne Vorschulung Verbindung zwischen Vision und Sprache 256 1e-3 1 2560 0 0,03 ZeRO-2 Anleitung Feinabstimmung Basis-LLM und Vision-Language-Connector 128 2e-5 1 2048 0 0,03 ZeRO-3 4.3 Vorschulung
images.zip
. Legen Sie es unter ./LLaVA-Pretrain/images
ab und entpacken Sie es.MMTab-instruct_table_images_82K.zip
und MMTab-pre_table_images_part_2_16K.zip
aus dem MMTab-Datensatz herunter. Legen Sie sie unter ./LLaVA-Pretrain/images
ab und entpacken Sie sie. Benennen Sie das IID_train_image
Verzeichnis in table_pretrain_part_1
um.enhanced_llava_pretrain_data_708K.json
vom MMTab-Datensatz in ./LLaVA-Pretrain
herunter.
LLaVA-Pretrain
├── images
│ ├── table_pretrain_part_1
| ├── table_pretrain_part_2
| ├── 00453
| ├── 00019
| ├── ...
| └── 00095
└── enhanced_llava_pretrain_data_708K.json
pretrain_table_llava.sh
. Wenn Sie das Basismodell von Vicuna v1.5 und ViT nicht automatisch über HuggingFace herunterladen können, können Sie diese Modelle manuell herunterladen und entsprechende Befehlszeilenparameter ( model_name_or_path
und vision_tower
) auf die lokalen Modellpfade festlegen. Sobald das Vortraining abgeschlossen ist, wird der trainierte Vision-Language-Projektor im angegebenen output_dir
gespeichert. 4.4 Feinabstimmung
./LLaVA-Finetune/images
5 neue Ordner mit den Namen coco
, gqa
, ocr_vqa
, textvqa
und vg
. Befolgen Sie die Anweisungen hier, um Bilder aus diesen 5 Datensätzen für die Feinabstimmung von LLaVA v1.5 herunterzuladen. Legen Sie die ZIP-Dateien in die entsprechenden Ordner und entpacken Sie sie.MMTab-instruct_table_images_82K.zip
aus dem MMTab-Datensatz herunter. Legen Sie es unter ./LLaVA-Finetune/images/table_instructV
ab und entpacken Sie es. Benennen Sie das resultierende IID_train_image
Verzeichnis in images
um.enhanced_llava_sft_data_898K.json
vom MMTab-Datensatz in ./LLaVA-Finetune
herunter.
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
. Legen Sie den Parameter pretrain_mm_mlp_adapter
auf den Pfad Ihres vorab trainierten Vision-Language-Projektors fest, z. B. ./pretrained_mm_projector/llava-v1.5-7b-with-table-pretrain/mm_projector.bin
. Das trainierte Tabellen-Lava-Modell wird im angegebenen output_dir
gespeichert. 5. Schlussfolgerung
json.dumps()
) eines Python-Dikts handelt. Das Beispielformat sollte wie folgt aussehen: { "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
. Sie können auch auf Ihre eigenen Daten schließen. Denken Sie daran, Parameter wie „ question-file
“ (Pfad der Eingabedatei) und „ image-folder
“ (Pfad des Bildordners) in der table_llava_inference.sh
anzupassen. Die Inferenzergebnisse ( merge.jsonl
) werden im Pfad des Parameters „ answers-file
“ gespeichert, z. B. ./eval_results/answers/MMTab_eval/table-llava-v1.5-7b/merge.jsonl
.merge.jsonl
wie folgt aussehen: { '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. Bewertung
MMTab-eval_evaluation
gespeichert. Zuerst cd MMTab-eval_evaluation
und pip install -r eval_requirements.txt
um notwendige Pakete wie „Sacrebleu“ für die Evaluierung zu installieren. Für die Tabellenerkennungsaufgabe verwenden wir zur Auswertung das TEDS-Berechnungsskript von PubTabNet. Laden Sie dann die MMTab-eval-Testdaten (MMTab-eval_test_data_49K.json) und Testtabellen (MMTab-eval_test_tables_23K.json) herunter und legen Sie sie zusammen mit dem Inferenzergebnis der LLaVA ( merge.jsonl
) im Ordner MMTab-eval_evaluation
ab. Verwenden Sie das Notebook MMTab_evaluation.ipynb für die automatische Auswertung. 7. Einschränkungen und zukünftige Richtungen
TODOs
LlavaForConditionalGeneration.from_pretrained('SpursgoZmy/table-llava-v1.5-7b')
geladen werden können. Dieses Problem wird in dieser Ausgabe erwähnt Zitat
@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 } ,
}
}