目录
一、VGen整体架构
二、VGen核心基础内容
三、快速上手使用VGen进行视频生成
四、VGen与SVD的比较
一、VGen整体架构
「VGen」是一个基于扩散模型的视频生成系统,提供以视频生成扩散模型为中心的强大代码库,具有先进的视频生成模型。VGen的整体架构主要围绕三个关键领域:基本模型、创造性合成和高效合成。
项目地址:https://github.com/ali-vilab/i2vgen-xl.git
VGen的主要特性:
可扩展性:可以轻松管理您自己的实验;
完整性:包含视频生成的所有常见组件;
性能卓越:在多个任务中具有强大的预训练模型。
二、VGen核心基础内容
「VGen」可以根据输入的文本、图像、所需的运动、所需的主题,甚至提供的反馈信号生成高质量的视频。它还提供了各种常用的视频生成工具,例如可视化、采样、训练、推理、使用图像和视频的联合训练、加速等。
在VGen项目中,主要包含以下方法的实现:
艺术的真正源泉是您的想象力,而 VGen是将其变为现实的解决方案。
(The real source of art is your imagination, and VGen is the solution for bringing it to life.)
2.1 I2VGen-Xl:通过级联扩散模型进行高质量图像到视频合成
受益于扩散模型的快速发展,视频合成最近取得了显著进步。然而,它在语义准确性、清晰度和时空连续性方面仍然遇到挑战。
主要源于缺乏良好对齐的文本视频数据以及视频复杂的固有结构,使得模型很难同时确保语义和质量的卓越性。
在本报告中,提出一种级联「I2VGen-XL」方法,该方法通过解耦这两个因素来增强模型性能,并通过利用静态图像作为关键指导形式来确保输入数据的对齐。
I2VGen-XL 由两个阶段组成:
i) 基础阶段通过使用两个分层编码器保证连贯的语义并保留输入图像的内容;
ii) 细化阶段通过合并额外的简短文本来增强视频的细节,并将分辨率提高到 1280x720 。
为了提高多样性,收集大约 3500 万个单镜头文本-视频对和 60 亿个文本-图像对来优化模型。通过这种方式,I2VGen-XL可以同时增强生成视频的语义准确性、细节的连续性和清晰度。
通过大量的实验,研究了 I2VGen-XL 的基本原理,并将其与当前的顶级方法进行了比较,这可以证明其在各种数据上的有效性。
2.2 VideoComposer:具有运动可控性的视频合成
可控性作为视觉内容创作的更高标准的追求,在可定制的图像合成方面取得了显著进步。然而,由于时间动态的巨大变化和跨帧时间一致性的要求,实现可控视频合成仍然具有挑战性。
基于合成生成的范式,这项工作提出「VideoComposer」,它允许用户灵活地根据文本条件、空间条件,更重要的是时间条件来合成视频。
具体来说,考虑到视频数据的特性,引入压缩视频的运动矢量作为显式控制信号,以提供有关时间动态的指导。
此外,还开发了一个时空条件编码器(STC-encoder),它作为一个统一的接口,可以有效地整合顺序输入的空间和时间关系,通过它,模型可以更好地利用时间条件,从而实现更高的交互性。
大量的实验结果表明,VideoComposer 能够以各种形式同时控制合成视频中的空间和时间模式,例如文本描述、草图序列、参考视频,甚至简单的手工制作的动作。
2.3 HiGen:用于文本到视频生成的分层时空解耦
尽管扩散模型已显示出生成逼真图像的强大能力,但生成逼真且多样化的视频仍处于起步阶段。关键原因之一是当前的方法将空间内容和时间动态交织在一起,导致文本到视频生成(T2V)的复杂性显着增加。
在这项工作中,提出「HiGen」,一种基于扩散模型的方法,该方法通过从结构级别和内容级别两个角度解耦视频的空间和时间因素来提高性能。
在结构层面,使用统一的降噪器将 T2V 任务分解为两个步骤,包括空间推理和时间推理。具体来说,在空间推理期间使用文本生成空间相干先验,然后在时间推理期间从这些先验生成时间相干的运动。
在内容层面,从输入视频的内容中提取两个微妙的线索,分别可以表达运动和外观变化。然后,这两个线索指导模型的视频生成训练,实现灵活的内容变化并增强时间稳定性。
通过解耦范式,HiGen 可以有效降低该任务的复杂性,并生成具有语义准确性和运动稳定性的逼真视频。大量实验证明 HiGen 的性能优于最先进的 T2V 方法。
2.4 TF-T2V:使用无文本视频扩大文本到视频生成的方法
基于扩散模型的文本到视频生成在过去一年中取得了令人瞩目的进展,但仍然落后于文本到图像生成技术。
考虑到视频字幕的高成本,关键原因之一是公开数据的规模有限(例如,WebVid10M 中的 10M 视频文本对与 LAION 中的 5B 图像文本对)。
相反,从 YouTube 等视频平台收集未标记的视频可能要容易得多。受此启发,研究者提出一种新颖的文本到视频生成框架——「TF-T2V」,它可以直接使用无文本视频进行学习。
基本原理:将文本解码过程与时间建模过程分开;采用内容分支和运动分支,通过共享权重进行联合优化。
遵循这样的流程,研究使用一些随机收集的无文本视频将训练集规模(即仅视频 WebVid10M)加倍,并观察性能的改进(FID 从 9.67 到 8.19,FVD 从 484到 441),展示了方法的可扩展性。
2.5 InstructVideo:使用人类反馈指导视频扩散模型
扩散模型已成为视频生成事实上的范例。然而,他们对质量参差不齐的网络规模数据的依赖往往会产生视觉上没有吸引力且与文本提示不一致的结果。
为了解决这个问题,提出「 InstructVideo」,通过奖励微调来指导具有人类反馈的文本到视频扩散模型。
InstructVideo 有两个关键要素:
1)为了改善通过完整 DDIM 采样链生成而引起的奖励微调成本,将奖励微调重新定义为编辑。通过利用扩散过程来破坏采样视频,InstructVideo 只需要 DDIM 采样链的部分推断,降低微调成本,同时提高微调效率;
2)为了缓解缺乏针对人类偏好的专用视频奖励模型的情况,重新利用了已建立的图像奖励模型,例如HPSv2。为此,提出了分段视频奖励(Segmental Video Reward)(一种基于分段稀疏采样提供奖励信号的机制)和时间衰减奖励(Temporal Attenuated Reward)(一种在微调期间减轻时间建模退化的方法)。
大量的定性和定量实验验证了在 InstructVideo 中使用图像奖励模型的实用性和有效性,在不影响泛化能力的情况下显著提高了生成视频的视觉质量。
2.6 DreamVideo:用定制的主题和动作创作您的梦想视频
使用扩散模型的定制生成在图像生成方面取得了令人印象深刻的进展,但在具有挑战性的视频生成任务中仍然不能令人满意,因为它需要对象和运动的可控性。
为此,研究者提出「DreamVideo」,这是一种从所需主题的一些静态图像和目标运动的一些视频生成个性化视频的新颖方法。
DreamVideo 通过利用预先训练的视频传播模型,将此任务分解为两个阶段:主题学习和动作学习。
主题学习的目的是从提供的图像中准确捕捉主题的精美外观,这是通过结合文本反转和我们精心设计的身份适配器的微调来实现的。
在运动学习中,构建一个运动适配器,并在给定的视频上对其进行微调,以有效地对目标运动模式进行建模。将这两个轻量且高效的适配器相结合,可以灵活定制任何运动的任何主题。
大量的实验结果表明,DreamVideo 比最先进的定制视频生成方法具有卓越的性能。
2.7 VideoLCM:视频潜在一致性模型
一致性模型在高效图像生成方面表现出了强大的能力,并允许在几个采样步骤内进行合成,从而减轻了扩散模型中的高计算成本。
然而,在更具挑战性和资源消耗的视频生成中,一致性模型的探索仍然较少。在本报告中,研究者提出了「VideoLCM」框架来填补这一空白,该框架利用图像生成的一致性模型的概念,以最少的步骤有效地合成视频,同时保持高质量。
VideoLCM 基于现有的潜在视频扩散模型,并结合用于训练潜在一致性模型的蒸馏技术。实验结果揭示了VideoLCM 在计算效率、保真度和时间一致性方面的有效性。
值得注意的是,VideoLCM 只需 4 个采样步骤即可实现高保真、流畅的视频合成,展现了实时合成的潜力。
三、快速上手使用VGen进行视频生成
3.1 准备环境
# 基础环境
conda create -n vgen python=3.8
conda activate vgen
pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu113
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 确保安装ffmpeg
sudo apt-get update && apt-get install ffmpeg libsm6 libxext6 -y
# 克隆代码
git clone https://github.com/damo-vilab/i2vgen-xl.git
cd i2vgen-xl
3.2 训练text-to-video模型
开始训练:
# 执行以下命令来启用分布式训练,So easy!!!
python train_net.py --cfg configs/t2v_train.yaml
在t2v_train.yaml
配置文件中,可以指定数据,使用frame_lens调整视频与图像的比例,并使用不同的扩散设置验证你的想法等等。
在训练之前,可以下载VGen任何开源模型进行初始化。代码库支持自定义初始化和grad_scale
设置,所有这些都包含在Pretrain
yaml 文件中的项目中。
训练过程中,可以在workspace/experiments/t2v_train
目录中查看保存的模型和中间推理结果。
训练完成后,您可以使用以下命令对模型进行推理。
执行推理:
python inference.py --cfg configs/t2v_infer.yaml
然后就可以在目录中找到生成的视频了workspace/experiments/test_img_01
。数据、模型、种子等具体配置请参考文件t2v_infer.yaml
。
3.3 运行I2VGen-XL模型
(i) 下载模型和测试数据:
!pip install modelscope
from modelscope.hub.snapshot_download import snapshot_download
model_dir = snapshot_download('damo/I2VGen-XL', cache_dir='models/', revision='v1.0.0')
或者也可以通过 HuggingFace 下载(https://huggingface.co/damo-vilab/i2vgen-xl):
git lfs install
git clone https://huggingface.co/damo-vilab/i2vgen-xl
(ii) 运行以下命令:
python inference.py --cfg configs/i2vgen_xl_infer.yaml
或者你可以运行:
python inference.py --cfg configs/i2vgen_xl_infer.yaml test_list_path data/test_list_for_i2vgen.txt test_model models/i2vgen_xl_00854500.pth
test_list_path表示
输入图像路径及其相应的标题。具体格式和建议请参考demo文件中data/test_list_for_i2vgen.txt
。test_model
是加载模型的路径。
几分钟后,就可以从目录中检索想要创建的高清视频workspace/experiments/test_list_for_i2vgen
。
四、VGen与SVD的比较
目前,Stable Video Diffusion(SVD)作为一种强大的开源模型,在高清视频生成方面取得了显著进展!接下来,我们将比较VGen中的I2VGen-XL模型和SVD模型在视频生成任务中的性能和差异。
整体比较:
如下表所示全面比较两个模型,考虑了模型、数据和参数数量等方面。我们得出如下结论:
i)主要思想相似,如框架设计、训练策略和数据构建;
ii)不同的输入:与SVD相比,I2VGen-XL具有接受文本输入的额外能力,具备文本到视频和图像到视频的能力。
定性比较:
如下图展示了I2VGen-XL模型和SVD模型的定性差异,我们可以发现:
i)I2VGen-XL方法生成的运动更加真实,并且运动的幅度更大;
ii)SVD生成的运动更类似于单个图像或3D对象的变换;
iii)从统计的角度来看,考虑到运动的合理性,I2VGen-XL相对于SVD具有明显优势。