LLaVAR: 풍부한 텍스트 이미지 이해를 위한 향상된 시각적 지침 조정
Yanzhe Zhang, Ruiyi Zhang, Jiuxiang Gu, Yufan Zhou, Nedim Lipka, Diyi Yang, Tong Sun
프로젝트 페이지
Arxiv 링크
@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 커뮤니티에서 즉시 사용 가능한 모델 체크포인트와 미세 조정 데이터 세트를 확인하세요!
[업데이트 07/21] 사용된 LAION 이미지의 메타데이터(pretrain/finetune)를 출시합니다.
[업데이트 07/12] MME 벤치마크에서 OCR 평가 결과/스크립트를 출시합니다. LLaVAR은 LLaVA의 OCR 점수를 50에서 80으로 높입니다.
[업데이트 07/05] Huggingface ?에서 데이터를 사용할 수 있습니다.
[업데이트 07/05] Huggingface의 모델 무게 델타 ?.
[업데이트 06/29] 최초 출시.
우리 코드와 LLaVA 코드의 주요 차이점은 '###' 대신 '</s>'를 구분 기호로 사용하는 Vicuna v1.1을 지원하도록 훈련/테스트/제공 파일을 수정했다는 것입니다.
LLaVA에 따라 환경을 준비/모델 중량을 병합하세요.
모델 무게 변화: Google Drive, Huggingface
이는 LLaMA-13B와 병합되어야 합니다.
병합 후 폴더 이름에 "v1"을 추가하고 대화 모드 "llava_v1"이 사용되는지 확인하세요.
우리의 이미지 데이터는 이미 LLaVA 사전 훈련/미세 조정 형식으로 변환되었습니다(CC3M 및 COCO 형식의 "가짜" 파일 이름이 있습니다). 이를 다운로드하여 LLaVA 훈련 세트에 병합할 수 있습니다.
반면에 우리의 지침에는 이미 LLaVA의 지침이 포함되어 있습니다.
사전 훈련 이미지: Google Drive
사전 교육 지침(595K + 422K): Google 드라이브
이미지 미세 조정: Google 드라이브
미세 조정 지침(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
/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}
}