Null-text Inversion for Editing Real Images using Guided Diffusion Models (Paper reading)
Ron Mokady, Google Research, CVPR23, Paper, Code
1. 前言
在本文中,我们介绍了一种精确的反转技术,从而有助于直观地对图像进行基于文本的修改。我们提出的反演由两个新的关键组成部分组成:(i)扩散模型的关键反演。虽然目前的方法旨在将随机噪声样本映射到单个输入图像,但我们为每个时间戳使用一个关键噪声向量,并围绕它进行优化。我们证明,直接反演本身是不够的,但确实为我们的优化提供了一个很好的锚。(ii)空文本优化,其中我们只修改用于无分类器引导的无条件文本嵌入,而不是输入文本嵌入。这允许保持模型权重和条件嵌入的完整性,因此能够应用基于提示的编辑,同时避免对模型权重进行繁琐的调整。我们的空文本反转基于公开的SD模型,在各种图像和即时编辑上进行了广泛的评估,显示了真实图像的高保真编辑。
2. 整体思想
图像编辑需要保证非编辑位置的高度一致性,但是在T2I模型中不是容易的。Inversion可以提供扩散确定性的轨迹,但仅在无条件中成立。因为T2I需要提供文本prompts,如果编辑改变了prompts,就会导致偏离确定的轨迹。本文就是解决这个问题,提出在CFG中的无条件引入一个可优化的编码,这个编码通过提前对特定一张图片优化,使其可以适应高条件权重的轨迹,而不影响扩散模型的先验和文本编码。这是一篇值得认真思考的文章。
3. 方法
3.1 DDIM Inversion
文本引导的扩散模型旨在将随机噪声向量 z t z_t zt和文本条件 P P P映射到输出图像 z 0 z_0 z0,该输出图像对应于给定的条件提示。DDIM具有确定性的采样:
z t − 1 = α t − 1 α t z t + ( 1 α t − 1 − 1 − 1 α t − 1 ) ⋅ ε θ ( z t , t , C ) z_{t-1}=\sqrt{\frac{\alpha_{t-1}}{\alpha_{t}}} z_{t}+\left(\sqrt{\frac{1}{\alpha_{t-1}}-1}-\sqrt{\frac{1}{\alpha_{t}}-1}\right) \cdot \varepsilon_{\theta}\left(z_{t}, t, \mathcal{C}\right) zt−1=αtαt−1zt+(αt−11−1−αt1−1)⋅εθ(zt,t,C)
那么给定一张图片 z 0 z_0 z0,对应的文本 P P P和一个预训练的扩散模型 ϵ θ \epsilon_\theta ϵθ,我们就可以由 z 0 − > z T z_0 ->z_T z0−>zT,这就是DDIM Inversion。为什么DDIM可以反转呢?因为DDIM的采样步数 t t t较少,反转到 z T z_T zT比较快,且DDIM是确定性的采样,图片能找到唯一对应的 z T z_T zT。但是图片编辑时,就会产生如图1第二列的效果,也就是变化的文本导致了全局发生了变化。
3.2 Classifier-free Guidance
SD中的CFG的主要作用是尽可能生成与class相关的内容,而不引入其他东西。比如你想生成一个猫,无条件的模型可能给你生成一个人在旁边,虽然Classifier Guidance能生成一个猫,但是它需要重新额外训练一个分类器,因此就诞生了CFG,只不过CFG每一步需要两次采样,一个是无条件的,一个是有条件的。本文说明条件信息会影响重建,而无条件的会变现的很好,那对于CFG如何保证有文本条件下精确的重建图像呢?本文定义了一个Null嵌入入到无条件的模型中,如下:
ε ~ θ ( z t , t , C , ∅ ) = w ⋅ ε θ ( z t , t , C ) + ( 1 − w ) ⋅ ε θ ( z t , t , ∅ ) . \tilde{\varepsilon}_{\theta}\left(z_{t}, t, \mathcal{C}, \varnothing\right)=w \cdot \varepsilon_{\theta}\left(z_{t}, t, \mathcal{C}\right)+(1-w) \cdot \varepsilon_{\theta}\left(z_{t}, t, \varnothing\right) . ε~θ(zt,t,C,∅)=w⋅εθ(zt,t,C)+(1−w)⋅εθ(zt,t,∅).
3.3 Pivotal Inversion
我们从研究DDIM反演开始。在实践中,每一步都会包含一个微小的错误。对于无条件扩散模型,累积误差可以忽略不计,DDIM反演成功。然而,请记住,使用稳定扩散模型进行有意义的编辑需要应用大引导尺度 w > 1 w>1 w>1的无分类器引导。我们观察到,这样的指导尺度放大了累积的误差。因此,在无分类器引导的情况下执行DDIM反演过程不仅会导致视觉伪影,而且所获得的噪声向量可能超出高斯分布。后者降低了可编辑性,即使用特定噪声矢量进行编辑的能力。
如上图,我们用不同的制导标度值来评估DDIM反演。在左边,我们测量潜在向量 z T z_T zT相对于多元正态分布的对数似然。这估计了 z T z_T zT在理想情况下应该正态分布的可编辑性,并且与该分布的偏差降低了我们编辑图像的能力。在右边,我们使用PSNR来测量重建质量。可以看出,使用小的引导尺度,例如 w = 1 w=1 w=1,导致更好的可编辑性和重建。这一部分作者发现, w = 1 w=1 w=1能够给予更精确的起点。也就是说,该优化最大限度地提高了与原始图像的相似性,同时保持了我们执行有意义编辑的能力。见算法1的3,4行。
但是想要更好的文本编辑,需要 w > 1 w>1 w>1。这与Inversion过程 w = 1 w=1 w=1逐步产生累计误差,为了弥补这部分的误差,作者提出Null-text optimization.
3.4 Null-text optimization
为了成功地将真实图像转换到模型的域中,最近的工作优化了文本编码、网络权重或两者。微调每个图像的模型权重涉及复制整个模型,这在内存消耗方面是非常低效的。此外,除非对每次编辑都进行微调,否则必然会损害模型的先验知识,从而损害编辑的语义。文本嵌入的直接优化导致不可解释的表示,因为优化的标记不一定与预先存在的单词匹配。因此,提示编辑的直观提示变得更具挑战性。
相反,我们利用了CFG的关键特征——无条件预测对结果的影响很大。因此,我们将默认的空文本嵌入替换为优化的嵌入,称为空文本优化。也就是说,对于每个输入图像,我们只优化无条件嵌入∅,用空文本嵌入初始化。模型和条件文本嵌入保持不变。这导致了高质量的重建,同时仍然允许通过简单地使用优化的无条件嵌入来使用提示进行直观的编辑。此外,在单个反转过程之后,相同的无条件嵌入可以用于对输入图像的多个编辑操作。由于空文本优化的表现力自然不如微调整个模型,因此它需要更有效的关键反转方案。
我们将优化单个无条件嵌入∅称为全局空文本优化。在我们的实验过程中,我们观察到,为每个时间戳优化不同的“零嵌入”∅t显著提高了重建质量,同时这非常适合我们的关键反演。因此,我们使用属性戳无条件嵌入 { ∅ t } t = 1 t \{∅t\}^t_{t=1} {∅t}t=1t,并用前一步的嵌入∅初始化 ∅ t + 1 ∅_{t+1} ∅t+1:
min ∅ t ∥ z t − 1 ∗ − z t − 1 ( z ˉ t , ∅ t , C ) ∥ 2 2 \min _{\varnothing_{t}}\left\|z_{t-1}^{*}-z_{t-1}\left(\bar{z}_{t}, \varnothing_{t}, \mathcal{C}\right)\right\|_{2}^{2} ∅tmin zt−1∗−zt−1(zˉt,∅t,C) 22
为什么有效?或者为什么这种方式可以准确改变编辑区域不影响全局?当 w = 1 w=1 w=1时,相当于Inversion过程中没有了无条件的输出,轨迹全部来自于有条件的,也就是该估计与prompts高度相关。在你不改变prompt和添加CFG的情况下,可以高度重建。其实无条件部分的作用是提供高保真度和全局信息的,条件更注重语义。那么我们引入Null-text优化的作用就是,让无条件部分对整体高度重建,同时加强prompt的语义关联。简单而言就是,这个优化过程就是削弱条件部分对全局重建的期望,主要Inversion的时候仅用了条件部分。因此,针对特定一张图片的优化是在绑定text的语义和无条件部分的过拟合。