Repository navigation
Inference & Reproducing Results
By default, all checkpoints and logs are logged to the cloud automatically. Your training will produce a wandb link that leads to the logs. The link ends with a wandb run id - to load or resume your trained model, simply append load={the_wandb_run_id} or resume={the_wandb_run_id} to the training / inference command. You can also load a local checkpoint, simply replace the the_wandb_run_id with a path to your checkpoint file. The option load will create a fresh wandb run with your checkpoint weights while resume will resume the existing wandb log associated with the id.
Note: We provide inference weights by default for all models, which only contain the EMA weights. For DFoT models, we also provide full weights, which additionally contain the optimizer states and non-EMA weightsâthese are useful for fine-tuning or resuming training.
All pretrained models are available from the Hugging Face Model Hub, and can be automatically loaded using:
# for inference weights:
... load=pretrained:MODEL_NAME.ckpt
# for full weights:
... load=full:MODEL_NAME.ckpt| Dataset | Model | Inference Weights | Full Weights |
|---|---|---|---|
| RealEstate10K | DFoT | DFoT_RE10K.ckpt | DFoT_RE10K.ckpt |
| RealEstate10K | SD | SD_RE10K.ckpt | - |
| RealEstate10K | FS | FS_RE10K.ckpt | - |
| RealEstate10K | BD | BD_RE10K.ckpt | - |
| Kinetics-600 | DFoT (scratch) | DFoT_K600.ckpt | DFoT_K600.ckpt |
| Kinetics-600 | DFoT (fine-tuned) | DFoT_K600_finetuned.ckpt | - |
| Kinetics-600 | SD | SD_K600.ckpt | - |
| Kinetics-600 | FS | FS_K600.ckpt | - |
| Kinetics-600 | BD | BD_K600.ckpt | - |
| Minecraft | DFoT | DFoT_MCRAFT.ckpt | DFoT_MCRAFT.ckpt |
| Robot Swapping | DFoT | DFoT_Robot.ckpt | DFoT_Robot.ckpt |
Setup: FVD on 50k videos, 5 History frames & 11 Predicted frames, (Typically) 4xGPUs
| Method | Command |
|---|---|
| DFoT | python -m main +name=DFoT_K600 dataset=kinetics_600 algorithm=dfot_video experiment=video_generation @DiT/XL 'experiment.tasks=[validation]' experiment.validation.batch_size=125 dataset.num_eval_videos=50000 'algorithm.logging.metrics=[fvd]' load=pretrained:DFoT_K600.ckpt |
| SD | python -m main +name=SD_K600 dataset=kinetics_600 algorithm=dfot_video experiment=video_generation @DiT/XL 'experiment.tasks=[validation]' experiment.validation.batch_size=125 dataset.num_eval_videos=50000 'algorithm.logging.metrics=[fvd]' @baseline/SD load=pretrained:SD_K600.ckpt |
| FS | python -m main +name=FS_K600 dataset=kinetics_600 algorithm=dfot_video experiment=video_generation @DiT/XL 'experiment.tasks=[validation]' experiment.validation.batch_size=10 dataset.num_eval_videos=50000 'algorithm.logging.metrics=[fvd]' @baseline/FS load=pretrained:FS_K600.ckpt algorithm.diffusion.reconstruction_guidance=2.0 experiment.validation.inference_mode=False |
| BD | python -m main +name=BD_K600 dataset=kinetics_600 algorithm=dfot_video experiment=video_generation @DiT/XL 'experiment.tasks=[validation]' experiment.validation.batch_size=125 dataset.num_eval_videos=50000 'algorithm.logging.metrics=[fvd]' @baseline/BD load=pretrained:BD_K600.ckpt |
Setup: FVD, VBench (Quality, Consistency, Dynamics) on 1024 videos, 5 History frames & 59 Predicted frames, (Typically) 4xGPUs
| Method | Command |
|---|---|
| DFoT + HG-v | python -m main +name=DFoT_K600_HG_v_{guidance_scale} dataset=kinetics_600 algorithm=dfot_video experiment=video_generation @DiT/XL 'experiment.tasks=[validation]' dataset.num_eval_videos=1024 dataset.n_frames=65 algorithm.logging.n_metrics_frames=64 algorithm.vae.batch_size=4 'algorithm.logging.metrics=[fvd, vbench]' algorithm.logging.metrics_batch_size=128 load=pretrained:DFoT_K600.ckpt algorithm.tasks.prediction.history_guidance.name=vanilla +algorithm.tasks.prediction.history_guidance.guidance_scale={guidance_scale} |
| DFoT + HG-f | python -m main +name=DFoT_K600_HG_f_{guidance_scale} dataset=kinetics_600 algorithm=dfot_video experiment=video_generation @DiT/XL 'experiment.tasks=[validation]' dataset.num_eval_videos=1024 dataset.n_frames=65 algorithm.logging.n_metrics_frames=64 algorithm.vae.batch_size=4 'algorithm.logging.metrics=[fvd, vbench]' algorithm.logging.metrics_batch_size=128 load=pretrained:DFoT_K600.ckpt algorithm.tasks.prediction.history_guidance.name=fractional +algorithm.tasks.prediction.history_guidance.freq_scale=0.8 +algorithm.tasks.prediction.history_guidance.guidance_scale={guidance_scale} |
| SD | python -m main +name=SD_K600 dataset=kinetics_600 algorithm=dfot_video experiment=video_generation @DiT/XL 'experiment.tasks=[validation]' dataset.num_eval_videos=1024 dataset.n_frames=65 algorithm.logging.n_metrics_frames=64 algorithm.vae.batch_size=4 'algorithm.logging.metrics=[fvd, vbench]' algorithm.logging.metrics_batch_size=128 baseline/SD load=pretrained:SD_K600.ckpt |
| FS | python -m main +name=FS_K600 dataset=kinetics_600 algorithm=dfot_video experiment=video_generation @DiT/XL 'experiment.tasks=[validation]' dataset.num_eval_videos=1024 dataset.n_frames=65 algorithm.logging.n_metrics_frames=64 algorithm.vae.batch_size=4 'algorithm.logging.metrics=[fvd, vbench]' algorithm.logging.metrics_batch_size=128 baseline/FS load=pretrained:SD_K600.ckpt experiment.validation.batch_size=8 algorithm.diffusion.reconstruction_guidance=2.0 experiment.validation.inference_mode=False |
Setup: LPIPS on 32 videos, 4 History frames & 4 Predicted frames, (Typically) 1xGPUs
Append dataset.rotation_angle.min={min_angle} dataset.rotation_angle.max={max_angle} to evaluate for a specific rotation angle range [min_angle, max_angle] (e.g. [140, 150], default: [170, 180])
| Method | Command |
|---|---|
| DFoT | python -m main +name=DFoT dataset=realestate10k_ood algorithm=dfot_video_pose experiment=video_generation @diffusion/continuous 'experiment.tasks=[validation]' 'algorithm.logging.metrics=[lpips]' load=pretrained:DFoT_RE10K.ckpt |
| DFoT + HG-v | python -m main +name=DFoT_HG_v dataset=realestate10k_ood algorithm=dfot_video_pose experiment=video_generation @diffusion/continuous 'experiment.tasks=[validation]' 'algorithm.logging.metrics=[lpips]' load=pretrained:DFoT_RE10K.ckpt +algorithm.tasks.prediction.history_guidance.name=vanilla +algorithm.tasks.prediction.history_guidance.guidance_scale=2 |
| DFoT + HG-t | python -m main +name=DFoT_HG_t dataset=realestate10k_ood algorithm=dfot_video_pose experiment=video_generation @diffusion/continuous 'experiment.tasks=[validation]' 'algorithm.logging.metrics=[lpips]' load=pretrained:DFoT_RE10K.ckpt algorithm.tasks.prediction.history_guidance.name=temporal '+algorithm.tasks.prediction.history_guidance.hist_subsequences=[[0, 1, 2], [1, 2, 3]]' '+algorithm.tasks.prediction.history_guidance.hist_weights=[2, 2]' '+algorithm.tasks.prediction.history_guidance.gen_segments=[[0, 1, 2], [1, 2, 3]]' |
| SD | python -m main +name=SD dataset=realestate10k_ood algorithm=dfot_video_pose experiment=video_generation @diffusion/continuous 'experiment.tasks=[validation]' 'algorithm.logging.metrics=[lpips]' load=pretrained:SD_RE10K.ckpt @baseline/SD |
| FS | python -m main +name=FS dataset=realestate10k_ood algorithm=dfot_video_pose experiment=video_generation @diffusion/continuous 'experiment.tasks=[validation]' 'algorithm.logging.metrics=[lpips]' load=pretrained:FS_RE10K.ckpt @baseline/FS |
Setup: FVD on 768 videos, 25 History frames & 125 Predicted frames, (Typically) 8xGPUs
| Method | Command |
|---|---|
| DFoT | python -m main +name=DFoT dataset=minecraft algorithm=dfot_video experiment=video_generation @diffusion/continuous @DiT/B load=pretrained:DFoT_MCRAFT.ckpt 'experiment.tasks=[validation]' 'algorithm.logging.metrics=[fvd]' dataset.n_frames=150 experiment.validation.batch_size=1 dataset.filter_min_len=0 |
| DFoT + HG-t | python -m main +name=DFoT_HG_t dataset=minecraft algorithm=dfot_video experiment=video_generation @diffusion/continuous @DiT/B load=pretrained:DFoT_MCRAFT.ckpt 'experiment.tasks=[validation]' 'algorithm.logging.metrics=[fvd]' dataset.n_frames=150 experiment.validation.batch_size=1 dataset.filter_min_len=0 algorithm.tasks.prediction.history_guidance.name=temporal '+algorithm.tasks.prediction.history_guidance.hist_subsequences=[all,[-4,-3,-2,-1]]' '+algorithm.tasks.prediction.history_guidance.hist_weights=[0.5, 0.5]' |