(2023,InstructPix2Pix,Region-IoU,基于 FFT 的边缘平滑)ZONE:零样本指令引导本地编辑

ZONE: Zero-Shot Instruction-Guided Local Editing

公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群)

目录

0. 摘要

4. 方法

4.1. 问题陈述

4.2. 指令引导的定位

4.3. 掩码精练

4.4. 图层混合

5. 实验


0. 摘要

近期在视觉语言模型方面的进展,如 Stable Diffusion,在创意图像合成和编辑方面展现出了显著的能力。然而,大多数现有的文本到图像编辑方法面临两个障碍:首先,文本提示需要精心制作才能取得良好的结果,这并不直观或用户友好。其次,它们对局部编辑不敏感,可能会对未编辑的区域造成不可逆的影响,留下明显的编辑痕迹。为了解决这些问题,我们提出了一种零样本指令引导的局部图像编辑方法(Zero-shot instructiON-guided local image Editing approach,ZONE)。我们首先通过 InstructPix2Pix (IP2P) 将用户提供的指令(例如,“把他的领带变蓝”)转化为具体的图像编辑区域。然后,我们提出了一种用于从现成的分割模型中精确提取图像层的 Region-IoU 方案。我们进一步基于 FFT 开发了一种边缘平滑器,用于在图层和图像之间实现无缝混合。我们的方法允许在单一指令下对特定区域进行任意操作,同时保留其余部分。大量实验证明,我们的 ZONE 取得了显著的局部编辑结果和用户友好性,优于现有的最先进方法。

4. 方法

ZONE 概述。我们的目标是通过简单的指令在图像上进行局部编辑。如图 1(a)所示,这些编辑包括执行三个主要操作:(i) “add”:在图像中添加一个对象,无需指定位置,使用用户提供的掩码;(ii) “remove”:移除场景中的对象;(iii) “change”:更改现有对象的样式(即纹理)或用另一个对象替换它。此外,我们的方法允许通过一系列指令进行高保真度的多轮编辑。

正如图 2(a)所示,我们的方法包括以下步骤:首先,我们为引导不同的编辑需求训练一个动作分类器,并同时使用融合的 IP2P 生成和定位编辑区域,详见第 4.2 节和图 2(c)。其次,我们设计了一个掩蔽精练模块,用于编辑图像层,详见第 4.3 节。最后,在第 4.4 节中,我们提出了一种基于 FFT 的边缘平滑器,用于无缝融合编辑后的图像层和原始图像。

4.1. 问题陈述

给定一个 RGB 图像 I^G ∈ R^(3×H×W) 和一个文本指令 T_I,我们的目标是根据 T_I 定位和编辑图像区域,并保留原始未编辑的区域。受到 Text2LIVE [3] 的启发,我们提取一个具有颜色和不透明度的编辑图层 I_L,该图层叠加在 I_G 上。与先前的作品 [1, 3, 15, 40] 相反,我们既不依赖于任何用户定义的掩码,也不需要非直观的提示工程,实现精确的局部编辑和无缝的图层混合。

4.2. 指令引导的定位

许多局部编辑方法要求用户使用提示或掩码明确指定要编辑的对象 [1, 3, 8, 40]。这并不直观,通常需要一定的学习成本。我们的方法根据用户的指令定位和编辑隐含指定的对象。例如,用户提供的指令 “让她变老” 可以隐含传达用户的编辑意图,即通过使她显得更老(编辑)来修改场景中的女性(定位)。

正如图 2(b) 所示,我们的关键发现是指令引导和描述引导的扩散模型在交叉注意力上表现出明显的差异。具体而言,我们经验性地证明: (i) 描述引导的模型在其交叉注意力图上显示出对标记的感知特征,将每个输入文本标记与相应的空间结构关联起来; (ii) 指令引导的模型的交叉注意力图共享相似的空间特征,表现出对编辑的感知特征,对单个标记不敏感,但对整体编辑意图有响应。

给定一个噪声潜变量 z_t 和一个文本嵌入 c_T,去噪 UNet ?_θ 在每个时间步预测噪声 ?。生成是通过计算文本嵌入 c_T 与空间特征 ?(z_t) 之间的交叉注意力来以文本提示 T_I 为条件,并更新?(z_t) 为 ??(z_t):

其中 query Q = W_Q·?(z_t),key K = W_K·c_T,value V = W_V·c_T 通过线性投影 W_Q、W_K 和 W_V 获得。M ∈ R^(H′×W′×L) 包含 L 个与 Q 和 K 之间的相似度相关的交叉注意力图。通常情况下,H′ 和 W′ 分别是稳定扩散中原始图像大小 H 和 W 的 1/32。对于描述引导的稳定扩散模型,令 M^l 为第 l 个标记的注意力图,其中 l ∈ {1, 2, . . . ,L}。对于指令引导的 IP2P,M^l 在所有标记之间共享统一的特征,直接集中在编辑位置,无需标记指定,如图 3 所示。

基于这一发现,我们设计了一个简单而有效的定位模块,通过指令 T_I 定位编辑区域。具体来说,我们首先收集 IP2P 去噪过程的所有时间步的去噪模型的注意力图。然后,我们对这些图进行平均和调整大小,得到平均注意力图 M^A ∈ R(H×W×L)。注意,L 个标记包括 “start-of-text” 和 “end-of-text” 标记,其相应的注意力图分别为 M^1 和 M^L。如图 3 所示,这些图的注意权重(即像素的亮度)沿着标记方向倾向于减小,因此我们从第一个标记的交叉注意力图中减去最后一个标记的,并使用固定阈值 T 对结果进行二值化:

