[论文阅读] Diffusion Models Beat GANs on Image Synthesis

Posted 心有所向,日复一日,必有精进

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[论文阅读] Diffusion Models Beat GANs on Image Synthesis相关的知识,希望对你有一定的参考价值。

Pre

title: Diffusion Models Beat GANs on Image Synthesis
accepted: NeurIPS 2021
paper: https://arxiv.org/abs/2105.05233
code: https://github.com/openai/guided-diffusion
ref: https://sunlin-ai.github.io/2022/05/30/guided-diffusion.html
ref: https://blog.csdn.net/NGUever15/article/details/128269098
ref: https://zhuanlan.zhihu.com/p/376669628

关键词:image synthesis, diffusion models, classifier guidance
阅读理由:看看GAN跟扩散模型的差距,试图找一些图像合成上的idea

Target

目前 GANs 在大部分的图像生成任务上取得 SOTA,衡量指标通常为 FID,Inception Score 和 Precision,然而其中部分指标无法很好地体现多样性,GAN的生成多样性不如likelihood-based 模型,同时它难训练,没有合适的超参数或正则很容易坍塌 。

同时GAN难以缩放scale/应用到新的domain上,而 likelihood-based 模型生成结果多样、能scale且训练简单,但生成质量不如GAN,且采样速度慢。

扩散模型也是一类 likelihood-based 模型,且具备distribution coverage(分布覆盖率?应该是指生成结果多样)、静态训练目标(stationary training objective)、易扩展(easy scalability)的优点,在CIFAR-10能取得SOTA,而困难点的数据如LSUN和ImageNet则不如GAN。作者认为这种差距来自以下两点:

  1. GAN的架构已被充分地探索研究
  2. GAN能够权衡多样性跟真实性(fidelity),用分布上的不完全覆盖来换取更高的生成质量

因此本文将以上两点加入扩散模型中,便取得了SOTA,超越了GAN

Idea

以DDPM为基础,通过实验得到最优的架构,然后加入分类器引导(Classifier Guidance)给予扩散模型条件生成能力。

Background

粗略介绍扩散模型,详细公式推导看附录B。不过看这个入门也不大现实,私以为annotated-diffusion应该是更好的选择
提到后文的噪声\\(\\epsilon\\)均来自 diagonal Gaussian distribution,这适合自然图片且简化了各种推导过程(derivations)

Improvements

Nichol and Dhariwal(《Improved denoising diffusion probabilistic models》)发现DDPM中固定方差在扩散步骤较少的时候是一个次优的方案,并且提出了参数化方差:

\\[\\Sigma_\\theta(x_t,t)=\\exp(v\\log\\beta_t+(1-v)\\log\\tilde\\beta_t) \\tag1 \\]

其中\\(v\\)是神经网络的输出,两个\\(\\beta\\)是DDPM的用到的方差。

此外,Nichol and Dhariwal还提出了一个加权目标函数,混合训练两个模型(\\(\\epsilon_\\theta(x_t,t),\\; \\Sigma_\\theta(x_t,t)\\))。用混合目标学习反向过程的方差可以采用更少的采样步骤,且样本质量不会过度下降。本文采用了这个目标函数。

DDIM 制定了一个替代的非马尔可夫噪声过程,具有与DDPM相同的forward marginals,但允许通过改变反向噪声的方差产生不同的反向采样器。通过将该噪声设置为0,他们提供了一种方法,将任何模型转换为从latents到图片的确定性映射,并发现这提供了一种步骤更少的采样替代方法。当采样步骤小于50,就用这种采样方法,Nichol and Dhariwal发现它是有效的。

Architecture Improvements

以DDPM的UNet架构为基础,本文探索了如下架构改进方案:

  • 相对于宽度(通道多),增加模型的深度(堆叠的block多),并保持模型大小不变(因此需适当减少宽度)
  • 增加 attention heads 的数量
  • 在 32×32, 16×16 和 8×8 分辨率上使用 attention
  • 使用 BigGAN 的残差块进行上采样和下采样
  • 对残差连接使用 \\(\\frac1\\sqrt2\\) 因子缩放

本节实验batch size为256,共250个采样步骤

表1 在700K、1200K iterations 时各种架构变化消融

表2 各种注意力设置的消融。更多的head、每个head更少的通道都有助于减少FID

图2 各种架构变化消融,效率起见在10k样本上计算FID而非50k

表3 消融将timestep和类嵌入投影到每个残差块时使用的逐元素操作,把AdaGN换掉会增大FID

可以看到表1中除了调节(rescaling)残差连接外,其余修改都有积极作用。看图2左半部分,蓝色的线是更浅更深的模型,通道少堆叠的残差块时多,虽有助于改善效果(helps performance),但增加了训练时间而且要花更久才能有宽模型的效果,因此不采用。

也研究了更匹配Transformer架构的注意力设置,尝试固定head数量或者固定每个head的通道数量。架构的其余部分,使用128基础通道,每个分辨率2个残差块,多分辨率注意力,BigGAN的上下采样,训练700k轮。

