Latte
[TMLR 2025] Latte: Latent Diffusion Transformer for Video Generation.
Install / Use
/learn @Vchitect/LatteREADME
Latte: Latent Diffusion Transformer for Video Generation<br><sub>Official PyTorch Implementation</sub>
<!-- ### [Paper](https://arxiv.org/abs/2401.03048v1) | [Project Page](https://maxin-cn.github.io/latte_project/) --> <!-- [](https://arxiv.org/abs/2401.03048) -->This repo contains the PyTorch model definitions, pre-trained weights, and training/sampling/evaluation codes for our paper Latte: Latent Diffusion Transformer for Video Generation.
<!-- > <br>Monash University, Shanghai Artificial Intelligence Laboratory,<br> NJUPT, S-Lab, Nanyang Technological University We propose a novel Latent Diffusion Transformer, namely Latte, for video generation. Latte first extracts spatio-temporal tokens from input videos and then adopts a series of Transformer blocks to model video distribution in the latent space. In order to model a substantial number of tokens extracted from videos, four efficient variants are introduced from the perspective of decomposing the spatial and temporal dimensions of input videos. To improve the quality of generated videos, we determine the best practices of Latte through rigorous experimental analysis, including video clip patch embedding, model variants, timestep-class information injection, temporal positional embedding, and learning strategies. Our comprehensive evaluation demonstrates that Latte achieves state-of-the-art performance across four standard video generation datasets, i.e., FaceForensics, SkyTimelapse, UCF101, and Taichi-HD. In addition, we extend Latte to text-to-video generation (T2V) task, where Latte achieves comparable results compared to recent T2V models. We strongly believe that Latte provides valuable insights for future research on incorporating Transformers into diffusion models for video generation. {width=20} --> <!-- <div align="center"> <img src="visuals/architecture.svg" width="650"> </div> This repository contains: * 🪐 A simple PyTorch [implementation](models/latte.py) of Latte * ⚡️ **Pre-trained Latte models** trained on FaceForensics, SkyTimelapse, Taichi-HD and UCF101 (256x256). In addition, we provide a T2V checkpoint (512x512). All checkpoints can be found [here](https://huggingface.co/maxin-cn/Latte/tree/main). * 🛸 A Latte [training script](train.py) using PyTorch DDP. -->Latte: Latent Diffusion Transformer for Video Generation<br> Xin Ma, Yaohui Wang*, Xinyuan Chen, Gengyun Jia, Ziwei Liu, Yuan-Fang Li, Cunjian Chen, Yu Qiao (*Corresponding Author & Project Lead)
<video controls loop src="https://github.com/Vchitect/Latte/assets/7929326/a650cd84-2378-4303-822b-56a441e1733b" type="video/mp4"></video>
News
-
🔥 Mar 23, 2025 💥 Latte is accepted by Transactions on Machine Learning Research (TMLR) 2025.
-
🔥 Jul 11, 2024 💥 Latte-1 is now integrated into diffusers. Thanks to @yiyixuxu, @sayakpaul, @a-r-r-o-w and @DN6. You can easily run Latte using the following code. We also support inference with 4/8-bit quantization, which can reduce GPU memory from 17 GB to 9 GB. Please refer to this tutorial for more information.
# Please update the version of diffusers at leaset to 0.30.0
from diffusers import LattePipeline
from diffusers.models import AutoencoderKLTemporalDecoder
from torchvision.utils import save_image
import torch
import imageio
torch.manual_seed(0)
device = "cuda" if torch.cuda.is_available() else "cpu"
video_length = 16 # 1 (text-to-image) or 16 (text-to-video)
pipe = LattePipeline.from_pretrained("maxin-cn/Latte-1", torch_dtype=torch.float16).to(device)
# Using temporal decoder of VAE
vae = AutoencoderKLTemporalDecoder.from_pretrained("maxin-cn/Latte-1", subfolder="vae_temporal_decoder", torch_dtype=torch.float16).to(device)
pipe.vae = vae
prompt = "a cat wearing sunglasses and working as a lifeguard at pool."
videos = pipe(prompt, video_length=video_length, output_type='pt').frames.cpu()
-
🔥 Jun 26, 2024 💥 Latte is supported by VideoSys, which is a user-friendly, high-performance infrastructure for video generation.
-
🔥 May 23, 2024 💥 Latte-1 is released! Pre-trained model can be downloaded here. We support both T2V and T2I. Please run
bash sample/t2v.shandbash sample/t2i.shrespectively.
-
🔥 Feb 24, 2024 💥 We are very grateful that researchers and developers like our work. We will continue to update our LatteT2V model, hoping that our efforts can help the community develop. Our Latte discord channel <a href="https://discord.gg/RguYqhVU92" style="text-decoration:none;"> <img src="https://user-images.githubusercontent.com/25839884/218347213-c080267f-cbb6-443e-8532-8e1ed9a58ea9.png" width="3%" alt="" /></a> is created for discussions. Coders are welcome to contribute.
-
🔥 Jan 9, 2024 💥 An updated LatteT2V model initialized with the PixArt-α is released, the checkpoint can be found here.
-
🔥 Oct 31, 2023 💥 The training and inference code is released. All checkpoints (including FaceForensics, SkyTimelapse, UCF101, and Taichi-HD) can be found here. In addition, the LatteT2V inference code is provided.
Setup
First, download and set up the repo:
git clone https://github.com/Vchitect/Latte
cd Latte
We provide an environment.yml file that can be used to create a Conda environment. If you only want
to run pre-trained models locally on CPU, you can remove the cudatoolkit and pytorch-cuda requirements from the file.
conda env create -f environment.yml
conda activate latte
Sampling
You can sample from our pre-trained Latte models with sample.py. Weights for our pre-trained Latte model can be found here. The script has various arguments to adjust sampling steps, change the classifier-free guidance scale, etc. For example, to sample from our model on FaceForensics, you can use:
bash sample/ffs.sh
or if you want to sample hundreds of videos, you can use the following script with Pytorch DDP:
bash sample/ffs_ddp.sh
If you want to try generating videos from text, just run bash sample/t2v.sh. All related checkpoints will download automatically.
If you would like to measure the quantitative metrics of your generated results, please refer to here.
Training
We provide a training script for Latte in train.py. The structure of the datasets can be found here. This script can be used to train class-conditional and unconditional
Latte models. To launch Latte (256x256) training with N GPUs on the FaceForensics dataset
:
torchrun --nnodes=1 --nproc_per_node=N train.py --config ./configs/ffs/ffs_train.yaml
or If you have a cluster that uses slurm, you can also train Latte's model using the following scripts:
sbatch slurm_scripts/ffs.slurm
We also provide the video-image joint training scripts train_with_img.py. Similar to train.py scripts, these scripts can be also used to train class-conditional and unconditional
Latte models. For example, if you want to train the Latte model on the FaceForensics dataset, you can use:
torchrun --nnodes=1 --nproc_per_node=N train_with_img.py --config ./configs/ffs/ffs_img_train.yaml
If you are familiar with PyTorch Lightning, you can also use the training script train_pl.py and train_with_img_pl.py provided by @zhang.haojie,
python train_pl.py --config ./configs/ffs/ffs_train.yaml
or
python train_with_img_pl.py --config ./configs/ffs/ffs_img_train.yaml
This script
Related Skills
qqbot-channel
345.4kQQ 频道管理技能。查询频道列表、子频道、成员、发帖、公告、日程等操作。使用 qqbot_channel_api 工具代理 QQ 开放平台 HTTP 接口,自动处理 Token 鉴权。当用户需要查看频道、管理子频道、查询成员、发布帖子/公告/日程时使用。
docs-writer
100.0k`docs-writer` skill instructions As an expert technical writer and editor for the Gemini CLI project, you produce accurate, clear, and consistent documentation. When asked to write, edit, or revie
model-usage
345.4kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
ddd
Guía de Principios DDD para el Proyecto > 📚 Documento Complementario : Este documento define los principios y reglas de DDD. Para ver templates de código, ejemplos detallados y guías paso
