Latte
来自莫纳什大学、上海人工智能实验室、南京大学和南洋理工大学的Latte: 用于视频生成的潜在扩散Transformer。
论文的摘要如下:
我们提出了一种新颖的潜在扩散Transformer,即Latte,用于视频生成。Latte首先从输入视频中提取时空令牌,然后采用一系列Transformer块在潜在空间中建模视频分布。为了建模从视频中提取的大量令牌,我们从分解输入视频的空间和时间维度的角度引入了四种高效变体。为了提高生成视频的质量,我们通过严格的实验分析确定了Latte的最佳实践,包括视频片段补丁嵌入、模型变体、时间步长-类别信息注入、时间位置嵌入和学习策略。我们的综合评估表明,Latte在四个标准视频生成数据集(即FaceForensics、SkyTimelapse、UCF101和Taichi-HD)上实现了最先进的性能。此外,我们将Latte扩展到文本到视频生成(T2V)任务,Latte在此任务中取得了与近期T2V模型相当的结果。我们坚信,Latte为未来将Transformer融入扩散模型以进行视频生成研究提供了宝贵的见解。
亮点:Latte是一种潜在扩散Transformer,被提议作为建模不同模态(此处针对文本到视频生成进行训练)的骨干。它在四个标准视频基准——FaceForensics、SkyTimelapse、UCF101和Taichi-HD上实现了最先进的性能。要准备和下载用于评估的数据集,请参阅此https URL。
此流程由maxin-cn贡献。原始代码库可以在这里找到。原始权重可以在hf.co/maxin-cn下找到。
推理
使用torch.compile
来减少推理延迟。
首先,加载管道:
import torch
from diffusers import LattePipeline
pipeline = LattePipeline.from_pretrained(
"maxin-cn/Latte-1", torch_dtype=torch.float16
).to("cuda")
然后,将流水线 transformer
和 vae
组件的内存布局更改为 torch.channels-last
:
pipeline.transformer.to(memory_format=torch.channels_last)
pipeline.vae.to(memory_format=torch.channels_last)
最后,编译这些组件并运行推理:
pipeline.transformer = torch.compile(pipeline.transformer)
pipeline.vae.decode = torch.compile(pipeline.vae.decode)
video = pipeline(prompt="A dog wearing sunglasses floating in space, surreal, nebulae in background").frames[0]
在 80GB A100 机器上的 基准测试 结果如下:
Without torch.compile(): Average inference time: 16.246 seconds.
With torch.compile(): Average inference time: 14.573 seconds.
LattePipeline
[[autodoc]] LattePipeline
- all
- call