算力平台:
DiffEdit
DiffEdit: 基于扩散模型的语义图像编辑与掩码引导 由 Guillaume Couairon、Jakob Verbeek、Holger Schwenk 和 Matthieu Cord 共同撰写。
论文摘要如下:
图像生成最近取得了巨大进展,扩散模型能够为各种文本提示生成令人信服的图像。在本文中,我们提出了 DiffEdit,一种利用文本条件扩散模型进行语义图像编辑的方法,其目标是根据文本查询编辑图像。语义图像编辑是图像生成的扩展,额外的约束是生成的图像应尽可能接近给定的输入图像。基于扩散模型的当前编辑方法通常需要提供掩码,通过将其视为条件修复任务来简化任务。相比之下,我们的主要贡献是能够自动生成一个掩码,突出显示输入图像中需要编辑的区域,通过对比不同文本提示条件下的扩散模型预测。此外,我们依赖于潜在推理来保留这些感兴趣区域的内容,并展示了与基于掩码的扩散模型的出色协同作用。DiffEdit 在 ImageNet 上实现了最先进的编辑性能。此外,我们还在更具挑战性的设置中评估了语义图像编辑,使用了 COCO 数据集的图像以及基于文本生成的图像。
原始代码库可以在 Xiang-cd/DiffEdit-stable-diffusion 找到,你可以在 这个演示 中尝试使用它。
这个管道由 clarencechen 贡献。❤️
提示
- 该管道可以生成可以输入到其他修复管道的掩码。
- 为了使用此管道生成图像,必须提供一个图像掩码(源提示和目标提示可以手动指定或生成,并传递给 [
~StableDiffusionDiffEditPipeline.generate_mask
])和一组部分反转的潜在变量(使用 [~StableDiffusionDiffEditPipeline.invert
] 生成),在调用管道生成最终编辑图像时,这些参数必须作为参数提供。 - 函数 [
~StableDiffusionDiffEditPipeline.generate_mask
] 暴露了两个提示参数,source_prompt
和target_prompt
,让你可以控制最终生成图像中的语义编辑位置。例如,如果你想将“猫”翻译为“狗”。在这种情况下,编辑方向将是“猫 -> 狗”。为了在生成的掩码中反映这一点,你只需将与包含“猫”的短语相关的嵌入设置为source_prompt
,将“狗”设置为target_prompt
。 - 在使用
invert
生成部分反转的潜在变量时,将描述整个图像的标题或文本嵌入分配给prompt
参数,以帮助引导逆潜在变量采样过程。在大多数情况下,源概念足够描述以产生良好的结果,但请随意探索其他选择。 - 在调用管道生成最终编辑图像时,将源概念分配给
negative_prompt
,将目标概念分配给prompt
。以上述示例为例,你只需将与包含“猫”的短语相关的嵌入设置为negative_prompt
,将“狗”设置为prompt
。 - 如果你想在上述示例中反向操作,即“狗 -> 猫”,则建议:
- 在
generate_mask
的参数中交换source_prompt
和target_prompt
。 - 在 [
~StableDiffusionDiffEditPipeline.invert
] 中将输入提示更改为包含“狗”。 - 在调用管道生成最终编辑图像时,交换
prompt
和negative_prompt
的参数。
- 在
- 源提示和目标提示,或其相应的嵌入,也可以自动生成。请参阅 DiffEdit 指南以获取更多详细信息。
StableDiffusionDiffEditPipeline
[[autodoc]] StableDiffusionDiffEditPipeline - all - generate_mask - invert - call
StableDiffusionPipelineOutput
[[autodoc]] pipelines.stable_diffusion.StableDiffusionPipelineOutput