Guided diffusion
DDPM和DDIM只能通过特定的采样方式恢复与训练集相似的图片,而在采样过程中生成的方向我们难以控制。因此,对实现扩散模型在采样过程中的引导,使其生成我们想要的种类图片有着重要意义。Classifier Guidance就是其中一个方法。
两个重要指标:IS 和 FID
这两个指标在图像生成领域经常出现,用于评估模型的性能。
Classifier Guidance
论文:Diffusion Models Beat GANs on Image Synthesis
https://arxiv.org/pdf/2105.05233v1.pdf
Classifier Guidance方法包括采样过程神经网络模型和分类器模型。以下介绍数学推导过程证明采样神经网络模型和分类器模型的合理性。
Conditional Diffusion Process
定义新的表示扩散过程(带 ^ 是新的定义过程,下列表示新的扩散过程和旧的即DDPM作者定义的过程之间的关系,并给出证明):
原始图片
x
0
{x_0}
x0是一样的,并且类别是已知的,加噪过程和之前也是一样的。
无论有没有条件引导,加噪过程是一致的,不依赖于y。证明如下:
图像的类别跟t+1时刻的图像没有关系(这点与DDPM具有同样的关系过程,如下):
在给定类别y的条件下,反向过程:
q
(
x
t
∣
x
t
+
1
)
q(x_t|x_{t+1})
q(xt∣xt+1)是DDPM训练好的,
q
^
(
y
∣
x
t
+
1
)
\widehat{q}(y|x_{t+1})
q
(y∣xt+1)可以由分类器计算得到的,是已知的。
q
^
(
y
∣
x
t
)
\widehat{q}(y|x_{t})
q
(y∣xt)也说明分类器需要对每一时刻的图像进行分类,因此分类器需要对各种加噪的图片进行训练而不只是对
x
0
{x_0}
x0进行训练。
因此,反向过程进行采样的神经网络可以写成:
其中,Z是归一化常数。
对于高维的高斯分布求log
p
θ
(
y
∣
x
t
)
p_\theta(y|x_t)
pθ(y∣xt)分布集中
x
t
=
μ
x_{t}=\mu
xt=μ,在此处使用泰勒展开可以得到:
而
log
p
ϕ
(
y
∣
x
t
)
\log p_\phi(y|x_t)
logpϕ(y∣xt)虽不是高斯分布,也可以在
x
t
=
μ
x_t=\mu
xt=μ处进行泰勒展开,得到:
其中,
g
=
∇
x
t
log
p
ϕ
(
y
∣
x
t
)
∣
x
t
=
μ
g=\nabla_{x_t}\log p_\phi(y|x_t)|_{x_t=\mu}
g=∇xtlogpϕ(y∣xt)∣xt=μ
因此,将上面两个展开公式代入采样过程的神经网络对数公式,化简可得:
所以采样的分布为
N
(
μ
+
Σ
g
,
Σ
)
\mathcal{N}(\mu+\Sigma g,\Sigma)
N(μ+Σg,Σ)便能得到y引导下的图片。
这就是第一种采样方式。
=====================================================
第二种采样方式:
而对于DDIM,
Σ
{\Sigma}
Σ可能为0。因此由score的方法
从而重新定义预测的分布
通过这个新的
ϵ
^
(
x
t
)
\hat{\epsilon}(x_t)
ϵ^(xt)去进行DDIM或者DDPM的采样得到最终图片。
伪代码
两种采样方式
架构改进(Classifier Guidance)
Classifier Guidance的重大贡献就是从数学推导上解释对扩散模型采样过程的引导。同时,论文相关工作也对模型进行了一定的修改。
-增加深度与宽度,保持模型尺寸相对恒定。
-增加 attention heads的数量。
-在32 × 32、16 × 16和8 × 8分辨率下使用注意力,而不仅仅是在16 × 16分辨率下。
-使用BigGAN残差块对激活进行上采样和下采样。
-用 1 2 \frac1{\sqrt{2}} 21重新缩放剩余连接
相关论文和代码下载
有时候论文网站arXiv.org打开比较慢,已经将相关论文和代码上传到网盘,需要的可以自取
链接: https://pan.baidu.com/s/1J1h8R4KyY7k6NgS2t7YOZg?pwd=3ss8
可以关注公众号:
搜索:福尔马林灌汤包