如表2所示,更多的head或每个head更少的通道都能降低FID。图2可以看到,考虑现实世界的时间(wall-clock time),64个通道最合适,这符合现代Transformer架构,并在最终FID方面与其他配置相同(on par with)。

Dataset

ImageNet 128×128

Metrics

  • Inception Score (IS) : 它衡量一个模型覆盖ImageNet分布的程度,并且产生的单个样本是否符合ImageNet其中某个类。这个指标的一个缺点是,它不能覆盖整个分布或捕获类内的多样性。而且一个模型如果只记住完整数据集的一个子集,仍然具有较高的分数。
  • FID: 提供了Inception-V3潜空间中两个图像分布之间距离的对称度量,比IS更符合人的感知。
  • sFID: 使用空间特征而不是标准池化特征的FID版本,可以更好地捕捉空间关系,获得(rewarding)连贯高层结构的图像分布。
  • Improved Precision and Recall,以分别测量样本真实性(作为落入数据流形manifold的模型样本比例(精度))和多样性(作为落入样本流形manifold的数据样本比例)(召回)

用FID作为总体样本质量比较的默认度量,因为它同时捕捉多样性和真实性,并且是SOTA generative modeling work 的事实标准度量。使用精度或IS来测量真实性,使用召回率来测量多样性或分布覆盖率。

Adaptive Group Normalization

几种Norm的比较

实验了Nichol and Dhariwal论文中的一个层,称之为AdaGN(adaptive group normalizatio),它在group normalization 之后,将 timestep 和 class embedding 加进每个残差块,类似于AdaIN跟FiLM。将该层定义为 \\(AdaGN(h,y)=y_s GroupNorm(h)+y_b\\),其中h表示残差块第一个卷积后的激活函数,\\(y=[y_s,y_b]\\) 由 timestep 和 class embedding 线性投影而来。

表3验证了AdaGN的有效性,两个模型都使用128基础通道,每个分辨率2个残差块,每个head里64通道的多分辨率注意力,BigGAN的上下采样,训练700k轮。

在本文的其余部分中,我们使用这个最终改进的模型架构:可变宽度,每个分辨率有2个残差块,多个head,每个head里64通道,在32、16、8分辨率层使用注意力,用BigGAN残差块进行上采样和下采样的,以及用AdaGN将时间步长和类嵌入注入残差块中。

Classifier Guidance

作者认为在 conditional image synthesis 上,GAN大量利用了类别标签,这是它生成结果质量高的原因。前面已经用AdaGN将类别信息注入扩散模型,但这里给出了另一种方式:使用不同时步的噪声图像\\(x_t\\)训练一个分类器\\(p_\\phi(y\\mid x_t,t)\\),之后使用分类器对\\(x_t\\)的梯度信息\\(\\nabla_x_t \\log p_\\phi(x_t \\mid y)\\)指导预训练扩散模型对任意类别\\(y\\)的采样过程。

这部分涉及扩散模型的一系列公式推导,不大懂,暂时也用不上,不打算细究。

算法1、2 分别对应下面两个小节,是分类器引导的两种细分方法

Conditional Reverse Noising Process

首先原本无条件的扩散模型(降噪过程)可以表示为\\(p\\left(x_t \\mid x_t+1\\right)\\),它根据\\(x_t+1\\)推出\\(x_t\\)。那么加入条件\\(y\\)的模型可以记为\\(p\\left(x_t \\mid x_t+1, y\\right)\\),推导如下:

\\[\\beginaligned p(x_t \\mid x_t+1,y) &= \\fracp(x_t,x_t+1,y)p(x_t+1,y) \\\\ &= \\fracp(x_t,x_t+1,y)p(y \\mid x_t+1)p(x_t+1) \\\\ &= \\fracp(x_t \\mid x_t+1)p(y \\mid x_t,x_t+1)p(x_t+1)p(y \\mid x_t+1)p(x_t+1) \\\\ \\endaligned, \\]

由于类别\\(y\\)\\(x_t+1\\)无关,大概可以理解为\\(x_t+1\\)\\(x_t\\)加噪声来的,而噪声不包含信息,对于得出\\(y\\)没有帮助,因此:

\\[\\beginaligned p(y \\mid x_t,x_t+1) &=p(x_t+1 \\mid x_t,y) \\fracp(y \\mid x_t)p(x_t+1\\mid x_t)\\\\ &=p(x_t+1 \\mid x_t) \\fracp(y \\mid x_t)p(x_t+1\\mid x_t)\\\\ &=p(y \\mid x_t) \\endaligned \\]

因此带入上面\\(p\\left(x_t \\mid x_t+1, y\\right)\\)的推导:

\\[\\beginaligned p(x_t \\mid x_t+1,y) &= \\fracp(x_t \\mid x_t+1)p(y \\mid x_t,x_t+1)p(y \\mid x_t+1) \\\\ &= \\fracp(x_t \\mid x_t+1)p(y \\mid x_t)p(y \\mid x_t+1) \\\\ \\endaligned, \\]

又因为每个样本的类别\\(y\\)已知,因此\\(p(y \\mid x_t+1)\\)可看作常数,将它记为\\(Z\\)带入上式便得到论文中的公式2:

