Towards Coherent Image Inpainting Using Denoising Diffusion Implicit Models
Guanhua Zhang, UC Santa Barbara, USA, arXiv2023, Cited:0, Code, Paper
1. 前言
图像修复是指基于部分显露的参考图像生成完整的、自然的图像的任务。近年来,利用固定扩散模型来解决这一问题一直是人们研究的热点。这些方法通常直接将中间或最终生成的图像的显露区域替换为参考图像或其变体的区域。然而,由于未显示区域没有被直接修改以匹配上下文,因此导致显示区域和未显示区域之间的不一致。为了解决不一致性问题,少数方法引入了严格的贝叶斯框架,但由于计算后验分布时的近似误差,它们往往会在生成的图像和参考图像之间引入失配。在本文中,我们提出了COPAINT,它可以在不引入失配的情况下对整个图像进行一致性修复。COPAINT还使用贝叶斯框架来联合修改显露区域和未显露区域,但以一种允许误差在去噪步骤中逐渐降至零的方式近似后验分布,从而强烈地惩罚与参考图像的任何不匹配。我们的实验验证了COPAINT在客观和主观指标上都优于现有的基于扩散的方法。
2. 整体思想
3. 方法
Inpainting任务,如下图,显露区域为a左,未显露区域是右边。定义
X
0
X_0
X0是自然图像的向量化。我们通过逆向过程中第
T
T
T步的变量可以估计出
X
~
0
=
f
θ
t
(
X
t
)
\tilde X_0=f_{\theta}^{t}(X_t)
X~0=fθt(Xt)。值得注意的是,他们之间的差距会随时间t变小而变小。
定义
r
(
⋅
)
r(\cdot)
r(⋅)算子,输出输入维度的显露出来的子集。
s
0
s_0
s0是给定参考图像显露出来的部分(a)。图像修复的目标是在以下修复约束下生成一幅自然图像:
C
:
r
(
X
0
)
=
s
0
C:r(X_0)=s_0
C:r(X0)=s0
许多现有的基于扩散模型的方法只替换了生成的
X
T
X_T
XT中间或最终图像
X
0
X_0
X0的显示区域,以直接施加修复约束,而剩余的未揭示区域的生成并没有以匹配上下文进行修改。因此,生成的图像很容易在揭示和未揭示的区域之间出现不连贯的问题。在下文中,我们将解释我们建议如何联合优化这两个区域。
其实,我们要保证一致性,就要给一定的约束,不能让生成模型自己来随机生成。先看公式10,我们希望扩散模型估计的
X
~
0
\tilde X_0
X~0的显露部分与原图一致,第一项可以被视为先验正则化,第二项被视为强制修复约束的惩罚项。我们可以对其使用梯度上升来找到最大后验估计。
其中,
ξ
T
′
2
=
1
N
E
p
θ
[
∣
∣
r
(
f
θ
T
(
X
~
T
)
)
−
r
(
X
~
0
)
∣
∣
2
2
]
\xi^{' 2}_{T}=\frac{1}{N}\mathbb{E}_{p_\theta}[||r(f_{\theta}^{T}(\tilde X_T))-r(\tilde X_0)||^{2}_{2}]
ξT′2=N1Epθ[∣∣r(fθT(X~T))−r(X~0)∣∣22]。我们可以通过这种自适应的调整来增加权重。公式10会拉近真实和估计的
X
~
0
\tilde X_0
X~0的距离,这样做有一个问题是,当
t
t
t=0时,我们不需要采样,那么这时候就没有办法进行优化,也就是当
t
=
1
t=1
t=1时,注入的噪声会影响
t
=
0
t=0
t=0时刻,这时我们希望多优化一次就可解决这个问题。具体的方法如公式14,可以看到和公式10是一样的,只是优化来下一步的采样。
算法流程如下图所示,首先,我们通过优化公式 10 对 X T X_T XT 进行采样。其次,给定生成的 X t X_t Xt 值,我们通过优化公式 14 对 X t − 1 X_{t-1} Xt−1 进行采样。这两个步骤本质上都在 DDIM 先验正则化下强制执行近似修复约束。特别是,当 t = 1 t = 1 t=1 时,如果我们设置 σ 1 = 0 σ_1 = 0 σ1=0 并让 ξ 1 ξ_1 ξ1 接近为零,我们将有零近似误差,即 f θ 1 ( X ~ 1 ) = X ~ 0 f ^{1}_θ (\tilde X_1) = \tilde X_0 fθ1(X~1)=X~0,因此可以获得生成的图像以满足误差非常小的修复约束。
3.1 额外的算法设计
尽管我们的算法最终可以消除最终去噪步骤中的一步近似误差,在早期的去噪步骤中,仍然可以影响生成质量,因为它会影响后续世代的先验分布的质量。我们引入了额外的可选设计来减少近似误差。
- 多步近似在逼近误差,更显著的早期去噪步骤中,我们可以用多步近似代替一步近似,其中 X ~ 0 \tilde X_0 X~0是通过在时间步长的子集通过多个确定性去噪步骤来近似的。
- 时间旅行:为了提高中间示例的自一致性,我们可以应用时间旅行技术,该技术通过破坏中间图像周期性地返回到之前的去噪步骤。具体而言,对于去噪时间步长 T − τ T−τ T−τ处的一组选定时间步长 φ φ φ,我们不前进到 T − τ − 1 T−τ−1 T−τ−1,而是通过基于采样一个新的 q ( X ~ T − 1 ∣ X ~ T − τ ) q(\tilde X_{T−1} | \tilde X_{T−τ}) q(X~T−1∣X~T−τ)来倒退到时间 T − 1 T−1 T−1,并从那里重复去噪步骤。经过步骤 T − 1 T−1 T−1到 T − τ T−τ T−τ的 K K K轮倒带和去噪后,我们通过步骤 T − τ − 1 T−τ−1 T−τ−1到 T − 2 τ T−2τ T−2τ进入 K K K轮倒绕和去噪循环。
4. 实验