Stable Diffusion(SD)是一种基于潜在扩散模型(LDM)的图像生成方法。为了降低模型的计算复杂性,SD在潜在空间中对特征分布进行建模。其核心组件包括一个自动编码器(Autoencoder),由编码器(Encoder)
E
E
E和解码器(Decoder)
D
D
D组成。具体过程如下:
编码过程:给定图像
x
x
x,编码器首先将其映射到一个潜在表示
z
=
E
(
x
)
z = E(x)
z=E(x)。
解码过程:解码器将潜在表示
z
z
z重建为原图像
x
recon
=
D
(
z
)
x_{\text{recon}} = D(z)
xrecon=D(z)。
SD通过denoise一个正态分布的噪声
ϵ
\epsilon
ϵ来生成逼真的潜在表示
z
z
z。在训练过程中,图像潜在表示
z
z
z在
t
t
t个时间步中被扩散以产生噪声潜在表示
z
t
z_t
zt,去噪UNet被训练用来预测应用的噪声。其优化目标定义如下:
L
=
E
z
t
,
c
,
ϵ
,
t
(
∣
∣
ϵ
−
ϵ
θ
(
z
t
,
c
,
t
)
∣
∣
2
2
)
L = E_{z_t, c, \epsilon, t} (||\epsilon - \epsilon_\theta(z_t, c, t)||_2^2)
L=Ezt,c,ϵ,t(∣∣ϵ−ϵθ(zt,c,t)∣∣22)
ϵ
θ
\epsilon_\theta
ϵθ表示去噪UNet的函数
c
c
c表示条件信息的嵌入。在原始SD中,使用CLIP ViT-L/14[9]文本编码器将文本提示表示为文本嵌入。
Pose Guider:编码运动控制信号(motion control signals),实现可控的角色运动。
时间层(Temporal layer):编码时间关系,确保角色运动的连续性。
ReferenceNet:
设计:采用与去噪UNet相同的架构(但不包括时间层),继承原始SD的权重,进行独立权重更新。
特征融合:在去噪UNet的自注意力层中替换为空间注意力层。给定来自去噪UNet的特征图
x
1
∈
R
t
×
h
×
w
×
c
x_1 \in \mathbb{R}^{t \times h \times w \times c}
x1∈Rt×h×w×c和来自ReferenceNet的特征图
x
2
∈
R
h
×
w
×
c
x_2 \in \mathbb{R}^{h \times w \times c}
x2∈Rh×w×c,首先复制
x
2
x_2
x2,然后在
w
w
w维度上与
x
1
x_1
x1连接,执行自注意力,并提取前半部分特征图作为输出。这种设计的优势:
特征图重塑:假设输入特征图为
x
∈
R
b
×
t
×
h
×
w
×
c
x \in \mathbb{R}^{b \times t \times h \times w \times c}
x∈Rb×t×h×w×c,其中
b
b
b表示批量大小,
t
t
t表示时间步长,
h
h
h和
w
w
w表示特征图的高度和宽度,
c
c
c表示通道数。首先将特征图重塑为
x
∈
R
(
b
×
h
×
w
)
×
t
×
c
x \in \mathbb{R}^{(b \times h \times w) \times t \times c}
x∈R(b×h×w)×t×c,然后沿着时间维度
t
t
t进行自注意力操作(即时间注意力)。
时间注意力:时间注意力指的是沿时间维度
t
t
t进行自注意力计算。这种方式允许模型在处理每一帧时,考虑前后帧的信息,从而捕捉帧与帧之间的时间依赖关系。