\\[p_\\theta, \\phi\\left(x_t \\mid x_t+1, y\\right)=Z\\cdot p_\\theta\\left(x_t \\mid x_t+1\\right)\\cdot p_\\phi\\left(y \\mid x_t\\right), \\tag2 \\]

作者说\\(Z\\)是标准化常数,难以准确从分布中采样,但可近似为扰动高斯分布(perturbed Gaussian distribution)。下面就是分别推导公式2右侧的两个非常数项。

扩散模型使用高斯分布根据\\(x_t+1\\)预测\\(x_t\\)

\\[p_\\theta\\left(x_t \\mid x_t+1\\right) = \\mathcalN(\\mu, \\Sigma) \\tag3 \\]

\\[\\log p_\\theta\\left(x_t \\mid x_t+1\\right) = -\\frac12\\left(x_t-\\mu\\right)^T \\Sigma^-1\\left(x_t-\\mu\\right)+C \\tag4 \\]

当扩散时间步无限时,\\(\\|\\Sigma\\| \\rightarrow 0\\),可以假设\\(\\log_\\phi p(y\\mid x_t)\\)曲率比\\(\\Sigma^-1\\)更低,因此可以对它在\\(x_t=\\mu\\)处进行泰勒展开:

\\[\\log p_\\phi\\left(y \\mid x_t\\right) \\approx \\log p_\\phi\\left(y \\mid x_t\\right)|_x_t=\\mu+ \\left(x_t-\\mu\\right) \\nabla_x_t \\log p_\\phi\\left(y \\mid x_t\\right)|_x_t=\\mu \\tag5 \\]

\\[=\\left(x_t-\\mu\\right) g+C_1 \\tag6 \\]

其中\\(g=\\left. \\nabla_x_t \\log p_\\phi\\left(y \\mid x_t\\right)\\right|_x_t=\\mu\\),且\\(C_1\\)为常数。综上,公式2取对数近似看作:

\\[\\beginaligned \\log \\left(p_\\theta\\left(x_t \\mid x_t+1\\right) p_\\phi\\left(y \\mid x_t\\right)\\right) & \\approx-\\frac12\\left(x_t-\\mu\\right)^T \\Sigma^-1\\left(x_t-\\mu\\right)+\\left(x_t-\\mu\\right) g+C_2 \\\\ &=-\\frac12\\left(x_t-\\mu-\\Sigma g\\right)^T \\Sigma^-1\\left(x_t-\\mu-\\Sigma g\\right)+\\frac12 g^T \\Sigma g+C_2 \\\\ &=-\\frac12\\left(x_t-\\mu-\\Sigma g\\right)^T \\Sigma^-1\\left(x_t-\\mu-\\Sigma g\\right)+C_3 \\\\ &=\\log p(z)+C_4, z \\sim \\mathcalN(\\mu+\\Sigma g, \\Sigma) \\endaligned, \\]

上式四行分别记作公式7~10,可以看出给原本的无条件模型加上条件后仍然近似一个高斯分布,只是这时需要给均值加上一个偏移量\\(\\Sigma g\\),见上面的算法1,实际用的时候会给梯度g添加一个算法因子\\(s\\)

该方法看起来是扩散模型预测分布的均值跟方差,用分类器修正均值后直接采样得到上一时间步的样本

Conditional Sampling for DDIM

上述推导的条件采样仅适用于随机扩散采样过程(stochastic diffusion sampling process),不适合DDIM那样的确定性采样方法(deterministic sampling method),为此这里吸纳了前人基于分数的条件调节技巧(score-based conditioning trick)。给定一个模型\\(\\epsilon_\\theta\\left(x_t\\right)\\),它预测加入样本里的噪声,可推导出一个得分函数:

\\[\\nabla_x_t \\log p_\\theta\\left(x_t\\right)=-\\frac1\\sqrt1-\\bar\\alpha_t \\epsilon_\\theta\\left(x_t\\right) \\tag11 \\]

这玩意其实没看懂,主要是不知道\\(p_\\theta\\)是干嘛的,感觉用于表示整个生成模型,此时没有条件,能够生成样本\\(x\\)。那么根据贝叶斯公式,条件生成模型就可以表示为:

\\[p(x \\mid y) = \\fracp(x) p(y \\mid x) p(y), \\]

两边同时对x求导有:

\\[\\nabla_x \\log p(x \\mid y) = \\nabla_x \\log p(x) + \\nabla_x \\log p(y \\mid x), \\]

那么当加入类别y之后也会有一个得分函数:

\\[\\nabla_x_t \\log p_\\theta(x_t \\mid y) = \\nabla_x_t \\log p_\\theta\\left(x_t\\right)+\\nabla_x_t \\log p_\\phi\\left(y \\mid x_t\\right) \\tag12 \\]

\\[= -\\frac1\\sqrt1-\\bar\\alpha_t \\epsilon_\\theta\\left(x_t\\right)+\\nabla_x_t \\log p_\\phi\\left(y \\mid x_t\\right) \\tag13 \\]

