PhysVidBench
已接入
PhysVidBench 在 WorldFoundry 中的资产、runner、指标与限制。
官方参考
| 资源 | 链接 |
|---|---|
| 项目页 | cyberiada.github.io/PhysVidBench |
| 论文 | arXiv:2507.15824 |
| GitHub | github.com/ensanli/PhysVidBenchCode |
| HF 数据集 | Anonymousny/PhysVidBench |
| 仓内 runner | worldfoundry/evaluation/tasks/execution/runners/physvidbench/run_physvidbench_official_runner.py |
简介
PhysVidBench 评估日常 text-to-video 场景中的物理常识。本地源 README 描述了三步流程:根据 prompt 生成视频、为每个视频提取八条 AuroraCap caption track、再用 Gemini 基于这些 caption 回答物理常识问题。
WorldFoundry 已经在 worldfoundry/evaluation/tasks/execution/runners/physvidbench 中包含可运行的 PhysVidBench runner。运行 WorldFoundry 时不要克隆上游代码仓库。完整 prompt/question 数据可以下载 Hugging Face dataset Anonymousny/PhysVidBench;代码执行仍应走仓内 runner。
准备资产
- Prompt/question CSV:仓内 fixture 位于
worldfoundry/data/benchmarks/assets/physvidbench/prompts_questions.csv;可用WORLDFOUNDRY_PHYSVIDBENCH_PROMPT_MANIFEST或--prompt-manifest覆盖。 - Caption tracks:八个文本文件,base name 为
cogvideo2b,suffix 分别为_FP、_OP、_SR、_TD、_AU、_MT、_FM和无 suffix。可用WORLDFOUNDRY_PHYSVIDBENCH_CAPTIONS_DIR、WORLDFOUNDRY_PHYSVIDBENCH_CAPTION_BASE、--captions-dir或--caption-base覆盖。 - 完整数据:超出仓内 fixture 时,使用 HF dataset
Anonymousny/PhysVidBench或你自己物化的 prompt/question CSV。 - 候选视频:将
WORLDFOUNDRY_GENERATED_ARTIFACT_DIR指向生成视频。 - Gemini judge:设置
GEMINI_API_KEY、GOOGLE_API_KEY或WORLDFOUNDRY_PHYSVIDBENCH_GEMINI_API_KEY,并安装google-genai。本地 fixture 检查可设置WORLDFOUNDRY_PHYSVIDBENCH_JUDGE_BACKEND=mock。
生成产物布局
PhysVidBench prompt ID 是数字。生成视频应为 zero-padded 扁平文件:
generated_videos/
0000.mp4
0001.mp4
...覆盖率检查会去掉数字文件名开头的零,因此 0.mp4 和 0000.mp4 都映射到 prompt ID 0。Caption 文件按 PromptID 行号索引,所以每条 caption track 都必须包含足够行数。
用 WorldFoundry 运行
通过公开 CLI 导入已有 PhysVidBench QA 结果 CSV:
worldfoundry-eval zoo benchmark-run \
--benchmark-id physvidbench \
--mode official-validation \
--official-results-path /path/to/output.csv \
--generated-artifact-dir /path/to/generated_videos \
--output-dir tmp/physvidbench/validation \
--json通过公开 CLI 运行仓内 Gemini QA 路径:
export WORLDFOUNDRY_GENERATED_ARTIFACT_DIR=/path/to/generated_videos
export GEMINI_API_KEY=...
worldfoundry-eval zoo benchmark-run \
--benchmark-id physvidbench \
--mode official-run \
--generated-artifact-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
--output-dir tmp/physvidbench/run \
--json直接调用仓内 runner:
export WORLDFOUNDRY_GENERATED_ARTIFACT_DIR=/path/to/generated_videos
export WORLDFOUNDRY_BENCHMARK_OUTPUT_DIR=tmp/physvidbench/direct
export GEMINI_API_KEY=...
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/physvidbench/run_physvidbench_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/physvidbench/run_physvidbench_official_runner.py \
--official-results-path /path/to/output.csv \
--generated-artifact-dir /path/to/generated_videos \
--output-dir tmp/physvidbench/direct-validation \
--json无 Gemini 的本地小规模 fixture 路径:
WORLDFOUNDRY_PHYSVIDBENCH_JUDGE_BACKEND=mock \
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/physvidbench/run_physvidbench_official_runner.py \
--run-official \
--generated-artifact-dir /path/to/generated_videos \
--output-dir tmp/physvidbench/mock \
--json指标
| Metric ID | 含义 |
|---|---|
physical_commonsense_accuracy | 所有 yes/no QA 的总体准确率。 |
affordance_understanding | Object Properties & Affordances 问题准确率。 |
tool_use_consistency | Action & Procedural Understanding 问题准确率。 |
material_property_consistency | Material Interaction & Transformation 问题准确率。 |
temporal_dynamics_consistency | Temporal Dynamics 问题准确率。 |
physvidbench_average | WorldFoundry 主指标。优先取可用类别准确率均值;没有类别 bucket 时使用总体准确率。 |
所有指标都是越高越好,并以 0..1 accuracy 输出。
输出
输出目录包含:
scorecard.json:运行状态、指标、prompt/video 覆盖率、QA backend 与 leaderboard 有效性标记。output.csv:仓内 QA 路径写出,字段包括PromptID、Question、Types、Model_Answer和Match。raw_metric_table.jsonl:每个声明指标一行。per_sample_scores.jsonl:从 QA 结果复制出的 question-level 行。- 通过
worldfoundry-eval zoo benchmark-run调用时,还会写出specialized_normalizer_stdout.log与specialized_normalizer_stderr.log。
限制
- 当前 checkout 中打包的 prompt/caption 资产不是完整 383-prompt benchmark 包;它足够说明和验证接线。完整评测请使用 HF dataset 或显式覆盖文件。
- 仓内 QA runner 消费 captions;它不会对视频运行 AuroraCap。你需要自行准备八条 caption track。
- 默认非 mock backend 需要 Gemini API 权限和
google-genai。 - 完整 leaderboard parity 需要完整 prompt 覆盖、完整 caption tracks、生成视频与归一化 QA 输出。