零、简介
1. 发表信息
发表期刊:arxiv 预印本
发表时间:2025年5月7日
论文链接:https://arxiv.org/pdf/2305.18047
代码链接:https://github.com/QianWangX/InstructEdit
2. 摘要
最近的工作已经探索了使用扩散模型的文本引导的图像编辑,并基于文本提示生成编辑后的图像。但这些模型难以精确定位要编辑的区域并忠实地执行精确编辑。本文提出一个InstructEdit框架,它可以基于用户指令进行细粒度编辑。此框架包含三个组件:语言处理器(使用大语言模型解析用户指令并输出用于分割器的提示和用于图像编辑器的字幕,我们采用ChatGPT和可选的BLIP2进行此步骤)、分割器(采用最先进的Grounded Segment Anything分割框架,根据语言处理器提供的分割提示自动生成高质量的掩码)、图像编辑器(使用来自语言处理器的字幕和来自分割器的掩码来计算编辑后的图像,我们采用了Stable Diffusion和DiffEdit中的掩码引导生成方法来实现这一目标)。实验表明,在输入图像包含复杂物体或多个物体的细粒度编辑应用中,我们的方法优于以往的图像编辑方法。相比于DiffEdit,我们提升了掩码的质量,从而提高了编辑图像的质量。我们还展示了该框架能够接受多种形式的用户指令作为输入。
3. 模型架构
给出一个用户指令,语言处理器首先将该指令分析成一个分段提示、一个输入字幕和一个编辑字幕。然后,分割器基于分割提示生成掩码。然后,掩码沿着输入和编辑的字幕一起进入图像编辑器,以生成最终输出。
总结:用户图片 + 指令 --> BLIP2 生成图像描述 --> ChatGPT 生成 prompt --> Grounding DINO 检测目标框 --> SAM 精准分割目标区域 --> Stable Diffusion 进行局部图像编辑 --> 输出结果图片
一、引言
生成扩散模型是生成图像、视频和3D形状的多功能工具,学习到的强大表示使其成为下游编辑操作的重要基础。
使用扩散模型的无训练和无微调的基于文本引导的图像编辑方法通常依赖于输入图像和编辑图像两者的描述性文本字幕,将用户指令作为输入以编辑图像,但用户指令可能像“添加眼镜”和“将他变成一个有胡子的人”一样无法给出关于对象的信息。为了解决这个问题,我们利用大语言模型的上下文学习能力,在运行时解析用户指令,而不是对大型语言模型进行微调,并辅以一个多模态模型来增强其理解能力。
基于文本引导的图像编辑方法通常只在图像中只有一个对象,或者用户想编辑的对象在图像中是唯一类型时才能较好地工作。当输入图像中存在多个对象时,扩散模型往往难以正确识别出用户希望编辑的具体对象。基于掩码引导的图像编辑方法在涉及局部编辑、特别是多对象场景中更具优势,输入掩码可以帮助模型准确定位目标对象。掩码的质量对所产生的编辑的视觉质量具有显著影响,DiffEdit通过减去由输入字幕和编辑字幕引导的预测噪声来估计掩码,但在以下几种情况中DiffEdit无法产生高质量的掩码:1)描述性字幕信息量不够;2)掩码过滤的阈值设置不正确;3)有多个相同或不同类型的对象;4)图像中一个对象的多个部分可能导致歧义。因此我们使用预训练的图像分割模型 Grounded Segment Anything(Grounded SAM)自动生成高质量的掩码,用于引导图像编辑,这种方法不需要额外的训练或数据集收集。Grounded SAM 将分割网络 SAM 与开放集对象检测器Grounded DINO 相结合。通过简单地向Grounded SAM提供分割提示,可以生成与对象形状完全匹配的掩码。这为框架提供了额外的基础和分割能力,有助于模型定位和提取要编辑的对象。
在本项工作中,我们在 DiffEdit 方法的基础上提出了一个新的框架 InstructEdit,基于用户指令、而非输入图像和编辑后图像的标题对,利用大型预训练模型进行图像编辑。相比于DiffEdit,我们的方法可以自动提取更高质量的掩码。具体而言,我们的方法包含三个核心组件:语言处理器(language processor)、分割器(segmenter)和图像编辑器(image editor)。我们首先使用语言处理器理解用户指令,识别出需要编辑的对象以及应如何进行编辑,并为分割器生成分割提示(segmentation prompt),为图像编辑器生成文本标题(caption)。我们使用 ChatGPT 来解析用户指令,并在指令不清晰的情况下,可选地引入 BLIP2 来辅助理解。随后,分割器根据分割提示生成描绘目标区域轮廓的掩码。我们采用 Grounded Segment Anything 作为分割器,它具备出色的目标定位与分割能力。最后,图像编辑器结合生成的标题和掩码执行图像编辑任务。我们使用 Stable Diffusion,在掩码引导下完成图像编辑过程。
我们证明了我们的方法在细粒度图像编辑任务中优于以往的方法。具体来说,我们关注以下两类输入图像的编辑场景:1)图像中只有一个对象,且我们希望编辑该对象的某一部分;2)图像中有多个对象,且我们希望编辑其中一个或多个对象。我们展示了通过提升掩码质量,相比 DiffEdit 能够有效提升编辑图像的质量。同时,我们也展示了该框架可以接受多种形式的用户指令作为输入。
主要贡献如下:
(1)我们提出了一个基于扩散模型的、由文本引导的图像编辑框架,它以用户指令为输入,而非传统的输入图像标题和编辑后图像标题;
(2)在细粒度编辑任务中,我们在两种典型场景下超越了现有的基线方法:即编辑单一对象图像中的某一部分,或编辑多对象图像中的一个或多个对象;
(3)相比原始的 DiffEdit,我们提升了掩码质量,从而提升了最终生成图像的质量;
(4)我们的方法能够接受多种类型的用户指令作为输入,具有更高的灵活性和实用性。
二、相关工作
1. 使用扩散模型的图像编辑
预训练的扩散模型 [43, 45, 44, 20] 可用于完成多种图像编辑任务。一些研究 [47, 23, 25] 通过微调扩散模型的权重或优化损失函数来实现图像编辑。然而,这类方法通常需要较长时间来生成一张编辑后的图像,并且每一个编辑提示都需要单独进行微调,效率较低。
其他工作 [33, 16, 37, 48] 则通过无微调(tuning-free)的方法实现了良好的图像编辑效果。例如,Prompt-to-Prompt [16] 通过比较输入标题和编辑后标题来编辑交叉注意力图;MDP [48] 则通过分析采样公式来操控扩散路径。在这一类方法中,编辑过程中不需要使用掩码,因此相较依赖掩码的系统更加易用。这些方法在图像中只有一个前景物体时表现良好,但在需要更细粒度控制的情况下效果欠佳。
用户提供人工设计的掩码作为输入,可以明确控制图像中哪些区域需要被编辑、哪些区域需要被保留。例如,Blended Diffusion [3] 和 Blended Latent Diffusion [2] 分别在像素空间和潜在空间中利用掩码进行文本引导的图像编辑;Shape-guided Diffusion [36] 提出使用具有内外注意力机制的掩码来保留被编辑对象的形状;MasaCtrl [8] 侧重于执行非刚性编辑,并通过掩码减少前景与背景对象混淆的问题。
尽管掩码能在编辑过程中提供额外的控制,但手动制作掩码将对用户造成较大负担。[36, 8] 等方法也提出使用交叉注意力图来自动生成掩码,以替代人工掩码。DiffEdit [10] 通过对比基于输入标题与编辑后标题预测的噪声,自动预测掩码。在本研究中,我们希望在不增加用户负担的前提下,充分利用掩码带来的优势,因此我们采用大型预训练模型来自动推断掩码区域。
2. 基础模型
大型语言模型(Large Language Models)
近年来,大型语言模型的发展迅速 [40, 41, 7, 11, 42, 9]。其中一个重要的成果是 GPT 系列模型 [40, 41, 7],这些模型在大规模文本数据上进行预训练,随后通过微调适应具体任务。尤其值得一提的是 ChatGPT [35],它是 GPT 系列的一个变体,专门用于在对话场景中生成类人回复。我们在本研究中使用 ChatGPT 来从用户指令中提取信息。
分割模型与目标定位器(Segmentation Model and Grounding Detector)
Segment Anything [24] 是一个分割模型,结合了多种输入提示类型,能够在零样本设定下泛化到陌生的对象和图像,而无需额外训练。Grounding DINO [30] 是一个开放集对象检测器,它将基于 Transformer 的 DINO 检测器 [54] 与定位预训练技术结合起来,能够根据类别名称或指代性表达等人类输入检测任意对象。该系统输出多个对象框与名词短语的对应对。
图像与语言(Images and Language)
视觉语言模型(Vision Language Models, VLMs) [39, 1, 32, 21, 26] 是一类将计算机视觉与自然语言处理结合的强大模型。近年来,VLMs 受到广泛关注,因为它们能够弥合视觉信息与文本信息之间的鸿沟,从而实现图像描述、视觉问答、图像检索等多种应用。特别是 BLIP-2 [26] 解锁了图像到文本的零样本指令式生成能力:给定一张输入图像,BLIP-2 能够根据用户指令生成各种自然语言响应。
三、方法
1. 预备知识
在扩散模型的训练过程中,其目标函数如下:
其中, 是输入图像,
是加到输入图像上的高斯噪声,
是用于预测所添加噪声的噪声估计器,
是去噪的时间步,
是扩散模型的条件。在本研究中,我们仅将
视为文本提示,即文本引导扩散模型的提示语。在模型训练完成后,噪声估计器
可以用于生成新的样本。我们采用 DDIM 采样器,其去噪步骤如下:
其中,,
是DDIM中的噪声调度因子。我们记为
。给定输入图像,我们可以使用DDIM反演将其反演为初始噪声张量
。每个反演步长计算如下:
我们迭代应用该公式直到获得 。然而,如果我们在时间步
时停止反转步骤,我们将
编码为噪声较小的版本
。
称为编码比。较大的
值指示较强的编辑效果,使得编辑图像更多地由编辑的字幕引导,但看起来不太像输入图像。
2. 语言处理器
给定用户指令 作为输入,我们使用大型语言模型ChatGPT [35]为分割器提取分割提示
,并为图像编辑器提取输入标题
和编辑标题
。ChatGPT 在我们的工作中学习任务的提示系统由上下文描述和一些任务示例两部分组成。上下文描述是为了显示 ChatGPT 需要为分割器提供分割提示的上下文,以及为图像编辑器提供输入标题和编辑标题。一些任务示例展示 ChatGPT 应如何操作作为输入提供的用户指令。
当用户指令 或编辑对象的描述不清楚时,ChatGPT 因无法访问输入图像内容,难以正确提供提示。BLIP2 可以提供原始图像的简短描述,回答有关其内容的问题,这可以帮助 ChatGPT 为分割器提供提示,并为图像编辑器提供标题。
在这项工作中,我们可选地查询 BLIP2 以获得图像的描述 。给定一个输入图像,我们首先问 BLIP2 “这是一张照片,一幅画还是另一种艺术?”。我们将答案表示为
,并在 BLIP2 的另一个查询中将其重用为“
”,从而获得一个完整的句子,用于描述该图像。这一描述随后作为输入提示传递给 ChatGPT。即使用户指令没有明确指出要编辑的内容,或者描述过于模糊,ChatGPT 也能结合 BLIP2 的图像描述,识别出要编辑的对象,并给出更详细、明确的指令提示。
3. 分割器
我们使用结合 Grounding DINO 和 SAM 的框架 Grounded SAM 作为分割器,用于定位待编辑的目标并生成相应的掩码。Grounding DINO 是一个开放集目标检测器,它可以根据给定文本输出一个或多个检测到的边界框,并为每个边界框分配一个文本相似度得分。SAM 是一个强大的分割模型,它可以接收 Grounding DINO 输出的边界框,并生成高质量的二值掩码,用于后续任务。首先,通过 Grounding DINO 获取给定分割提示词 的边界框:
其中 是检测到的边界框左上角的像素坐标,
是边界框的尺寸。然后,通过 SAM将边界框进一步转化为逐像素的二值掩码
:
4. 图像编辑器
我们采用 DiffEdit 中的掩码引导图像编辑方法。给定输入图像,生成编辑后的图像
。利用自动生成的掩码
和编码后的噪声
,掩码引导的 DDIM 去噪步骤被公式化为:
其中,,掩码内的区域将根据编辑后的标题进行更改,而掩码外的区域将映射回原始像素。我们通过迭代上述方程获得
。
5. DiffEdit
DiffEdit 是一种基于掩码的文本引导图像编辑模型,能够自动生成掩码。在去噪过程中,不同的文本提示会引导扩散模型产生不同的预测。通过对比两个预测结果,可以判断图像中哪些区域对输入标题和编辑标题的响应不同,从而确定需要编辑的区域。模型根据输入标题 和编辑标题
在每个时间步
分别预测的噪声为
和
,在时间步
处的预测的差值
计算为
。最终,通过设定阈值
,将该差异信号
从潜空间解码为一个二值掩码图像
。
DiffEdit 使用 DDIM 反演将输入图像 反演为最初的噪声
,后者可以还原出
。每一步反演计算如下:
反复应用该公式,直到得到。不过,如果我们在时间步
时提前停止反演过程,我们会将
编码为一个“较少噪声”的版本
。这个
被称为编码比例(encoding ratio)。
值越大,表示编辑强度越强——生成的图像更符合编辑标题的语义,但与原图越不相似。
四、实验
1. 设置
(1)编辑类型:本研究聚焦于对输入图像中特定类别或数量的目标进行限制性的图像编辑。我们考虑以下两种编辑操作:用其他对象替换原始对象,或更改对象的属性。生成的编辑图像应忠实地执行用户指令,同时尽可能保留原图中其他部分的布局和外观。
1)单目标: 图像中有一个由多个部分组成的前景对象,我们希望编辑该对象的某一部分。
2)同类多目标: 图像中有多个同类型对象,我们希望编辑其中一个或多个。
3)异类多目标: 图像中包含不同类型的多个对象,我们希望仅编辑其中一个。
(2)基线方法:我们提出的方法 InstructEdit 采用与 DiffEdit 相同的掩码引导机制来生成编辑图像,与之不同的是, InstructEdit 使用预训练的分割模型自动计算新的掩码。所有实验在一块 NVIDIA A100 显卡上进行。图像编辑器的基础模型为 Stable Diffusion v1.5。我们选取了以下三种不需要手动掩码的文本引导图像编辑方法作为对比基线。
1)MDP-ϵt [48]: 一种无掩码方法,通过混合由输入标题和编辑标题引导预测出的噪声来操纵扩散路径,使用预定义的混合策略。
2)InstructPix2Pix [6]: 另一种无掩码方法,训练一个条件扩散模型,该模型以图像和用户指令为输入执行编辑。它强调将用户指令直接作为输入,而不使用编辑标题,借助大型语言模型处理语言信息。
3)DiffEdit [10]: 一种基于掩码的方法,通过对比由输入标题和编辑标题引导生成的噪声,自动计算出编辑区域的掩码。
(3)评估方法:我们提供了方法的定性和定量评估结果,包含以下三个定量指标。由于定量指标往往难以完全反映人类感知的编辑效果,我们还进行了用户研究以获得更准确的评价。
1)LPIPS [55]: 用于评估输入图像与编辑图像之间的视觉相似度。
2)CLIP Score [17]: 衡量用户指令与图像之间的一致性。
3)CLIP Directional Similarity [14]: 判断图像变化是否与标题变化一致。
2. 基线方法对比
下表和下图提供了相应的定量评估结果。评估表明,InstructEdit 能够根据用户指令以细粒度方式准确定位需要编辑的对象或对象的一部分,并且编辑操作严格限定在所识别的区域内,在保留原图语义以及与用户指令一致性方面表现最佳。
相比之下,三种基线方法在准确定位目标对象方面存在困难,主要表现为两类问题:编辑区域超出用户指定的对象范围(例如在“车库门和主门”的例子中,编辑区域过大;在“绿色公交车”的例子中,除了绿色公交车外,其他颜色的车也被误编辑);未能正确定位目标对象(例如在“窗户”例子中,三个基线方法都误将画作进行了编辑,而不是窗户本身)。对于无掩模的基线方法(MDP-ϵt 和 InstructPix2Pix),更容易出现以下问题:若目标是保留不应编辑的区域,实际被编辑的区域变化不明显(例如在“中间公交车”和“笔记本电脑”的例子中,编辑图几乎与输入图一致);若目标是进行明显的编辑,结果会导致更多区域被意外更改(例如在“猫”的例子中,所有猫都被修改了)。
不过,现有的定量指标(如 CLIP)难以反映我们方法带来的显著提升,因为 CLIP 无法捕捉复杂编辑所需的精细空间定位能力。因此,我们还进行了用户研究,对这 10 个编辑案例进行主观评估。我们在 MTurk 上招募了 26 名参与者,每次展示三个图像:一个输入图和两个编辑图(其中一个为我们方法的输出,另一个为随机挑选的基线方法输出)。结果显示:用户在 83.0% 的情况下更偏好 InstructEdit 而非 MDP-ϵt;在 83.0% 的情况下更偏好 InstructEdit 而非 InstructPix2Pix;在 84.5% 的情况下更偏好 InstructEdit 而非 DiffEdit。
3. 掩码质量改进
下图展示了 InstructEdit 相较于原始 DiffEdit 在掩码质量上的改进示例。对于每个例子,我们使用用户指令作为 InstructEdit 的输入,并为 DiffEdit 设计了相应的输入标题和编辑标题。同时,我们为 DiffEdit 选择了三种不同的掩码阈值 ,展示阈值对掩码质量以及图像质量的影响。结果表明,对于 DiffEdit,在所有不同的
设置下,生成的掩码都无法准确地勾勒出用户指令中指定的目标区域。因此,生成的图像要么修改过多,要么修改不足。而 InstructEdit 则不存在掩码阈值的问题,能够精准定位目标区域并生成高质量掩码,从而更忠实地完成编辑任务,性能优于 DiffEdit。我们进一步指出,如果没有预训练的 Grounding 网络的辅助,单靠扩散模型自身很难实现如此精细的编辑和准确的区域定位。
4. 指令处理
下图展示了消融实验结果,说明了 BLIP2 如何提升图像编辑质量。当用户指令未明确提及图像中的关键对象时,例如在第一个例子中未提到明显可见的“狗”,ChatGPT 所生成的输入标题和编辑标题中也不包含“狗”,导致随着编码比例 的增加,编辑效果变差。在第二个例子中,指令中用模糊的“它”指代要编辑的对象,若不借助 BLIP2,ChatGPT 无法正确生成分割提示和标题。而使用 BLIP2 后,它可以提供图像的附加描述,帮助 ChatGPT 理解指令中“它”指的是哪个对象,从而生成更准确的提示和标题。
此外,下图展示了 InstructEdit 面对不同表述方式的指令依然能鲁棒地理解并执行任务,这也体现出使用大语言模型处理指令的优势,优于基于规则的解析方式。
五、讨论与结论
本研究提出了一个名为 InstructEdit 的框架,能够进行细粒度编辑,并可直接接受用户指令作为输入。该框架包括:使用语言处理模块解析用户指令,使用分割模块生成高质量掩码,使用图像编辑器进行基于掩码的图像编辑。实验结果表明,在细粒度编辑任务中,我们的方法优于以往的图像编辑方法。通过引入预训练的定位模型,我们显著提升了相较于 DiffEdit 的掩码质量,从而也提升了最终编辑图像的质量。此外,该框架还支持多种形式的用户指令输入。
本研究还存在以下局限:1)ChatGPT 与 BLIP2 本质上是概率模型,其输出可能并不总是最优,因此在解析用户指令时仍可能出错;2)编辑操作是基于掩码进行的,而掩码形状与对象形状相同,因此难以执行变形类编辑任务。同时,有一些并行研究(如 InpaintAnything [52] 和 EditAnything [50])也使用 SAM 提取掩码,并结合 Stable Diffusion 构建图像编辑框架,与我们的工作相似,这些方法同样无需手动掩码即可实现高质量图像编辑。我们的独特之处在于支持自然语言指令输入。未来,我们计划引入专注于不同编辑类型的其他模型,将方法扩展至视频编辑任务。