T2V-CompBench
面向 compositional text-to-video 的 benchmark,包含七类仓内 evaluator 与可运行 CSV/import 流程。
简介
T2V-CompBench 是 CVPR 2025 的 compositional text-to-video benchmark。它测试生成视频是否能把正确属性绑定到正确物体、保持动态属性变化、满足空间关系、正确绑定运动和动作、建模物体交互,以及生成指定数量的物体。官方 prompt suite 包含 1,400 条 prompts,分为七类,每类 200 条。
WorldFoundry 已经把官方评测脚本集成在仓内。runner 是 worldfoundry/evaluation/tasks/execution/runners/t2v_compbench/run_t2v_compbench_official_runner.py;vendored runtime code 是 worldfoundry/evaluation/tasks/execution/runners/t2v_compbench/runtime/t2v_compbench;prompt 和 metadata 资产放在 worldfoundry/data/benchmarks/assets/t2v-compbench。
官方参考:
- Project page: t2v-compbench-2025.github.io
- Paper: arXiv:2407.14505
- Leaderboard: Kaiyue/T2V-CompBench_Leaderboard
- Released videos dataset: Kaiyue/T2V-CompBench-Videos
- Official source reference: KaiyueSun98/T2V-CompBench
评测协议
主指标是 t2v_compbench_average。
| Metric | Evaluator family | 视频子目录 |
|---|---|---|
consistent_attribute_binding | MLLM | consistent_attr/ |
dynamic_attribute_binding | MLLM | dynamic_attr/ |
spatial_relationships | Detection + depth | spatial_relationships/ |
motion_binding | Segmentation + DOT tracking | motion_binding/ |
action_binding | MLLM | action_binding/ |
object_interactions | MLLM | interaction/ |
generative_numeracy | Detection | generative_numeracy/ |
t2v_compbench_average | Aggregate | 可用 category 分数的均值。 |
每个 category 需要 200 个生成视频,命名方式跟官方 prompts 对齐:
/path/to/t2v-compbench/videos/
consistent_attr/
0001.mp4
...
0200.mp4
dynamic_attr/
0001.mp4
...
spatial_relationships/
motion_binding/
action_binding/
interaction/
generative_numeracy/runner 也接受官方 dataset 中常见的 alias,比如 consistent_attr_1、dynamic_attr_2、spatial_3、motion_4、interaction_6 和 numeracy_7。
数据与权重准备
从 WorldFoundry 仓库根目录开始:
cd /path/to/WorldFoundry
export WORLDFOUNDRY_T2V_COMPBENCH_ASSETS="$PWD/worldfoundry/data/benchmarks/assets/t2v-compbench"
export WORLDFOUNDRY_T2V_COMPBENCH_ROOT="$PWD/worldfoundry/evaluation/tasks/execution/runners/t2v_compbench/runtime/t2v_compbench"如果需要官方对照资产,可以下载 released reference video dataset:
hf download Kaiyue/T2V-CompBench-Videos \
--repo-type dataset \
--local-dir /path/to/datasets/T2V-CompBench-Videos
export WORLDFOUNDRY_T2V_COMPBENCH_DATASET_ROOT=/path/to/datasets/T2V-CompBench-Videos准备 metric model checkpoints:
export WORLDFOUNDRY_T2V_COMPBENCH_LLAVA_MODEL_PATH=/path/to/llava-v1.6-34b
export WORLDFOUNDRY_T2V_COMPBENCH_GROUNDINGDINO_CKPT=/path/to/groundingdino_swint_ogc.pth
export WORLDFOUNDRY_T2V_COMPBENCH_SAM_CKPT=/path/to/sam_vit_h_4b8939.pth对于 motion_binding,把官方 DOT script 需要的 DOT checkpoints 放到:
worldfoundry/evaluation/tasks/execution/runners/t2v_compbench/runtime/t2v_compbench/dot/checkpoints/LLaVA、GroundingDINO、SAM、depth 和 DOT 的代码路径复用 WorldFoundry base-model packages,不需要外部 source tree。checkpoint 文件仍然可以按需要下载或本地 staged。
生成候选视频
使用 WORLDFOUNDRY_T2V_COMPBENCH_ASSETS/prompts/ 下的 prompt files 跑候选 text-to-video 模型。把输出放到上面的 category layout,然后设置:
export WORLDFOUNDRY_T2V_COMPBENCH_VIDEO_ROOT=/path/to/t2v-compbench/videos
export WORLDFOUNDRY_T2V_COMPBENCH_MODEL_NAME=my_t2v_model候选模型推理和训练是 model-specific 的。对于 WorldFoundry 已集成的生成模型,使用对应 synthesis workflow 跑每个 category prompt file,然后把最终视频导出到期望的 category 文件夹。
运行 Category Scoring
运行一个 MLLM category:
cd /path/to/WorldFoundry
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/t2v_compbench/run_t2v_compbench_official_runner.py \
--video-root "${WORLDFOUNDRY_T2V_COMPBENCH_VIDEO_ROOT}" \
--dataset-root "${WORLDFOUNDRY_T2V_COMPBENCH_DATASET_ROOT}" \
--model-name "${WORLDFOUNDRY_T2V_COMPBENCH_MODEL_NAME}" \
--category consistent_attribute_binding \
--llava-model-path "${WORLDFOUNDRY_T2V_COMPBENCH_LLAVA_MODEL_PATH}" \
--output-dir tmp/t2v-compbench/consistent-attribute \
--json运行一个 detection/depth category:
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/t2v_compbench/run_t2v_compbench_official_runner.py \
--video-root "${WORLDFOUNDRY_T2V_COMPBENCH_VIDEO_ROOT}" \
--dataset-root "${WORLDFOUNDRY_T2V_COMPBENCH_DATASET_ROOT}" \
--model-name "${WORLDFOUNDRY_T2V_COMPBENCH_MODEL_NAME}" \
--category spatial_relationships \
--grounded-checkpoint "${WORLDFOUNDRY_T2V_COMPBENCH_GROUNDINGDINO_CKPT}" \
--sam-checkpoint "${WORLDFOUNDRY_T2V_COMPBENCH_SAM_CKPT}" \
--device cuda \
--output-dir tmp/t2v-compbench/spatial \
--json使用必要的 two-stage path 运行 motion binding:
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/t2v_compbench/run_t2v_compbench_official_runner.py \
--video-root "${WORLDFOUNDRY_T2V_COMPBENCH_VIDEO_ROOT}" \
--dataset-root "${WORLDFOUNDRY_T2V_COMPBENCH_DATASET_ROOT}" \
--model-name "${WORLDFOUNDRY_T2V_COMPBENCH_MODEL_NAME}" \
--category motion_binding \
--run-motion-two-stage \
--grounded-checkpoint "${WORLDFOUNDRY_T2V_COMPBENCH_GROUNDINGDINO_CKPT}" \
--sam-checkpoint "${WORLDFOUNDRY_T2V_COMPBENCH_SAM_CKPT}" \
--device cuda \
--output-dir tmp/t2v-compbench/motion \
--json所有资产和 metric 依赖都准备好后,可以运行完整套件:
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/t2v_compbench/run_t2v_compbench_official_runner.py \
--video-root "${WORLDFOUNDRY_T2V_COMPBENCH_VIDEO_ROOT}" \
--dataset-root "${WORLDFOUNDRY_T2V_COMPBENCH_DATASET_ROOT}" \
--model-name "${WORLDFOUNDRY_T2V_COMPBENCH_MODEL_NAME}" \
--category all \
--run-motion-two-stage \
--llava-model-path "${WORLDFOUNDRY_T2V_COMPBENCH_LLAVA_MODEL_PATH}" \
--grounded-checkpoint "${WORLDFOUNDRY_T2V_COMPBENCH_GROUNDINGDINO_CKPT}" \
--sam-checkpoint "${WORLDFOUNDRY_T2V_COMPBENCH_SAM_CKPT}" \
--device cuda \
--output-dir tmp/t2v-compbench/official-run \
--json导入已有 CSV 结果
官方 leaderboard submission 是一个 folder 或 zip,里面最多包含八个 CSV 文件:
my_t2v_model_consistent_attr_score.csv
my_t2v_model_dynamic_attr_score.csv
my_t2v_model_spatial_score.csv
my_t2v_model_motion_score.csv
my_t2v_model_motion_back_fore.csv
my_t2v_model_action_binding_score.csv
my_t2v_model_object_interactions_score.csv
my_t2v_model_numeracy_video.csv将这些 CSV 转成 WorldFoundry scorecard:
cd /path/to/WorldFoundry
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/t2v_compbench/run_t2v_compbench_official_runner.py \
--csv-dir /path/to/t2v-compbench/eval_results_csv \
--video-root "${WORLDFOUNDRY_T2V_COMPBENCH_VIDEO_ROOT}" \
--dataset-root "${WORLDFOUNDRY_T2V_COMPBENCH_DATASET_ROOT}" \
--model-name "${WORLDFOUNDRY_T2V_COMPBENCH_MODEL_NAME}" \
--output-dir tmp/t2v-compbench/imported \
--json输出文件
运行会写出:
scorecard.json: WorldFoundry 统一 scorecard,包含七类 category metrics 和t2v_compbench_average。raw_metric_table.jsonl: 归一化后的 metric rows。per_sample_scores.jsonl: 当 category CSV 可解析时写出逐视频结果。leaderboard_csv_manifest.json: 发现到的官方 CSV 文件和 checksum。generated_video_manifest.json: category 视频覆盖情况。dataset_manifest.json: 本地 reference dataset summary。upstream_stdout.logandupstream_stderr.log: 仓内 category scripts 日志。
Leaderboard 说明
T2V-CompBench 在 Kaiyue/T2V-CompBench_Leaderboard 维护 live leaderboard。提交 zip 时最多包含八个 CSV:
<model>_consistent_attr_score.csv
<model>_dynamic_attr_score.csv
<model>_spatial_score.csv
<model>_motion_score.csv
<model>_motion_back_fore.csv
<model>_action_binding_score.csv
<model>_object_interactions_score.csv
<model>_numeracy_video.csv上游论文在七个 compositional category 上评测了 17 个开源和 6 个商业 T2V 系统。每个 category 期望 200 个视频;leaderboard 后端会排除得分行数不足 200 的 category。每个 category 的最终 CSV 末行必须以 score: 或 Score: 开头。
WorldFoundry 的 t2v_compbench_average 是本地 scorecard 中可用 category 分数的均值。当前排名请以 live leaderboard 为准。
已知限制
- 完整 metric 重算很重:MLLM category 需要 LLaVA-v1.6-34b,detection category 需要 GroundingDINO + SAM + depth 资产,
motion_binding还需要两阶段 GroundingSAM + DOT pipeline。 - 官方默认分支是
V2;prompt schema/version 必须与仓内 bundled assets 一致。 - 被跳过或因 safety 过滤未生成的视频不会进入 category CSV,也不会计入 leaderboard 平均。
- WorldFoundry 可以立即归一化已有 CSV export;端到端 category 执行仍依赖 staged checkpoints 和
WORLDFOUNDRY_T2V_COMPBENCH_VIDEO_ROOT下的生成视频。