Instruct Pix2Pix 是一种Stable Diffusion模型,仅使用用户的文本指令即可编辑图像。我们将介绍它的工作原理、它可以做什么、如何在网络和 AUTOMATIC1111 上运行它、如何使用它。
Instruct pix2pix 可以做什么?
这是一种创新的照片编辑方式,只需告诉它您想要更改的内容即可。例如,假设我们想将下图中的马变成龙。
我们可以简单地将图像交给模型并说“化马为龙 Turn the horse into a dragon”。该模型将马变成龙,同时保持图像的其余部分完好无损。
Instruct pix2pix 是如何工作的?
要理解模型的工作原理,需要分两部分:(1) 模型架构和 (2) 训练数据。
模型架构
Instruct pix2pix 模型是Stable Diffusion模型。与图像到图像非常相似,它首先将输入图像编码到潜在空间中。
扩散过程是有条件的。回想一下,图像生成图像有一个条件,即文本提示词,用于引导图像生成。Instruct pix2pix有两个条件,文本提示词和输入图像。(如果您需要复习Stable Diffusion的模型架构,请阅读文章“Stable Diffusion如何工作? ”。)
扩散由通常的无分类器引导(CFG)机制引导。但由于 Instruct pix2pix 模型有两个条件(提示词和图像),因此它有两个 CFG 参数,一个用于提示词,另一个用于图像。因此,您将在 AUTOMATIC1111 GUI 中看到文本 CFG和图像 CFG,我将向您展示如何使用它们。
这两个参数的含义与vanilla Stable Diffusion中的含义相同:当CFG值较低时,提示词或图像很大程度上被忽略。当CFG值较高时,提示词或图像会被紧密跟随。
请注意,当增加文本 CFG 和图像 CFG 时,效果是相反的:增加文本 CFG 会更多地改变图像;增加图像 CFG 会减少图像的变化。通常需要调整这两个值才能达到效果。
训练
现在我们已经看到模型本身是Stable Diffusion模型的简单扩展,具有两个条件(文本提示词和图像),他们是如何教会模型理解编辑指令的?我想说这项工作的真正创新在于他们合成训练数据的方式。
研究论文中的下图很好地总结了这一点。
他们首先教育一种专门的 GPT-3 语言模型,以根据输入说明生成编辑指令和编辑后的说明。作为ChatGPT等技术背后的大型语言模型,这项任务是小菜一碟。在图中,当您告诉 GPT-3 说明“骑着马的女孩的照片”时,您会收到两条消息返回(1)指令:“让她骑龙”和(2)编辑后的说明:“骑着龙的女孩的照片”。
现在“输入说明和编辑后的说明”内容对仍然只是纯文本。(毕竟它们是语言模型的输入和输出)我们需要将它们变成图像。您可能认为可以使用它们作为Stable Diffusion的提示词来获得两张图像,但问题是编辑前后的照片不怎么相似。下面左侧的一对图像(也来自研究论文)说明了这一点。
他们所做的是使用Prompt-to-prompt 模型(一种用于合成相似图像的扩散模型)来生成“编辑”之前和之后的图像。现在他们有了之前的图片(输入)、编辑指令(输入)和之后的图片(输出)。他们可以将它们作为训练示例输入到模型中。
由于这种生成训练数据的方法是完全人工的,因此他们可以一次又一次地运行它以生成数十万个训练示例。这正是他们所做的。这就是该模型训练有素的原因。
与其他方法的区别
Prompt-to-prompt可以通过特定的编辑生成高度相似的图像,但所有图像都是根据文本提示词生成的。与 instruct pix2pix 不同,它无法编辑非生成的图像。
图像到图像(又名SDEdit)可以使用非生成的图像作为输入,并且您可以使用不同的提示词来编辑图像。但在不改变图像其他部分的情况下很难进行精确的编辑。
现在您知道它是如何工作的了。让我们学习如何运行它。
在网络上运行 Instruct pix2pix
Instruct pix2pix 运行得相当快(毕竟它是一个Stable Diffusion模型)。如果您不使用 AUTOMATIC1111,则有多个可用的 Web 选项。
HuggingFace
HuggingFace为 Instruct pix2pix 提供了一个很好的演示页面。您可以免费试用 Instruct pix2pix。它基本上是 AUTOMATIC1111 接口的简单版本。我们将讨论的许多参数都可以在此网页中找到。
Replicate
Replicate有一个 Instruct pix2pix 的演示页面。有相当广泛的参数列表可供使用。速度也相当不错。允许一次最多生成 4 张图像。
在 AUTOMATIC1111 中安装指导 pix2pix
我们将介绍如何在 AUTOMATIC1111 中安装 Instruct pix2pix。这些说明适用于在Google Colab、Windows和Mac上运行。
如果您使用快速入门指南中的一键式 Google Colab Notebook来启动 AUTOMATIC1111,只需instruct_pix2pix_model
在启动时选择即可。
如果您在自己的计算机上运行 AUTOMATIC1111,则可以从 Instruct pix2pix 的Hugging Face 页面下载该模型。使用以下链接直接下载Instruct pix2pix模型。
将checkpoint文件(7GB!!)放入以下文件夹中
stable-diffusion-webui/models/Stable-diffusion
刷新checkpoint下拉框后,您应该会看到新的检查点文件。
在 AUTOMATIC1111 中使用 Instruct-pix2pix
使用Instruct Pix2Pix:
- 选择Instruct Pix2Pix 模型:
instruct-pix2pix-.....ckpt
。
2.切换到img2img选项卡。
3. 将图像拖放到img2img子选项卡的输入画布中。请注意,并非所有图像格式都受支持,尽管它们都会显示为已上传。为了确定起见,请使用 PNG 或 JPG 格式。您可以使用下面的按钮下载测试图像。
4. 在提示框中输入指令。例如,“给她戴上太阳镜。Put a sunglasses on her.”
5. 按生成。
Instruct pix2pix 的参数
以下是您可能需要更改的重要参数
输出批Ouput Batch:4 – 每次编辑可能会有很大不同。确保一次至少生成几个并选择有效的一个。
采样步骤Sampling steps:将其设置在 20 – 30 之间没有问题。
种子Seed:编辑将随种子值而变化。当您想要生成不同的编辑时,请使用随机种子。当您调试参数(提示词、文本 CFG 和图像 CFG)时,请使用固定种子。
文本 CFG :与文本到图像中的CFG scale相同。如果您希望编辑遵循提示词,请增加。如果您希望它跟随得更少,请减少。
图像CFG:文本CFG的图像对照。如果减少编辑量,则增加。如果您希望其编辑更多,请减少。
下面是一个图像矩阵(来自研究论文),显示了更改 Text CFG 和 Image CFG 的效果。看最后一栏:高文本CFG值使模型遵循指令。现在看最后一行:高图像 CFG 值恢复原始图像或减少编辑。
GUI 还允许您处理一批图像。但根据我的经验,你确实想一次调整一张图像的参数。
使用 instruct pix2pix 的一些技巧
图片编辑
Instruct pix2pix 接受过照片编辑训练,并且表现相当不错。我将使用我在潜在空间中遇到的朋友的照片。
以下是一些照片编辑的示例。
意外的改变
某些编辑,尤其是与颜色相关的编辑可能会产生以为效果。例如,将女人的衣服改为白色也会使背景变白。
我还看到一些意外的编辑。当女人的衣服变成蛇时,她的头发颜色也会改变。
总体而言,意想不到的变化在美学上仍然令人愉悦。(这毕竟是经过训练的Stable Diffusion)在这些变化不可接受的应用中,我们总是可以使用Inpaint mask来限制变化的区域。
风格化照片
Instruct pix2pix比图像到图像和使用模型更好地风格化照片。这是因为它在编辑后很好地保留了原始内容。应用该风格后,您会看到这个女人仍然看起来像原来的人。
要对照片进行风格化,您可以使用以下提示词并填写您喜欢的风格。
改为_______风格
Change to ______ style
您可以引用样式名称。这里有些例子。
更改为 [style_name] 样式
Change to [style_name] style
您还可以引用艺术家的名字。
更改为 [artist_name] 风格。
Change to [artist_name] style.
Instruct pix2pix 现在是我对图像进行风格化的首选方法。
模型页面中有一个很好的示例目录。
指令模板
以下是可用于入门的说明模板列表。
- 将样式更改为(艺术家或风格名称)
- 让她/他(做某事)
- 让她/他看起来像(一个物体或人)
- 将(照片中的东西)变成(新物体)
- 添加一个(对象)
- 在(照片中的某物)上添加(对象)
- 将(对象)替换为(另一个对象)
- 将它们放入(场景或背景)
- 创造它(一个地方、背景或天气)
- 应用(一种情绪或某人身上的东西)
- Change the Style to (an artist or style name)
- Have her/him (doing something)
- Make her/him look like (an object or person)
- Turn the (something in the photo) into a (new object)
- Add a (object)
- Add a (object) on (something in the photo)
- Replace the (object) with (another object)
- Put them in (a scene or background)
- Make it (a place, background or weather)
- Apply (a emotion or something on a person)