ViP-LLaVA

ViP-LLaVA

改进大型多模态模型的视觉提示理解能力

ViP-LLaVA项目旨在提升大型多模态模型对任意视觉提示的理解能力。通过在原始图像上叠加视觉提示进行指令微调,该方法使模型能更好地处理多样化的视觉输入。项目还开发了ViP-Bench,这是首个零样本区域级基准,用于评估多模态模型性能。ViP-LLaVA提供完整的训练流程、模型权重和演示,为视觉语言模型研究提供了有力支持。

ViP-LLaVA视觉语言模型多模态模型视觉提示CVPR2024Github开源项目

🎯 [CVPR2024] ViP-LLaVA:让大型多模态模型理解任意视觉提示

Mu CaiHaotian LiuSiva Karthik MustikovelaGregory P. MeyerYuning ChaiDennis ParkYong Jae Lee

方法:[项目主页] [演示] [模型库] [论文]

ViP-Bench:[下载数据集] [排行榜] [评估服务器]

<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/9138be15-5d38-473a-8d46-d97ff4e0552d.png" width="80%">

发布

  • [04/26] 🔥 基于最新的Llama-3-8B和Phi-3-mini-3.8B语言模型的LLaVA和ViP-LLaVA现已可用
  • [02/26] 🔥 ViP-LLaVA被CVPR 2024接收!
  • [12/13] 🔥 我们的工作现已出现在Huggingface官方的transformers文档中!
  • [12/03] 🔥 我们发布了ViP-LLaVA:让大型多模态模型理解任意视觉提示。我们提出在视觉指令微调过程中直接将视觉提示叠加在原始图像上,使大型多模态模型能够以用户友好的方式理解任意视觉提示。查看论文演示。我们还为大型多模态模型构建了首个零样本区域级基准测试ViP-Bench

代码许可 数据许可

使用和许可声明:数据和检查点仅供研究使用。它们还受限于遵守LLaMA、Vicuna和GPT-4的许可协议。数据集采用CC BY NC 4.0许可(仅允许非商业用途),使用该数据集训练的模型不应用于研究目的之外。

目录

安装

如果您不使用Linux,请勿继续,请参阅macOSWindows的说明。

  1. 克隆此仓库并进入ViP-LLaVA文件夹
cd ViP-LLaVA
  1. 安装包
conda create -n vip-llava python=3.10 -y conda activate vip-llava pip install --upgrade pip # 启用PEP 660支持 pip install -e .
  1. 为训练安装额外的包
pip install -e ".[train]"
pip install flash-attn --no-build-isolation

使用HuggingFace快速开始

<details> <summary>示例代码</summary>
from llava.model.builder import load_pretrained_model from llava.mm_utils import get_model_name_from_path from llava.eval.run_llava import eval_model model_path = "mucai/vip-llava-7b" prompt = "在指向的区域内显示了什么?" image_file = "https://pages.cs.wisc.edu/~mucai/man-cross-street.jpg" args = type('Args', (), { "model_path": model_path, "model_name": get_model_name_from_path(model_path), "query": prompt, "image_file": image_file, "conv_mode": None, "model_base": None, "temperature": 0.2, "top_p": None, "num_beams": 1, "max_new_tokens": 512, "sep": ",", })() eval_model(args)

查看llava/model/builder.py中的load_pretrained_model函数了解详细信息。

你也可以使用llava/eval/run_llava.py中的eval_model函数轻松获得输出。这样,你可以在下载此仓库后直接在Colab上使用此代码。

ViP-LLaVA 权重

请查看我们的模型库获取所有公开的ViP-LLaVA检查点,以及如何使用这些权重的说明。

演示

要运行我们的演示,你需要在本地准备LLaVA检查点。请按照此处的说明下载检查点。

Gradio Web 界面

要在本地启动Gradio演示,请逐个运行以下命令。如果你计划启动多个模型工作进程以比较不同的检查点,你只需启动控制器和Web服务器一次

