LLaVAR: テキストが豊富な画像を理解するための強化されたビジュアル命令チューニング
Yanzhe Zhang、Ruiyi Zhang、Jixiang Gu、Yufan Zhou、Nedim Lipka、Diyi Yang、Tong Sun
プロジェクトページ
アルクシブリンク
@misc{zhang2023llavar,
title={LLaVAR: Enhanced Visual Instruction Tuning for Text-Rich Image Understanding},
author={Yanzhe Zhang and Ruiyi Zhang and Jiuxiang Gu and Yufan Zhou and Nedim Lipka and Diyi Yang and Tong Sun},
year={2023},
eprint={2306.17107},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
[更新 08/01] Huggingface のコミュニティから、すぐに使用できるモデルのチェックポイントと微調整データセットをチェックしてください。
[UPDATE 07/21] 使用されているLAION画像のメタデータ:pretrain/finetuneを公開しました。
【UPDATE 07/12】MMEベンチマークにおけるOCR評価結果/スクリプトを公開。 LLaVAR は、LLaVA の OCR スコアを 50 から 80 に増加します。
[更新 07/05] データは Huggingface ? で入手可能です。
[更新 07/05] ハギングフェイスのモデル体重デルタ ?。
[更新 06/29] 初回リリース。
私たちのコードと LLaVA のコードの主な違いは、Vicuna v1.1 をサポートするようにトレーニング/テスト/提供ファイルを変更し、区切り文字として「###」の代わりに「</s>」を使用していることです。
LLaVAに従って環境の準備/モデルウェイトのマージを行ってください。
モデルの体重デルタ: Google ドライブ、ハグフェイス
これは LLaMA-13B とマージする必要があります。
結合後、フォルダー名に「v1」を追加し、会話モード「llava_v1」が使用されていることを確認してください。
画像データはすでに LLaVA 事前トレーニング/微調整の形式に変換されています (CC3M および COCO 形式の「偽の」ファイル名が付いています)。それらをダウンロードして、LLaVA トレーニング セットに結合できます。
一方、私たちの説明書にはすでに LLaVA の説明書が含まれています。
事前学習用画像: Google Drive
事前トレーニング手順 (595K + 422K): Google ドライブ
画像の微調整: Google Drive
微調整手順 (158K + 16K): Google ドライブ
微調整手順 (158K + 20K): Google ドライブ
LAION から 50 個のテキスト豊富な画像に関する 50 個の指示に従っての質問と回答を収集し、GPT-4 ベースの指示に従って評価を行うことができます。
評価画像: Googleドライブ
GPT-4 評価コンテキスト (595K + 422K): ファイル
GPT-4評価ルール: ファイル
質問: ファイル
GPT-4 回答: ファイル
事前トレーニング イメージを cc3m フォルダーにマージする必要があります。
torchrun --nnodes=1 --nproc_per_node=8 --master_port=25001
/path/to/LLaVA/llava/train/train_mem.py
--model_name_or_path /path/to/models/vicuna_13b_v1_1
--data_path /path/to/chat_llavar.json
--image_folder /path/to/cc3m
--vision_tower openai/clip-vit-large-patch14-336
--tune_mm_mlp_adapter True
--mm_vision_select_layer -2
--mm_use_im_start_end
--bf16 True
--output_dir /path/to/checkpoint
--num_train_epochs 1
--per_device_train_batch_size 8
--per_device_eval_batch_size 4
--gradient_accumulation_steps 2
--evaluation_strategy " no "
--save_strategy " steps "
--save_steps 4000
--save_total_limit 1
--learning_rate 2e-3
--weight_decay 0.
--warmup_ratio 0.03
--lr_scheduler_type " cosine "
--logging_steps 1
--tf32 True
--model_max_length 1024
--gradient_checkpointing True
--lazy_preprocess True
--image_aspect_ratio ' pad '
--report_to wandb
微調整画像を coco2017 フォルダーにマージする必要があります。
torchrun --nnodes=1 --nproc_per_node=8 --master_port=25001
/path/to/LLaVA/llava/train/train_mem.py
--model_name_or_path /path/to/models/vicuna_13b_v1_1
--data_path /path/to/llava_instruct_150k_llavar_16k.json
--image_folder /path/to/coco/images/train2017
--vision_tower openai/clip-vit-large-patch14-336
--pretrain_mm_mlp_adapter /path/to/mm_proj/llava-13b-pretrain.bin
--mm_vision_select_layer -2
--mm_use_im_start_end True
--bf16 True
--output_dir /path/to/checkpoint
--num_train_epochs 3
--per_device_train_batch_size 4
--per_device_eval_batch_size 4
--gradient_accumulation_steps 1
--evaluation_strategy " no "
--save_strategy " steps "
--save_steps 8000
--save_total_limit 1
--learning_rate 2e-5
--weight_decay 0.
--warmup_ratio 0.03
--lr_scheduler_type " cosine "
--logging_steps 1
--tf32 True
--fsdp " full_shard auto_wrap "
--fsdp_transformer_layer_cls_to_wrap ' LlamaDecoderLayer '
--model_max_length 2048
--gradient_checkpointing True
--lazy_preprocess True
--image_aspect_ratio ' pad '
--report_to wandb
COCO 画像の指示に従ってください。
python /path/to/LLaVA/llava/eval/model_vqa.py
--model-name /path/to/checkpoint
--question-file
/path/to/LLaVA/playground/data/coco2014_val_qa_eval/qa90_questions.jsonl
--image-folder
/path/to/coco2014/val2014
--answers-file
/path/to/qa90-answer-file.jsonl
--conv-mode "llava_v1"
指定された画像 URL の指示に従ってください。
python -m llava.eval.run_llava
--model-name /path/to/checkpoint
--image-file "https://cdn.shopify.com/s/files/1/0057/3728/3618/products/a-man-called-otto_ezrjr0pm_480x.progressive.jpg"
--query "Who starred in the movie?"
テキストベースの VQA (MultimodalOCR から): リポジトリのクローンを作成してデータを準備した後、 ./MultimodalOCR/Eval_LLaVAR.py
/MultimodalOCR/Eval_LLaVAR.py を/your/path/to/MultimodalOCR/models/LLaVA/
に配置し、モデルを/your/path/to/MultimodalOCR/eval.py
に追加できます。評価用の/your/path/to/MultimodalOCR/eval.py
。
コードベースは主に LLaVA プロジェクトからのものです。私たちの評価も MultimodalOCR プロジェクトに基づいて構築されています。
言語デコーダーを改善するには、最近の Vicuna モデルのアップデートにも注意を払うことができます。
@article{liu2023llava,
author = {Liu, Haotian and Li, Chunyuan and Wu, Qingyang and Lee, Yong Jae},
title = {Visual Instruction Tuning},
publisher = {arXiv:2304.08485},
year = {2023}
}
@misc{liu2023hidden,
title={On the Hidden Mystery of OCR in Large Multimodal Models},
author={Yuliang Liu and Zhang Li and Hongliang Li and Wenwen Yu and Yang Liu and Biao Yang and Mingxin Huang and Dezhi Peng and Mingyu Liu and Mingrui Chen and Chunyuan Li and Xucheng Yin and Cheng-lin Liu and Lianwen Jin and Xiang Bai},
year={2023},
eprint={2305.07895},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@misc{vicuna2023,
title = {Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality},
url = {https://lmsys.org/blog/2023-03-30-vicuna/},
author = {Chiang, Wei-Lin and Li, Zhuohan and Lin, Zi and Sheng, Ying and Wu, Zhanghao and Zhang, Hao and Zheng, Lianmin and Zhuang, Siyuan and Zhuang, Yonghao and Gonzalez, Joseph E. and Stoica, Ion and Xing, Eric P.},
month = {March},
year = {2023}
}