jjzjj

InstructPix2Pix: 动动嘴皮子,超越PS

华为云开发者社区 2023-03-28 原文
摘要:InstructPix2Pix提出了一种使用文本编辑图像的方法:给定输入图像和编辑指令,告诉模型要做什么,模型将遵循这些指令来编辑图像。

本文分享自华为云社区《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对模型进行初始化,同时在第一个卷积层增加了额外的条件通道来支持图像编辑。在训练时模型将输入图像xx编码为隐向量z=E(x)z=E(x),在扩散过程中将噪声tt添加到编码向量zz中得到隐噪声变量ztzt​,其中噪声等级随时间提升。

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

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

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

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

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

案例介绍

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

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

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

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

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

 

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

有关InstructPix2Pix: 动动嘴皮子,超越PS的更多相关文章

  1. Portraiture4免费磨皮插件支持PS/LR - 2

    Portraiture4免去了繁琐的手工劳动,选择性的屏蔽和由像素的平滑,以帮助您实现卓越的肖像润色。智能平滑,并删除不完善之处,同时保持皮肤的纹理和其他重要肖像的细节,如头发,眉毛,睫毛等。一键全自动磨皮全面支持PS的动作,将其录制成动作后,就可以一键应用或批量处理,无与伦比的皮肤平滑、修复和增强效果插件,大幅度提高人像处理的效率!1.支持系统:Win/Mac系统2.支持PS/LRCC及更高版本(仅64位)4.资源大小:125MBPortraitPro是一款专业人像美化软件,该软件内置先进的面部识别技术和模型知识数据库,让用户能够轻松地以低至五分钟的时间完成一次完美的人像修片任务,它也拥有强

  2. windows - 从 Task Scheduler 运行批处理文件时,MKS Toolkit 中的 ps 命令不显示任何内容 - 2

    我创建了一个批处理文件如下:setVAR1=VALUE1startanother_batch_filesleep10ps-l|grepabc>foo.txtanother_batch_file会启动几个进程,我想用ps列出一些特定的进程。当我从cmd窗口运行此脚本时,它运行良好,但如果我在任务计划程序中创建任务以自动调用此脚本,则foo.txt将为空。我也试过将ps-l结果输出到一个文件,也是空的ps和grep均来自MKS工具包。编辑:根据评论,我尝试使用类似于以下的脚本:setVAR1=VALUE1startanother_batch_filesleep10ps>foo.txttas

  3. windows - Ghostscript - PS 到 PDF - 图像倒置问题 - 2

    我正在尝试使用Ghostscript将postscript转换为PDF。一切都转换正常,除了在某些情况下图像由于某种原因倒转。报告的错误信息:http://bugs.ghostscript.com/show_bug.cgi?id=691759现在,他们说这个错误已修复。我下载了ghostscript8.70、8.71、9.00并尝试了所有三个版本,结果是一样的。GSView会按应有的方式显示后记,并且不会反转图像。有人知道吗? 最佳答案 嗯,阅读commentno.4forGSbug691759看起来这已于2011年1月7日在r12

  4. windows - Ghostscript:ps2pdf 不适用于 Win 7 32 位 - 2

    我有最新的GPLGhostscriptv9.05,我在Win32位系统上运行它。在我的XP机器上,这两个命令ps2pdf-v-和rungs-v(usedinternallybyTeXLive)Ghostscript9.05的报告如下:GPLGhostscript9.05(2012-02-08)Copyright(C)2010ArtifexSoftware,Inc.Allrightsreserved.在另一台Win7计算机上,命令ps2pdf-v-在命令行是不是被认为是有效的ps2pdf语法但rungs-v工作正常.我在互联网上阅读了有关在此处为Ghostscript设置临时目录的信息:

  5. windows - perl 中 ps 命令的等价物是什么? - 2

    我正在使用ps-C在Linux上,但同样不适用于Windows。我如何在Perl中执行相同的检查以使其独立于平台? 最佳答案 您也许可以使用Win32::Process::Listuse5.12.0;usewarnings;useWin32::Process::List;my$P=Win32::Process::List->new();if($P->IsError==1){die$P->GetErrorText;}my%list=$P->GetProcesses();foreachmy$key(keys%list){#$list{$

  6. windows - 执行 .ps1 脚本时的 Powershell 问题 - 2

    所以,警告,这可能是一个真正的新手问题,所以提前道歉。我开始学习Powershell,我想做的第一件事就是创建一个目录并将文件复制到其中。现在,如果我在CMD窗口中使用以下命令,它们将完美运行。mkdir%HOMEPATH%\testcptest.txt%HOMEPATH%\test但是,当我将它们放入.ps1文件并执行它时,我收到一条错误消息,指出找不到目录等(见下文)Copy-Item:无法找到路径“C:\Chef\windowsdevbox-master\%HOMEPATH%\.berkshelf”的一部分现在,我被告知这是因为我需要在每个命令之前放置CMD。我运行了这个,CMD

  7. windows - 为什么 PS1 中的换行符会在 Git for Windows bash 中引发语法错误? - 2

    这个问题在这里已经有了答案:PS1commandsubstitutionfailswhencontainingnewlinesonmsysbash(3个答案)关闭6年前。我正在尝试在GitforWindows中设置我的用户提示bash提示。这是一个(非常简单的)有效提示:#\@Printsthetime:11:14AM#\wPrintsthefullcwdpath#$(__git_ps1...)PrintsthecurrentgitbranchPS1='\n[\@]\w$(__git_ps1"(%s)")\$'当我在混合中添加第二个换行符时,我收到以下错误:bash:commandsu

  8. windows - 当这很容易规避时,powershell 拒绝加载任何本地 ps1 脚本的目的是什么? - 2

    背景:我想使用powershell脚本来自动执行工作中的一些任务。我不是管理员,无法运行提升的powershell进程。我倾向于使用批处理脚本通过命令行实用程序以编程方式执行某些任务,但随着我的能力的提高,它已经到了很明显powershell将是更适合该任务的工具的地步。我试用了即时窗口,并编写了一个基本脚本,看看是否可以正常工作。一旦我掌握了一些测试命令,我就将它们保存到一个文件中。Write-Host"Let'sdothis"[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")[Syste

  9. DMA实现PS与PL的数据传输 - 2

    目录DMA实现原理DMA基本环路流程函数解析刷新数据缓存(Cache)启动DMA传输(发送或接受)数据校验和对比中断资源初始化DMA相关参数设置DMA实现原理PS通过AXILite向DMA发送指令,控制数据传输DMA通过AXIHP通路和DDR交换数据,PL通过AXI-Stream读写DMA的数据DMA基本环路流程(1)PS通过AXI-lite配置DMA的工作模式,(2)PS端ARM将数据写入DDR,(3)PS控制DMA读出之前写入的数据,将数据流写入FIFO(读完后DMA会向PS发送中断),(4)FIFO将数据传输给DMA;PS控制DMA,使DMA通过数据通道将数据写入DDR中(写完后DMA会

  10. php - SessionHandler::gc():ps_files_cleanup_dir |权限被拒绝 (13) - 2

    我在CentoOS(WHM/CPANEL)和Prestashop1.7中遇到PHP7问题系统给我这个消息:Noticeonline429infile/home/onywf3fr9a/public_html/app/cache/dev/classes.php[8]SessionHandler::gc():ps_files_cleanup_dir:opendir(/var/cpanel/php/sessions/ea-php70)失败:权限被拒绝(13) 最佳答案 背景当PHP尝试对过期的session进行垃圾回收,但包含session

随机推荐