生成图片
在Stable Diffusion推理过程中,其使用unet对一个初始化的向量不断去噪,并编入条件信息 c c c ,最后使用vae-decoder将其上采样为一张图片。
计算过程:
f l a t e n t = u n e t ( f l a t e n t ) , f l a t e n t ∈ R h × w × c I = d e c o d e r ( f l a t e n t ) , I ∈ R H × W × 3 f_{latent}=unet(f_{latent}),f_{latent} \in R^{h \times w \times c} \\ I=decoder(f_{latent}),I \in R^{H \times W \times 3} flatent=unet(flatent),flatent∈Rh×w×cI=decoder(flatent),I∈RH×W×3
h , w h,w h,w是特征的空间维度, c c c是特征维度, H , W H,W H,W是图像高,宽
生成视频
视频由视频帧组成,即视频由一组图像组成。将stable diffusion中初始化的隐向量添加时间序列,并且将计算网络扩充为3D,即可完成视频的生成。
h , w h,w h,w是特征的空间维度, c c c是特征维度, f f f是帧数
VAE视频压缩
与SD一致,训练视频生成网络首先需要进行视频压缩,这主要通过VAE完成。压缩视频主要是通过3D卷积实现。给定一个视频 v ∈ R 16 × 512 × 512 × 3 v\in R^{16 \times 512 \times 512 \times 3} v∈R16×512×512×3,如果使用 N N N个形状为 R 2 × 2 × 2 × 3 R^{2\times2\times2\times3} R2×2×2×3的卷积核进行卷积,最终得到 v ∈ R 15 × 511 × 511 × N v\in R^{15 \times511\times511\times N} v∈R15×511×511×N的特征。
去噪网络
SD生图使用UNET逐步完成对隐向量的不断去噪。而在视频进行去噪时,为匹配隐向量的维度,会将UNET中的2D卷积扩充为3D卷积。即增加一维时间维度,也就是伪3D卷积。基本思想是利用一个1 × \times × 3 × \times × 3的二维空间卷积和3 × \times × 1 × \times × 1的一维时域卷积来模拟常用的3 × \times × 3 × \times × 3三维卷积,即利用2D+1D实现3D做的事。
所以最开始Stable Video Diffusion网络使用伪3D的网络直接对视频帧隐向量进行去噪,这也使视频帧之间联系不强,所以需要一个专属的模块来完成视频帧之间的信息交互,这通常通过空间-时间注意力实现。
空间-时间注意力
对于视频特征,空间注意力主要负责帧内特征的交流,时空注意力负责不同帧的相同位置之间的特征交流,主要通过Attention完成。
对于视频特征 f ∈ R f × h × w × c f\in R^{f\times h \times w \times c} f∈Rf×h×w×c,其中 f f f是视频的帧数量。空间注意力首先会将其变换为 f ∈ R f × h w × c f\in R^{f\times hw \times c} f∈Rf×hw×c,随后输入attention block中在 h w hw hw维度进行注意力计算,而对于时间注意力,会将特征变换为 f ∈ R h w × f × c f\in R^{hw \times f \times c} f∈Rhw×f×c,随后同样输入attention block中,在 f f f维度计算注意力。这样针对视频的UNET网络就变成了下面这个样子。
3D Causal
左半部分是普通3D卷积网络,随着卷积的不断深入,1号的感受野不断扩大。右半部分是因果卷积,在第一帧前加入padding(黄色),那么即使卷积不断深入,后续帧的信息也不会泄漏到当前帧,即1号位的感受野永远是自己。这样就可实现图像与视频的联合训练,我们可以将一张图像当作视频帧直接使用3D因果卷积卷它。
最终网络结构
最后基于UNET的视频生成网络:
- 视频使用3D-VAE causal Encoder进行压缩
- UNET不断进行降噪
- 卷积计算
- 空间注意力
- 时间注意力
- VAE-Decoder解码为图像
sora
将unet换成Transformer
3D full attention,所有视频帧的特征并成一个序列,计算attention
cogvideox
将unet换成Transformer,解耦合text与video特征
EasyAnimate
将unet换为Transformer,并加入基于两种attention的Motion Module