PhyGround
WorldFoundry 中的 PhyGround:数据布局、分数导入与物理推理指标。
评测内容
PhyGround 评测文本加图像到视频生成的物理合理性。每个 prompt 都包含文本描述和首帧条件图像。视频会按三个通用维度和 13 条物理规律中的适用项评分:
- 通用维度:persistence、physical temporal validity、semantic adherence。
- 固体力学:gravity、inertia、momentum、impenetrability、collision、material。
- 流体动力学:buoyancy、displacement、flow dynamics、boundary interaction、fluid continuity。
- 光学:reflection 和 shadow。
官方 benchmark 使用 1-5 的 ordinal judge scale,共 250 条 prompt。WorldFoundry 导入 PhyGround scores.json,并归一化为本地 scorecard 格式。该 runner 不启动 benchmark-local shell 脚本;judge 执行应通过 WorldFoundry/base-model 路径完成,或者直接提供已有结果产物。
官方参考
| 资源 | 链接 |
|---|---|
| 项目页 | phyground.github.io |
| 论文 | arXiv:2605.10806 |
| GitHub | github.com/NU-World-Model-Embodied-AI/PhyGround |
| HF 数据集 | NU-World-Model-Embodied-AI/phyground |
| PhyJudge 模型 | NU-World-Model-Embodied-AI/phyjudge-9B |
| 仓内 runner | worldfoundry/evaluation/tasks/execution/runners/phyground/run_phyground_official_runner.py |
数据与产物布局
标准本地 data root 如下:
<phyground_data_root>/
prompts/phyground.json
first_images/
videos/<model_id>/
<video_id>.mp4
annotations/仓内 prompt resolver 也接受 data/prompts/phyground.json 和 data/first_images/,与官方项目布局一致。
WorldFoundry 按下面顺序解析 prompts:
--prompt-manifest <path>WORLDFOUNDRY_PHYGROUND_PROMPT_MANIFEST- 内置 benchmark assets
--benchmark-data-root <root>WORLDFOUNDRY_PHYGROUND_DATA_ROOT或WORLDFOUNDRY_BENCHMARK_DATA_ROOT--phyground-root <root>或WORLDFOUNDRY_PHYGROUND_ROOT
每个 prompt 生成一个视频,文件名使用 prompt 的 video 字段。如果 prompt id 是 ball_fall_0001,期望输出是:
<generated_videos>/ball_fall_0001.mp4支持的视频后缀是 .mp4、.mov、.mkv、.webm 和 .avi。覆盖率按文件名 stem 计算。
依赖与分数
HF 数据集是 NU-World-Model-Embodied-AI/phyground,其中包含 prompts/phyground.json 和 first_images/。发布的 judge 模型是 NU-World-Model-Embodied-AI/phyjudge-9B,通常先通过 WorldFoundry/base-model 基础设施或其他兼容 judge 路径得到 scores.json,再由本 runner 导入。
WorldFoundry runner 的完整评分输入可以是:
--official-results-path /path/to/scores.jsonWORLDFOUNDRY_PHYGROUND_RESULTS_PATH=/path/to/scores.json<generated_videos>/scores.json<generated_videos>/phyground_scores.json
支持的命令
先设置候选视频目录;如果用环境变量导入,也设置 scores 文件:
export WORLDFOUNDRY_GENERATED_ARTIFACT_DIR=/path/to/phyground/videos/my_model
export WORLDFOUNDRY_PHYGROUND_RESULTS_PATH=/path/to/scores.json通过公开 CLI 导入已有 PhyGround 分数:
worldfoundry-eval zoo benchmark-run \
--benchmark-id phyground \
--mode official-validation \
--benchmark-data-root /path/to/phyground_data_root \
--official-results-path /path/to/scores.json \
--generated-artifact-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
--prompt-manifest /path/to/phyground.json \
--output-dir tmp/phyground/import \
--json需要使用 runner 专有参数时,例如 --phyground-root、--limit 或 --run-fixture,直接调用 runner:
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/phyground/run_phyground_official_runner.py \
--official-results-path /path/to/scores.json \
--generated-artifact-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
--benchmark-data-root /path/to/phyground_data_root \
--prompt-manifest /path/to/phyground.json \
--output-dir tmp/phyground/import \
--json如果 scores.json 已经与生成视频放在一起,或通过 WORLDFOUNDRY_PHYGROUND_RESULTS_PATH 提供,直接 --run-official 会复制并归一化该文件:
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/phyground/run_phyground_official_runner.py \
--run-official \
--generated-artifact-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
--benchmark-data-root /path/to/phyground_data_root \
--output-dir tmp/phyground/run \
--json导入路径
- Runner:
worldfoundry.evaluation.tasks.execution.runners.phyground.run_phyground_official_runner - 指标:
worldfoundry.evaluation.tasks.execution.runners.phyground.phyground_metrics - Prompt 布局:
worldfoundry.evaluation.tasks.execution.runners.phyground.phyground_prompts - Judge artifact adapter:
worldfoundry.evaluation.tasks.execution.runners.phyground.phyground_runtime - 官方分数聚合:
worldfoundry.evaluation.tasks.execution.runners.phyground.phyground_official_scoring
结果文件格式
推荐输入是 official-style 的 scores.json,包含 results 行:
{
"num_videos": 250,
"general_dimensions": ["SA", "PTV", "persistence"],
"results": [
{
"video": "ball_fall_0001",
"SA": 4,
"PTV": 5,
"persistence": 5,
"physical": {
"laws": {
"gravity": { "score": 4, "status": "scored" }
}
}
}
]
}也接受带 metric_id 和 score 的 summary CSV 行。summary 行中大于 1.0 的分数会按百分制处理并除以 100。
--output-dir 下会写出:
scorecard.json:运行状态、覆盖率、指标表和结果路径。scores.json:使用--run-official时复制到输出目录。raw_metric_table.jsonl:每个声明指标一行。per_sample_scores.jsonl:选取的 per-video judge 字段。
指标
主指标:phyground_overall。本页所有指标都是越高越好。
| Metric | 含义 |
|---|---|
semantic_adherence | 归一化 SA 分数:生成视频是否符合文本 prompt。 |
physical_temporal_validity | 归一化 PTV 分数:物理事件是否按合理时间顺序发生。 |
persistence | 归一化物体持久性分数:身份、形状和存在性是否随时间保持稳定。 |
solid_body_score | 适用固体力学规律的聚合分数。 |
fluid_dynamics_score | 适用流体动力学规律的聚合分数。 |
optics_score | 适用反射与阴影规律的聚合分数。 |
phyground_overall | 可用通用分数和物理分域分数的均值。 |