参照公式11,可以用得分函数来表示模型预测的噪声:\\(\\epsilon_\\theta\\left(x_t\\right) = -\\sqrt1-\\bar\\alpha_t \\nabla_x_t \\log p_\\theta\\left(x_t\\right)\\)。那么同样给公式13两边乘上一项\\(\\sqrt1-\\bar\\alpha_t\\),可以定义一个新噪声:

\\[\\hat\\epsilon\\left(x_t\\right) := \\epsilon_\\theta\\left(x_t\\right)-\\sqrt1-\\bar\\alpha_t \\nabla_x_t \\log p_\\phi\\left(y \\mid x_t\\right) \\tag14 \\]

那么就可以将公式14的新噪声带入 DDIM 的常规采样流程,具体做法见算法2。该方法看起来是扩散模型预测给定样本在上一时间步到当前时间步所添加的噪声,用分类器修正该噪声,并通过去除该噪声得到上一时间步的样本。

Scaling Classifier Gradients

图3 给无条件扩散模型添加分类器引导(classfier guidance)后,条件“Pembroke Welsh Corgi”下生成的样本。左图使用1.0的分类器因子,FID:33.0,并不符合该类别;而右图使用10.0的分类器因子,FID:12.0,生成结果与类别更一致。

分类模型在ImageNet上训练,分类器网络使用 UNet 模型的下采样部分, 在 8x8 特征层上使用 attention pool 产生最后的输出。

分类器使用跟相应扩散模型一样的噪声分布进行训练,并添加随机裁剪(random crops)以减少过拟合。训练完后,根据公式10(算法1)加进扩散模型的采样过程生成样本。

在实验中,作者发现分类器梯度需要乘以一个大于1的常数因子,记为\\(s\\),如果\\(s=1\\),分类器会赋予期望的类 约50% 的概率生成最后的样本,但生成的样本看起来并不符合预期的类别;如果提高\\(s\\),可以让分类器的类别概率提高到将近100%,图3显示了这个效果。

为了探究\\(s\\)的作用,可记\\(s\\cdot \\nabla_x \\log p(y \\mid x)=\\nabla_x \\log \\frac1Zp(y\\mid x)^s\\),其中\\(Z\\)是任意常数。当\\(s>1\\),分布\\(p(y \\mid x)^s\\)会更加陡峭,相当于更重视分类器,生成的样本更真实但不那么多样。

表4 classfier guidance对样本质量的影响。两种模型都训练了2M轮次,使用ImageNet 256x256,batchsize=256

图4 改变分类器梯度因子对样本质量的改变,基于具有类别条件的ImageNet 128x128模型

图5 改变BigGAN-deep的截断阈值(truncation)跟分类器梯度因子的平衡变化。模型用ImageNet 128x128评估。BigGAN-deep结果用的是TFHub的模型,分别尝试[0.1, 0.2, 0.3,..., 1.0]的截断级别。

上面的推导基于使用无条件扩散模型的假设,实际上条件扩散模型也能以完全一样的方式使用分类器引导。表4表明这两种模型的样本质量都可以用分类器引导极大提升,更大的\\(s\\)会引导无条件模型得到接近无引导的条件模型的FID值,而训练时直接加入类别标签仍然有帮助。

表4展示了分类器引导将以召回率的代价提升精度,因此需要权衡真实性跟多样性。图4是\\(s\\)变化对指标的影响,recall可看作多样性,而IS看作真实性,由于FID同时取决于多样跟真实,因此最小值在中间取到。图5则比较分类器引导跟BigGAN-deep的截断技巧,可看到分类器引导更擅长平衡FID跟IS(右图),然而精度跟召回率的平衡比较则不大明确(左图),分类器引导只有在某个精度阈值之前才是好选择,无法取得比阈值更高的精度。

Results

在无条件图像生成方面评估改进的模型架构,使用数据集 LSUN(bedroom, horse 和 cat)分别训练三个扩散模型,评估 classifier guidance 性能使用数据集 ImageNet (分辨率分别为 128×128, 256×256 和 512×512)训练条件扩散模型。

表5 每个任务上跟SOTA生成模型比较样本质量。ADM指本文的"**a**blated **d**iffusion **m**ode",ADM-G则额外用了classifier **g**uidance。LSUN扩散模型使用1000步采样,ImageNet扩散模型使用250步采样,除了显式标出的、使用DDIm采样器时只需25步。*标识的BigGAN-deep没有该分辨率现成的权重,作者自行训练而来。†标识的值来自之前的论文,因为缺少公开模型或样本(无法测试)。‡标识的值使用 two-resolution stacks 而来

图6 左边是BigGAN-deep的样本,截断阈值1.0(FID 6.95),中间是本文有引导的扩散模型(FID 4.59),右边则是训练集的样本。

State-of-the-art Image Synthesis

总之看图5,本文的模型基本都达到SOTA,这些模型都能达到跟GAN类似的感知质量,同时根据recall结果,能覆盖更多的分布,甚至只需要25个扩散步就能达成。

图6可以看出扩散模型比GAN的结果包含更多的模式(更多样),如远近不同的鸵鸟头、单只的火烈鸟、不同朝向的芝士汉堡跟不是人托着的丁鱥。

Comparison to Upsampling

