Guided Diffusion/Diffusion Models Beat GANs on Image Synthesis (Paper reading)

2023-10-17 03:10

本文主要是介绍Guided Diffusion/Diffusion Models Beat GANs on Image Synthesis (Paper reading),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Guided Diffusion/Diffusion Models Beat GANs on Image Synthesis (Paper reading)

Prafulla Dhariwal, OpenAI, NeurlPS2021, Cited: 555, Code, Paper.

目录子

  • Guided Diffusion/Diffusion Models Beat GANs on Image Synthesis (Paper reading)
    • 1. 前言
    • 2. 整体思想
    • 3. 方法
    • 4. 总结

1. 前言

对于条件图像合成,我们通过分类器指导进一步提高样本质量:一种简单、计算效率高的方法,使用分类器的梯度来权衡样本质量的多样性。我们在 ImageNet 128×128 上实现了 2.97 的 FID,在 ImageNet 256×256 上实现了 4.59,在 ImageNet 512×512 上实现了 7.72。即使每个样本只有 25 次前向传播,我们也能匹配 BigGAN-deep,同时保持更好的分布覆盖。最后,我们发现分类器引导与上采样扩散模型结合得很好,在 ImageNet 512×512 上进一步将 FID 提高到 3.85。

2. 整体思想

在扩散模型的梯度上加上额外的条件梯度使扩散模型可以有条件生成。

    def cond_fn(x, t, y=None):assert y is not Nonewith th.enable_grad():# x_in 就是 x_tx_in = x.detach().requires_grad_(True)# 分类器对x_t的预测结果logits = classifier(x_in, t)# 将预测的结果转换成概率log_probs = F.log_softmax(logits, dim=-1)# 对于GT的概率selected = log_probs[range(len(logits)), y.view(-1)]# 将所有概率求和得到梯度修正return th.autograd.grad(selected.sum(), x_in)[0] * args.classifier_scale

3. 方法

首先,定义一个有条件的扩散过程 q ^ \hat q q^,并假设 q ^ ( y ∣ x 0 ) \hat q(y|x_{0}) q^(yx0)是已知的:
q ^ ( x 0 ) : = q ( x 0 ) q ^ ( y ∣ x 0 ) : = Known labels per sample q ^ ( x t + 1 ∣ x t , y ) : = q ( x t + 1 ∣ x t ) q ^ ( x 1 : T ∣ x 0 , y ) : = ∏ T t = 1 q ^ ( x t ∣ x t − 1 , y ) \begin{align} \hat q(x_{0})&:=q(x_{0}) \tag{1} \\ \hat q(y|x_{0})&:= \text{Known labels per sample} \tag{2} \\ \hat q(x_{t+1}|x_{t},y) &:=q(x_{t+1}|x_{t})\tag{3}\\ \hat q(x_{1:T}|x_{0},y) &:= \prod_{T}^{t=1} \hat q(x_{t}|x_{t-1},y) \tag{4} \end{align} q^(x0)q^(yx0)q^(xt+1xt,y)q^(x1:Tx0,y):=q(x0):=Known labels per sample:=q(xt+1xt):=Tt=1q^(xtxt1,y)(1)(2)(3)(4)

(1)可知训练样本是不变的,(2)可知每一个样本都有已知标签,(3)可知加噪过程不变,(4)可知有条件的联合分布也是一个马尔可夫性质的。那么通过以上定义的假设,接下来分别证明

