google-deepmind/videoprism

Official repository for "VideoPrism: A Foundational Visual Encoder for Video Understanding" (ICML 2024)

VideoPrism – 通用视频编码器

是什么 – VideoPrism 是一种面向视频的类基础视觉编码器。它是一个 JAX/Flax 模型,能够将原始视频片段转换为丰富的时空嵌入,并且还附带一个配对的视频-文本编码器,用于跨模态检索及相关任务。

为何重要 – 作者在庞大的混合数据集上预训练了该模型(10 亿张图像-文本对、3600 万条高质量视频-文本对,以及 5.82 亿条噪声视频片段)。仅使用单一冻结的骨干网络,就在 33 个公开视频理解基准中的 31 个上取得了最先进(SOTA)的结果,涵盖分类、检索、定位、字幕生成和问答任务。

如何使用 – 安装包后(pip install .),可使用辅助函数 videoprism.models.get_modelload_pretrained_weights 加载检查点。README 提供了两个简短的代码片段:

import jax
from videoprism import models as vp

# 仅视频编码器
model = vp.get_model('videoprism_public_v1_base')
state = vp.load_pretrained_weights('videoprism_public_v1_base')

@jax.jit
def encode(video):
    return model.apply(state, video, train=False)

对于视频-文本版本,还需加载 SentencePiece 分词器(c4_en),并同时传入视频张量和分词后的文本。

预建演示 – 仓库附带三个 Colab 笔记本,逐步演示:

  • 视频编码器演示 – 原始视频 → 令牌嵌入。
  • 视频-文本编码器演示 – 计算联合视频-文本嵌入以实现零样本检索。
  • 视频分类演示 – 在冻结的骨干网络上微调一个轻量级头部。

已发布的模型 – 四个检查点系列已在 Hugging Face 上提供:

变体 大小 参数量 典型输入 检查点
VideoPrism‑B(基础) 458 MB 114 M 16帧,288×288 视频片段 videoprism-base-f16r288
VideoPrism‑L(大型) 1.42 GB 354 M 8帧,288×288 视频片段 videoprism-large-f8r288
VideoPrism‑LvT‑B(视频-文本基础) 991 MB 248 M videoprism-lvt-base-f16r288
VideoPrism‑LvT‑L(视频-文本大型) 2.30 GB 580 M videoprism-lvt-large-f8r288

性能亮点(冻结骨干)

  • VideoGLUE(分类、动作检测等) – VideoPrism‑L 在 Kinetics‑400 上达到 85.0 %,在 AVA‑K 上达到 34.5 %,超越了之前的 SOTA。
  • 零样本视频-文本检索 – VideoPrism‑LvT‑L 在 VATEX(视频→文本)上达到 75.0 % 的 recall@1,在 VATEX(文本→视频)上达到 57 %。
  • 零样本视频分类 – VideoPrism‑LvT‑L 在 K400 上达到 72.4 %,超越了早期基线。

路线图 – 列出的唯一 TODO 是增加 PyTorch 支持,这将使模型在 JAX 生态系统之外更具可访问性。

许可与免责声明 – 代码采用 Apache 2.0 许可;模型权重及其他资产采用 CC‑BY 许可。仓库注明此项目为 非 Google 官方产品


总结 – VideoPrism 为研究者提供了一个即用型、高容量的视频编码器(以及视频-文本变体),可轻松集成到下游任务中,且仅需极少微调,同时附带清晰的 Colab 笔记本和预训练检查点。

相关

  • 项目
  • 项目
  • 项目
  • 项目