2022CVPR:用于图像修复的去噪扩散概率模型 (RePaint: Inpainting using Denoising Diffusion Probabilistic Models)
Torch:https://github.com/andreas128/RePaint
自由形式修复 (Free-form inpainting) 是在任意二进制蒙版指定的区域中,向图像添加新内容的任务。大多数现有方法:
1)针对特定的蒙版分布进行训练,这限制了它们在未知蒙版上的泛化能力;
2)像素级和感知损失的训练通常导致缺失区域的简单纹理扩张,以致不能引导语义上有意义的生成。
本文提出一种基于去噪扩散概率模型 (DDPM) 的修复方法,以适用于多种类型的蒙版:
1)使用预训练的无条件DDPM作为生成先验 (Generative prior);
2)为了调节生成过程,仅采样给定图像的无蒙版区域,以调控逆扩散迭代;
3)不修改或者不调节原始的DDPM网络,因此对于任意的修复形式可以产生高质量和多样性的输出图像。
@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}
}
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)
xT∼N(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(xt∣xt−1)=N(xt;1−βtxt−1,βtI)(1)
x
t
x_t
xt包含两个部分,在时间步
t
t
t关于变量
β
t
\beta_t
βt的独立同分布高斯噪声和通过缩放的先前样本
x
t
−
1
x_{t-1}
xt−1。
逆过程使用神经网络建模,该网络描述了带有参数
μ
θ
(
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θ(xt−1∣xt)=N(xt−1;μθ(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
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}
μ
θ
(
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)=αt1(xt−1−αˉ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=1∏t(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(xt∣x0)=N(xt;αtx0,(1−αt)I)(7) 这允许有效采样成对训练数据以训练逆转换。
首先说明如何调整无条件DDPM逆扩散以进行图像修复,然后介绍一种改进的逆过程方法。
修复的目的是预测图像以蒙版作为条件的缺失像素,接下来考虑训练一个无条件DDPM。令
x
x
x表示原始真实图像、
m
⊙
x
m\odot x
m⊙x表示未知像素,以及
(
1
−
m
)
⊙
x
(1 - m)\odot x
(1−m)⊙x表示已知像素。
由于公式(2)中
x
t
x_t
xt到
x
t
−
1
x_{t-1}
xt−1的每个逆步骤都仅依赖于
x
t
x_t
xt,因此需要在保持对应分布的正确性质下更改已知区域
(
1
−
m
)
⊙
x
t
(1 - m)\odot x_t
(1−m)⊙xt。由于前进方向由添加了高斯噪声的马尔可夫链,即公式(1)定义,可以通过公式(7)采样任意时间点的中间图像
x
t
x_t
xt,同理可以采样已知区域
m
⊙
x
t
m\odot x_t
m⊙xt。因此,基于公式(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

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