表6 ADM-U是本文改进后的架构结合 **u**psampling stack,二阶段上采样模型的两个基础分辨率分别是64、128。当上采样结合分类器引导,仅引导低分辨率模型。

如表5所示,IDDPM跟SR3是两阶段的扩散模型,先由低分辨率模型生成样本,再送入上采样模型增大分辨率,这极大降低了ImageNet 256x256上面的FID,但还是达不到SOTA。

表6可以看出两种方式会在不同的轴(axes)上提高样本质量,upsampling提高精度的同时会保留较高的召回率,而引导方式会为了更高的精度舍弃一些多样性。最佳FID是两种技巧一起用,在上采样前的低分辨率模型上用分类器引导,说明两种方法能够相得益彰。

Conclusion

总之展示了扩散模型可以比SOTA GAN有更好的采样质量,本文的改进架构足以在无条件图片生成任务上达到这一点,分类器引导技术使得在类别条件任务上也能SOTA。后面发现分类器梯度的缩放可以用于平衡多样性跟真实性。

这些引导的扩散模型能够减少跟GAN的采样时间差距,但采样仍需要多个前向步骤。最后将引导与上采样结合,进一步在高分辨率条件图片合成任务上改进了采样质量。

限制方面,一个是采样仍比GAN慢,这方面有《Knowledge distillation in iterative generative models for improved sampling speed》希望通过蒸馏将DDIM采样过程简化为一步,虽然性能比不上GAN,但比之前的单步likelihood-based模型好了不少。将来该方向的任务可能是完全追平GAN的速度,同时不牺牲图片质量。

另一个是分类器引导目前仅限于标记的数据集,并且无法权衡未标记数据集的多样性和保真度。未来,方法可以拓展到未标记的数据,通过聚类样本以产生合成标签或通过训练判别模型来预测样本何时处于真实数据分布或来自采样分布。

分类器引导的有效性表明分类函数的梯度有助于获得强力的生成模型,可以用于以多种方式调节(condition)预训练模型,比如使用噪声版本(noisy version)的CLIP训练,并用上文本说明(text caption),类似于近来用文本prompt引导GAN的方法。

这也表明大规模的为标注数据集将来能用于预训练强大的扩散模型,并通过有所需属性(desirable properties)的分类器进一步改进该模型。

Critique

44页的论文有点哈人,不多好在大部分都是附录。感觉这篇更注重的是大量的实验,以及对前人工作的整合、比较,亮点在于提出了classifier guidance,可以利用预训练好的无条件扩散模型进行条件生成任务,而不用重新训练。全文阅读有一定难度,特别是分类器引导那部分的推导。不够分类器引导的思想真的很厉害,效果也确实好,直觉上似乎是在降噪的每一步利用分类器的信息向着生成目标类别图片的方向努力。

实验部分非常充足,提出的ADM-G架构仍然高居榜首,ImageNet128的FID已经刷到了3以下:https://paperswithcode.com/sota/conditional-image-generation-on-imagenet 但这个榜按IS分数排的话应该是Omni-INR-GAN最强,而且比ADM高了100分,FID仅比BigGAN-deep低一些,这样不算SOTA的GAN吗?此外附录还有更多非常多的实验结果、详细的实验设置、公式推导等,十分良心。使用PyTorch,V-100训练,训练所需的计算量以 V100-days 计算,动不动就是几十几百,不是一般人能玩的,事实上作比较的StyleGAN2、BigGAN-deep也要不小的开销。

比较有意义的是通过它了解到扩散模型的一些发展,以及条件图片合成领域的前沿,学到一些图片生成中有效的模型架构。此外用作比较的SOTA GAN是18年的BigGAN-deep,这么看GAN也挺久没发展了?

Unknown

论文阅读RePaint: Inpainting using Denoising Diffusion Probabilistic Models(CVPR 2022)

RePaint: 基于去噪扩散概率模型进行修复

图 1 本文将 Denoising Diffusion Probabilistic Models(DDPM)应用于图像修复工作。以 masked 图像作为输入。它从随机噪声样本开始,迭代去噪,直至产生高质量的输出。由于这个过程是随机,我们可以得到多种不同的输出样本。并且 DDPM 先验强制协调图像,所以能够从其他区域再现纹理,并修复语义上有意义的内容。

文章目录


速览

下载收录源码机构
thecvfCVPR 2022GitHub 822 PyTorch瑞士•苏黎世联邦理工学院
@inproceedingslugmayr2022repaint,
  title=Repaint: Inpainting using denoising diffusion probabilistic models,
  author=Lugmayr, Andreas and Danelljan, Martin and Romero, Andres and Yu, Fisher and Timofte, Radu and Van Gool, Luc,
  booktitle=Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition,
  pages=11461--11471,
  year=2022

