InstructPix2Pix:通过提示语智能编辑图片

文章目录

  • 什么是InstructPix2Pix?
  • InstructPix2Pix是如何工作的?
  • 微调GPT-3
  • 微调文本到图像的稳定扩散模型
  • IntstructPix2Pix的扩散模型
  • InstructPix2Pix一些测试结果
  • 使用Instruct Pix2Pix的应用程序
  • 在哪里使用InstructPix2Pix?
  • Automatic1111
  • 官方Gradio应用程序
  • 小结

instructpix2pix-1024x576-1

随着最近Stable Diffusion(深度学习文字到图像生成模型)的蓬勃发展,从基于文本的prompt中生成图像已经变得相当普遍。 Image2Image技术遵循这种方法,它允许我们通过遮罩和内画来编辑图像。随着这项技术的快速发展,我们不再需要蒙版来编辑图像。随着新的InstructPix2Pix的出现,使用户能够提供自然语言提示,指导模型的图像生成过程,从而使这一方法更进一步。

intructpix2pix-examples

图1-InstructPix2Pix编辑图像示例

在这篇文章中,我们将探讨InstructPix2Pix模式,它的工作原理,以及它能产生什么样的结果。

读完这篇文章后,你将掌握必要的技能,在你的个人创作中有效利用InstructPix2Pix。有了对InstructPix2Pix的能力和缺点的了解,你可以把你的图像编辑技能提高到一个新的水平。

什么是InstructPix2Pix?

InstructPix2Pix是一个扩散模型,特别是稳定扩散的一个变体。但它不是一个图像生成模型(文本到图像),而是一个图像编辑扩散模型。

简单地说,如果我们给InstructPix2Pix一个输入图像和提示指令,那么这个模型就会按照指令来编辑图像。

它是由Tim Brooks、Aleksander Holynski和Alexei A. Efros在题为InstructPix2Pix: Learning to Follow Image Editing Instructions论文中提出的。

instructpix2pix-man-with-and-without-hat

图2-用InstructPix2Pix设计一个人戴帽子的例子

上图是InstructPix2Pix工作的一个简单例子。我们通过使用非常简单的指令使人戴上帽子。

由此产生的问题是,像InstructPix2Pix这样的模式是否真的有益?答案是响亮的 “是”!在此引用作者的话:

“由于它在正向传递中进行编辑,不需要对每个例子进行微调或反转,我们的模型可以在几秒钟内快速编辑图像。我们展示了对各种输入图像和书面指令的令人信服的编辑结果”。

上述声明证明,一旦进行了微调,我们就可以在各种图像上使用该模型进行推理。

InstructPix2Pix的核心工作仍然与原来的稳定扩散模型类似。它仍然具有:

  • 一个基于大型变换器的文本编码器。
  • 一个自动编码器网络,将图像编码到潜空间(仅在训练期间)。解码器对UNet的最终输出进行解码,并对其进行升采样。
  • 还有一个在潜空间工作的UNET模型,用来预测噪声。

大部分的变化都发生在模型的训练阶段。事实上,InstructPix2Pix是训练两个不同模型的高潮。该模型的技术细节和训练程序将在下一节中讨论。

InstructPix2Pix是如何工作的?

在本节中,我们将重点讨论InstructPix2Pix的工作。这包括两件事:

  • 训练InstructPix2Pix模型。
  • 使用该模型进行推理。

整个训练过程涉及训练两个独立的模型。InstructPix2Pix是一个多模式的模型,它同时处理文本和图像。它试图根据指令来编辑图像。使用单一的模型是很难实现的。

因此,作者结合了GPT-3语言模型和稳定扩散的力量。GPT-3被用来生成文本提示(指令),稳定扩散模型的一个变种被训练在这些指令和生成的图像上。

让我们仔细看一下训练过程。

微调GPT-3

作者对GPT-3模型进行了微调,创建了一个多模型训练数据集。我们可以将整个过程分解为以下几点:

  • 我们向GPT-3模型提供一个输入标题,然后它对该标题进行训练。
  • 训练后,它学习生成编辑指令和最终的标题。

例如,我们的输入标题是:

