Free Video-LLM:无需训练的高效视频语言理解模型,展现出与最先进的视频 LLM 相媲美的性能

793 阅读4分钟

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. Free Video-LLM 是一种无需训练的高效视频语言模型,通过提示引导的视觉感知技术,实现了对视频内容的高效理解。
  2. 主要功能包括高效视频理解、提示引导的视觉感知、时空采样优化等。
  3. 技术原理涉及提示引导的时间采样和空间采样,减少视觉标记数量,保持高性能。

正文(附运行示例)

Free Video-LLM 是什么

FreeVideoLLM

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 开发。

  1. 安装依赖项:
bash setup_env.sh
  1. 添加 OpenAI API 密钥和组织到系统环境变量,以使用 GPT-3.5-turbo 进行模型评估:
export OPENAI_API_KEY=$YOUR_OPENAI_API_KEY
export OPENAI_ORG=$YOUR_OPENAI_ORG  # 可选
  1. 下载预训练的 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

数据准备

  1. 准备基于 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. 从官方网站下载原始视频:
  1. 将原始视频组织在 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 目录下。
  • 所有这些路径都可以在配置文件中更改。

资源

  1. GitHub 仓库:github.com/contrastive…
  2. arXiv 技术论文:arxiv.org/pdf/2410.10…

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