DEVIL Dynamics

已接入

DEVIL Dynamics 的资产准备、环境要求与 WorldFoundry 可运行命令。

本页内容

简介

DEVIL Dynamics 从 dynamics 角度评估 text-to-video 生成结果。它补充普通时序一致性评测,重点检查视频是否真的产生了运动、运动是否符合 prompt 指定的动态等级,以及运动是否自然可信。

WorldFoundry 已经把 DEVIL 测评代码放在仓内:worldfoundry/evaluation/tasks/execution/runners/devil_dynamics/。运行这个 benchmark 不需要官方源码仓库副本。

Prompt Suite

官方 prompt 文本已经随 WorldFoundry 放在:

worldfoundry/data/benchmarks/assets/devil-dynamics/prompts/
  static/
  low/
  medium/
  high/
  very_high/

对每条 prompt 生成一个视频,并保留 DEVIL 的动态等级文件名前缀。例如:

static_1.mp4
low_12.mp4
medium_37.mp4
high_88.mp4
very_high_123.mp4

生成视频目录可以是扁平目录,也可以有子目录;runner 会递归查找 .mp4

必需资产

先把 WORLDFOUNDRY_GENERATED_ARTIFACT_DIR 指向生成视频目录。

完整重算指标时,需要准备以下 ckpt 和 API:

资产环境变量或参数说明
DEVIL regression modelWORLDFOUNDRY_DEVIL_REGRESSION_CKPT--regression-ckpt通常是 DEVIL model_weights 里的 linear_regress_model.pth
RAFT ThingsWORLDFOUNDRY_DEVIL_RAFT_CKPT / WORLDFOUNDRY_RAFT_THINGS_CKPT--raft-ckpt可复用 WorldFoundry 的 RAFT base model 资产。
OpenAI CLIP ViT-L/14WORLDFOUNDRY_DEVIL_CLIP_VIT_L14_PT / WORLDFOUNDRY_VBENCH_CLIP_VIT_L14_PT--clip-vit-l14用于 dynamics scoring。
OpenAI CLIP ViT-B/32WORLDFOUNDRY_DEVIL_CLIP_VIT_B32_PT / WORLDFOUNDRY_VBENCH_CLIP_VIT_B32_PT--clip-vit-b32用于 quality scoring。
ViCLIPWORLDFOUNDRY_DEVIL_VICLIP_CKPT / WORLDFOUNDRY_VBENCH_VICLIP_CKPT--viclip-ckpt复用 VBench ViCLIP 资产。
DINOv2 ViT-L/14WORLDFOUNDRY_DEVIL_DINOV2_VITL14_CKPT / WORLDFOUNDRY_WBENCH_MEGASAM_DINOV2_CKPT--dinov2-vitl14-ckpt用于 segment-level dynamics。
timm DINO ViT-S/16WORLDFOUNDRY_DEVIL_TIMM_DINO_CKPT--timm-dino-ckpt如果 timm 能从缓存或下载拿到 pretrained weights,可以不单独设置;离线复现建议显式设置。
DINO ViT-B/16WORLDFOUNDRY_DEVIL_DINO_VITB16_CKPT / WORLDFOUNDRY_VBENCH_DINO_VITB16_CKPT--dino-vitb16-ckpt使用 WorldFoundry 仓内 DINO shim。
AMT-S config/checkpointWORLDFOUNDRY_DEVIL_AMT_CONFIGWORLDFOUNDRY_DEVIL_AMT_CKPT 或命令行参数config 默认可使用 WorldFoundry 仓内 AMT-S config。
Naturalness judgeWORLDFOUNDRY_DEVIL_GEMINI_API_KEY / GEMINI_API_KEY--gemini-api-key如果传入 --naturalness-path,则不需要 API。