“A cat sitting on a couch(一只坐在沙发上的猫)”. 

编辑指令可以是:

“cat wearing a hat(戴帽子的猫)”.

在这种情况下,最后的标题可以是:

“A cat wearing a hat sitting on a couch(一只戴帽子的猫坐在沙发上)”.

注意:我们只向GPT-3模型输入第一个标题。它也会学习生成编辑指令和最终编辑过的标题。

有趣的是,GPT-3模型是在一个相对较小的数据集中进行微调的。作者从LAION-Aesthetics数据集中只收集了700个标题。然后,编辑说明和输出的标题被手动生成以训练模型。

instructpix2pix-generating-caption-paris-using-gpt-3

图3-使用GPT-3为InstructPix2Pix训练生成标题对

图4显示了第一行中的数据集生成过程。正如所讨论的,编辑是手动生成的。

第二行显示了经过训练的GPT-3模型如何生成最终的数据集。

训练结束后,我们可以给GPT-3模型输入一个标题,它就会生成一个编辑指令和最终的标题。为了训练InstructPix2Pix,产生了超过45万个标题对。

微调文本到图像的稳定扩散模型

在训练GPT-3模型和生成标题对之后,下一步是对预先训练好的稳定扩散模型进行微调。

在数据集中,我们有初始和最后的标题。稳定扩散模型是通过从这些标题对中生成两个图像来训练的。

然而,有一个问题。即使我们固定了种子和其他参数,稳定扩散模型也倾向于生成非常不同的图像,即使有类似的提示。因此,从编辑过的标题生成的图像大多不会像编辑过的图像;相反,它将是一个完全不同的图像。

为了克服这个问题,作者使用了一种叫做 “Prompt-to-Prompt” 的技术。这种技术允许文本-图像模型以类似的提示语生成类似的图像。

instructpix2pix-with-and-without-prompt-to-prompt

图4-不使用和使用Prompt-to-Prompt的稳定扩散图像生成实例对比

上图显示了 “Prompt-to-Prompt” 的一个实际例子。两张图片都是用稳定扩散法生成的。左边的图片没有使用Prompt-to-Prompt,而右边的图片则使用了该技术。

论文中的下图很好地描述了InstructPix2Pix的训练数据集生成和推理阶段。

instructpix2pix-training-and-inference

图5-InstructPix2Pix训练数据的生成、训练和推理。

正如我们所看到的,推理过程是非常简单的。我们只需要一个输入图像和一个编辑指令。InstructPix2Pix模型确实很好地遵循了编辑指令,生成了最终的图像。

IntstructPix2Pix的扩散模型

InstructPix2Pix最终生成的图像是文本prompt和输入图像的组合。在推理过程中,我们需要一种方法来告诉模型更关注哪里–图像或文本。

这是通过Classifier-free guidance(扩散模型)来实现的,它对两个条件输入进行权衡。我们把这两个条件分别称为S_T和S_I,分别代表文本和输入图像。

在推理过程中,通过S_T引导更多的人,将使最终的图像更接近于提示。同样地,通过S_I引导模型更多将使最终图像更接近于输入图像。

instructpix2pix-classifier-free-guidance

图6-人工智能图像生成中扩散模型的例子。

在训练阶段,实施扩散模型有助于模型学习有条件和无条件的去噪。我们可以把图像条件称为C_I,文本条件称为C_T。对于无条件的训练,两者都被设置为空值。

在进行推理时,在S_T(对提示的权重更大)和S_I(对初始图像的权重更大)之间选择是一种权衡。我们需要根据我们想要的结果和我们的喜好来选择设置。

InstructPix2Pix一些测试结果

论文中发表的结果相当有趣。我们可以用InstructPix2Pix来重新制作具有各种艺术媒介甚至不同环境风格的图像。

instructpix2pix-different-artistic-medium

图7-使用InstructPix2Pix在不同的艺术媒介中生成图像。

与其他稳定扩散的图像编辑方法相比,InstructPix2Pix几乎超越了所有的方法。

instructpix2pix-vs-other-image-editing-methods

图8-InstructPix2Pix与其他基于稳定扩散的图像生成方法相比。