q ^ ( x t + 1 ∣ x t ) \hat q(x_{t+1}|x_{t}) q^(xt+1xt)的边缘分布可以表示为 ∫ y q ^ ( x t + 1 , y ∣ x t ) d y \int_{y} \hat q(x_{t+1}, y|x_{t})dy yq^(xt+1,yxt)dy,我们把 x t x_{t} xt当作一个条件时,可以将上式看作边缘概率与条件概率相乘(多变量贝叶斯公式) ∫ y q ^ ( x t + 1 ∣ x t , y ) q ^ ( y ∣ x t ) d y \int_{y} \hat q(x_{t+1}|x_{t}, y) \hat q(y|x_{t})dy yq^(xt+1xt,y)q^(yxt)dy,继续推导:
∫ y q ^ ( x t + 1 ∣ x t , y ) q ^ ( y ∣ x t ) d y = ∫ y q ^ ( x t + 1 ∣ x t ) q ^ ( y ∣ x t ) d y = q ^ ( x t + 1 ∣ x t ) ∫ y q ^ ( y ∣ x t ) d y , ∫ y q ^ ( y ∣ x t ) d y = 1 = q ^ ( x t + 1 ∣ x t ) = q ^ ( x t + 1 ∣ x t , y ) \begin{aligned} \int_{y} \hat q(x_{t+1}|x_{t}, y) \hat q(y|x_{t})dy&=\int_{y} \hat q(x_{t+1}|x_{t}) \hat q(y|x_{t})dy\\ &=\hat q(x_{t+1}|x_{t})\int_{y} \hat q(y|x_{t})dy, \quad \int_{y}\hat q(y|x_{t})dy=1\\ &=\hat q(x_{t+1}|x_{t})=\hat q(x_{t+1}|x_{t}, y) \end{aligned} yq^(xt+1xt,y)q^(yxt)dy=yq^(xt+1xt)q^(yxt)dy=q^(xt+1xt)yq^(yxt)dy,yq^(yxt)dy=1=q^(xt+1xt)=q^(xt+1xt,y)
相同的逻辑可以推断出联合分布 q ^ ( x 1 : T ∣ x 0 ) = q ( x 1 : T ∣ x 0 ) \hat q(x_{1:T}|x_{0})=q(x_{1:T}|x_{0}) q^(x1:Tx0)=q(x1:Tx0)。根据这个联合分布得:
q ^ ( x t ) = ∫ x 0 : t − 1 q ^ ( x 0 , . . . , x t ) d x 0 : t − 1 = ∫ x 0 : t − 1 q ^ ( x 0 ) q ^ ( x 1 , . . . , x t ∣ x 0 ) d x 0 : t − 1 = ∫ x 0 : t − 1 q ( x 0 ) q ( x 1 , . . . , x t ∣ x 0 ) d x 0 : t − 1 = ∫ x 0 : t − 1 q ( x 0 , . . . , x t ) d x 0 : t − 1 = q ( x t ) \begin{aligned} \hat q(x_{t})&=\int_{x_{0}:t-1} \hat q(x_{0},...,x_{t})d_{x_{0}:t-1}\\ &=\int_{x_{0}:t-1} \hat q(x_{0}) \hat q(x_{1},...,x_{t}|x_{0})d_{x_{0}:t-1}\\ &=\int_{x_{0}:t-1} q(x_{0})q(x_{1},...,x_{t}|x_{0})d_{x_{0}:t-1}\\ &=\int_{x_{0}:t-1} q(x_{0},...,x_{t})d_{x_{0}:t-1}\\ &=q(x_{t}) \end{aligned} q^(xt)=x0:t1q^(x0,...,xt)dx0:t1=x0:t1q^(x0)q^(x1,...,xtx0)dx0:t1=x0:t1q(x0)q(x1,...,xtx0)dx0:t1=x0:t1q(x0,...,xt)dx0:t1=q(xt)
由于 q ^ ( x t ) = q ( x t ) \hat q(x_{t})=q(x_{t}) q^(xt)=q(xt) q ^ ( x t + 1 ∣ x t ) = q ( x t + 1 ∣ x t ) \hat q(x_{t+1}|x_{t})= q(x_{t+1}|x_{t}) q^(xt+1xt)=q(xt+1xt),由贝叶斯公式可知任意时刻 x t x_{t} xt q ^ \hat q q^ q q q中的表现是一样的。那么在有条件下的逆过程 q ^ ( x t ∣ x t + 1 , y ) \hat q(x_{t}|x_{t+1},y) q^(xtxt+1,y)是什么样的呢?
q ^ ( x t ∣ x t + 1 , y ) = q ^ ( x t , x t + 1 , y ) q ^ ( x t + 1 , y ) = q ^ ( x t , x t + 1 , y ) q ^ ( y ∣ x t + 1 ) q ^ ( x t + 1 ) = q ^ ( x t ∣ x t + 1 ) q ^ ( y ∣ x t , x t + 1 ) q ^ ( x t + 1 ) q ^ ( y ∣ x t + 1 ) q ^ ( x t + 1 ) = q ^ ( x t ∣ x t + 1 ) q ^ ( y ∣ x t , x t + 1 ) q ^ ( y ∣ x t + 1 ) \begin{align} \hat q(x_{t}|x_{t+1},y)&=\frac{\hat q(x_{t},x_{t+1},y)}{\hat q(x_{t+1},y)}\tag{5}\\ &=\frac{\hat q(x_{t},x_{t+1},y)}{\hat q(y|x_{t+1})\hat q(x_{t+1})}\tag{6}\\ &=\frac{\hat q(x_{t}|x_{t+1}) \hat q(y|x_{t},x_{t+1}) \hat q(x_{t+1})}{\hat q(y|x_{t+1}) \hat q(x_{t+1})}\tag{7}\\ &=\frac{\hat q(x_{t}|x_{t+1}) \hat q(y|x_{t},x_{t+1})}{\hat q(y|x_{t+1})}\tag{8}\\ \end{align} q^(xtxt+1,y)=q^(xt+1,y)q^(xt,xt+1,y)=q^(yxt+1)q^(xt+1)q^(xt,xt+1,y)=q^(yxt+1)q^(xt+1)q^(xtxt+1)q^(yxt,xt+1)q^(xt+1)=q^(yxt+1)q^(xtxt+1)q^(yxt,xt+1)(5)(6)(7)(8)
公式8中的 q ^ ( y ∣ x t , x t + 1 ) \hat q(y|x_{t},x_{t+1}) q^(yxt,xt+1)
q ^ ( y ∣ x t , x t + 1 ) = q ^ ( x t + 1 ∣ x t , y ) q ^ ( y ∣ x t ) q ^ ( x t + 1 ∣ x t ) = q ^ ( x t + 1 ∣ x t ) q ^ ( y ∣ x t ) q ^ ( x t + 1 ∣ x t ) = q ^ ( y ∣ x t ) \begin{align} \hat q(y|x_{t},x_{t+1})&=\hat q(x_{t+1}|x_{t},y)\frac{\hat q(y|x_{t})}{\hat q(x_{t+1}|x_{t})}\tag{9}\\ &=\hat q(x_{t+1}|x_{t})\frac{\hat q(y|x_{t})}{\hat q(x_{t+1}|x_{t})}\tag{10}\\ &=\hat q(y|x_{t})\tag{11} \end{align} q^(yxt,xt+1)=q^(xt+1xt,y)q^(xt+1xt)q^(yxt)=q^(xt+1xt)q^(xt+1xt)q^(yxt)=q^(yxt)(9)(10)(11)
则公式8可以表示为: q ( x t ∣ x t + 1 ) q ^ ( y ∣ x t ) q ^ ( y ∣ x t + 1 ) \frac{q(x_{t}|x_{t+1}) \hat q(y|x_{t})}{\hat q(y|x_{t+1})} q^(yxt+1)q(xtxt+1)q^(yxt),且 q ^ ( y ∣ x t + 1 ) \hat q(y|x_{t+1}) q^(yxt+1)是不依赖于 x t x_{t} xt的,则 q ^ ( y ∣ x t , x t + 1 ) ∝ Z q ^ ( x t ∣ x t + 1 ) q ^ ( y ∣ x t , x t + 1 ) \hat q(y|x_{t},x_{t+1}) \propto Z\hat q(x_{t}|x_{t+1}) \hat q(y|x_{t},x_{t+1}) q^(yxt,xt+1)Zq^(xtxt+1)q^(yxt,xt+1) Z Z Z是一个归一化常数。 q q q是一个训练好的扩散过程,因此可以用 p θ ( x t ∣ x t + 1 ) p_{\theta}(x_{t}|x_{t+1}) pθ(xtxt+1)表示,那么该如何获得 q ^ ( y ∣ x t ) \hat q(y|x_{t}) q^(yxt)?我们可以在每一个时刻 x t x_{t} xt,训练一个分类器 p ϕ ( y ∣ x t ) p_{\phi}(y|x_{t}) pϕ(yxt)。接下来如何通过采样得到 x 0 x_{0} x0呢?
p θ , ϕ ( x t ∣ x t + 1 , y ) = Z p θ ( x t ∣ x t + 1 ) p ϕ ( y ∣ x t ) (12) p_{\theta, \phi}(x_{t}|x_{t+1},y)=Zp_{\theta}(x_{t}|x_{t+1})p_{\phi}(y|x_{t})\tag{12} pθ,ϕ(xtxt+1,y)=Zpθ(xtxt+1)pϕ(yxt)(12)
在DDPM中,假设了 p θ ( x t ∣ x t + 1 ) = N ( μ , Σ ) p_{\theta}(x_{t}|x_{t+1})=N(\mu,\Sigma) pθ(xtxt+1)=N(μ,Σ), 该多元高斯分布的似然函数为 l o g p θ ( x t ∣ x t + 1 ) = − 1 2 ( x t − μ ) T Σ − 1 ( x t − μ ) + C logp_{\theta}(x_{t}|x_{t+1})=-\frac{1}{2}(x_{t}-\mu)^{T}\Sigma^{-1}(x_{t}-\mu)+C logpθ(xtxt+1)=21(xtμ)TΣ1(xtμ)+C 。同时,我们假设 l o g p ϕ ( y ∣ x t ) log p_{\phi}(y|x_{t}) logpϕ(yxt) Σ − 1 \Sigma^{-1} Σ1有更低的曲率,也就是说二阶导数更小。那么我们可以用Taylor公式将 l o g p ϕ ( y ∣ x t ) logp_{\phi}(y|x_{t}) logpϕ(yxt)展开到一阶导数:
l o g p ϕ ( y ∣ x t ) ≈ l o g p ϕ ( y ∣ x t ) ∣ x t = μ + ( x t − μ ) ∇ x t l o g p ϕ ( y ∣ x t ) ∣ x t = μ = ( x t − μ ) g + C 1 (13) \begin{aligned} log p_{\phi}(y|x_{t})&\approx logp_{\phi}(y|x_{t})|_{x_{t}=\mu}+(x_{t}-\mu)\nabla_{x_{t}}log p_{\phi}(y|x_{t})|_{x_{t}=\mu}\\ &=(x_{t}-\mu)g+C_{1} \tag{13} \end{aligned} logpϕ(yxt)logpϕ(yxt)xt=μ+(xtμ)xtlogpϕ(yxt)xt=μ=(xtμ)g+C1(13)
其中 g = ∇ x t l o g p ϕ ( y ∣ x t ) ∣ x t = μ g= \nabla_{x_{t}}log p_{\phi}(y|x_{t})|_{x_{t}=\mu} g=xtlogpϕ(yxt)xt=μ C 1 C_{1} C1是个常数。 则:
l o g ( p θ ( x t ∣ x t + 1 ) p ϕ ( y ∣ x t ) ) ≈ − 1 2 ( x t − μ ) T Σ − 1 ( x t − μ ) + ( x t − μ ) g + C 2 = − 1 2 ( x t − μ − Σ g ) T Σ − 1 ( x t − μ − Σ g ) + 1 2 g T Σ g + C 2 = − 1 2 ( x t − μ − Σ g ) T Σ − 1 ( x t − μ − Σ g ) + C 3 = l o g p ( z ) + C 4 , z ∼ N ( μ + Σ g , Σ ) \begin{align} log(p_{\theta}(x_{t}|x_{t+1})p_{\phi}(y|x_{t}))&\approx -\frac{1}{2}(x_{t}-\mu)^{T}\Sigma^{-1}(x_{t}-\mu)+(x_{t}-\mu)g+C_{2}\tag{14}\\ &= -\frac{1}{2}(x_{t}-\mu-\Sigma g)^{T}\Sigma^{-1}(x_{t}-\mu-\Sigma g)+\frac{1}{2}g ^{T}\Sigma g+C_{2}\tag{15}\\ &=-\frac{1}{2}(x_{t}-\mu-\Sigma g)^{T}\Sigma^{-1}(x_{t}-\mu-\Sigma g)+C_{3}\tag{16}\\ &=logp(z)+C_{4},z\sim N(\mu+\Sigma g, \Sigma)\tag{17} \end{align} log(pθ(xtxt+1)pϕ(yxt))21(xtμ)TΣ1(xtμ)+(xtμ)g+C2=21(xtμΣg)TΣ1(xtμΣg)+21gTΣg+C2=21(xtμΣg)TΣ1(xtμΣg)+C3=logp(z)+C4,zN(μ+Σg,Σ)(14)(15)(16)(17)
公式14中的 Σ = Σ T \Sigma=\Sigma^{T} Σ=ΣT可以推出公式15,而公式15中的第二项与 x t x_{t} xt无关,则可以推出公式16,公式17说明了这个新的似然为均值为 μ + Σ g \mu+\Sigma g μ+Σg,方差不变的新分布,也就是说新的逆扩散条件分布 p θ , ϕ p_{\theta,\phi} pθ,ϕ与DDPM中的逆过程仅仅相差在均值上 。那么将该方法应用在DDPM中,如下:
请添加图片描述

