写点什么

InstructPix2Pix: 动动嘴皮子,超越 PS

  • 2023-03-16
    广东
  • 本文字数:1643 字

    阅读完需:约 5 分钟

InstructPix2Pix: 动动嘴皮子,超越PS

本文分享自华为云社区《InstructPix2Pix: 动动嘴皮子,超越PS》,作者:杜甫盖房子。

InstructPix2Pix: Learning to Follow Image Editing Instructions


arXiv Code


InstructPix2Pix 提出了一种使用文本编辑图像的方法:给定输入图像和编辑指令,告诉模型要做什么,模型将遵循这些指令来编辑图像,如:



我们在 ModelArts 中发布了一个notebook方便大家玩一玩,同时也将对模型的实现方法进行简单介绍:


方法概览


在 InstructPix2Pix 中,作者通过有监督的方法来实现文本编辑图像。方法主要包括两部分:


  1. 数据集生成:作者整合了语言模型 GPT-3 和文生图模型 Stable Diffusion,生成了一个用于图像编辑的数据集;

  2. 模型训练:作者使用生成的数据集训练了一个条件扩散模型来实现文本编辑图像:



在推理时,图像在模型 forward 过程中被编辑,不需要微调,因此推理速度很快,可玩性较高。

数据准备


在数据准备时,首先通过 GPT-3 生成一些文本编辑指令,之后通过 Stable Diffusion 和 Prompt-to-Prompt 生成编辑前后文本图像对。

生成文本编辑指令


作者使用了 700 条人工标注的文本编辑指令三元组微调 GPT-3,之后使用微调过的 GPT-3 生成大规模的文本三元组。如下图,文本三元组包括(1)输入描述;(2)编辑指令;(3)编辑后的描述。

在使用 GPT-3 生成数据集时只需提供输入描述,高亮的编辑指令与输出描述都由 GPT-3 生成,这样可以保证描述指令的多样性。


生成图像对


在得到描述对后,作者使用 Stable Diffusion 将编辑前与编辑后的描述转换成图像对。在这个过程中面临了一个挑战:即使输入提示只有微小的不同,生成的图像也无法保证内容的一致性,如分别使用“photograph of a girl riding a horse”和“photograph of a girl riding a dragon”为提示生成图像,会得到下图内容:



为了解决此问题,作者使用了 Prompt-to-Prompt方法。该方法通过在扩散过程中注入原始图像的注意力图来控制编辑图像的注意力映射,实现了内容一致的图像生成。使用该方法与相同的提示词,会得到下图内容:



作者共生成 454,445 个样本,生成的数据可以通过开源脚本下载。

条件扩散模型


InstructPix2Pix 通过训练条件扩散模型来实现根据输入图像和文本指令来编辑图像的功能。作者使用预训练的 Stable Diffusion 对模型进行初始化,同时在第一个卷积层增加了额外的条件通道来支持图像编辑。在训练时模型将输入图像 x 编码为隐向量 z=E(x),在扩散过程中将噪声 t 添加到编码向量 z 中得到隐噪声变量 zt​,其中噪声等级随时间提升。


训练一个网络ϵθ​来预测在给定的图像条件 cI​和文本指令 cT​下的噪声 t,目标函数:



为了平衡扩散模型生成的样本的质量和多样性,作者在 InstructPix2Pix 中引入了 Classifier-free Guidance 方法。当我们使用一个条件来生成图像时,我们希望生成的图像与该条件有较高的相关性,Classifier-free Guidance 利用一个隐式分类器 pθ​(c∣zt​) 来对生成的样本进行评分。其中,zt​是一个编码图像的潜在表示,c 是一个条件,可以是一个文本描述或者其他图像。这个分类器会对每个样本分配一个相应的分数,表示该样本与给定条件的相关性。训练时,会通过噪声引导使概率偏向那些隐式分类器得分高的数据点上,从而提高生成的样本与给定条件的相关性。


对于文本编辑图像任务,作者设计了评分网络 eθ​(zt​,cI​,cT​),对于图像条件 cI​和文本指令 cT​设计了指导尺度 sI​和 sT​,可以调整网络对输入图像和编辑指令的遵循程度:



针对不同的指导尺度作者给出了示例实验结果:



更多实验结果与局限性讨论可以在 Project Page 中查看。

案例介绍


上文提到,为了方便大家玩一玩,我们 ModelArts 中发布了一键运行的notebook,除了可以免去复杂的环境适配步骤外,还可以享受免费 GPU 资源(x。


开源模型下载好慢好慢,体贴的我也为大家将资源转存到 OBS 中



此外,预训练模型只支持英文,哪里有英语废,哪里就有翻译,翻译模型也准备好了,惊不惊喜,意不意外:



案例使用 gradio 搭建了一个小小的应用,一键运行后直接在应用框输入图片与中文编辑命令生成结果即可:



使用结束后不要忘记关闭哦:



点击关注,第一时间了解华为云新鲜技术~


发布于: 刚刚阅读数: 5
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
InstructPix2Pix: 动动嘴皮子,超越PS_人工智能_华为云开发者联盟_InfoQ写作社区