PhyGenBench

已接入

PhyGenBench 在 WorldFoundry 中的资产、runner、指标与限制。

本页内容

官方参考

资源链接
项目页phygenbench123.github.io
论文arXiv:2410.05363
GitHubgithub.com/OpenGVLab/PhyGenBench
仓内 runnerworldfoundry/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_averageWorldFoundry 主指标。有显式 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.logspecialized_normalizer_stderr.log

限制

  • 默认本地 backend 是用于集成验证的确定性 fixture scoring,不是 leaderboard 结果。
  • 完整 PhyGenBench parity 需要 160 条 prompt 的生成视频,以及 VQAScore、顺序验证、视频自然性 judge 输出。
  • 仓内 official backend 会调度打包的 PhyGenEval/overall.py,但它期望上游风格的中间结果文件已经存在。
  • 除非完整 judge stack 与 prompt 覆盖率都齐备,leaderboard_valid 会保持 false。

返回 Benchmark Hub