Skip to content

Inference & Reproducing Results

Boyuan Chen edited this page Feb 17, 2025 · 2 revisions

Checkpoints

Using your own checkpoints

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.

Using our pre-trained checkpoints

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

Sec. 6.2. Kinetics-600 Video Prediction Benchmark

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

Sec. 6.3. Kinetics-600 History Guidance Experiment

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

Sec. 6.4. Task 1: RealEstate10K OOD History Experiment

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

Sec. 6.4. Task 2: Minecraft Long Context Generation Experiment

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]'

Clone this wiki locally