启动控制器

python -m llava.serve.controller --host 0.0.0.0 --port 10000

启动Gradio Web服务器

python -m llava.serve.gradio_web_server --controller http://localhost:10000 --model-list-mode reload

你刚刚启动了Gradio Web界面。现在,你可以使用屏幕上打印的URL打开Web界面。你可能会注意到模型列表中没有模型。不用担心,因为我们还没有启动任何模型工作进程。当你启动模型工作进程时,它将自动更新。

启动模型工作进程

这是在GPU上执行推理的实际工作进程。每个工作进程负责--model-path中指定的单个模型。

python -m llava.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 40000 --worker http://localhost:40000 --model-path mucai/vip-llava-13b

等待进程完成加载模型,直到看到"Uvicorn running on ..."。现在,刷新Gradio Web界面,你会在模型列表中看到刚刚启动的模型。

你可以启动任意数量的工作进程,并在同一个Gradio界面中比较不同的模型检查点。请保持--controller相同,并为每个工作进程修改--port--worker为不同的端口号。

python -m llava.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port <不同于40000,比如40001> --worker http://localhost:<相应更改,即40001> --model-path <ckpt2>

如果你使用的是带有M1或M2芯片的Apple设备,可以使用--device标志指定mps设备:--device mps

启动模型工作进程(多GPU,当GPU VRAM <= 24GB)

如果你的GPU VRAM小于24GB(例如,RTX 3090、RTX 4090等),你可以尝试使用多个GPU运行。我们的最新代码库会在你有多个GPU时自动尝试使用多个GPU。你可以使用CUDA_VISIBLE_DEVICES指定要使用的GPU。以下是使用前两个GPU运行的示例。

CUDA_VISIBLE_DEVICES=0,1 python -m llava.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 40000 --worker http://localhost:40000 --model-path mucai/vip-llava-13b

启动模型工作进程(4比特、8比特推理,量化)

你可以使用量化位数(4位、8位)来启动模型工作器,这样可以减少GPU内存占用,potentially允许你在只有12GB显存的GPU上运行推理。请注意,使用量化位数进行推理的准确度可能不如全精度模型。只需在你执行的模型工作器命令后附加--load-4bit--load-8bit即可。以下是使用4位量化运行的示例。

python -m llava.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 40000 --worker http://localhost:40000 --model-path mucai/vip-llava-13b --load-4bit

CLI推理

无需Gradio界面即可使用ViP-LLaVA与图像进行对话。它还支持多GPU、4位和8位量化推理。使用4位量化时,对于我们的ViP-LLaVA-7B,在单个GPU上使用不到8GB显存。

python -m llava.serve.cli \ --model-path mucai/vip-llava-7b \ --image-file "https://pages.cs.wisc.edu/~mucai/man-cross-street.jpg" \ --load-4bit

或者使用边界框

python -m llava.serve.cli_vip --model-path ./checkpoints/vip-llava-7b --image-file "https://pages.cs.wisc.edu/~mucai/example_styletransfer.png" --bbox=100,200,200,300
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/c0bfa0aa-844c-42a1-a990-173e58d18f59.gif" width="70%">

训练

ViP-LLaVA训练包括三个阶段:(1) 特征对齐阶段:使用我们的LAION-CC-SBU数据集558K子集来连接冻结的预训练视觉编码器和冻结的LLM;(2) 视觉指令微调阶段:来自LLaVA-1.5的665K图像级指令数据和使用视觉提示的520K区域级指令数据。(3) 在GPT-4V数据上进行微调。

LLaVA在8个A100 GPU(80GB内存)上进行训练。要在较少的GPU上训练,你可以减少per_device_train_batch_size并相应增加gradient_accumulation_steps。始终保持全局批量大小不变:per_device_train_batch_size x gradient_accumulation_steps x num_gpus

超参数

