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_model 與 load_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 筆記本與預訓練檢查點。
相關
- 專案
- 專案
- 專案
- 專案