首先通过扩散模型中的神经网络获得均值和方差,可学习的方差为 Σ θ ( x t , t ) = e x p ( v l o g ( β t ) + ( 1 − v ) l o g β ~ t ) \Sigma_{\theta}(x_{t}, t)=exp(vlog(\beta_{t})+(1-v)log\tilde\beta_{t}) Σθ(xt,t)=exp(vlog(βt)+(1v)logβ~t)其中, β ~ t = 1 − α ˉ t − 1 1 − α ˉ t β t \tilde\beta_{t}=\frac{1-\bar\alpha_{t-1}}{1-\bar\alpha_{t}}\beta_{t} β~t=1αˉt1αˉt1βt。然后我们从新的分布中进行采样得到 x t − 1 x_{t-1} xt1,这里的 g g g就是 x t x_{t} xt时刻分类器的梯度。

4. 总结

条件扩散模型是相对热点的研究方向,本文的添加条件的方法是一种简单高效的方法,应用于low-level任务中的文章目前也被研究探讨,与之前的条件扩散模型相比,guided diffusion models对于一些特殊的任务更友好,而且openai的代码质量也很高。本文还有很多值得讨论的内容,如神经网络的修改,DDIM的应用等。

这篇关于Guided Diffusion/Diffusion Models Beat GANs on Image Synthesis (Paper reading)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/222545

