文本到视频生成:逐步指南

Text to Video Generation Step-by-Step Guide

 

介绍

 

基于扩散的图像生成模型在计算机视觉领域取得了突破性进展。由Imagen、DallE和MidJourney等模型开创,这些进展在文本条件图像生成方面展示出了卓越的能力。如果你想了解这些模型的内部工作原理,可以阅读本文。

然而,Text-2-Video模型的发展面临更大的挑战。目标是实现每一帧生成的连贯性和一致性,并在视频的开始到结束过程中保持生成的上下文。

然而,基于扩散模型的最新进展也为Text-2-Video任务提供了有希望的前景。大多数Text-2-Video模型现在采用预训练的Text-2-Image模型上的微调技术,整合动态图像运动模块,并利用WebVid或HowTo100M等多样化的Text-2-Video数据集。

本文中,我们的方法涉及使用HuggingFace提供的微调模型,该模型在生成视频方面发挥了关键作用。

 

实现

 

先决条件

 

我们使用HuggingFace提供的Diffusers库以及一个名为Accelerate的实用程序库,该库允许PyTorch代码在并行线程中运行,从而加快了我们的生成过程。

首先,我们必须安装我们的依赖项并导入相关模块到我们的代码中。

pip install diffusers transformers accelerate torch

 

然后,从每个库中导入相关模块。

import torch
from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler
from diffusers.utils import export_to_video

 

创建管道

 

我们在扩散管道中加载HuggingFace上提供的Text-2-Video模型,该模型具有17亿个参数,并基于UNet3D体系结构从纯噪声生成视频的迭代去噪过程。它通过三个步骤进行工作。模型首先从简单的英文提示中进行文本特征提取。然后,将文本特征编码到视频潜在空间并去噪。最后,将视频潜在空间解码回到视觉空间,并生成一个短视频。

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)


pipe.enable_model_cpu_offload()

 

此外,我们使用16位浮点精度来减少GPU利用率。另外,启用了CPU卸载,可以在运行时从GPU中移除不必要的部分。

 

生成视频

 

prompt = "Spiderman正在冲浪"
video_frames = pipe(prompt, num_inference_steps=25).frames
video_path = export_to_video(video_frames)

 

然后,我们将一个提示传递给视频生成管道,该提示提供了一系列生成的帧。我们使用25个推理步骤,使模型执行25次去噪迭代。更多的推理步骤可以提高视频质量,但需要更多的计算资源和时间。

然后,使用扩散器的实用函数将分离的图像帧组合在一起,并将视频保存在磁盘上。

然后,我们将一个提示传递给视频生成管道,该提示提供了一系列生成的帧。然后使用扩散器的实用函数将分离的图像帧组合在一起,并将视频保存在磁盘上。

Muhammad Arham在Vimeo上的FinalVideo。

 

结论

 

简单吧!我们得到了一个Spiderman冲浪的视频。虽然这是一个短且质量不太高的视频,但它仍然象征着这个过程的有希望的前景,可以很快达到类似Image-2-Text模型的结果。尽管如此,测试你的创造力并与模型玩耍仍然足够好。你可以使用这个Colab笔记本来尝试它。Muhammad Arham是一名计算机视觉和自然语言处理方面的深度学习工程师。他曾参与部署和优化多个生成型AI应用,在Vyro.AI全球热门榜单上取得了成功。他对构建和优化智能系统的机器学习模型感兴趣,并坚信不断改进。