创新的潜在扩散Transformer视频生成技术
Latte是一种新型视频生成模型,采用潜在扩散Transformer技术。该模型在多个标准数据集上表现优异,并支持文本到视频的生成。项目提供PyTorch实现、预训练模型和相关代码,为视频生成研究提供了重要参考。Latte在建模视频分布方面采用了创新方法,为未来研究提供了新的思路。
本仓库包含我们论文《Latte:用于视频生成的潜在扩散变换器》的PyTorch模型定义、预训练权重、训练/采样代码和评估代码。
<video controls loop src="https://github.com/Vchitect/Latte/assets/7929326/a650cd84-2378-4303-822b-56a441e1733b" type="video/mp4"></video>
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 (文本到图像) 或 16 (文本到视频) pipe = LattePipeline.from_pretrained("maxin-cn/Latte-1", torch_dtype=torch.float16).to(device) # 使用VAE的时间解码器 vae = AutoencoderKLTemporalDecoder.from_pretrained("maxin-cn/Latte-1", subfolder="vae_temporal_decoder", torch_dtype=torch.float16).to(device) pipe.vae = vae prompt = "一只戴着太阳镜在游泳池担任救生员的猫。" videos = pipe(prompt, video_length=video_length, output_type='pt').frames.cpu()
bash sample/t2v.sh
和bash sample/t2i.sh
。
<img src="https://yellow-cdn.veclightyear.com/835a84d5/527cbed8-6db7-4505-9649-2a6d3d9b4796.gif" width=88%>
(🔥 新) 2024年2月24日 💥 我们非常感谢研究人员和开发者喜欢我们的工作。我们将继续更新我们的LatteT2V模型,希望我们的努力能够帮助社区发展。我们的Latte discord频道 <a href="https://discord.gg/RguYqhVU92" style="text-decoration:none;"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/07c36bf3-a51c-4a15-8df9-016328738478.png" width="3%" alt="" /></a> 已创建用于讨论。欢迎程序员贡献。
(🔥 新) 2024年1月9日 💥 发布了一个使用PixArt-α初始化的更新版LatteT2V模型,可以在这里找到检查点。
(🔥 新) 2023年10月31日 💥 训练和推理代码已发布。所有检查点(包括FaceForensics、SkyTimelapse、UCF101和Taichi-HD)可以在这里找到。此外,还提供了LatteT2V推理代码。
首先,下载并设置仓库:
git clone https://github.com/Vchitect/Latte cd Latte
我们提供了一个environment.yml
文件,可用于创建Conda环境。如果您只想在本地CPU上运行预训练模型,可以从文件中删除cudatoolkit
和pytorch-cuda
要求。
conda env create -f environment.yml conda activate latte
您可以使用sample.py
从我们的预训练Latte模型中采样。我们预训练的Latte模型的权重可以在这里找到。该脚本有各种参数可以调整采样步骤,更改无分类器引导尺度等。例如,要从我们在FaceForensics上的模型中采样,您可以使用:
bash sample/ffs.sh
或者如果您想采样数百个视频,可以使用以下带有Pytorch DDP的脚本:
bash sample/ffs_ddp.sh
如果您想尝试从文本生成视频,只需运行bash sample/t2v.sh
。所有相关的检查点将自动下载。
如果您想测量生成结果的定量指标,请参考这里。
我们在train.py
中提供了Latte的训练脚本。数据集的结构可以在这里找到。此脚本可用于训练类条件和无条件的Latte模型。要在FaceForensics数据集上使用N
个GPU启动Latte(256x256)训练:
torchrun --nnodes=1 --nproc_per_node=N train.py --config ./configs/ffs/ffs_train.yaml
或者如果您有使用slurm的集群,也可以使用以下脚本训练Latte模型:
sbatch slurm_scripts/ffs.slurm
我们还提供了视频-图像联合训练脚本train_with_img.py
。与train.py
脚本类似,这些脚本也可以用于训练类条件和无条件的Latte模型。例如,如果您想在FaceForensics数据集上训练Latte模型,可以使用:
torchrun --nnodes=1 --nproc_per_node=N train_with_img.py --config ./configs/ffs/ffs_img_train.yaml
如果您熟悉PyTorch Lightning
,也可以使用@zhang.haojie提供的训练脚本train_pl.py
,
python train_pl.py --config ./configs/ffs/ffs_img_train.yaml
此脚本会自动检测可用的GPU并使用分布式训练。
王耀辉: wangyaohui@pjlab.org.cn 马鑫: xin.ma1@monash.edu
如果您发现这项工作对您的研究有用,请考虑引用它。
@article{ma2024latte, title={Latte: Latent Diffusion Transformer for Video Generation}, author={Ma, Xin and Wang, Yaohui and Jia, Gengyun and Chen, Xinyuan and Liu, Ziwei and Li, Yuan-Fang and Chen, Cunjian and Qiao, Yu}, journal={arXiv preprint arXiv:2401.03048}, year={2024} }
Latte受到以下令人惊叹的工作和团队的极大启发:DiT和PixArt-α,我们感谢所有开源贡献者。
代码和模型权重遵循LICENSE许可。