相关文章

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

速通GPT-3:Language Models are Few-Shot Learners全文解读

文章目录 论文实验总览1. 任务设置与测试策略2. 任务类别3. 关键实验结果4. 数据污染与实验局限性5. 总结与贡献 Abstract1. 概括2. 具体分析3. 摘要全文翻译4. 为什么不需要梯度更新或微调⭐ Introduction1. 概括2. 具体分析3. 进一步分析 Approach1. 概括2. 具体分析3. 进一步分析 Results1. 概括2. 具体分析2.1 语言模型

使用亚马逊Bedrock的Stable Diffusion XL模型实现文本到图像生成:探索AI的无限创意

引言 什么是Amazon Bedrock? Amazon Bedrock是亚马逊云服务(AWS)推出的一项旗舰服务,旨在推动生成式人工智能(AI)在各行业的广泛应用。它的核心功能是提供由顶尖AI公司(如AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI以及亚马逊自身)开发的多种基础模型(Foundation Models,简称FMs)。

Differential Diffusion,赋予每个像素它应有的力量,以及在comfyui中的测试效果

🥽原论文要点 首先是原论文地址:https://differential-diffusion.github.io/paper.pdf 其次是git介绍地址:GitHub - exx8/differential-diffusion 感兴趣的朋友们可以自行阅读。 首先,论文开篇就给了一个例子: 我们的方法根据给定的图片和文本提示,以不同的程度改变图像的不同区域。这种可控性允许我们再现

