❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- Free Video-LLM 是一种无需训练的高效视频语言模型,通过提示引导的视觉感知技术,实现了对视频内容的高效理解。
- 主要功能包括高效视频理解、提示引导的视觉感知、时空采样优化等。
- 技术原理涉及提示引导的时间采样和空间采样,减少视觉标记数量,保持高性能。
正文(附运行示例)
Free Video-LLM 是什么
Free Video-LLM 是一种创新的无需训练的高效视频语言模型,基于提示引导的视觉感知技术,实现对视频内容的高效理解。模型利用预训练的图像 LLMs,无需额外训练即可适应视频任务,减少视频帧生成的视觉标记数量,降低计算成本。Free Video-LLM 在多个视频问答基准上展现出与最先进的视频 LLMs 相媲美的性能,显著减少了视觉标记的使用,为视频理解任务提供准确性与计算效率之间的理想平衡。
Free Video-LLM 的主要功能
- 高效视频理解:Free Video-LLM 在不进行额外训练的情况下,直接对视频内容进行理解和推理,适于视频问答等多模态任务。
- 提示引导的视觉感知:基于分析输入提示,模型能识别视频中与任务最相关的时空信息,减少不必要的计算。
- 时空采样优化:模型采用时间帧采样和空间感兴趣区域(RoI)裁剪技术,降低模型处理的视频数据量,提高推理效率。
- 保持高性能:虽然减少了视觉标记的数量,但模型在多个视频问答基准测试中仍保持与现有技术相竞争的性能。
Free Video-LLM 的技术原理
- 提示引导的时间采样:基于与视觉编码器相匹配的文本编码器提取提示特征,计算视频帧特征与提示特征之间的相似度得分,根据得分对视频帧进行采样,选择与任务最相关的帧。
- 提示引导的空间采样(RoI 裁剪):将视频帧的视觉标记重新塑造为空间尺寸,计算每个空间位置的特征向量与提示特征的相似度得分,选择最相关的区域作为 RoI,裁剪出这些区域。
- 减少视觉标记:基于时空采样方法,减少模型需要处理的视觉标记数量,降低计算复杂度。
- 保持性能:虽然减少了视觉标记,但基于精心设计的采样策略,模型能保持或提升视频理解任务的性能。
如何运行 Free Video-LLM
安装
Free Video-LLM 的代码基于 CUDA 11.7,Python >= 3.10.12 和 PyTorch >= 2.1.0 开发。
- 安装依赖项:
bash setup_env.sh
- 添加 OpenAI API 密钥和组织到系统环境变量,以使用 GPT-3.5-turbo 进行模型评估:
export OPENAI_API_KEY=$YOUR_OPENAI_API_KEY
export OPENAI_ORG=$YOUR_OPENAI_ORG # 可选
- 下载预训练的 LLaVA-v1.6 权重,将其放在
FreeVideoLLM文件夹下:
git lfs clone https://huggingface.co/liuhaotian/llava-v1.6-vicuna-7b liuhaotian/llava-v1.6-vicuna-7b
git lfs clone https://huggingface.co/liuhaotian/llava-v1.6-34b liuhaotian/llava-v1.6-34b
数据准备
- 准备基于
IG-VLM的真实问题和答案文件,并将其放在playground/gt_qa_files目录下:
-
MSVD-QA
-
下载
MSVD_QA.csv并重新格式化:
python scripts/data/prepare_msvd_qa_file.py --qa_file $PATH_TO_CSV_FILE
-
MSRVTT-QA
-
下载
MSRVTT_QA.csv并重新格式化:
python scripts/data/prepare_msrvtt_qa_file.py --qa_file $PATH_TO_CSV_FILE
-
TGIF-QA
-
下载
TGIF_FrameQA.csv并重新格式化:
python scripts/data/prepare_tgif_qa_file.py --qa_file $PATH_TO_CSV_FILE
- Activitynet-QA
- 下载
Activitynet_QA.csv并重新格式化:
python scripts/data/prepare_activitynet_qa_file.py --qa_file $PATH_TO_CSV_FILE
- 从官方网站下载原始视频:
- 推荐选项 1:按照
Video-LLaVA中的说明下载原始视频。 - 选项 2:从数据所有者处下载视频:
- 将原始视频组织在
playground/data目录下:
$ FreeVideoLLM/playground/data
├── video_qa
├── MSVD_Zero_Shot_QA
├── videos
├── ...
├── MSRVTT_Zero_Shot_QA
├── videos
├── all
├── ...
├── TGIF_Zero_Shot_QA
├── mp4
├── ...
├── Activitynet_Zero_Shot_QA
├── all_test
├── ...
配置
我们使用 YAML 配置文件来控制设计选择。具体配置参考代码:github.com/contrastive…
推理和评估
FreeVideoLLM 是一个无需训练的方法,因此可以直接进行推理和评估。
默认情况下,我们使用 8 个 GPU 进行模型推理。可以通过修改配置文件中的 CUDA_VISIBLE_DEVICES 来适应您的设置。请注意,FreeVideoLLM-34B 的模型推理需要至少 80G 内存的 GPU。
cd FreeVideoLLM
python run_inference.py --exp_config $PATH_TO_CONFIG_FILE
- 这是可选的,但如果您想抑制警告,可以使用
export PYTHONWARNINGS="ignore"
输出结构
- 推理结果将存储在
outputs/artifacts目录下。 - GPT-3.5-turbo 的中间输出将存储在
outputs/eval_save_dir目录下。 - 评估结果将存储在
outputs/logs目录下。 - 所有这些路径都可以在配置文件中更改。
资源
- GitHub 仓库:github.com/contrastive…
- arXiv 技术论文:arxiv.org/pdf/2410.10…
❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