摘要

  • 问题描述:自由形式的图像修复是在由任意二进制掩码指定的区域中向图像添加新内容的任务。大多数现有的方法针对特定的掩码分布进行训练,这将它们的泛化能力限制到看不见的掩码类型。此外,基于 pixel-wise 和 perceptual 损失的训练通常会导致对缺失区域的简单纹理扩展,而不是语义上有意义的生成。【笔记:指出了目前图像修复面临的两个主要问题,一是用单一类型的 mask 训练限制了模型的泛化能力,二是 pixel-wise 和 perceptual loss 会导致生成模型朝着纹理填充而不是语义修复方向更新】

  • 解决方案:本文提出了基于去噪扩散概率模型的图像修复方法:repaint,甚至对于极端的 mask 情况(mask 面积很大,几乎遮挡了整幅图像)都适用。我们利用一个与训练的无条件的 DDPM 作为一个生成先验模型。为了调节生成过程,我们仅通过使用给定的图像信息对未屏蔽区域进行采样来改变反向扩散迭代。由于该技术不修改或调整原始 DDPM 网络本身,因此该模型可以为任何修复形式生成高质量和多样的输出图像。我们使用标准和极端掩码验证了我们的人脸和通用图像修复方法。【笔记:自扩散模型在 NIPS 2020 上发布第一篇 work,即 DDPM 之后,扩散模型在很多领域的应用都取得了极大的成功,本篇 CVPR 2022 的论文也是扩散模型在图像修复领域成功应用的典范】

  • 实验结果:对于六种掩模分布中的至少五种,repaint 优于最先进的 Autoregressive 和 GAN 方法。【笔记:从实验上证明了基于 DDPM 的方法具有更强的鲁棒性,即适用于多种掩膜分布】

关键字:图像修复(image inpainting), DDPM(去噪扩散概率模型)

引言

首先,给出了图像修复的定义:图像修复也叫 Image Completion,旨在填补图像中的缺失区域。填补的内容应该与图像的其余部分协调,并且在语义上是合理的。因此,就需要修复算法具有很强的生成能力。

然后,指出了目前 SOTA 模型的不足和在训练方法上的缺陷:当前的 SOTA 方法依赖于 GANs 或者 Autoregressive 模型。此外,修复算法也需要能够处理各种格式的 mask,比如薄或厚的笔刷形状的、方形的、甚至是极端的 mask。这是非常具有挑战性的,因为现有的方法都是在具有特定的掩码分布上进行训练的,这可能导致对新掩码类型的泛化较差。

接着,介绍了最新的生成模型替代范式 DDPM:有研究已经表明了,DDPM 在图像合成上已经能够超越基于 GAN 的 SOTA 模型。本质上,DDPM 被训练为通过反转扩散过程来迭代地对图像进行去噪。从随机采样的噪声开始,DDPM 然后迭代应用一定数量的步骤,这产生最终的图像样本。虽然建立在原则性的概率建模基础上,但 DDPM 已被证明可以生成多种高质量的图像。【笔记:OpenAI 的 DALL·E 2 和谷歌的 Imagen 都是用的 DDPM 来完成由文本生成高分辨率图像的任务】

进而,引出本文提出的方法 RePaint:一种仅利用现成无条件训练的 DDPM 的修复方法。具体而言,我们通过在反向扩散迭代期间从给定像素采样来调节生成过程,而不是学习 mask-conditional 生成模型。值得注意的是,我们的模型因此没有针对修复任务本身进行训练。这有两个重要的优点。首先,它允许我们的网络在推理过程中推广到任何掩码(any mask)。其次,它使我们的网络能够学习更多的语义生成能力,因为它具有强大的 DDPM 图像合成先验知识。

虽然,标准的 DDPM 采样策略产生匹配纹理,但修复通常在语义上是不正确的。因此,我们引入了一种改进的去噪策略,即重新采样(RePaint)迭代以更好地调节图像。

最后,在 CelebA-HQ 和 ImageNet 数据集上和其他各种 SOTA 模型进行了对比。发现我们的方法具有更好的泛化性,总体上具有更具语义意义的修复区域。

相关工作

早期的图像修复工作尝试利用了输入图像或大型图像数据集附近的低水平线索来填充缺失区域。

确定性图像修复:这类大多是基于 GANs 的方法。使用编解码器作为主要的修复生成器,然后利用定制的损失函数进行对抗训练,旨在还原一个写实的图像。由于图像修复高级的语义上下文,并且为了将其显示地包含在生成 pipeline 中,已有很多手工设计的架构,例如 Dilated Convolutions、Partial Convolutions、Gated Convolutions、Contextual Attention、Edges maps、Semantic Segmentation maps 以及 Fourier Convolutions 等。GANs 侧重于纹理合成,例如背景填充和删除对象,但难以进行语义合成。

多样性图像修复:由于在图像合成期间缺乏控制,大多数基于 GAN 的图像修复方法易于发生确定性变换。为了解决该问题,就诞生了基于 VAE 的方法,它可以在多样性和重建之间进行权衡。此外,一个新的基于 Autoregressive,可以处理不规则掩模,最近已成为自由形式图像修复的有力替代方法。

图像先验的使用:Richardson 曾用 StyleGAN 先验成功地修复了图像中的缺失区域。然而,与利用 StyleGAN 潜在空间的超分辨率方法类似,它仅限于人脸等特定场景。值得注意的是,Ulyanov 等人表明,未训练过的生成器网络的结构包含可用于图像修复和其他应用的固有先验。与这些方法相比,我们利用了预训练去噪扩散概率模型(DDPM)的高表达能力,因此将其用作通用图像修复的先验。我们的方法无论是在语义生成还是纹理合成上都能生成精细的、高质量图像。此外,我们的方法没有针对图像修复任务进行训练,而是充分利用了先前的 DDPM,因此每个图像都是独立优化的。