深入探讨生成对抗网络(GANs):颠覆传统的AI创作方式

在人工智能的快速发展中,生成对抗网络(Generative Adversarial Networks, GANs)无疑是一个引人注目的技术。自2014年由Ian Goodfellow等人首次提出以来,GANs已经在图像生成、文本生成、视频生成等多个领域展现出了惊人的能力。本文将详细解析GANs的原理、结构以及应用场景,帮助读者全面理解这一颠覆性的技术。 一、GANs的基本原理 生成对抗网络(G

diffusion model 合集

diffusion model 整理 DDPM: 前向一步到位,从数据集里的图片加噪声,根据随机到的 t t t 决定混合的比例,反向要慢慢迭代,DDPM是用了1000步迭代。模型的输入是带噪声图和 t,t 先生成embedding后,用通道和的方式加到每一层中间去: 训练过程是对每个样本分配一个随机的t,采样一个高斯噪声 ϵ \epsilon ϵ,然后根据 t 对图片和噪声进行混合,将加噪

[论文笔记]Making Large Language Models A Better Foundation For Dense Retrieval

引言 今天带来北京智源研究院(BAAI)团队带来的一篇关于如何微调LLM变成密集检索器的论文笔记——Making Large Language Models A Better Foundation For Dense Retrieval。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 密集检索需要学习具有区分性的文本嵌入,以表示查询和文档之间的语义关系。考虑到大语言模

ModuleNotFoundError: No module named ‘diffusers.models.dual_transformer_2d‘解决方法

Python应用运行报错,部分错误信息如下: Traceback (most recent call last): File “\pipelines_ootd\unet_vton_2d_blocks.py”, line 29, in from diffusers.models.dual_transformer_2d import DualTransformer2DModel ModuleNotF