13. GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models
该文提出一种基于文本引导的扩散模型用于图像的生成和编辑,可以根据给定的文字描述来生成或编辑图像。在ADM中我们曾介绍了一种基于分类器引导的图像生成模型,其基本的思想是额外训练一个分类器 p ϕ ( y ∣ x t ) p_{\phi}(y|x_t) pϕ(y∣xt)利用其对数的梯度来引导采样过程,具体来说是对去噪模型预测的均值 μ θ ( x t ∣ y ) \mu_{\theta}(x_t|y) μθ(xt∣y)进行修改,如下式 μ ^ θ ( x t ∣ y ) = μ θ ( x t ∣ y ) + s ⋅ Σ θ ( x t ∣ y ) ∇ x t log p ϕ ( y ∣ x t ) \hat{\mu}_{\theta}\left(x_{t} \mid y\right)=\mu_{\theta}\left(x_{t} \mid y\right)+s \cdot \Sigma_{\theta}\left(x_{t} \mid y\right) \nabla_{x_{t}} \log p_{\phi}\left(y \mid x_{t}\right) μ^θ(xt∣y)=μθ(xt∣y)+s⋅Σθ(xt∣y)∇xtlogpϕ(y∣xt)虽然这种做法实现了将类别条件引入到生成过程中,可以生成指定类别的图像。但需要额外训练一个分类器,且对于某些很难用分类器去描述的引导内容,该方法也会失效。因此在CDM(Classifier-free diffusion guidance)中提出一种无需分类器的引导方法,具体实现方法如下 ϵ ^ θ ( x t ∣ y ) = ϵ θ ( x t ∣ ∅ ) + s ⋅ ( ϵ θ ( x t ∣ y ) − ϵ θ ( x t ∣ ∅ ) ) \hat{\epsilon}_{\theta}\left(x_{t} \mid y\right)=\epsilon_{\theta}\left(x_{t} \mid \emptyset\right)+s \cdot\left(\epsilon_{\theta}\left(x_{t} \mid y\right)-\epsilon_{\theta}\left(x_{t} \mid \emptyset\right)\right) ϵ^θ(xt∣y)=ϵθ(xt∣∅)+s⋅(ϵθ(xt∣y)−ϵθ(xt∣∅))其中 ϵ θ ( x t ∣ y ) \epsilon_{\theta}\left(x_{t} \mid y\right) ϵθ(xt∣y)表示带有条件 y y y训练的去噪模型,条件 y y y可以通过AdaGN或者图像级联的方式引入去噪模型中, ϵ θ ( x t ∣ ∅ ) \epsilon_{\theta}\left(x_{t} \mid \emptyset\right) ϵθ(xt∣∅)则表示条件为空时的扩散模型。
这里的写法和CDM原文中有一些出入,就是公式中第一个 ϵ θ ( x t ∣ ∅ ) \epsilon_{\theta}\left(x_{t} \mid \emptyset\right) ϵθ(xt∣∅)在CDM中应该是 ϵ θ ( x t ∣ y ) \epsilon_{\theta}\left(x_{t} \mid y\right) ϵθ(xt∣y),不知道是作者的笔误还是我个人理解有误。
采用与CDM类似的结构,作者将文本描述 c c c作为条件,用于引导图像生成,如下式 ϵ ^ θ ( x t ∣ c ) = ϵ θ ( x t ∣ ∅ ) + s ⋅ ( ϵ θ ( x t ∣ c ) − ϵ θ ( x t ∣ ∅ ) ) \hat{\epsilon}_{\theta}\left(x_{t} \mid c\right)=\epsilon_{\theta}\left(x_{t} \mid \emptyset\right)+s \cdot\left(\epsilon_{\theta}\left(x_{t} \mid c\right)-\epsilon_{\theta}\left(x_{t} \mid \emptyset\right)\right) ϵ^θ(xt∣c)=ϵθ(xt∣∅)+s⋅(ϵθ(xt∣c)−ϵθ(xt∣∅))其中文本描述 c c c先被编码为一个包含 K K K个Token的序列,并将其输入到Transformer中,得到的token嵌入一方面将取代ADM中的类别嵌入,另一方面token嵌入的最后一层(包含 K K K个特征向量)将会被分别映射到ADM模型的每个注意力层的维度,并与对应的注意力层级联起来。通过这样的方式实现了文本描述对去噪模型的引导。
此外,作者还尝试了一种基于CLIP的引导方式,具体而言,就是利用CLIP中的图像编码器得到对应的图像特征 f ( x t ) f(x_t) f(xt),文本编码器得到文本特征 g ( c ) g(c) g(c),计算二者之间的点乘积梯度来引导去噪过程,如下式所示 μ ^ θ ( x t ∣ c ) = μ θ ( x t ∣ c ) + s ⋅ Σ θ ( x t ∣ c ) ∇ x t ( f ( x t ) ⋅ g ( c ) ) \hat{\mu}_{\theta}\left(x_{t} \mid c\right)=\mu_{\theta}\left(x_{t} \mid c\right)+s \cdot \Sigma_{\theta}\left(x_{t} \mid c\right) \nabla_{x_{t}}\left(f\left(x_{t}\right) \cdot g(c)\right) μ^θ(xt∣c)=μθ(xt∣c)+s⋅Σθ(xt∣c)∇xt(f(xt)⋅g(c))与ADM中的分类器引导类似,这个CLIP模型也是在带有噪声的图像 x t x_t xt上进行训练的,使其具备对于噪声图像的编码能力。
实验结果表明,采用无分类器的文本引导方式生成效果要优于基于CLIP的引导方式,其生成效果对比如下
该方法还可以用于图像修复等编辑类任务,效果如下