• 论文阅读 (65):RePaint: Inpainting using Denoising Diffusion Probabilistic Models


    1 概述

    1.1 题目

      2022CVPR:用于图像修复的去噪扩散概率模型 (RePaint: Inpainting using Denoising Diffusion Probabilistic Models)

    1.2 代码

      Torchhttps://github.com/andreas128/RePaint

    1.3 摘要

      自由形式修复 (Free-form inpainting) 是在任意二进制蒙版指定的区域中,向图像添加新内容的任务。大多数现有方法:
      1)针对特定的蒙版分布进行训练,这限制了它们在未知蒙版上的泛化能力;
      2)像素级和感知损失的训练通常导致缺失区域的简单纹理扩张,以致不能引导语义上有意义的生成。
      本文提出一种基于去噪扩散概率模型 (DDPM) 的修复方法,以适用于多种类型的蒙版:
      1)使用预训练的无条件DDPM作为生成先验 (Generative prior);
      2)为了调节生成过程,仅采样给定图像的无蒙版区域,以调控逆扩散迭代
      3)不修改或者不调节原始的DDPM网络,因此对于任意的修复形式可以产生高质量和多样性的输出图像。

    1.4 Bib

    @inproceedings{Lugmayr:2022:1146111471,
    author		=	{Andreas Lugmayr and Martin Danelljan and Andres Romero and Fisher Yu and Radu Timofte and Luc Van-Gool},
    title		=	{Repaint: {I}npainting using denoising diffusion probabilistic models},
    booktitle	=	{{IEEE/CVF} Conference on Computer Vision and Pattern Recognition},
    pages		=	{11461--11471},
    year		=	{2022}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2 去噪扩散修复模型

      DDPM可以习得训练集中图像的分布:
      1)推理阶段:随机采样噪声向量 x T x_T xT并逐渐去噪,直到输出高质量图像 x 0 x_0 x0
      2)训练阶段定义扩散过程,在 T T T个时间步内将图像 x 0 x_0 x0转换为高斯白噪声 x T ∼ N ( 0 , 1 ) x_T∼\mathcal{N}(0, 1) xTN(0,1)。每一步的前进方向给定如下:
    q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) (1) \tag{1} q(x_t|x_{t-1})=\mathcal{N}(x_t;\sqrt{1-\beta_t}x_{t-1},\beta_t\mathbf{I}) q(xtxt1)=N(xt;1βt xt1,βtI)(1)   x t x_t xt包含两个部分,在时间步 t t t关于变量 β t \beta_t βt的独立同分布高斯噪声和通过缩放的先前样本 x t − 1 x_{t-1} xt1
      逆过程使用神经网络建模,该网络描述了带有参数 μ θ ( x t , t ) \mu_\theta(x_t,t) μθ(xt,t) Σ θ ( x t , t ) \Sigma_\theta(x_t,t) Σθ(xt,t)的高斯分布:
    p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) (2) \tag{2} p_\theta(x_{t-1}|x_t)=\mathcal{N}(x_{t-1};\mu_\theta(x_t,t),\Sigma_\theta(x_t,t)) pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t))(2)  模型(2)的学习目标通过变分下界 (Variational lower bound) 得出:
    E [ − log ⁡ p θ ( x 0 ) ] ≤ E q [ − log ⁡ p θ ( x 0 : T ) q ( x 1 : T ∣ x 0 ) ] = E q [ − log ⁡ p ( x T ) − ∑ t ≥ 1 log ⁡ p θ ( x t − 1 ∣ x t ) q ( x t ∣ x t − 1 ) ] = L (3) \tag{3}

    E[logpθ(x0)]Eq[logpθ(x0:T)q(x1:Tx0)]=Eq[logp(xT)t1logpθ(xt1xt)q(xtxt1)]=L" role="presentation" style="position: relative;">E[logpθ(x0)]Eq[logpθ(x0:T)q(x1:Tx0)]=Eq[logp(xT)t1logpθ(xt1xt)q(xtxt1)]=L
    E[logpθ(x0)]Eq[logq(x1:Tx0)pθ(x0:T)]=Eq[logp(xT)t1logq(xtxt1)pθ(xt1xt)]=L(3)  通过Ho等人的扩展,该损失可以分解为:
    E q [ D K L ( q ( x T ∣ x 0 ) ∥ p ( x T ) ) ⏟ L T + ∑ t > 1 D K L ( q ( x t − 1 ∣ x t , x 0 ) ∥ p θ ( x t − 1 ∣ x t ) ) ⏟ L t − 1 − log ⁡ p θ ( x 0 ∣ x 1 ) ⏟ L 0 ] (4) \tag{4}
    Eq[DKL(q(xTx0)p(xT))LT+t>1DKL(q(xt1xt,x0)pθ(xt1xt))Lt1logpθ(x0x1)L0]" role="presentation" style="position: relative;">Eq[DKL(q(xTx0)p(xT))LT+t>1DKL(q(xt1xt,x0)pθ(xt1xt))Lt1logpθ(x0x1)L0]
    Eq[LT DKL(q(xTx0)p(xT))+t>1Lt1 DKL(q(xt1xt,x0)pθ(xt1xt))L0 logpθ(x0x1)](4)
       L t − 1 L_{t-1} Lt1项训练网络(2)以执行一次逆扩散步骤。此外,由于 q ( x t − 1 ∣ x t , x 0 ) q(x_{t−1}|x_t, x0) q(xt1xt,x0)是高斯的,因此它保证了目标表达式的封闭。模型参数化的最佳方式是预测添加到当前图像 x t x_t xt累计噪声 ϵ 0 \epsilon_0 ϵ0。因此,均值 μ θ \mu_\theta μθ预测如下:
    μ θ ( x t , t ) = 1 α t ( x t − β t 1 − α ˉ t ϵ θ ( x t , t ) ) (5) \tag{5} \mu_{\theta}\left(x_{t}, t\right)=\frac{1}{\sqrt{\alpha_{t}}}\left(x_{t}-\frac{\beta_{t}}{\sqrt{1-\bar{\alpha}_{t}}} \epsilon_{\theta}\left(x_{t}, t\right)\right) μθ(xt,t)=αt 1(xt1αˉt βtϵθ(xt,t))(5)  简化的优化目标如下:
    L s i m p l e = E t , x 0 , ϵ [ ∥ ϵ − ϵ θ ( x t , t ) ∥ 2 ] (6) \tag{6} L_{simple}=E_{t,x_0,\epsilon}[\|\epsilon-\epsilon_\theta(x_t,t)\|^2] Lsimple=Et,x0,ϵ[ϵϵθ(xt,t)2](6)  如Nicho 和Dhariwal所述,学习逆过程(2)中的方差 Σ θ ( x t , t ) \Sigma_\theta(x_t,t) Σθ(xt,t)有助于将采样步骤的次数降低一个数量级,因此他们添加了变分下界损失。后继将通过因子4 (Factor four.) 来降低推理的时间开销。
      为了训练DDPM,需要样本 x t x_t xt和一个能够转换 x 0 x_0 x0 x t x_t xt的噪声。通过使用在每个步骤(1)中添加噪声的独立性质,总损失变量计算为:
    α ‾ t = ∏ s = 1 t ( 1 − β s ) \overline{\alpha}_t=\prod_{s=1}^t(1-\beta_s) αt=s=1t(1βs)  则公式(1)重写为:
    q ( x t ∣ x 0 ) = N ( x t ; α ‾ t x 0 , ( 1 − α ‾ t ) I ) (7) \tag{7} q(x_t|x_0)=\mathcal{N}(x_t;\overline{\alpha}_tx_{0},(1-\overline{\alpha}_t)\mathbf{I}) q(xtx0)=N(xt;αtx0,(1αt)I)(7)  这允许有效采样成对训练数据以训练逆转换。

    3 方法

      首先说明如何调整无条件DDPM逆扩散以进行图像修复,然后介绍一种改进的逆过程方法。

    3.1 调整已知区域

      修复的目的是预测图像以蒙版作为条件的缺失像素,接下来考虑训练一个无条件DDPM。令 x x x表示原始真实图像、 m ⊙ x m\odot x mx表示未知像素,以及 ( 1 − m ) ⊙ x (1 - m)\odot x (1m)x表示已知像素。
      由于公式(2) x t x_t xt x t − 1 x_{t-1} xt1的每个逆步骤都仅依赖于 x t x_t xt,因此需要在保持对应分布的正确性质下更改已知区域 ( 1 − m ) ⊙ x t (1 - m)\odot x_t (1m)xt。由于前进方向由添加了高斯噪声的马尔可夫链,即公式(1)定义,可以通过公式(7)采样任意时间点的中间图像 x t x_t xt,同理可以采样已知区域 m ⊙ x t m\odot x_t mxt。因此,基于公式(2)的未知区域采样和公式(7)的已知区域采样,可以实现每个逆步骤的以下表达
    x t − 1 known  ∼ N ( α ˉ t x 0 , ( 1 − α ˉ t ) I ) x t − 1 unknown  ∼ N ( μ θ ( x t , t ) , Σ θ ( x t , t ) ) x t − 1 = m ⊙ x t − 1 known  + ( 1 − m ) ⊙ x t − 1 unknown 

    xt1known N(α¯tx0,(1α¯t)I)xt1unknown N(μθ(xt,t),Σθ(xt,t))xt1=mxt1known +(1m)xt1unknown " role="presentation" style="position: relative;">xt1known N(α¯tx0,(1α¯t)I)xt1unknown N(μθ(xt,t),Σθ(xt,t))xt1=mxt1known +(1m)xt1unknown 
    xt1known xt1unknown xt1N(αˉt x0,(1αˉt)I)N(μθ(xt,t),Σθ(xt,t))=mxt1known +(1m)xt1unknown    x t − 1 known x_{t-1}^\text{known} xt1known是在给定图像 m ⊙ x 0 m\odot x_0 mx0上使用已知像素的采样,而 x t − 1 unkonwn x_{t-1}^\text{unkonwn} xt1unkonwn是在先前迭代 x t x_t xt上基于模型的采样。结合蒙版后,将生成新样本 x t − 1 x_{t-1} xt1,如图2

    图2:RePaint更高标准去噪过程以调整给定图像的内容。在每一步中,将从输入采样已知区域,以及采样DDPM输出的已修复部分

    3.2 重采样

      直接应用章节3.1描述的方法时,只是将内容的类型与已知区域匹配。例如图3中,当 n = 1 n=1 n=1时,修复区域的质地与狗狗的头发匹配,这在语义上是不正确的。因此,DDPM虽然利用了已知区域的上下文,但它并不能很好地与图像的其余部分协调一致。接下来讨论这种现象的可能原因。


      图3:应用 n n n采样步的性能。 n = 1 n=1 n=1作为DDPM基准线, n = 2 n=2 n=2是一次采样步,随着采样步的增加生成的图像更加协调。性能大约在10次采样步后满足需求

      图2分析DDPM如何调节已知区域。公式(8)说明模型使用 x t x_t xt来预测 x t − 1 x_{t-1} xt1,其由DDPM的输出和已知区域的采样组成。然而,基于公式(7)的已知像素采样并未考虑图像的生成部分,这将导致不和谐。尽管模型于每一步中尽量生成和谐的图像,但是这似乎并不奏效因为下一步开始时依然没有解决上述问题。此外,在每个逆步骤中, β t β_t βt 的方差限制会减小图像的最大变化。最终,在下一步去噪开始前,模型需要更多的时间使用 x t − 1 unknown x_{t-1}^\text{unknown} xt1unknown来和谐 x t − 1 known x_{t-1}^\text{known} xt1known
      训练后的DDPM用以生成服从数据分布的图像,其自然也需要生成一致的结构。 在重采样方法中,DDPM这个属性被用于协调模型的输入。因此,通过公式(1)来采样 x t ∼ N ( 1 − β t x t − 1 , β t I ) x_t\sim\mathcal{N}(\sqrt{1-\beta_t}x_{t-1},\beta_t\mathbf{I}) xtN(1βt xt1,βtI)以将输入 x t − 1 x_{t-1} xt1扩散回 x t x_t xt。尽管该操作缩放输出以及添加噪声,一些合并在生成区域 x t − 1 unknown x_{t-1}^\text{unknown} xt1unknown的信息依然保留其中,这使得新生成的 x t unknown x_t^\text{unknown} xtunknown能够更和谐于 x t known x_t^\text{known} xtknown且包含一些其本身的调节信息。
      由于此操作只能协调一个步骤,因此可能无法在整个去噪过程中合并语义信息。为了克服这个问题,将此操作的时间范围表示为跳跃长度, j = 1 j=1 j=1对应于前一种情况。类似于扩散速度的标准变化,也就是减速,重采样也增加了逆扩散的运行时间。减速通过减少每个去噪步骤中增加的方差来应用更小但更多的重采样步骤。这是一种本质不同的方法,因为减缓扩散仍然存在不协调图像的问题。RePaint的伪代码如算法1

  • 相关阅读:
    6个国内外高质量icon素材网站分享给你,实用不花钱!
    函数指针、函数指针数组、计算器+转移表等归纳总结
    Elasticsearch各个版本重要特性
    学习记忆——宫殿篇——记忆宫殿——地点桩——演讲稿定位记忆
    k8s学习-持久化存储(Volumes、hostPath、emptyDir、PV、PVC)详解与实战
    解决Python+vscode环境,QThread 线程无法加入断点问题
    pg distinct 改写递归优化(德哥的思路)
    S330 中兴全新原装SDH光端机
    Docker容器管理
    pytorch数学操作
  • 原文地址:https://blog.csdn.net/weixin_44575152/article/details/126166261