【大模型系列】Video-LLaVA(2023.12)

在这里插入图片描述

1 Video-LLaVA总结(省流版)

1.1 Video-LLaVA是什么?

Video-LLaVA是北大袁粒团队提出的一个视觉理解模型,是他们之前工作的延申LanguageBind
在这里插入图片描述
核心创新点: 通过将Image和Video特征隐射到一个统一的视觉空间进行对齐,得到统一的visual representation。

当前LLM模型的问题:

  • LLMs as scheduler: 视觉模型被作为即插即用模块,LLM根据特定的任务来schedule(VisualChatGPT、HuggingGPT、MM-REACT、ViperGPT),这些模型不需要端到端训练,也无需对每种模态进行联合和训练和对齐;
  • LLMs as decoder:
    • MiniGPT-4:使用线性投影层将图像与文本对齐;这种对齐很弱且缺乏人类指令反馈;
    • mPLUG-Owl:2阶段:先自回归将图像和文本对齐,再使用人类指令进行微调;
    • InstructBLIP、LLaVA:使用人类指令数据集进行端到端训练;
    • VideoChat、VideoLLaMA:通过联合训练来实现对齐,可同时处理图像和视频。

1.2 Video-LLaVA能干什么?

Video-LLaVA可以实现是视觉理解,即图像、视频问答:
在这里插入图片描述

1.2.1 Image understanding

在这里插入图片描述

1.2.2 Video understanding

在这里插入图片描述

2 Method

在这里插入图片描述

  • LanguageBind [也是他们组的工作]:
    • 能从多种模态(image、video)中提取特征隐射到文本特征的空间;
    • 使用ViT-L/14初始化(OpenCLIP);
    • 参数冻结
  • LLM: Vicuna-7B v1.5;
  • Projection layer: 2 fully connected layers;
  • Word embedding layer: LLaMA;

3 训练细节

  • Stage1 Understanding training:使用question+visual feature作为输入,answer作为gt;
    • 558K LAION-CC-SBU image-text pairs
    • 702k video-text pairs WebVid(Valley)
  • Stage2 Instruction tuning:对话轮数大于1时,需要concat之前所有的对话和回答作为输入;
    • 665k image-text pairs LLaVA v1.5
    • 100k video-text pairs Video-ChatGPT
      在这里插入图片描述

数据处理方式:

  • Image: resize&crop,224x224
  • Video:均匀采样8帧,每帧处理与image一致

每个batch中随机组合image和videos:

  • Stage1: batchsize=256
  • Stage2: batchsize=128

4 相关数据

  • The images pretraining dataset is from LLaVA
  • The images tuning dataset is from LLaVA.
  • The videos pretraining dataset is from Valley
  • The videos tuning dataset is from Video-ChatGPT
DatasetsBaidu DiskSize
Image pretrainingLink25.48G
Image tuningLink66.44G
Video pretrainingLink431.87G
Video tuningLink160.07G

参考资料

[1] LanguageBind
[2] LLaVA
[3] Valley
[4] Video-ChatGPT

### Video-LLaVA部署指南 对于Video-LLaVA项目的部署,首先需要准备环境并安装必要的依赖项。由于该项目涉及多模态处理,即视觉和语言的理解,因此建议按照官方推荐的方式设置开发环境[^2]。 #### 安装依赖库 为了能够顺利运行Video-LLaVA模型,需确保已安装`transformers`库以及其他可能必需的Python包: ```bash !pip install -q transformers ``` 此命令会静默安装来自Hugging Face的Transformers库,它是构建和操作各种自然语言处理(NLP)以及计算机视觉(CV)任务的基础工具之一。 #### 获取预训练模型与配置文件 Video-XL项目通过Hugging Face平台分享了用于视频理解和生成任务的预训练权重及相应脚本。可以利用如下指令来加载这些资源: ```python from huggingface_hub import snapshot_download repo_id = "path_to_video_llava_repo" local_dir = "./model" snapshot_download(repo_id=repo_id, local_dir=local_dir) ``` 这段代码片段展示了如何下载特定仓库中的全部内容到本地指定目录下,其中包含了模型结构定义、参数初始化值等重要组成部分[^1]。 #### 准备推理服务接口 完成上述准备工作之后,下一步就是搭建RESTful API或者其他形式的服务端点以便于外部应用调用。这里提供了一个简单的Flask服务器模板作为参考实现方式: ```python from flask import Flask, request, jsonify import torch from transformers import AutoModelForCausalLM, AutoTokenizer app = Flask(__name__) device = "cuda" if torch.cuda.is_available() else "cpu" tokenizer = AutoTokenizer.from_pretrained("./model") model = AutoModelForCausalLM.from_pretrained("./model").to(device) @app.route('/predict', methods=['POST']) def predict(): input_data = request.json['input'] inputs = tokenizer(input_data, return_tensors="pt").to(device) with torch.no_grad(): outputs = model.generate(**inputs) result = tokenizer.decode(outputs[0], skip_special_tokens=True) return jsonify({"output": result}) if __name__ == '__main__': app.run(host='0.0.0.0', port=8080) ``` 该示例创建了一个基于Flask框架的小型Web应用程序,它接收JSON格式的数据请求,并返回由Video-LLaVA生成的结果字符串。注意,在实际生产环境中应当考虑安全性措施如身份验证机制、输入校验逻辑等方面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值