VideoPhy
面向 text-to-video 生成物理常识的评测,包含仓内 prompts、VideoCon-Physics runtime 和可运行命令。
官方参考
| 资源 | 链接 |
|---|---|
| 项目页 | videophy.github.io |
| 论文 | arXiv:2406.03520 |
| GitHub | github.com/Hritikbansal/videophy |
| HF 测试集 | videophysics/videophy_test_public |
| VideoCon-Physics | videophysics/videocon_physics |
| 仓内 runner | worldfoundry/evaluation/tasks/execution/runners/videophy/run_videophy_official_runner.py |
简介
VideoPhy 评估 text-to-video 模型生成的视频是否同时满足输入 caption 和日常物理常识。它包含 688 条 captions,覆盖 solid-solid、solid-fluid、fluid-fluid 等真实材料交互。原论文指出,很多强 T2V 模型的问题并不只是画质,而是没有正确呈现动作、违反直觉物理,或者两者同时发生。
WorldFoundry 已经把 VideoPhy 评测链路集成在仓内。prompt manifest、metric 计算、VideoCon-Physics 调用、scorecard 写出和已有结果导入都在 worldfoundry/evaluation/tasks/execution/runners/videophy;可复用的 VideoCon-Physics 推理代码在 worldfoundry/base_models/llm_mllm_core/mllm/videocon_physics。
官方参考:
- Project page: videophy.github.io
- Paper: arXiv:2406.03520
- Test dataset: videophysics/videophy_test_public
- Train dataset: videophysics/videophy_train_public
- VideoCon-Physics weights: videophysics/videocon_physics
- 仓内 runner:
worldfoundry/evaluation/tasks/execution/runners/videophy/run_videophy_official_runner.py
评测协议
WorldFoundry 使用仓内 prompt manifest:
worldfoundry/data/benchmarks/assets/videophy/prompts.json这个 manifest 包含用于生成和 coverage 统计的 688 条官方 captions 与 prompt IDs。每个候选模型需要为每条 prompt 生成一个视频。期望文件名是:
<prompt_id>.mp4完整 benchmark 套件下,生成产物目录应包含 1.mp4 到 688.mp4。
主指标是 videophy_average。
| Metric | 含义 |
|---|---|
semantic_adherence | evaluator 判断生成视频符合输入 caption 的 prompt 比例(SA=1)。 |
physical_commonsense | 视频被判断符合物理常识的 prompt 比例(PC=1)。 |
joint_score | semantic adherence 和 physical commonsense 同时通过的 prompt 比例。 |
videophy_average | semantic-adherence 与 physical-commonsense 通过率的均值。 |
VideoCon-Physics 内部会跑两次 entailment-style 推理:一次评估 semantic adherence,一次评估 physical commonsense。runner 会把逐视频预测合并成上面的指标。
数据与权重准备
从 WorldFoundry 仓库根目录开始:
cd "$WORLDFOUNDRY_REPO_ROOT"
export WORLDFOUNDRY_VIDEOPHY_PROMPT_MANIFEST="$PWD/worldfoundry/data/benchmarks/assets/videophy/prompts.json"通过 Hugging Face 下载 VideoCon-Physics checkpoint:
export WORLDFOUNDRY_VIDEOPHY_VIDEOCON_CKPT=/path/to/checkpoints/videocon_physics
hf download videophysics/videocon_physics \
--local-dir "${WORLDFOUNDRY_VIDEOPHY_VIDEOCON_CKPT}"如果需要对照官方发布的 test videos、annotations 或 train split,可以单独下载 dataset:
hf download videophysics/videophy_test_public \
--repo-type dataset \
--local-dir /path/to/datasets/videophy_test_public
hf download videophysics/videophy_train_public \
--repo-type dataset \
--local-dir /path/to/datasets/videophy_train_public复现 leaderboard 只需要 688 条 prompts、候选模型生成的视频,以及 VideoCon-Physics checkpoint。训练 VideoCon-Physics 是可选研究流程;如果你自己训练或微调了替代 evaluator,把 checkpoint 目录通过 --videocon-checkpoint 传入即可。
生成候选视频
用 text-to-video 候选模型跑 WORLDFOUNDRY_VIDEOPHY_PROMPT_MANIFEST 里的 captions,然后把输出按下面的结构放到同一个目录:
/path/to/videophy/generated_videos/
1.mp4
2.mp4
...
688.mp4评分前设置生成产物目录:
export WORLDFOUNDRY_GENERATED_ARTIFACT_DIR=/path/to/videophy/generated_videos候选模型推理是 model-specific 的。对于 WorldFoundry 已集成的生成模型,使用对应 synthesis 入口或模型页面流程,然后把每个 prompt ID 的最终视频导出到上面的 layout。
运行 VideoCon-Physics 评分
运行仓内 VideoPhy official path:
cd "$WORLDFOUNDRY_REPO_ROOT"
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/videophy/run_videophy_official_runner.py \
--run-official \
--prompt-manifest "${WORLDFOUNDRY_VIDEOPHY_PROMPT_MANIFEST}" \
--generated-artifact-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
--videocon-checkpoint "${WORLDFOUNDRY_VIDEOPHY_VIDEOCON_CKPT}" \
--batch-size "${WORLDFOUNDRY_VIDEOPHY_BATCH_SIZE:-1}" \
--num-frames "${WORLDFOUNDRY_VIDEOPHY_NUM_FRAMES:-32}" \
--output-dir tmp/videophy/official-run \
--strict \
--json复现官方 leaderboard-style 套件时保留 --strict,这样缺少 688 个预期视频中的任何一个都会失败。部分 research run 可以去掉 --strict;scorecard 仍会报告视频覆盖情况。
常用 runtime 变量:
export WORLDFOUNDRY_VIDEOPHY_BATCH_SIZE=1
export WORLDFOUNDRY_VIDEOPHY_NUM_FRAMES=32
export WORLDFOUNDRY_VIDEOPHY_VIDEOCON_PYTHON="${WORLDFOUNDRY_UNIFIED_PYTHON:-python}"
export WORLDFOUNDRY_VIDEOPHY_SA_THRESHOLD=0.5
export WORLDFOUNDRY_VIDEOPHY_PC_THRESHOLD=0.5导入已有结果
如果你已经有 VideoPhy 结果 JSON/CSV,里面包含逐样本 sa、pc 字段,或者有 metric IDs 和 scores 的 summary CSV,可以用同一个 runner 导入:
cd "$WORLDFOUNDRY_REPO_ROOT"
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/videophy/run_videophy_official_runner.py \
--official-results-path /path/to/videophy_results.json \
--prompt-manifest "${WORLDFOUNDRY_VIDEOPHY_PROMPT_MANIFEST}" \
--generated-artifact-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
--output-dir tmp/videophy/imported \
--json也可以通过统一 benchmark 入口导入已有结果:
worldfoundry-eval zoo benchmark-run \
--benchmark-id videophy \
--mode official-validation \
--official-results-path /path/to/videophy_results.json \
--generated-artifact-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
--output-dir tmp/videophy/official-validation \
--json输出文件
运行会写出:
scorecard.json: WorldFoundry 统一 scorecard,包含semantic_adherence、physical_commonsense、joint_score和videophy_average。videophy_results.json: 使用--run-official时合并后的逐 prompt VideoCon-Physics 结果 JSON。raw_metric_table.jsonl: scorecard 使用的 metric rows。per_sample_scores.jsonl: 逐 prompt 的 SA/PC/joint 结果。videocon_physics_inputs/: 自动生成的 semantic-adherence 和 physical-commonsense CSV 输入。videocon_physics_outputs/: VideoCon-Physics 原始 CSV 输出。logs/: VideoCon-Physics stdout/stderr 日志。