Idea to T2V model
2013 VAE¶
- VAE(Variational Autoencoder,变分自编码器)是一种生成模型,结合了概率图模型和深度学习,主要用于学习数据的潜在表示并生成新数据。
- VAE属于概率生成模型(Probabilistic Generative Model),神经网络仅是其中的一个组件,依照功能的不同又可分为编码器和解码器。
- 编码器可将输入变量映射到与变分分布的参数相对应的潜空间(Latent Space),这样便可以产生多个遵循同一分布的不同样本。
- 解码器的功能基本相反,是从潜空间映射回输入空间,以生成数据点。
- 影响:变分自编码器(VAE)是一类常见的生成模型。纯VAE的生成效果不见得是最好的,但VAE还是经常会被用作大模型的子模块。
2014 对抗网络 GAN¶
- generative adversarial network (GAN)是2014年提出的无监督训练方法1
- 目的:给定一个训练集,学习生成与训练集具有相同统计数据的新数据。例如,在照片上训练的GAN可以生成新的照片,这些照片至少在人类观察者看来是真实的,具有许多真实的特征。
- 网络结构:有两个网络,G(Generator)和D(Discriminator)功能分别是:3
- G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。
- D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。
- 核心思想:生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。 这意味着generator 没有被训练来最小化到特定图像的距离,而是欺骗了机器人。最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此
D(G(z)) = 0.5
。- 换句话来说discriminator保存了generator网络训练出来的复杂loss函数2
- 数学推导:基于概率论的两个网络的零和博弈(TODO)
- 训练过程:
- 第一步训练D,D是希望V(G, D)越大越好,所以是加上梯度(ascending)。
- 第二步训练G时,V(G, D)越小越好,所以是减去梯度(descending)。
- 整个训练过程交替进行。
- 推理过程:(猜测的)输入随机噪声,产生图片。
- 拓展:DCGAN将CNN与GAN结合,把上述的G和D换成了两个卷积神经网络(CNN)
- 缺点与局限性:Mode collapse(模式坍塌):generator 生成的图像都特别像。和训练的数据集太像了,导致几乎没有新亮点。
- 原理图例:
2015 简单图像分割 UNet¶
- U-Net: Convolutional Networks for Biomedical Image Segmentation是最常用、最简单的一种分割模型了,它简单、高效、易懂、容易构建、可以从小数据集中训练。5
- 目的:医疗影像语义分割任务
- 网络结构:Unet网络非常的简单,前半部分就是特征提取,后半部分是上采样。在一些文献中把这种结构叫做编码器-解码器结构,由于网络的整体结构是一个大些的英文字母U,所以叫做U-net
- Encoder:左半部分,由两个3x3的卷积层(RELU)再加上一个2x2的maxpooling层组成一个下采样的模块(后面代码可以看出);
- Decoder:有半部分,由一个上采样的卷积层(去卷积层)+特征拼接concat+两个3x3的卷积层(ReLU)反复构成(代码中可以看出来);
- 特点:对于图像语义较为简单、结构固定,并且数据量小的医疗图像,效果好
- 原理图例:
2020 扩散基础 DDPM¶
- DDPM: Denoising Diffusion Probabilistic Models 提出了扩散模型
- 核心思想:
- GAN也是生成图,但是两者原理完全不同;
- GAN模型通过使得生成器拟合真实图片;
- DDPM是拟合整个从真实图片到随机高斯噪声的过程,再通过反向过程生成新的图片。4
- 特点:由于是一步步扩散出来的,可以看到演变的中间图过程。
- 训练过程:
- 原理图例:
- 拓展:使用ResNet效果差,一般换成U-Net
2021 CLIP¶
- Learning Transferable Visual Models From Natural Language Supervision 是OpenAI提出的用于生成文字embedding的方法
- 目的:借助带文字标签的图片数据集,来学习文字图片间的联系
- 原理图例:
6
2022 Stable Diffusion¶
理解原理
- High-Resolution Image Synthesis with Latent Diffusion Models 是Stable Diffusion开源出来的方法。
- 目的:在Diffusion模型的基础上,使用类似CLIP的text encoder来实现 text to image
- 改进点:
- 原理图例:
6
- 详细:
2023 DiTs¶
- 使用Transformers替换扩散模型中U-Net主干网络,发现不仅速度更快,在许多任务上效果也更好。
- 影响:扩散模型架构中U-Net并非不可替代,并且很容易使用诸如Transformers的结构替代U-Net
2023 SDXL¶
- SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis , 人如其名是SD的改进版
- 内容:
- 在原本的扩散模型后加Refiner模型(也是扩散模型), 参数量达到2.6B(10GB左右)
在Latent特征进行小噪声去除和细节质量提升。7
- 在原本的扩散模型后加Refiner模型(也是扩散模型), 参数量达到2.6B(10GB左右)
SDXL
Stable Diffusion XL是Stable Diffusion的最新优化版本, 如果Stable Diffusion是图像生成领域的“YOLO”,那Stable Diffusion XL就是“YOLOv3”。- You Only Look Once (YOLO) 最流行的目标检测算法。
- Huggingface: SDXL and SD Turbo
2402 SD3¶
- 2024年2月发布了 Stable Diffusion 3,
技术要点:
- Self-Attention:文本信息注入的方式,DiT模型在最初引入文本时,通常使用Cross Attention的方法结合文本信息,如Pixart-α、hunyuan DiT等。Stable Diffusion 3通过Self-Attention引入文本信息。相比于Cross Attention,使用Self-Attention引入文本信息不仅节省了Cross Attention的参数量,还节省了Cross Attention的计算量。9
- 引入了RMS-Norm,在每一个attention运算之前,对Q和K进行了RMS-Norm归一化,用于增强模型训练的稳定性。
- 同时使用了更大的VQGAN,VQGAN压缩得到的特征维度从原来的4维提升到16维等。
MMDiT¶
关键核心是新的多模态扩散 Transformer(Multimodal Diffusion Transformer,MMDiT)架构。
- MMDiT 架构结合了 DiT 和矩形流(RF)形式。它使用两个独立的变换器来处理文本和图像嵌入,并在注意力操作中结合两种模态的序列。这意味着对于文本和图像两种不同的输入模态,MMDiT 分别使用不同的权重参数来进行编码和处理,以此能够更好地捕捉每种模态的特征和信息。
2408 Qwen2 VL¶
- 亮点:能处理各种分辨率和长宽比
- 技术要点:
- 引入了naive dynamic resolution技术,支持灵活处理不同分辨率的输入图像和视频
- 创新性地提出了多模态旋转位置编码(M-RoPE),这有助于实现更高效的跨模态信息融合,从而增强了模型对于文本和视觉数据的理解能力
- 构建了一个统一的图像和视频理解框架,其中图像被视作两个相同的帧来处理,以维持与视频处理逻辑的一致性
- 并采用3D tubes替代传统的2D patches方法,进一步提升了对长时间序列视觉内容的理解深度
2408 CogVideoX¶
2024年8月,智谱开源视频生成模型CogVideoX,先是2B模型,而后是5B模型,近期还开源了V1.5的模型:
技术特点:
- 自主研发了一套高效的三维变分自编码器结构(3D VAE)。降低了视频扩散生成模型的训练成本和难度。结合 3D RoPE 位置编码模块,该技术提升了在时间维度上对帧间关系的捕捉能力,从而建立了视频中的长期依赖关系。
- 拓展视频模型规模到5B,提升了模型的理解能力,使得模型能够处理超长且复杂的 prompt 指令。
- 模型与Stable Diffusion 3一致,将文本、时间、空间融合在一起,通过 Full Attention 机制优化模态间的交互效果。
2404 EasyAnimate¶
没有论文和大厂的支持背书,但是在可拓展性和易用性上做得不错。
- 更新到v5.1版本,应用Qwen2 VL作为文本编码器,支持多语言预测,使用Flow作为采样方式,除去常见控制如Canny、Pose外,还支持轨迹控制,相机控制等。[ 2025.01.21 ]
- 使用奖励反向传播来训练Lora并优化视频,使其更好地符合人类偏好,详细信息请参见此处。EasyAnimateV5-7b现已发布。[ 2024.11.27 ]
- 更新到v5版本,最大支持1024x1024,49帧, 6s, 8fps视频生成,拓展模型规模到12B,应用MMDIT结构,支持不同输入的控制模型,支持中文与英文双语预测。[ 2024.11.08 ]
- 更新到v4版本,最大支持1024x1024,144帧, 6s, 24fps视频生成,支持文、图、视频生视频,单个模型可支持512到1280任意分辨率,支持中文与英文双语预测。[ 2024.08.15 ]
- 更新到v3版本,最大支持960x960,144帧,6s, 24fps视频生成,支持文与图生视频模型。[ 2024.07.01 ]
V2 V3¶
https://blog.csdn.net/weixin_44791964/article/details/139223972?spm=1001.2014.3001.5502
https://blog.csdn.net/weixin_44791964/article/details/140025591?spm=1001.2014.3001.5502
V5¶
在EasyAnimateV5版本中,我们在大约10m SAM图片数据+26m 图片视频混合的预训练数据上进行了从0开始训练。与之前类似的是,EasyAnimateV5依然支持图片与视频预测与中文英文双语预测,同时支持文生视频、图生视频和视频生视频。11
参考CogVideoX,我们缩短了视频的总帧数并减少了视频的FPS以加快训练速度,最大支持FPS为8,总长度为49的视频生成。我们支持像素值从512x512x49、768x768x49、1024x1024x49与不同纵横比的视频生成。
对比EasyAnimateV4,EasyAnimateV5还突出了以下特点:
应用MMDIT结构,拓展模型规模到12B¶
参考Stable Diffusion 3和CogVideoX,在我们的模型中,我们将文本和视频嵌入连接起来以实现Self-Attention,从而更好地对齐视觉和语义信息。然而,这两种模态的特征空间之间存在显著差异,这可能导致它们的数值存在较大差异,这并不利于二者进行对齐。
为了解决这个问题,还是参考Stable Diffusion 3,我们采用MMDiT架构作为我们的基础模型,我们为每种模态实现了不同的to_k、to_q、to_v和前馈网络(FFN),并在一个Self-Attention中实现信息交互,以增强它们的对齐。
另外,为了提高模型的理解能力,我们将模型进行了放大,参考Flux,我们模型的总参数量扩展到了12B。
添加控制信号的EasyAnimateV5¶
在原本Inpaint模型的基础上,我们使用控制信号替代了原本的mask信号,将控制信号使用VAE编码后作为Guidance与latent一起进入patch流程。该方案已经在CogVideoX-FUN的实践中证实有效。
我们在26m的预训练数据中进行了筛选,选择出大约443k高质量视频,同时使用不同的处理方式包含OpenPose、Scribble、Canny、Anime、MLSD、Hed和Depth进行控制条件的提取,作为condition控制信号进行训练。
工作原理图如下:
参考图片添加Noise¶
在CogVideoX-FUN的实践中我们已经发现,在视频生成中,在视频中添加噪声对视频的生成结果有非常大的影响。参考CogVideoX和SVD,在非0的参考图向上添加Noise以破环原图,追求更大的运动幅度。
我们在模型中为参考图片添加了Noise。与CogVideoX一致,在进入VAE前,我们在均值为-3.0、标准差为0.5的正态分布中采样生成噪声幅度,并对其取指数,以确保噪声的幅度在合理范围内。
函数生成与输入视频相同形状的随机噪声,并根据已计算的噪声幅度进行缩放。噪声仅添加到有效值(不需要生成的像素帧上)上,随后与原图像叠加以得到加噪后的图像。
另外,提示词对生成结果影响较大,请尽量描写动作以增加动态性。如果不知道怎么写正向提示词,可以使用smooth motion or in the wind来增加动态性。并且尽量避免在负向提示词中出现motion等表示动态的词汇。
Pipeline结构如下:
基于Token长度的模型训练¶
EasyAnimateV5的训练分为多个阶段,除了图片Adapt VAE的阶段外,其它阶段均为视频训练,分别对应了不同的Token长度。
-
图片VAE的对齐: 我们使用了10M的SAM进行模型从0开始的文本图片对齐的训练,总共训练约120K步。在训练完成后,模型已经有能力根据提示词去生成对应的图片,并且图片中的目标基本符合提示词描述。
-
视频训练:
视频训练则根据不同Token长度,对视频进行缩放后进行训练。
视频训练分为多个阶段,每个阶段的Token长度分别是3328(对应256x256x49的视频),13312(对应512x512x49的视频),53248(对应1024x1024x49的视频)。
其中:
- 3328阶段: 使用了全部的数据(大约26.6M)训练文生视频模型,Batch size为1536,训练步数为66.5k。
- 13312阶段: 使用了720P以上的视频训练(大约17.9M)训练文生视频模型,Batch size为768,训练步数为30k; 使用了最高质量的视频训练(大约0.5M)训练图生视频模型 ,Batch size为384,训练步数为5k
- 53248阶段: 使用了最高质量的视频训练(大约0.5M)训练图生视频模型,Batch size为196,训练步数为5k。
训练时我们采用高低分辨率结合训练,因此模型支持从512到1280任意分辨率的视频生成,以13312 token长度为例:
- 在512x512分辨率下,视频帧数为49;
- 在768x768分辨率下,视频帧数为21;
- 在1024x1024分辨率下,视频帧数为9;
这些分辨率与对应长度混合训练,模型可以完成不同大小分辨率的视频生成。
EasyAnimateV5.1
- 这个多阶段训练具体是怎么实现的,为什么就能生成不同分辨率的视频?
- 原本Inpaint模型 是什么。
V5.1¶
对比EasyAnimateV5,EasyAnimateV5.1主要突出了以下特点:10
应用Qwen2 VL作为文本编码器,支持多语言预测;¶
在MMDiT结构的基础上,将EasyAnimateV5的双text encoders替换成alibaba近期发布的Qwen2 VL;相比于CLIP与T5这样的传统编码模型,使用LLM作为Text Encoder慢慢在生成领域里流行起来,比如最近大火的HunyuanVideo模型。
尽管LLM的主力工作是生成,但对文本的编码与理解能力依然优秀,Qwen2 VL是多模态LLM中性能的佼佼者,对语义理解更加精准。而相比于Qwen2本身,Qwen2 VL由于和图像做过对齐,对图像内容的理解更为精确。
通过取出Qwen2 VL hidden_states的倒数第二个特征输入到MMDiT中,与视频Embedding一起做Self-Attention。在做Self-Attention前,由于大语言模型深层特征值一般较大(可以达到几万),为其做了一个RMSNorm进行数值的矫正再进行全链接,这样有利于网络的收敛。
使用奖励算法最终优化性能;¶
为了进一步优化生成视频的质量以更好地对齐人类偏好,我们采用奖励反向传播(DRaFT 和 DRTune)对 EasyAnimateV5.1 基础模型进行后训练,使用奖励提升模型的文本一致性与画面的精细程度。
我们在EasyAnimate ComfyUI中详细说明了奖励反向传播的使用方案。我们实际使用了HPS v2.1和MPS两个模型对EasyAnimateV5.1进行奖励反向,两个模型都是人类偏好模型,作为反馈,调整后的EasyAnimateV5.1具有更好的文视频一致性,且画面更加精细。
如下三个视频,首个视频是没有使用奖励模型的生成效果,第二个视频是使用HPS作为奖励模型的生成效果,第三个视频是使用MPS作为奖励模型的生成效果。可以看到后面两个模型明显更为讨人喜欢。
使用Flow-matching作为采样方式;¶
除了上述的架构变化之外,EasyAnimateV5.1还应用Flow-matching的方案来训练模型。在这种方法中,前向噪声过程被定义为在直线上连接数据和噪声分布的整流。Flow-matching采样过程更简单,在减少采样步骤数时表现良好。
其他¶
- 支持轨迹控制,相机控制等新控制方式;10
- 使用更多数据训练。