这还不是全部。InstructPix2Pix还可以进行其他具有挑战性的编辑工作。其中一些是:

  • 改变服装风格。
  • 改变天气。
  • 更换背景。
  • 改变季节。

下面是我们自己使用InstructPix2Pix编辑的一些图片。

instructpix2pix-sunny-to-cloudy

图9. 使用InstructPix2Pix将天气从晴天改为阴天。

在上图中,我们将天气从晴天改为阴天。该模型只用 “change weather from sunny to cloudy(将天气从晴天改为多云)” 的指令就能做到。

instructpix2pix-summer-to-winter

图10-使用InstructPix2Pix将季节从夏季改为冬季。

在这种情况下,我们告诉InstructPix2Pix模型将季节从夏季改为冬季,它轻松地做到了这一点。

instructpix2ix-marble-wooden-statues

图11-使用InstructPix2Pix改变艺术材料风格(这里我们把一张照片的材料改为大理石和木头)。

上面的结果非常有趣,我们告诉InstructPix2Pix模型改变材料类型。在第一个例子中,我们把材料类型改为木头,在第二个例子中改为石头。

使用Instruct Pix2Pix的应用程序

我们可以用InstructPix2Pix建立一些相当不错的应用程序。两个这样的应用程序是:

  • 虚拟化妆
  • 虚拟试穿
  • 和虚拟发型师

InstructPix2Pix在交换服装款式、化妆、眼镜,甚至发型方面确实很有一套。将InstructPix2Pix用作虚拟发型师是一个有趣的例子,因为在保持其他面部特征不变的情况下,在图像中调换发型是非常困难的。然而,只要有合适的图像,InstructPix2Pix就能轻松地进行。

如果以正确的方式使用,像虚拟化妆和虚拟试穿这样的应用将变得更容易建立,也更容易为公众所接受。

以下是一些相同的例子。

instructpix2pix-virtual-makeup

图12-使用InstructPix2Pix改变头发颜色

instructpix2pix-virtual-tryon

图13-使用InstructPix2Pix的虚拟试穿

在哪里使用InstructPix2Pix?

看完这个帖子后,你可能有冲动想自己尝试一下InstructPix2Pix。幸运的是,有几种方法可以让你轻松地进入InstructPix2Pix。

Automatic1111

如果你的本地系统有一个GPU,并且无惧于修补Python代码,那么Automatic1111是尝试InstructPix2Pix的最佳途径之一。就目前而言,InstructPix2Pix是网络应用的一部分,你只需要下载模型。

instructpix2pix-automatic1111-1024x483-1

图14-在AUTOMATIC1111 WebUI中使用InstructPix2Pix。

如果你没有GPU,你可以用Automatic1111试试InstructPix2Pix,甚至在Google Colab上也可以。

官方Gradio应用程序

该论文的作者还提供了一个使用Gradio界面的官方Hugging Face空间。

你可以通过Hugging Face Spaces访问它。

最重要的是,你不需要在本地设置任何东西来使用这个。

小结

在这篇文章中,我们介绍了InstructPix2Pix模型,它可以只用文字提示来编辑图片。伴随着它的训练标准,我们还探讨了我们可以利用它建立的可能的应用。

稳定扩散模型在创意领域打开了一个充满可能性的世界。现在,像数字艺术或技术艺术这样的领域并不局限于选定的几个人。任何有学习这种新技术冲动的人都可以用几行文字创造出引人注目的艺术。无论是编辑图像还是创造新的艺术;几乎每个人都有机会使用使用扩散模型建立的工具。

InstructPix2Pix是一个突破性的图像编辑工具,允许用户使用自然语言提示来编辑图像。通过InstructPix2Pix,用户可以轻松地添加或删除对象,改变颜色,并以以前很难或不可能的方式操纵图像。这个工具有可能彻底改变人们编辑图像的方式,使其比以往任何时候都更容易使用和直观。

我邀请你通过他们的演示自己尝试一下,并通过阅读论文或他们公开的代码了解更多关于他们的方法。请在评论中告诉我们你是如何利用扩散模型的力量和你的创造力来创造新东西的。

微海报