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 筆記本與預訓練檢查點。

相關

  • 專案
  • 專案
  • 專案
  • 專案