DEVIL Dynamics

Integrated

DEVIL Dynamics setup, assets, and runnable WorldFoundry commands.

On this page

About

DEVIL Dynamics evaluates text-to-video generation from a dynamics perspective. It complements temporal-consistency suites by checking whether generated videos actually move, whether the motion follows the requested dynamics grade, and whether that motion remains visually plausible.

WorldFoundry keeps the DEVIL evaluation code in-tree at worldfoundry/evaluation/tasks/execution/runners/devil_dynamics/. No official source checkout is needed to run this benchmark.

Prompt Suite

The official prompt text files are bundled in WorldFoundry:

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

Generate one video per prompt and keep DEVIL's dynamics-grade filename convention. Examples:

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

The generated video directory can be flat or recursively nested; the runner searches for .mp4 files.

Required Assets

Set WORLDFOUNDRY_GENERATED_ARTIFACT_DIR to the directory containing the generated videos.

For a full metric recomputation, prepare these checkpoints and credentials:

AssetEnv or flagNotes
DEVIL regression modelWORLDFOUNDRY_DEVIL_REGRESSION_CKPT or --regression-ckptUsually linear_regress_model.pth from DEVIL model_weights.
RAFT ThingsWORLDFOUNDRY_DEVIL_RAFT_CKPT / WORLDFOUNDRY_RAFT_THINGS_CKPT or --raft-ckptReuses WorldFoundry RAFT base model assets when staged.
OpenAI CLIP ViT-L/14WORLDFOUNDRY_DEVIL_CLIP_VIT_L14_PT / WORLDFOUNDRY_VBENCH_CLIP_VIT_L14_PT or --clip-vit-l14Used by dynamics scoring.
OpenAI CLIP ViT-B/32WORLDFOUNDRY_DEVIL_CLIP_VIT_B32_PT / WORLDFOUNDRY_VBENCH_CLIP_VIT_B32_PT or --clip-vit-b32Used by quality scoring.
ViCLIPWORLDFOUNDRY_DEVIL_VICLIP_CKPT / WORLDFOUNDRY_VBENCH_VICLIP_CKPT or --viclip-ckptReuses the VBench ViCLIP asset.
DINOv2 ViT-L/14WORLDFOUNDRY_DEVIL_DINOV2_VITL14_CKPT / WORLDFOUNDRY_WBENCH_MEGASAM_DINOV2_CKPT or --dinov2-vitl14-ckptUsed for segment-level dynamics.
timm DINO ViT-S/16WORLDFOUNDRY_DEVIL_TIMM_DINO_CKPT or --timm-dino-ckptOptional when timm can resolve pretrained weights from cache/download; set it for offline reproducibility.
DINO ViT-B/16WORLDFOUNDRY_DEVIL_DINO_VITB16_CKPT / WORLDFOUNDRY_VBENCH_DINO_VITB16_CKPT or --dino-vitb16-ckptUses WorldFoundry's in-tree DINO shim.
AMT-S config/checkpointWORLDFOUNDRY_DEVIL_AMT_CONFIG, WORLDFOUNDRY_DEVIL_AMT_CKPT, or flagsConfig defaults to WorldFoundry's in-tree AMT-S config when available.
Naturalness judgeWORLDFOUNDRY_DEVIL_GEMINI_API_KEY / GEMINI_API_KEY or --gemini-api-keyRequired unless you pass --naturalness-path.

If you have the official DEVIL model_weights directory, you can also point WORLDFOUNDRY_DEVIL_MODEL_WEIGHTS_DIR or --model-weights-dir at it. The runner looks there for common filenames such as linear_regress_model.pth, raft-things.pth, ViT-L-14.pt, ViT-B-32.pt, ViClip-InternVid-10M-FLT.pth, dinov2_vitl14_pretrain.pth, dino_vitbase16_pretrain.pth, AMT-S.yaml, and amt-s.pth.

The Python environment must include the video metric packages used by DEVIL, including torch, torchvision, timm, decord, opencv-python, clip, easydict, scikit-image, pytorch-msssim, piqa, imagehash, pandas, openpyxl, prettytable, omegaconf, and google-generativeai. The temporal-information component also expects system tools ffmpeg, ffprobe, and bc.

Full Evaluation

Run the in-tree official runtime through the WorldFoundry runner:

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

Use fewer GPUs by changing --num-gpus. For a single-GPU local run, set --num-gpus 1.

If Gemini naturalness has already been computed, skip API calls by passing the naturalness xlsx:

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

Import Existing Results

Use this when you already have an official DEVIL result export such as dynamics_quality_results.xlsx or devil_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 Layout

A full run writes:

<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

Use scorecard.json for WorldFoundry's normalized aggregate and upstream/devil_dynamics_results.json for the DEVIL summary emitted by the in-tree runtime.

Metrics

Metric IDMeaningBetter
dynamics_rangeWhether generated videos span the expected static-to-high-motion range.Higher
dynamics_controllabilityWhether motion follows the prompt's requested dynamics grade ordering.Higher
dynamics_qualityDynamics-aware quality and naturalness, including Gemini naturalness when computed.Higher
devil_dynamics_averageMean aggregate over the DEVIL components available in the run.Higher

Leaderboard Notes

Leaderboard-equivalent numbers require the complete DEVIL prompt suite, filenames that preserve dynamics-grade prefixes, the same checkpoint assets, and Gemini naturalness outputs produced with the same judge settings. Partial imports remain useful for regression testing, but should not be reported as full DEVIL leaderboard results.

← Benchmark Hub