Meskipun kemajuan besar telah dicapai oleh metode pemahaman tabel berbasis LLM baru-baru ini, metode tersebut sangat bergantung pada premis bahwa tabel tertentu harus diubah menjadi urutan teks tertentu (seperti Markdown atau HTML) untuk dijadikan sebagai masukan model. Namun, sulit untuk mengakses representasi tabel tekstual berkualitas tinggi dalam beberapa skenario dunia nyata seperti dokumen yang dipindai dan tangkapan layar halaman web, dan gambar tabel jauh lebih mudah diakses. Oleh karena itu, cara memahami tabel secara langsung menggunakan informasi visual intuitif merupakan tantangan penting dan mendesak untuk mengembangkan aplikasi yang lebih praktis.
Menghadapi tantangan di atas, kami mengusulkan masalah pemahaman tabel multimodal, di mana model diperlukan untuk menghasilkan respons yang benar terhadap permintaan terkait tabel yang berbeda (misalnya pertanyaan) secara end-to-end berdasarkan gambar tabel. Sejalan dengan itu, kami membangun MMTab , kumpulan data skala besar sumber terbuka pertama untuk masalah pemahaman tabel multimodal, yang dapat mendukung pelatihan dan evaluasi MLLM generalis menuju pemahaman tabel multimodal. Berdasarkan kumpulan data MMTab yang dikurasi, kami mengembangkan MLLM tabel serbaguna bernama Table-LLaVA dengan paradigma pelatihan dua tahap yang ditingkatkan dari LLaVA v1.5. Table-LLaVA mengalahkan baseline MLLM yang kuat pada 17 tolok ukur yang ditahan dan 6 tolok ukur yang ditahan, dan bahkan bersaing dengan GPT-4V yang kuat pada 14 tolok ukur dalam subset sampel pengujian. Gambar di sebelah kanan menunjukkan perbandingan intuitif Tabel LLaVA 7B dan MLLM yang ada pada berbagai tolok ukur pemahaman tabel multimodal.
Kami membuat MMTab berdasarkan 14 kumpulan data tabel yang tersedia untuk umum dari 8 domain. Kami dengan hati-hati merancang skrip untuk mengonversi tabel tekstual asli dalam kumpulan data ini menjadi gambar tabel yang menyoroti cakupan luas struktur dan gaya tabel, dan mengubah semua sampel khusus tugas menjadi sampel penyesuaian instruksi multimodal dengan format terpadu <table image, input request, output response>
. Dataset yang dihasilkan berisi tiga bagian dan dapat diunduh dari Dataset Hugging Face. Selama konstruksi kumpulan data, penambahan data di berbagai tingkat (misalnya, tingkat tabel, tingkat tugas) diadopsi untuk lebih meningkatkan keragaman data.
Pemisahan Kumpulan Data | #Gambar Tabel | #Sampel |
---|---|---|
MMTab-pra | 97K | Sampel pengenalan tabel 150 ribu untuk pra-pelatihan |
MMTab-instruksikan | 82K | 232 ribu sampel dari 14 tugas berbasis tabel untuk penyesuaian instruksi |
Evaluasi MMTab | 23K | 45 ribu sampel dari 17 tolok ukur yang diadakan dan 4 ribu sampel dari 7 tolok ukur yang diadakan untuk evaluasi |
Contoh kumpulan data ditunjukkan pada gambar berikut dan contoh lainnya ditunjukkan pada Lampiran A di makalah asli.
Tabel LLaVA mengikuti arsitektur LLaVA v1.5, dengan CLIP-ViT-L-336px sebagai encoder visual (resolusi gambar 336*336), Vicuna-v1.5-7B atau Vicuna-v1.5-13B sebagai LLM dasar dan MLP dua lapis sebagai konektor bahasa visi. Pos pemeriksaan model yang disimpan dapat diunduh dari Repositori Hugging Face berikut:
Versi | Ukuran | Jadwal | Dasar LLM | Pengkode Visi | Lapisan proyeksi | Pos pemeriksaan |
---|---|---|---|---|---|---|
Tabel LLaVA | 7B | full_finetune-1_epoch | Vicuna-v1.5-7B | CLIP-ViT-L-336px | MLP-2x | SpursgoZmy/tabel-llava-v1.5-7b |
Tabel LLaVA | 13B | full_finetune-1_epoch | Vicuna-v1.5-13B | CLIP-ViT-L-336px | MLP-2x | SpursgoZmy/tabel-llava-v1.5-13b |
pretrained_mm_projector dari Tabel 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 dari Tabel 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 |
Catatan: Pos pemeriksaan Tabel-LLaVA di atas disimpan dari repositori LLaVA asli, yang tidak secara langsung kompatibel dengan Transformers, yaitu tidak dapat langsung dimuat dengan cara seperti LlavaForConditionalGeneration.from_pretrained('SpursgoZmy/table-llava-v1.5-7b')
. Masalah ini disebutkan dalam masalah github ini. Saya akan mencoba skrip konversi yang disediakan untuk membuat pos pemeriksaan Table-LLaVa kompatibel dengan Transformers dan mengunggah pos pemeriksaan baru ke hub baru. Namun untuk saat ini, mungkin checkpoint hanya bisa dimuat dengan repositori LLaVA seperti ini daripada langsung memuat dari HuggingFace. Maaf atas ketidaknyamanan ini!
Kami menggunakan basis kode LLaVA v1.5 untuk pelatihan model dan inferensi. Dengan demikian, Tabel LLaVA dapat digunakan sebagai model LLaVA v1.5 normal dan lingkungan dapat diinstal dengan cara serupa. Perhatikan bahwa basis kode kami diunduh pada bulan Desember 2023 dan mungkin bukan yang terbaru. Silakan merujuk ke github resmi LLaVA v1.5 untuk pembaruan terbarunya.
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 .
Pelatihan Tabel LLaVA terdiri dari dua tahap: (1) Tahap pra-pelatihan: konektor bahasa penglihatan (MLP dua lapis) dilatih untuk menghubungkan encoder visi (ViT) yang telah dilatih sebelumnya ke LLM yang dibekukan (Vicuna v1.5) ; (2) Tahap penyetelan instruksi: konektor bahasa visi dan LLM dasar dilatih untuk mengikuti instruksi multimodal.
Data pelatihan setiap tahap ditunjukkan di bawah ini:
Tahap Pelatihan | Deskripsi Data | Ukuran Data | Kumpulan Data Wajah Memeluk |
---|---|---|---|
Pra-pelatihan | 558K data pra-pelatihan LLaVA-1.5 asli | 558K | blip_laion_cc_sbu_558k.json |
Data pengenalan tabel 150K (MMTab-pra) | 150K | MMTab-pre_pretrain_data_llava_format_150K.json | |
Instruksi Penyempurnaan | 665 ribu data penyempurnaan LLaVA-1.5 asli | 665K | llava_v1_5_mix665k.json |
Data penyetelan instruksi multimodal 232K dari 14 tugas tabel (MMTab-instruct) | 232K | MMTab-instruct_sft_data_llava_format_232K.json |
Gabungan data pra-pelatihan dan penyempurnaan instruksi dalam format data LLaVA dapat ditemukan di kumpulan data MMTab, yaitu, enhanced_llava_pretrain_data_708K.json
dan enhanced_llava_sft_data_898K.json
, yang dapat langsung digunakan untuk melatih Tabel LLaVA.
Tabel LLaVA dilatih pada 8 GPU A800 dengan memori 80 GB. Kami menggunakan kumpulan hyperparameter serupa seperti LLaVA v1.5, hanya saja kami meningkatkan panjang urutan maksimal dari 2048 menjadi 2560 untuk mengakomodasi urutan teks yang lebih panjang. Hyperparameter yang digunakan dalam pra-pelatihan dan penyesuaian disediakan di bawah.
Panggung | Beban Terlatih | Ukuran Batch Global | Kecepatan pembelajaran | zaman | Panjang maksimal | Penurunan berat badan | rasio pemanasan | Tahap Kecepatan Dalam |
---|---|---|---|---|---|---|---|---|
Pra-pelatihan | konektor bahasa visi | 256 | 1e-3 | 1 | 2560 | 0 | 0,03 | ZeRO-2 |
Instruksi Penyempurnaan | LLM dasar dan konektor bahasa visi | 128 | 2e-5 | 1 | 2048 | 0 | 0,03 | ZeRO-3 |
images.zip
dari sini. Letakkan di bawah ./LLaVA-Pretrain/images
dan unzip.MMTab-instruct_table_images_82K.zip
dan MMTab-pre_table_images_part_2_16K.zip
dari kumpulan data MMTab. Letakkan di bawah ./LLaVA-Pretrain/images
dan unzip. Ganti nama direktori IID_train_image
menjadi table_pretrain_part_1
.enhanced_llava_pretrain_data_708K.json
dari kumpulan data MMTab ke ./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
. Jika Anda tidak dapat mengunduh model dasar Vicuna v1.5 dan ViT secara otomatis melalui HuggingFace, Anda dapat mengunduh model ini secara manual dan mengatur parameter baris perintah yang sesuai ( model_name_or_path
dan vision_tower
) ke jalur model lokal. Setelah pra-pelatihan selesai, proyektor bahasa penglihatan yang dilatih akan disimpan pada output_dir
yang ditentukan../LLaVA-Finetune/images
yang masing-masing bernama coco
, gqa
, ocr_vqa
, textvqa
dan vg
. Ikuti instruksi dari sini untuk mengunduh gambar dari 5 kumpulan data ini untuk penyempurnaan LLaVA v1.5. Letakkan file zip di folder yang sesuai dan unzip.MMTab-instruct_table_images_82K.zip
dari kumpulan data MMTab. Letakkan di bawah ./LLaVA-Finetune/images/table_instructV
dan unzip. Ganti nama direktori IID_train_image
yang dihasilkan menjadi images
.enhanced_llava_sft_data_898K.json
dari kumpulan data MMTab ke ./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
. Tetapkan parameter pretrain_mm_mlp_adapter
ke jalur proyektor bahasa visi terlatih Anda, seperti ./pretrained_mm_projector/llava-v1.5-7b-with-table-pretrain/mm_projector.bin
. Model tabel llava yang dilatih akan disimpan pada output_dir
yang ditentukan. Data inferensi harus disimpan dalam format jsonl LLaVA. Setiap baris dalam file input sesuai dengan sampel input, yang merupakan string JSON (dihasilkan oleh json.dumps()
) dari dict Python. Format sampelnya akan terlihat seperti:
{ "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.
}
Untuk inferensi pada eval MMTab, unduh sampel uji eval MMTab 49K dalam format jsonl (MMTab-eval_test_data_49K_llava_jsonl_format.jsonl) dan file gambarnya (MMTab-eval_table_images_23K.zip). Kemudian buat folder bernama 'LLaVA-Inference' dan atur datanya sebagai berikut:
LLaVA-Inference
├── MMTab-eval_test_data_49K_llava_jsonl_format.jsonl
└── all_test_image
Inferensi pada multi-GPU: start_multicard_inference.sh
. Anda juga dapat menyimpulkan data Anda sendiri. Ingat sesuaikan parameter seperti ' question-file
' (jalur file masukan), ' image-folder
' (jalur folder gambar) di table_llava_inference.sh
. Hasil inferensi ( merge.jsonl
) akan disimpan di jalur parameter ' answers-file
', misalnya ./eval_results/answers/MMTab_eval/table-llava-v1.5-7b/merge.jsonl
.
Dengan skrip inferensi resmi, format hasil inferensi di merge.jsonl
akan terlihat seperti:
{ '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
Skrip evaluasi disimpan di folder MMTab-eval_evaluation
. Pertama, cd MMTab-eval_evaluation
dan pip install -r eval_requirements.txt
untuk menginstal paket yang diperlukan seperti 'Sacrebleu' untuk evaluasi. Untuk tugas pengenalan tabel, kami menggunakan skrip komputasi TEDS PubTabNet untuk evaluasi. Kemudian, unduh data pengujian MMTab-eval_test_data_49K.json (MMTab-eval_test_data_49K.json) dan tabel pengujian (MMTab-eval_test_tables_23K.json), dan masukkan ke dalam folder MMTab-eval_evaluation
bersama dengan hasil inferensi LLaVA ( merge.jsonl
). Gunakan buku catatan MMTab_evaluation.ipynb untuk evaluasi otomatis.
Untuk evaluasi set pengujian ToTTo, Anda perlu mengatur keluaran model ke dalam file txt dan mengunggahnya ke papan peringkat resmi ToTTo.
LlavaForConditionalGeneration.from_pretrained('SpursgoZmy/table-llava-v1.5-7b')
. Masalah ini disebutkan dalam edisi ini @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 } ,
}
}