模型:
damo-vilab/text-to-video-ms-1.7b-legacy
该模型基于多阶段文本生成视频扩散模型,输入一个描述文本,并返回与文本描述相匹配的视频。仅支持英文输入。
文本生成视频扩散模型由三个子网络组成:文本特征提取模型、文本特征到视频潜空间扩散模型和视频潜空间到视频可见空间模型。整个模型参数约为17亿。目前仅支持英文输入。扩散模型采用UNet3D结构,通过从纯高斯噪声视频进行迭代去噪过程来实现视频生成。
该模型仅用于研究目的。请查看模型局限性和偏见以及误用、恶意使用和过度使用部分。
该模型具有广泛的应用,可以根据任意英文文本描述进行推理和生成视频。
首先安装所需库:
$ pip install git+https://github.com/huggingface/diffusers transformers accelerate
现在,生成一个视频:
import torch
from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler
from diffusers.utils import export_to_video
pipe = DiffusionPipeline.from_pretrained("damo-vilab/text-to-video-ms-1.7b-legacy", torch_dtype=torch.float16)
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
pipe.enable_model_cpu_offload()
prompt = "Spiderman is surfing"
video_frames = pipe(prompt, num_inference_steps=25).frames
video_path = export_to_video(video_frames)
这里是一些结果:
| An astronaut riding a horse. 12314321 | Darth vader surfing in waves. 12315321 |
您可以通过启用注意力和VAE切片以及使用Torch 2.0来优化内存使用。这样,您可以在不到16GB的GPU VRAM上生成长达25秒的视频。
$ pip install diffusers transformers accelerate transformers accelerate
import torch
from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler
from diffusers.utils import export_to_video
# load pipeline
pipe = DiffusionPipeline.from_pretrained("damo-vilab/text-to-video-ms-1.7b", torch_dtype=torch.float16, variant="fp16")
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
# optimize for GPU memory
pipe.enable_model_cpu_offload()
pipe.enable_vae_slicing()
# generate
prompt = Spiderman is surfing. Darth Vader is also surfing and following Spiderman"
video_frames = pipe(prompt, num_inference_steps=25, num_frames=200).frames
# convent to video
video_path = export_to_video(video_frames)
上面的代码将显示输出视频的保存路径,并且当前的编码格式可以使用 VLC player 进行播放。
输出的mp4文件可以通过 VLC media player 进行查看。其他某些媒体播放器可能无法正常查看。
训练数据包括 LAION5B 、 ImageNet 、 Webvid 等公共数据集。在预训练后进行图像和视频过滤,例如美学分数、水印分数和去重。
(模型卡片的部分内容来自 here )