图像条件扩散模型:之前已有两项工作将扩散模型用于图像修复,然而这两项工作仅显示了定性结果,并且与其他修复方法没有比较。相反,我们的目标是提高图像修复的艺术水平,并与文献中最具竞争力的方法进行全面比较。

与当前已有的工作不同,我们利用无条件 DDPM,并且只通过反向扩散过程本身调节。它使我们的方法可以毫不费力地推广到任何掩模形状,以进行自由形式的修补。此外,我们提出了一种用于 reverse 过程的采样计划,这大大提高了图像质量。

准备工作:扩散概率去噪模型

本文使用扩散模型作为生成模型。和其他的生成模型一样,DDPM 学习给定数据集图像中的数据分布。推理过程通过对随机噪声矢量 x T x_T xT 进行采样并逐渐对其进行去噪,直到其达到高质量输出图像 x 0 x_0 x0

训练期间,DDPM 方法定义了在 T T T 个时间步长中将图像 x 0 x_0 x0 转换为高斯白噪声 x T ∼ N ( 0 , 1 ) x_T∼ N (0, 1) xTN(0,1) 的扩散过程。DDPM 的训练就是逆转(reverse)这个扩散过程,逆转过程是由能够预测高斯分布参数的神经网络来建模的。

正如 Nichol 和 Dhariwal 所介绍的,学习逆转过程中的方差有助于将采样步骤数量减少一个数量级。因此,它们增加了变分下限损失。具体而言,我们的训练和推理方法基于最近的工作[7],这进一步将推理时间缩短了四倍。

方法

在已知域上进行调节

图 2 本文方法概述。RePaint 修改标准去噪过程,以便对给定图像内容进行调整。在每一步中,我们从输入中采样已知区域,从 DDPM 输出中采样修复部分。

重采样

当直接应用上述方法时,我们发现只会填补与已知区域匹配的内容。例如,在图 3 中,当 n=1 时修复区域是与狗的毛发匹配的毛茸茸的纹理。虽然修复区域与相邻区域的纹理匹配,但在语义上是不正确的。因此,DDPM 虽然利用了已知区域的上下文,但与图像的其余部分并不协调。接下来,我们讨论这种行为的可能原因。

图 3 应用 n 个采样步长的效果。n=1 的第一个示例是 DDPM 基线,n=2 的第二个示例是一个重采样步骤。更多的重采样步骤导致更协调的图像。在大约 n = 10 次重采样时,趋近饱和。

从图 2 中,我们分析了该方法如何调节已知区域。该模型使用 x t x_t xt 预测 x t − 1 x_t−1 xt1,其中包括 DDPM 的输出和来自已知区域的样本。然而,对已知像素的采样是在不考虑图像的生成部分的情况下执行的,这引入了不和谐。尽管模型在每一步中都试图再次协调图像,但它永远不会完全收敛,因为下一步会出现相同的问题。此外,在每个 reverse 步骤中,由于 β t β_t βt 的方差调度,图像的最大变化减小。因此,由于灵活性有限,该方法无法纠正导致后续步骤中边界不协调的错误。因此,模型需要更多的时间来协调条件信息 x t − 1 k n o w n x_t-1^known xt1known和生成信息 x t − 1 u n k n o w n x_t-1^unknown xt1unknown,然后前进到下一个去噪步骤。

因此,我们对重采样过程进行了改进,通过减少每个去噪步骤中的附加方差,减速应用更小但更多的重采样步骤。

实验

通过在人脸和通用图像修复上与 SOTA 模型的对比实验,证明了我们方法的 mask 鲁棒性和生成多样性。

实现细节

  • 数据集:CeleA-HQ(人脸) 和 ImageNet(通用);
  • 训练图像大小:CeleA-HQ 是 256x256;
  • 预训练模型:ImageNet 扩散模型。

评估指标

  • 定性评估:用户调研。
  • 定量评估:LPIPS。

与 SOTA 对比

表 1 CelebA HQ 和 ImageNet 定量结果。与最先进的方法进行比较。我们计算 LPIP(越低越好),并对六种不同的 mask 设置进行投票。票数是指相对于我们的票数的比例。

图 4 CelebA HQ 定性结果。在几种 mask 设置下与最先进的面部修复方法进行比较。放大以获得更好的细节。

图 5 ImageNet 定性结果。在几种 mask 设置下与最先进的通用修复方法进行比较。放大以获得更好的细节。

从对比结果中可以发现,其他方法生成的图像要么模糊,要么就有 artifacts(伪影)。只有基于 GAN 的 LaMa 才有的一拼,但 LaMa 会产生臭名昭著的棋盘伪影(把图放大一点就能看到)。此外,RePaint 相比于 LaMa 更具想象力,能产生更多的语义信息(所以也导致某些情况下定量指标不如 LaMa 好,但这只能说明指标不合适,而不能说明 RePaint 不如 LaMa)。

