基于指令的图像编辑需求很大,但是在编辑准确性上还受限。
提出了一种多任务图像编辑模型Emu Edit,将多种任务(基于区域的编辑、自由形式的编辑和计算机视觉任务)表述为生成任务,并学习任务嵌入(有点类似unicontrolnet指示不同任务的编码)以指导生成过程走向正确的编辑类型。
我们表明 Emu Edit 可以推广到新任务,例如图像修复、超分辨率和编辑任务的组合,并在图像编辑任务中取得了最先进水平
发布了一个新的具有挑战性和通用的基准,其中包括7个不同的图像编辑任务。
InstructPix2Pix这样的基于指令的图像编辑模型旨在处理任何给定的指令,但它们通常难以准确解释和执行此类指令。此外,它们的泛化是有限的,往往缺乏对与他们接受过培训的任务的轻微偏差。
为了解决这些差距,引入了 Emu Edit,第一个在大量多样的任务上训练的图像编辑模型,包括图像编辑和计算机视觉任务。
Emu Edit 在遵守编辑指令和保留原始图像的视觉保真度方面都提供了实质性的改进。
两个基准上的自动度量和人类主观评价表示Emu Edit在基于指令的图像编辑中取得了最先进的结果。
(很好地总结了一些有影响力的工作)
虽然上面详述的基于文本的图像编辑方法使人类能够编辑图像,但它们经常表现出不一致的性能,并且需要多个输入,例如输入图像和目标图像的对齐和详细描述,或者有时是输入掩码。
最先进的图像编辑模型仍然难以准确解释和精确地执行编辑指令。
Emu Edit与仅关注图像编辑(pix2pix, magicbrush)的先前工作不同,训练模型执行各种任务并学习非常多样化能力。训练过程和数据集的质量和多功能性,以及改进的多任务学习架构,使其能够在性能上取得很大的飞跃,并区别于该领域的先前工作。
通过以下方式提供 LLM:(1)描述输入和输出格式的系统消息,(2)介绍消息,其中我们概述了输出中每个键的问题和目标,以及 (3) 与 LLM 的对话历史上下文包含可能输出的示例。然后,我们用一个新的输入标题提示LLM,并要求它提供一个新的指令。为了鼓励 LLM 生成的指令中更多的方差和随机性,我们对历史上下文执行以下:(1)示例之间的混洗,(2)随机抽样 60% 的示例,以及(3)从一组单词中随机更改示例中的动词。
图像对生成阶段使用图像标题,以及指令生成阶段生成的LLM对应的输出标题“原始对象”和“编辑对象”
P2P 依赖于输入图像标题和编辑图像标题中的词对词对齐来构建掩码修改注意力图,但词对词的约束并不强,无法保留结构和身份。Emu edit提出了一种掩码提取方法,该方法应用于编辑过程之前。
(i)通过 LLM 从编辑指令中识别编辑区域并在图像生成之前创建相应的掩码
基于区域的编辑包括所有在有限区域内对图像进行更改的编辑指令,其余图像保持不变。为了在保留其余细节的同时调整特定对象或位置,我们在编辑过程中利用了局部区域的掩码。我们利用DINO来检测需要屏蔽的区域,使用LLM中提取出的Object字段对应的“原始对象”和“编辑对象”字段。
使用基于掩码的注意力控制来生成编辑图像时,它通常用相似的对象类型替换对象,而不是删除它。例如,当屏蔽狗周围的区域时,我们将编辑限制在该特定区域,从而产生狗的新变体。我们通过创建三种不同类型的掩码来解决这个问题。第一个采用由DINO和SAM创建的原始精确掩码。第二个涉及通过膨胀将掩码扩展到添加的对象之外,然后使用高斯模糊对其进行细化。最后,第三种方法使用对象周围的边界框(由 DINO 创建),从而消除了特定形状的约束。我们生成多个图像,每个图像都有不同的掩码,然后过滤。
在某些情况下,LLM 生成的“原始对象”和“编辑对象”包含所有格词(例如,“狗的尾巴”)。我们观察到,在许多情况下,DINO 在这些情况下很难检测到对象。为此,我们对LLM使用额外的提示来识别没有拥有的对象。
(ii)在编辑过程中集成这些掩码,以确保编辑区域与原始图像无缝融合。
基于掩码的注意力控制:保持非编辑区域的噪声来自原图,编辑区域的噪声图像注意力影响之后的。遵循 P2P 并在所有标记上注入自注意力层。交叉注意力层注入输入和输出字幕之间的公共标记
此外:面对不同的编辑挑战,例如添加或删除对象,需要量身定制的解决方案。(见附录的7.2.3-5)
1.Local/Texture
给定输入标题,我们首先生成输入图像。然后,我们利用“原始对象”(如第 7.2 节所述)来提取局部掩码(使用第 7.2.2 节)。最后,我们使用获得的掩码应用基于掩码的注意力控制来生成编辑的图像。我们重复这个过程 10 次迭代,在每次迭代中,我们从 [4, 8] 中采样引导尺度,从 [0.3, 0.9] 中采样 Nc 和 Ns(执行交叉注意力和自注意力的步骤N),并从 [0.02, 0.2] (在这个阶段执行混合操作)混合。
2.添加
提取“编辑对象”(在这种情况下添加的对象)的掩码是不可能的,因为输入图像中不存在对象。
为了克服这一挑战,我们解决这个问题如下: 1. 我们使用输出标题生成输出图像 y。请注意,图像 y 包含“编辑对象”。2.提取y中“编辑对象”的掩码m。3.我们应用基于掩码的注意力控制使用输入标题、图像 y 和掩码 m 生成输入图像 x 这种方法的主要问题是,在某些情况下,我们生成对象的不同版本,而不是消除它
3.删除
生成数据的过程类似于 Add 任务的过程。唯一的区别是我们首先生成图像 x(使用输入标题),然后提取对象的掩码 m 以去除,最后使用输出标题、图像 x 和掩码 m 生成图像 y。
4.背景
给定一个输入图像、输入标题和编辑的对象(在这种情况下,替代背景),我们首先提取背景掩码。为了消除轮廓中的伪影,我们应用了扩展背景掩码的最小滤波器,然后使用高斯滤波对其进行平滑处理。接下来,我们将图像和生成的掩码作为输入提供给修复模型,该模型创建一个新的背景。最后,我们将输入图像和编辑后的图像混合在掩码区域。我们生成了 10 张编辑图像,具有不同的噪声和引导尺度,并根据 CLIP 指标选择最佳图像。
4.全局
全局任务包括不限于特定区域的编辑指令。因此,我们使用带有空白掩码的基于掩码的注意力控制生成图像对。混合是从 [0.1, 0.2] 中采样的,以鼓励更好的图像忠实度。我们从 [0.4, 0.9] 中采样 Nc 和 Ns。
5.风格
我们使用即插即用(PNP)来生成风格化的编辑图像。该任务的目标是在保留图像结构的同时,根据编辑指令改变图像样式。我们使用DDIM反演将PNP应用于真实的输入图像。对于每个样本,我们生成 10 个编辑图像,每个图像都具有以下采样参数:从 [6.5, 110] 中采样的引导尺度,Ns 从 [0.5, 1.0] 中采样,并且要共享的空间特征部分设置为 0.8。
6.文本编辑
文本编辑任务包括向图像添加文本,从图像中删除文本,并用另一个文本替换一个文本。此外,我们允许用户选择添加文本的字体和颜色。我们使用 OCR [7] 生成输入图像 x 中找到的文本的掩码 m。我们利用掩码 m 来修复图像,表示新图像 y。为了添加文本,我们使用 y 作为输入图像,x 作为编辑图像。为了删除文本和替换文本,我们使用反向。在替换文本时,我们将图像 y 中的内嵌区域与特定字体和颜色的文本叠加。
7.检测/分割
给定一个输入图像,我们使用DINO检测“编辑对象”。为了将检测形式化为生成任务,我们通过绘制检测到的边界框来创建一个新的图像 y。对于分割,我们绘制检测到的对象像素。
8.颜色
我们将颜色任务定义为对图像整体颜色的修改。我们通过应用以下过滤器生成样本:(1)颜色过滤器——随机改变图像的亮度、对比度、饱和度和色调,(2)模糊——应用随机大小的高斯核,以及(3)锐化和散焦。
9.Image Translation
涉及从条件图像到目标图像的双向映射。例如,草图到图像和图像到草图。我们遵循ControlNet来生成深度图、分割图、人体姿势、法线图和草图。
(i)使用任务预测器用应该属于另一个任务的指令重新分配样本,(ii)应用 CLIP 过滤指标
(iii)采用基于输入图像深度图和编辑图像之间的 L1 距离的结构保留过滤
(iv)应用图像检测器来验证元素的存在(在 Add 任务中),根据指令中指定的对象,元素的缺失(在 Remove 任务中)或替换(在 Local 任务中)。
此过程过滤掉 70% 的数据,从而产生 1000 万个样本的最终数据集。
在训练期间,给定我们数据集中的样本,我们使用任务索引 i 从嵌入表中获取任务的嵌入向量 vi,并将其与模型权重联合优化。我们通过将任务嵌入通过 U-Net、εθ 的附加条件引入来做到这一点。具体来说,我们通过交叉注意交互将任务嵌入集成到 U-Net 中,并将其添加到时间步嵌入中。优化问题更新为
min θ E y , ϵ , t [ ∥ ϵ − ϵ θ ( z t , t , E ( c I ) , c T , v i ) ∥ 2 2 ] \min _\theta \mathbb{E}_{y, \epsilon, t}\left[\left\|\epsilon-\epsilon_\theta\left(z_t, t, E\left(c_I\right), c_T, v_i\right)\right\|_2^2\right] θminEy,ϵ,t[∥ϵ−ϵθ(zt,t,E(cI),cT,vi)∥22]
(1)当需要纹理编辑时,没有任务条件的模型可能会执行全局编辑
(2)当需要全局编辑时,它可能会选择分割
(3)在本地编辑更适合的情况下实现样式编辑。
给定新任务的几个示例,我们学习了一个新的任务嵌入 vnew。冻结模型权重,并且仅通过任务嵌入将其适应任务。(实验证明不学习也能泛化新任务)
min θ E y , ϵ , t [ ∥ ϵ − ϵ θ ( z t , t , E ( c I ) , c T , v n e w ) ∥ 2 2 ] \min _\theta \mathbb{E}_{y, \epsilon, t}\left[\left\|\epsilon-\epsilon_\theta\left(z_t, t, E\left(c_I\right), c_T, v_{new}\right)\right\|_2^2\right] θminEy,ϵ,t[∥ϵ−ϵθ(zt,t,E(cI),cT,vnew)∥22]
多次对同一图像进行序列化编辑会由于累计error产生伪影,Emu Edit设置了一个像素编辑阈值,超过一定程度才使用上次编辑结果,否则还使用上次的输入图像。文章中的fig12展示了该项更详细的消融实验。
(i) CLIP文本图像方向相似度(CLIPdir) -测量字幕变化与图像变化之间的一致性
(ii) CLIP图像相似度(CLIPimg) -测量编辑图像和输入图像之间的变化
(iii) CLIP输出相似度(CLIPout) -测量编辑后的图像与输出标题的相似度
(iv)输入图像和编辑图像之间的L1像素距离
(v) DINO输入和编辑图像的DINO嵌入之间的相似性。
(vi)人类评估者评估文本对齐和图像忠实度
MagicBrush 测试集和Emu Edit 基准测试的结果,认为pix2pix的评价基准并不友好
InstructPix2Pix
MagicBrush
PNP
P2P 的 Null-Text 反演修改
视觉任务的重要性
(i)检测和分割任务可以增强局部编辑能力(ii)图像到图像翻译任务可以增强自由模式下的编辑
新任务的few-shot fintune,100个样本下的finetune足以比肩专家模型
更好地和LLM相结合,这种增强对于编辑任务特别有用,这些任务需要从输入图像中进行更复杂的推理,例如计数对象或执行复杂的、高度详细的任务。
使用Emu的缩小版本,该版本以 CLIP ViT-L [18] 和 T5-XL [19] 为条件,并以 512 × 512 的分辨率生成图像。通过连接到pix2pix之后的输入通道来调整它以获得图像输入。通过交叉注意和时间步嵌入来调节文本和任务嵌入。对于训练,使用批量大小为 512 的 Adam 优化器。我们使用 2e-5 的学习率为,余弦衰减时间表和 2,000 次迭代的线性预热。训练跨越 48,000 步。
总的来说,证明了多任务学习对于图像编辑有着正向的提升,能够更好的理解文本指令。同时更类似于一个backbone,few-shot的finetuning就可以迁移到其他新任务。