其中T经验性地设置为 128。这产生了一个粗略的、经过噪声过滤的与 T_I 相关的编辑区域掩码 M_b(见图 2(a))。

此外,我们发现 IP2P 在 “remove” 编辑方面的表现不如 MagicBrush,但在 “add” 和 “change” 方面保留了更好的对象身份。因此,我们设计了一个融合的 IP2P 模块,其中包含一个可训练的动作分类器 A_I。如图 2(c) 所示,我们锁定了 IP2P 和 MagicBrush 的权重,并使用预训练的动作分类器 A_I 来基于 T_I 引导去噪过程:

其中 z*_(t?1) 和 z′_(t?1) 分别是 IP2P 和 MagicBrush 去噪的潜在。β 是一个超参数,用于控制MagicBrush 对 IP2P 的引导强度,如果 A_I(T_I) 被分类为 “remove”,则经验性地设置为 0.2,对于其他操作则设置为 0.01。该模块根据 T_I 生成一个全局编辑的图像 I_sty。I_sty 作为画布,从中剪裁出编辑区域,形成后续步骤中的一个单独的图像层。

4.3. 掩码精练

在第 4.2 节中获得的位置掩码 M_b 和 I_sty 对于精确的局部编辑是不足够的,因为 M_b 只表示编辑区域的一般位置,如图 2(a) 所示。一个直观且有效的掩码精练方法是使用现成的分割模型。我们利用 Segment Anything Model (SAM) [29] 生成画布 I_sty 在不同级别上的精确掩码。 然而,我们不使用 SAM 的预设点或框提示进行分割选择,因为这些提示可能由于 IP2P 的过度编辑问题(也反映在 M_b 中,见图 2(a) 中的 I_sty 和 M_b)而导致对 SAM 的分割结果进行错误选择或遗漏,从而导致最终的掩码不能准确反映 T_I 的编辑意图。因此,我们提出了一种 Region-IoU(rIoU)方案来获得准确的分割掩码。 如图 2(c) 所示,通过将 I_sty 发送到 SAM,我们提取所有可能的实例分割 S = {S_j}^N_(j =1)。注意,S 包含来自 SAM 各个级别的分割。我们定义 rIoU R(j) 为:

如果

然后,我们获得了经过精练的掩蔽 M_f = S^k。示例见图 2(a)或(c)。 

4.4. 图层混合

在掩码精练之后,我们获得了一个编辑后的图像层 I′_L = I_sty ⊙M_f,该图像层在 M_f = 1 的区域内保留了 I_sty 的颜色信息,其余部分为透明。获得最终编辑结果 I_C 的一种朴素方法是在像素级别拼接 I′_L 和原始图像 I_G。这从根本上解决了指令引导方法在局部编辑中遇到的过度编辑问题。然而,直接将 I′_L 粘贴回 I_G 可能会导致明显的伪影,例如锯齿状边缘和在原始图像中编辑区域的不完全覆盖,如图 4(b)中的黄色箭头所示。

我们通过设计一个使用快速傅里叶变换(Fast Fourier Transform,FFT)的新型边缘平滑器来解决这个问题。给定原始图像 I_G、画布 I_sty 和精练的定位掩蔽 M_f,我们首先膨胀 M_f 到 M_d,以包含 I_sty 中可能未包含在 I′_L 中的更多边缘信息。然后我们得到膨胀的编辑图像层 I_(L,d) = I_sty ⊙ M_d 和膨胀的原始图像层 I_(G,d) = I_G⊙M_d,如图 4 的第二列所示。边缘平滑器 e 的定义为:

其中 g 是二值化以及形态学闭合和填充函数的组合,f 和 f^(?1) 分别表示 FFT 和逆 FFT,H 是理想低通滤波器: 

其中,f_s ∈ R^(H×W) 是图像通过 f 变换得到的频谱,c 是 f_s 中的坐标,c_0 是 f_s 的中心坐标,D_0 经验性地设置为 200,适用于 512×512 的图像。我们使用边缘平滑器 e 来得到最终的掩码 M*_f。

如图 4 的第二列所示,我们观察到 I_(G,d) 和 I_(L,d) 在未编辑的区域(例如背景)上共享相似的低频特征,但它们在编辑的区域(例如帽子及其下面的阴影)上具有不同的低频特征。因此,我们可以通过在频域中从 I_L,d 和 I_G,d 之间减去低频分量来排除未编辑的区域并保留编辑的区域:d_s = H(f(I_(G,d))) ? H(f(I_(G,d))),然后将其反转回图像域以获得差异掩码 M_(d_m) = f^(?1)(d_s),然后最终的掩码 M*_f 通过 M*_f = g(M_(d_m)) = e(I_(G,d), I_(L,d))获得。最后,我们通过I_L = I_sty ⊙M*_f 获得最终的编辑后图像层 I_L,通过将 I_G 和 I_L 混合获得最终的编辑结果 I_C。这些中间结果的直观可视化见图 4。更多的实现细节和讨论可以在补充材料中找到。

5. 实验