基线模型产生的伪影可以通过对训练掩码的强过拟合来解释。相反,由于我们的方法不涉及 mask 训练,因此可以处理任何类型的 mask。在大面积修补的情况下,RePaint 会产生语义上有意义的填充,而其他修复算法则会生成伪影或复制的纹理。

多样性分析

每个 reverse diffusion step 本质上是随机的,因为它包含来自高斯分布的新噪声。此外,由于我们不直接以任何损失引导修复区域,因此模型可以自由修复与训练集语义一致的任何内容。

类别条件控制生成实验

预训练的 ImageNet DDPM 模型能够进行类别-条件生成采样。

图 6 在 ImageNet 上生成类别指导的可视化结果。

消融实验

与 slowing down 对比:为了分析增加的计算预算是否会导致重采样性能的提高,我们将其与常用的 slowing down 扩散过程的技术进行了比较。我们观察到,重采样使用额外的计算预算来协调图像,而在 slowing down 扩散过程方面没有明显的改进。

表 2 计算预算使用的定量分析。我们比较了 slowing down 扩散过程和重采样。我们使用 ImageNet 验证集,在 LaMa 宽的 mask 设置上有 32 幅图像。扩散步骤的数量用 T 表示,重采样的数量用 r 表示。

图 7 计算预算使用的定性分析。与 slowing down 扩散过程相比,RePaint 通过重采样以相同的计算预算产生更高的视觉质量。扩散步骤的数量用 T 表示,重采样用 r 表示。

Jumps Length:在应用较大跳跃 j=10 长度时,我们获得了比较小步长更好的性能。我们观察到,对于跳跃长度 j=1,DDPM 更可能输出模糊图像。此外,重采样次数 r 也同样增加了性能。

表 3 跳跃长度 j 和重采样次数 r 的消融分析。我们报告了与 LaMa 相关的 LPIPS 和平均用户研究投票。我们使用来自 CelebA 验证集的 32 幅图像,并使用 LaMa 宽掩码设置。

与 SDEdit 采样策略对比

表 4 与 SDEdit 中提出的重采样策略在 LPIPS 指标上比较。在我们的 RePaint 中提出的重采样方法实现了更好的结果,特别是对于超分辨率掩模。

限制

主要贡献

  • 我们的方法产生清晰高度详细语义有意义的图像。
  • 我们的工作为解决图像修复目前的局限性开辟了有趣的研究方向。

有待改进

  • 每个图像的 DDPM 优化过程明显慢于基于 GAN 和自回归的对应过程。这使得目前难以将其应用于实时应用。虽然慢,但 DDPM 仍然很受欢迎,目前很多研究致力于提高其效率。
  • 对于极端的 mask 情况,RePaint 可以生成与 GT 图像非常不同的图像。这使得这些条件下的定量评估具有挑战性。一种解决方案是在测试集上使用 FID 进行评估。然而,用于图像修复的可靠 FID 通常使用 1000 多个图像计算。对于当前的 DDPM,这将导致大多数研究机构不可行的运行时。
  • 此外,作者在 GitHub 仓库中提到:由于 ImageNet 中狗的占比很高,所以对于 half 或极端的 mask 情况,模型更倾向于去填补狗,例如图 5 中的 Thick 场景的修复,以及下图。

图8 RePaint 修复失败的情况。

潜在的负面社会影响

一方面,RePaint 是一种依赖于无条件预训练 DDPM 的修复方法。因此,该算法可能偏向于其所训练的数据集。由于该模型旨在生成与训练集相同分布的图像,因此可能反映相同的偏见,如性别、年龄和种族。另一方面,RePaint 可以用于面部的匿名化。例如,可以删除公共活动中显示的人的身份信息,并伪造人造脸以保护数据。【笔记:这段简单提了一下该方法可能遇到的伦理问题】

总结

针对图像修复任务,我们提出了一种新的去噪扩散概率模型。详细地说,我们开发了一种掩模不可知方法,该方法广泛增加了用于自由形式修补的掩模的自由度。由于 RaPaint 的新调节方法符合 DDPM 的模型假设,因此无论掩模的类型如何,它都会生成照片逼真的图像。

读后感

DDPM 最近大火,这是一篇将 DDPM 成功地应用到图像修复任务中的典范,由此也说明了 DDPM 的潜力确实不容小觑,貌似快要撼动 GAN 和 VAE 的地位了。因此,有意向的同学赶快去看看 DDPM 的原论文,然后思考如何与自己的任务结合起来。

以上是关于[论文阅读] Diffusion Models Beat GANs on Image Synthesis的主要内容,如果未能解决你的问题,请参考以下文章

论文阅读RePaint: Inpainting using Denoising Diffusion Probabilistic Models(CVPR 2022)

最新最全Diffusion Models论文代码汇总[三万字总结]

Diffusion Models从入门到放弃:必读的10篇经典论文

扩散模型 Diffusion Models 入门到实践 | 论文学习资源课程整理

扩散模型 Diffusion Models 入门到实践 | 论文学习资源课程整理

Diffusion Models从入门到放弃:必读的10篇经典论文