Generated with sparks and insights from 4 sources
Introduction
-
Classifier-Free Guidance Diffusion是一种在扩散模型中使用的方法,可以在不需要分类器的情况下提供与分类器引导相同的效果。
-
这种方法涉及训练两个模型:一个无条件的去噪扩散模型pθ(z),和一个有条件模型pθ(z|c)。
-
在生成过程中,输入随机噪声,然后逐步去除噪声,普遍使用的解噪方法是Stochastic Gradient Langevin Dynamics (SGLD)。
-
在条件扩散模型中,会有一个额外的输入y(比如类别标签或者一段文字),我们尝试对条件概率分布p(x|y)建模。
-
Classifier-Free Guidance通过在训练中有时将文本替换为空序列来实现,这样在生成时可以使用更新的εθ(xt|y)指导生成标签为y的图像。
研究背景
-
扩散模型是生成模型的一种,其对高维数据的分布p(x)建模。
-
不同于直接估计p(x),扩散模型尝试估计score function ∇x log p(x)。
-
使用扩散模型生成样本时,输入随机噪声,然后逐步去除噪声。
-
普遍使用的解噪方法是Stochastic Gradient Langevin Dynamics (SGLD)。
-
在条件扩散模型中,会有一个额外的输入y(比如类别标签或者一段文字),我们尝试对条件概率分布p(x|y)建模。
理论推导 [1]
-
根据DDIM的采样过程,xt-1可以通过xt和εθ(xt|y)来预测。
-
如果能得到εθ(xt|y),就可以使用公式生成图像。
-
Classifier guidance通过贝叶斯公式来实现,增强条件信息。
-
Classifier-free guidance通过在训练中有时将文本替换为空序列来实现。
-
在生成时,使用更新的εθ(xt|y)指导生成标签为y的图像。
Classifier Guidance [1]
-
Classifier guidance通过贝叶斯公式来实现,增强条件信息。
-
在条件项上增加一个尺度因子γ,称为guidance scale。
-
当γ取值大于1时,可以增大条件信息的影响。
-
需要注意的是条件项∇xt log p(y|xt)不是score function。
-
Classifier guidance的有效性在本质上是有限的,通常需要训练定制的分类器。
Classifier-Free Guidance [1]
-
Classifier-free guidance通过在训练中有时将文本替换为空序列来实现。
-
在生成时,使用更新的εθ(xt|y)指导生成标签为y的图像。
-
当γ=0时为无条件模型,当γ=1时为标准的条件概率模型。
-
当γ>1时,可以显著提高样本生成质量。
-
Classifier-free guidance的想法发布和OpenAI的GLIDE模型只间隔很短的时间。
代码分析 [1]
-
模型使用UNet模型,输入增加数据标签,即tokens和mask。
-
数据加载时,以一定的概率将标签替换为”[]“。
-
生成图像时,输入prompt会随机初始化高斯图像。
-
模型的输入为xt,ts,**kwargs (tokens, mask),经过UNet后输出。
-
最后通过diffusion生成结果,图像取[:batch_size]。
Related Videos
<br><br>
<div class="-md-ext-youtube-widget"> { "title": "Classifier-free Guidance\u8bba\u6587\u89e3\u6790", "link": "https://www.youtube.com/watch?v=PDCT7MsTWPg", "channel": { "name": ""}, "published_date": "Feb 20, 2023", "length": "" }</div>
<div class="-md-ext-youtube-widget"> { "title": "CFG: Classifier-Free Diffusion Guidance", "link": "https://www.youtube.com/watch?v=XDMnHMeX-kQ", "channel": { "name": ""}, "published_date": "Apr 4, 2024", "length": "" }</div>