PhyGenBench
PhyGenBench 在 WorldFoundry 中的资产、runner、指标与限制。
官方参考
| 资源 | 链接 |
|---|---|
| 项目页 | phygenbench123.github.io |
| 论文 | arXiv:2410.05363 |
| GitHub | github.com/OpenGVLab/PhyGenBench |
| 仓内 runner | worldfoundry/evaluation/tasks/execution/runners/phygenbench/run_phygenbench_official_runner.py |
简介
PhyGenBench 用 160 条 prompt 评估 text-to-video 物理常识,覆盖 27 条物理规律与四个物理领域。本地源 README 将 PhyGenEval 描述为分阶段 evaluator:关键物理现象检查、顺序验证、整段视频自然性评分。
WorldFoundry 已经在 worldfoundry/evaluation/tasks/execution/runners/phygenbench 中包含可运行的 PhyGenBench 代码。PhyGenEval/overall.py 这类 runtime 代码保留在 runner 中,prompt/question 资产放在 worldfoundry/data/benchmarks/assets/phygenbench。运行 WorldFoundry 时不要克隆上游仓库。选择完整上游风格 judge 路径时,可以下载 Hugging Face judge checkpoint;benchmark 代码仍使用仓内实现。
准备资产
- Prompt suite:仓内路径为
worldfoundry/data/benchmarks/assets/phygenbench/PhyGenBench/prompts.json。 - 可选 prompt 覆盖:传入
--prompt-manifest或设置WORLDFOUNDRY_PHYGENBENCH_PROMPT_MANIFEST。 - 候选视频:将
WORLDFOUNDRY_GENERATED_ARTIFACT_DIR指向生成视频目录。 - 已有结果导入:传入
--official-results-path或设置WORLDFOUNDRY_PHYGENBENCH_RESULTS_PATH。metric loader 接受 JSON、JSONL、CSV 和 YAML-like official dimension rows。 - 完整 judge 资产:README 提到分阶段 evaluator 需要 VQAScore / CLIP-FlanT5、GPT-4o 或 LLaVA-Interleave、InternVideo2。WorldFoundry 不随包提供这些模型权重或 API 凭据。
生成产物布局
期望的生成视频是按 prompt index 命名的扁平文件:
generated_videos/
output_video_1.mp4
output_video_2.mp4
...
output_video_160.mp4覆盖率检查也接受 1.mp4 这样的纯数字 stem;不过 WorldFoundry model run 物化时会复制为 output_video_{id}.mp4。
用 WorldFoundry 运行
通过公开 CLI 导入已有 PhyGenEval 结果文件:
worldfoundry-eval zoo benchmark-run \
--benchmark-id phygenbench \
--mode official-validation \
--official-results-path /path/to/phygenbench_results.json \
--generated-artifact-dir /path/to/generated_videos \
--output-dir tmp/phygenbench/validation \
--json通过公开 CLI 运行仓内评分包装器。默认使用确定性的本地 fixture backend;只有在按 overall.py 期望位置准备好分阶段 PhyGenEval 输出后,才设置 WORLDFOUNDRY_PHYGENBENCH_JUDGE_BACKEND=official:
export WORLDFOUNDRY_GENERATED_ARTIFACT_DIR=/path/to/generated_videos
worldfoundry-eval zoo benchmark-run \
--benchmark-id phygenbench \
--mode official-run \
--generated-artifact-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
--output-dir tmp/phygenbench/run \
--json直接调用仓内 runner:
export WORLDFOUNDRY_GENERATED_ARTIFACT_DIR=/path/to/generated_videos
export WORLDFOUNDRY_BENCHMARK_OUTPUT_DIR=tmp/phygenbench/direct
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/phygenbench/run_phygenbench_official_runner.py \
--run-official \
--generated-artifact-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
--output-dir "${WORLDFOUNDRY_BENCHMARK_OUTPUT_DIR}" \
--json直接导入结果:
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/phygenbench/run_phygenbench_official_runner.py \
--official-results-path /path/to/phygenbench_results.json \
--generated-artifact-dir /path/to/generated_videos \
--output-dir tmp/phygenbench/direct-validation \
--json指标
| Metric ID | 含义 |
|---|---|
physical_commonsense | 可用 PhyGenEval 单帧、多帧、视频阶段物理 plausibility 分数的均值。 |
physical_law_adherence | 单帧与多帧检查对 prompt 中物理规律遵守情况的均值。 |
semantic_adherence | 结果行中的语义对齐分;没有单独语义分时使用 video-stage 分数。 |
phygenbench_average | WorldFoundry 主指标。有显式 average 字段时直接使用;否则在三个组件都可用时取均值。 |
所有分数都是越高越好。0..3 阶段分、0..5 语义分和百分制结果都会归一化到 0..1。
输出
输出目录包含:
scorecard.json:运行状态、指标表、覆盖率、所选 backend 与 leaderboard 有效性标记。raw_metric_table.jsonl:每个声明指标一行。per_sample_scores.jsonl:可用时写出包含阶段分的 prompt 级结果。phygenbench_results.json:仓内评分包装器写出的结果。- 通过
worldfoundry-eval zoo benchmark-run调用时,还会写出specialized_normalizer_stdout.log与specialized_normalizer_stderr.log。
限制
- 默认本地 backend 是用于集成验证的确定性 fixture scoring,不是 leaderboard 结果。
- 完整 PhyGenBench parity 需要 160 条 prompt 的生成视频,以及 VQAScore、顺序验证、视频自然性 judge 输出。
- 仓内
officialbackend 会调度打包的PhyGenEval/overall.py,但它期望上游风格的中间结果文件已经存在。 - 除非完整 judge stack 与 prompt 覆盖率都齐备,
leaderboard_valid会保持 false。