模型:
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 )