如果你已经准备好了官方 DEVIL model_weights 目录,也可以设置 WORLDFOUNDRY_DEVIL_MODEL_WEIGHTS_DIR 或传 --model-weights-dir。runner 会在里面查找常见文件名,例如 linear_regress_model.pthraft-things.pthViT-L-14.ptViT-B-32.ptViClip-InternVid-10M-FLT.pthdinov2_vitl14_pretrain.pthdino_vitbase16_pretrain.pthAMT-S.yamlamt-s.pth

Python 环境需要包含 DEVIL 使用的视频指标依赖,包括 torchtorchvisiontimmdecordopencv-pythonclipeasydictscikit-imagepytorch-msssimpiqaimagehashpandasopenpyxlprettytableomegaconfgoogle-generativeai。Temporal information 组件还需要系统命令 ffmpegffprobebc

完整评测

通过 WorldFoundry runner 调用仓内 official runtime:

export WORLDFOUNDRY_GENERATED_ARTIFACT_DIR=/path/to/devil/generated-videos
export WORLDFOUNDRY_DEVIL_MODEL_WEIGHTS_DIR=/path/to/devil/model_weights
export GEMINI_API_KEY=...

PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
  worldfoundry/evaluation/tasks/execution/runners/devil_dynamics/run_devil_dynamics_official_runner.py \
  --run-official \
  --generated-video-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
  --model-weights-dir "${WORLDFOUNDRY_DEVIL_MODEL_WEIGHTS_DIR}" \
  --num-gpus 8 \
  --output-dir tmp/devil-dynamics/full-run \
  --json

--num-gpus 改成你的机器数量即可;单卡就使用 --num-gpus 1

如果 Gemini naturalness 已经提前算好,可以传入 xlsx,跳过 API 调用:

PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
  worldfoundry/evaluation/tasks/execution/runners/devil_dynamics/run_devil_dynamics_official_runner.py \
  --run-official \
  --generated-video-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
  --model-weights-dir "${WORLDFOUNDRY_DEVIL_MODEL_WEIGHTS_DIR}" \
  --naturalness-path /path/to/naturalness_results.xlsx \
  --num-gpus 8 \
  --output-dir tmp/devil-dynamics/full-run-reuse-naturalness \
  --json

导入已有结果

如果已经有官方 DEVIL 结果导出,例如 dynamics_quality_results.xlsxdevil_dynamics_results.json,可以直接导入:

export WORLDFOUNDRY_DEVIL_DYNAMICS_RESULTS_PATH=/path/to/dynamics_quality_results.xlsx

worldfoundry-eval zoo benchmark-run \
  --benchmark-id devil-dynamics \
  --mode official-validation \
  --official-results-path "${WORLDFOUNDRY_DEVIL_DYNAMICS_RESULTS_PATH}" \
  --generated-artifact-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
  --output-dir tmp/devil-dynamics/import-results \
  --json

输出结构

完整评测会写出:

<output-dir>/
  scorecard.json
  raw_metric_table.jsonl
  per_sample_scores.jsonl
  upstream/
    dynamics_results.xlsx
    quality_results.xlsx
    naturalness_results.xlsx
    dynamics_quality_results.xlsx
    devil_dynamics_results.json
  upstream_stdout.log
  upstream_stderr.log

scorecard.json 是 WorldFoundry 归一化后的聚合结果;upstream/devil_dynamics_results.json 是仓内 runtime 产出的 DEVIL summary。

指标

Metric ID含义越高越好
dynamics_range生成视频是否覆盖从静态到高动态的预期运动范围。
dynamics_controllability生成运动是否符合 prompt 请求的动态等级排序。
dynamics_qualityDynamics-aware quality 和 naturalness;完整重算时包含 Gemini naturalness。
devil_dynamics_average对可用 DEVIL 分量求平均,是 WorldFoundry 的聚合指标。

Leaderboard 说明

要得到可对齐 leaderboard 的数值,需要完整 DEVIL prompt suite、保留动态等级前缀的文件名、一致的 checkpoint 资产,以及用相同 judge 设置得到的 Gemini naturalness 输出。部分导入结果可以用于回归测试,但不应当声称是完整 DEVIL leaderboard 结果。

← 返回 Benchmark Hub