Text2LIVE: Text-Driven Layered Image and Video Editing
公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群)
目录
0. 摘要
3. 文本引导的分层图像和视频编辑
3.1 文本到图像编辑层
3.2 文本到视频编辑图层
4. 结果
4.5 局限性
0. 摘要
我们提出了一种用于零样本、以文本驱动的自然图像和视频外观操作的方法。给定一个输入图像或视频和一个目标文本提示,我们的目标是以语义上有意义的方式编辑现有对象(例如,对象的纹理)或用视觉效果(例如,烟雾、火焰)增强场景。我们使用一个内部训练示例数据集对生成器进行训练,这些数据集从单个输入(图像或视频和目标文本提示)中提取出来,同时利用一个外部预训练的 CLIP 模型来建立我们的损失函数。与直接生成编辑后的输出不同,我们的关键思想是生成一个编辑层(颜色 + 不透明度),该层与原始输入进行合成。这使我们能够约束生成过程并通过直接应用于编辑层的新型文本驱动损失保持对原始输入的高保真度。我们的方法既不依赖于预训练的生成器,也不需要用户提供编辑掩码。我们演示了在高分辨率自然图像和视频上对各种对象和场景进行局部的语义编辑。
项目页面:https://text2live.github.io/
3. 文本引导的分层图像和视频编辑
我们专注于由简单文本提示表达的语义局部编辑。此类编辑包括更改对象的纹理或在场景中语义上增强复杂的半透明效果(例如,烟雾、火焰)。为此,我们利用从单个输入图像或视频中学习生成器的潜力,同时利用一个预训练的 CLIP 模型,该模型保持固定并用于建立我们的损失函数 [35]。我们的任务是不适定的(ill-posed) - 根据 CLIP,许多可能的编辑都可以满足目标文本,其中一些包括嘈杂或不需要的解决方案[11,25]。因此,控制编辑的定位并保留原始内容对于实现高质量的编辑结果都是至关重要的组成部分。 我们通过以下关键组件来解决这些挑战:
- 分层编辑。我们的生成器输出一个 RGBA 层,该层在输入图像上合成。这使我们能够通过直接应用于编辑层的专用损失来控制编辑的内容和空间范围。
- 明确内容保留和定位损失。我们利用 CLIP 空间中的内部空间特征设计新的损失,以保留原始内容并指导定位编辑。
- 内部生成式先验。我们通过对输入图像 / 视频和文本应用数据增强来构建一个内部示例数据集。这些增强的示例用于训练我们的生成器,其任务是在更大更多样的示例集上执行文本引导的编辑。
3.1 文本到图像编辑层
如图 3 所示,我们的框架包括一个生成器 G_θ,接受源图像 I_s 作为输入,并合成一个编辑层 E = {C, α},其中包括颜色图像 C 和不透明度图 α。最终编辑后的图像 I_o 是通过在 I_s 上合成编辑层得到的:
我们的主要目标是生成 E,使得最终的复合图像 I_o 符合目标文本提示 T。此外,生成 RGBA 图层使我们能够使用文本进一步引导生成的内容及其定位。为此,我们考虑了一些辅助文本提示:T_screen 表达目标编辑图层,当叠加在绿色背景上时,T_screen 表示目标编辑图层;T_ROI 指定源图像中感兴趣的区域,并用于初始化编辑的定位。例如,在图 2 中的 Bear 编辑中,T =“bear's mouth out of fire”,T_screen = “fire over a green screen”,T_ROI = “mouth”。接下来,我们详细描述了这些如何在我们的目标函数中使用。
目标函数。我们的新型目标函数包含三个主要的损失项,均在 CLIP 特征空间中定义:(i) L_comp,这是主导损失,鼓励 I_o 符合 T,(ii) L_screen,它作为编辑图层的直接监督,以及 (iii) L_structure,结构保持损失相对于 I_s。此外,使用正则化项 L_reg 来控制编辑的范围,通过鼓励稀疏的不透明度图 α。形式上,
其中 λ_g、λ_s 和 λ_r 控制各项的相对权重,并在所有实验中保持不变(请参见附录 A.3)。
合成损失。Lcomp 反映了我们生成与目标文本提示匹配的图像的主要目标,由余弦距离损失和方向损失 [33] 的组合给出:
其中, L_cos 是 I_o 和 T 的 CLIP 嵌入之间的余弦距离,E_im 和 E_txt 分别表示 CLIP 的图像和文本编码器。L_dir 控制在 CLIP 空间中的编辑方向[12,33]。
与大多数基于CLIP的编辑方法类似,我们首先对每个图像进行增强,以获得几个不同的视图,并分别计算与它们相关的 CLIP 损失,就像 [2] 中那样。这适用于我们所有基于 CLIP 的损失。有关详细信息,请参见附录 A.2。
绿幕损失。L_screen 作为对生成的编辑图层 E 的直接文本监督。我们从色度键(chroma keying) [4] 中汲取灵感 - 这是一种众所周知的技术,通过在后期处理中用图像替换均匀的背景(通常是绿色)。色度键广泛用于图像和视频后期制作,并且在线图像中存在大量以各种视觉元素在绿色背景上展示的情况。因此,我们将编辑图层与绿色背景 I_green 合成,并鼓励它与文本模板 T_screen :=“ { } over a green screen” 匹配(图3):
该损失的一个良好性质是,它允许对期望效果进行直观监督。例如,在生成半透明效果时,如图 2中的 Bear,我们可以使用此损失专注于火焰,而不考虑图像内容,通过使用 T_screen = “fire over a green screen”。除非另有说明,我们在所有实验中将 T 插入我们的屏幕文本模板中。与合成损失类似,我们在将图像输入 CLIP 之前首先对图像进行增强。
结构损失。我们希望在保留对象的原始空间布局、形状和感知语义的同时允许实质性的纹理和外观变化。虽然在风格转移的背景下提出了各种感知内容损失,但它们大多使用从预训练的 VGG 模型中提取的特征。相反,我们在 CLIP 特征空间中定义我们的损失。这使我们能够对 I_o 的结果内部 CLIP 表示施加额外的约束。受经典和最近的作品启发 [20,43,48],我们采用自相似性度量。具体而言,我们将图像馈送到 CLIP 的 ViT 编码器,并从最深层提取其 K 个空间标记。自相似矩阵,记为 S(I) ∈ R^(K×K),用作结构表示。每个矩阵元素 S(I)_ij 定义为:
其中 t_i(I) ∈ R^768 是图像 I 的第 i 个标记。 L_structure 被定义为 I_s 和 I_o 的自相似矩阵之间的Frobenius 范数距离:
稀疏性正则化。为了控制编辑的空间范围,我们鼓励输出的不透明度图是稀疏的。我们遵循[26,27],将稀疏性损失项定义为 L1-和 L0-逼近正则化项的组合:
其中 Ψ_0(x) ≡ 2Sigmoid(5x) ? 1 是一个平滑的 L_0 近似,对非零元素进行惩罚。我们在所有实验中固定 γ。
引导。为了在没有用户提供的编辑掩码的情况下实现准确的定位效果,我们应用了一个文本驱动的相关性损失来初始化我们的不透明度图。具体而言,我们使用 Chefer 等人 [6] 自动估计一个相关性图 R(I_s) ∈ [0, 1]^(224 × 224),粗略地突出显示与给定文本 T_ROI 最相关的图像区域。我们使用相关性图通过最小化等式 (8) 来初始化 α:
请注意,相关性图存在噪音,仅提供了对感兴趣区域的粗略估计(图 8(c))。因此,我们在训练过程中逐渐退火这个损失(请参见附录 A.3 中的实现细节)。通过在训练中使用多样的内部示例以及我们的其他损失,我们的框架显着改进了这个粗略的初始化,并生成准确且清晰的不透明度(图8(d))。
训练数据。我们的生成器是针对每个输入(I_s,T)从头开始训练的,使用一个包含各种图像文本训练示例的内部数据集
这些示例是从输入派生的(图 3 左)。具体而言,每个训练示例(I^i_s,T_i)都是通过随机对 I_s 和 T 应用一组增强来生成的。图像增强包括全局裁剪、颜色抖动和翻转,而文本增强是从预定义的文本模板中随机抽样的(例如,“一张照片” + T);有关详细信息,请参见附录 A.2。所有这些增强的组合提供了一个丰富多样的训练数据集。现在的任务是学习整个数据集的一个映射函数 G_θ,这对任务有很强的正则化。具体而言,对于每个个别示例,G_θ 必须从 I^i_s 生成一个合理的编辑图层 E_i,使得合成图像很好地由 T_i 描述。在第4节中,我们演示了我们的内部学习方法相对于测试时优化方法的有效性。
3.2 文本到视频编辑图层
一个自然的问题是,我们的图像框架是否可以应用于视频。关键的额外挑战是实现时间一致的结果。简单地在每一帧上独立应用我们的图像框架会产生令人不满意的抖动结果(请参见第 4 节)。为了强制实现时间一致性,我们利用了神经层次图(Neural Layered Atlases,NLA)方法 [18],如图 4(a) 所示。接下来,我们将简要回顾 NLA 并详细讨论如何扩展到视频。
基础:神经层次图。NLA 提供了视频的统一 2D 参数化:视频被分解为一组 2D 图集,每个都可以视为一张 2D 图像,代表整个视频中的前景对象或背景。前景和背景图集的示例如图 4 所示。对于每个视频位置 p =(x,y,t),NLA 计算每个图集中对应的 2D 位置(UV)和前景不透明度。这允许从这组图集中重建原始视频。NLA 包含多个多层感知器(MLP),用于表示图集和从像素到图集以及到其不透明度的映射。更具体地说,每个视频位置 p 首先被输入两个映射网络,M_b 和 M_f:
其中(u^p_?,v^p_?)是背景/前景图集空间中的 2D 坐标。 每个像素也被馈送到一个 MLP,用于预测每个位置前景的不透明度值。预测的 UV 坐标然后被输入到图集网络 A 中,该网络输出每个位置的 RGB 颜色。因此,可以通过将 p 映射到图集、提取相应的图集颜色、并根据预测的不透明度进行混合来重建 p 的原始 RGB 值。我们建议阅读 [18] 获取详细信息。
重要的是,NLA 实现了一致的视频编辑:连续的图集(前景或背景)首先被离散化为固定分辨率的图像(例如,1000×1000 像素)。用户可以直接使用图像编辑工具(例如,Photoshop)编辑离散化的图集。然后,图集编辑被映射回视频,并与原始帧混合,使用预测的 UV 映射和前景不透明度。在这项工作中,我们有兴趣以完全自动的方式生成图集编辑,仅由文本引导。
文本到图集编辑层。我们的视频框架利用 NLA 作为“视频渲染器”,如图 4 所示。具体而言,给定一个用于视频的预训练和固定的 NLA 模型,我们的目标是生成一个 2D 图集编辑层,无论是用于背景还是前景,以便在映射回视频时,每个渲染的帧都符合目标文本。
与图像框架类似,我们训练一个生成器 G_θ,它以 2D 图集作为输入并生成一个图集编辑层 E_A = {C_A, α_A}。请注意,由于 G_θ 是一个 CNN,我们使用离散化的图集,表示为 I_A。预训练的 UV 映射,表示为 M,用于双线性采样 E_A,并将其映射到每一帧:
其中 S 是与帧 t 对应的 UV 坐标集。通过与 [18] 中相同的过程,最终编辑的视频是通过将 E_t 与原始帧混合而获得的。
训练。对于训练 G_θ 的一种直接方法是将 I_A 视为图像,并将其插入我们的图像框架(第 3.1节)。这种方法将产生一个时间一致的结果,但有两个主要缺点:(i) 图集通常会非均匀地扭曲原始结构(见图 4),这可能导致低质量的编辑,(ii) 仅使用图集,而忽略视频帧,忽视了视频中丰富多样的信息,例如不同的视点或非刚性对象变形,这可以作为我们生成器的“自然增强”。我们通过将图集编辑映射回视频并在编辑的帧上应用我们的损失来克服这些缺点。与图像情况类似,我们使用相同的目标函数(Eq. 2),并直接从图集构建内部数据集进行训练。
更具体地,首先从 I_A 中提取一个裁剪以构建一个训练示例。为了确保我们采样到信息丰富的图集区域,我们首先在空间和时间上随机裁剪一个视频段,然后使用 M 将其映射到相应的图集裁剪 I_Ac(有关完整技术细节,请参见附录 A.4)。然后,我们对 I_Ac 进行额外的增强,并将其馈送到生成器中,得到一个编辑层 E_Ac = G_θ(I_Ac)。然后,我们将 E_Ac 和 I_Ac 映射回视频,得到帧编辑层 E_t 和重建的前景/背景裁剪 I_t。这是通过使用 Eq.(10)双线性采样 E_Ac 和 I_Ac,其中 S 为与帧裁剪对应的 UV 坐标集来完成的。最后,我们应用 Eq. 2 中的 LText2LIVE,其中 I_s= I_t 并且 E = E_t。
4. 结果
4.5 局限性
我们注意到对于一些编辑,CLIP 对特定解决方案表现出非常强烈的偏见。例如,如图 9 所示,给定一个蛋糕的图像,“生日蛋糕” 的文本与蜡烛强烈关联。我们的方法并不是为了显著偏离输入图像布局、创建新对象、并生成了不现实的蜡烛。尽管如此,在许多情况下,可以通过使用更具体的文本来实现所需的编辑。例如,文本 “月亮” 将生成引导到新月。通过使用文本 “一轮明亮的满月”,我们可以将生成引导到满月(图 9 左侧)。最后,正如先前的研究所承认的(例如,[28]),我们还注意到描述类似概念的略有不同的文本提示可能导致编辑的略有不同的风格。
在视频方面,我们的方法假设预训练的 NLA 模型准确地表示原始视频。因此,我们受限于 NLA 效果良好的示例,因为图集表示中的伪影可能传播到我们编辑的视频中。未来研究的一个激动人心的方向可能包括与我们的模型联合微调 NLA 表示。