我们在微调中使用了与Vicuna类似的超参数集。预训练和微调中使用的超参数如下所示。

  1. 预训练
超参数全局批量大小学习率轮数最大长度权重衰减
ViP-LLaVA-13B2561e-3120480
  1. 微调
超参数全局批量大小学习率轮数最大长度权重衰减
ViP-LLaVA-13B1282e-5120480

下载Vicuna检查点(自动)

我们的基础模型Vicuna v1.5(一个经过指令微调的聊天机器人)将在运行我们提供的训练脚本时自动下载。无需任何操作。

预训练(特征对齐)

请在这里下载我们在论文中使用的LAION-CC-SBU数据集558K子集(带有BLIP标题)。

ViP-LLaVA-13B的预训练在8个A100(80G)上大约需要5.5小时。ViP-LLaVA-7B大约需要3.5小时。

使用DeepSpeed ZeRO-2的训练脚本:pretrain.sh

  • --mm_projector_type mlp2x_gelu:两层MLP视觉-语言连接器。
  • --vision_tower clip_4layers_336:CLIP ViT-L/14 336px,具有多层特征融合。
<details> <summary>LLaVA-7B在8个V100(32G)上的预训练大约需要20小时</summary>

我们在这里提供了使用DeepSpeed的训练脚本。 提示:

</details>

视觉指令微调

  1. 准备数据 请从阶段2阶段3下载我们指令微调数据的注释,并从以下构成数据集下载图片:

下载完所有数据后,在./playground/data中按如下方式组织数据:

├── flickr30k-images
├── v7w
├── vcr1images
├── coco
│   └── train2017
├── gqa
│   └── images
├── ocr_vqa
│   └── images
├── textvqa
│   └── train_images
└── vg
    ├── VG_100K
    └── VG_100K_2
  1. 开始训练!

您可以从模型库下载我们预训练的投影器。不建议使用旧版投影器,因为它们可能是用不同版本的代码库训练的,如果有任何选项不匹配,模型将无法按预期运行/训练。

在8张A100(80G)上,LLaVA-v1.5-13B的视觉指令微调大约需要40小时。在8张A100(40G)上,LLaVA-v1.5-7B大约需要20小时。

使用DeepSpeed ZeRO-2的训练脚本:finetune_stage2.sh。如果您想进一步使用GPT-4V数据来增强对话能力,请查看使用DeepSpeed ZeRO-2的阶段3训练脚本:finetune_stage3.sh

如果您没有足够的GPU内存:

  • 使用LoRA:finetune_lora.sh。我们能够在8个A100-40G/8个A6000上进行13B的训练,在8个RTX3090上进行7B的训练。确保per_device_train_batch_size*gradient_accumulation_steps与提供的脚本相同,以获得最佳的可复现性。
  • zero3.json替换为zero3_offload.json,它会将一些参数卸载到CPU RAM。这会降低训练速度。

如果您有兴趣将LLaVA模型微调到您自己的任务/数据上,请查看Finetune_Custom_Data.md

评估

ViP-LLaVA在4个学术区域级基准测试和新提出的ViP-Bench上进行了评估。

详见Evaluation.md

引用

如果您发现ViP-LLaVA对您的研究和应用有用,请使用以下BibTeX进行引用:

@inproceedings{cai2024vipllava, author = {Cai, Mu and Liu, Haotian and Mustikovela, Siva Karthik and Meyer, Gregory P. and Chai, Yuning and Park, Dennis and Lee, Yong Jae}, title = {Making Large Multimodal Models Understand Arbitrary Visual Prompts}, booktitle = {IEEE Conference on Computer Vision and Pattern Recognition}, year = {2024} }

致谢

  • Vicuna:我们所基于的语言模型,以及我们的基础模型Vicuna-13B,它具有惊人的语言能力!

  • LLaVa:我们所基于的代码库,它具有惊人的多模态能力!

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多