摘要:instructPix2Pix文字编辑图片是一种纯文本编辑图像的方法,用户提供一张图片和文本编辑指令,告诉模型要做什么,模型根据编辑指令编辑输入的图像,最终输出用户想要的图像。

本文分享自华为云社区《【云驻共创】Stable Diffusion AIGC限时0元!3步成为P图大师》,作者:香菜聊游戏 。

1、instructPix2Pix概览

instructPix2Pix文字编辑图片是一种纯文本编辑图像的方法,用户提供一张图片和文本编辑指令,告诉模型要做什么,模型根据编辑指令编辑输入的图像,最终输出用户想要的图像。

它可以让你通过简单的语言描述来生成符合要求的图片,而不需要手动编写代码或进行复杂的操作,这使得图像生成更加高效和便捷。例如,如果你想将一张天空照片转换为夜晚照片,你只需要输入指令:“将天空替换为黑暗的夜晚”,然后模型就会自动将天空替换为星星和月亮,并将颜色和光线调整为夜晚的感觉。

视频地址:https://bbs.huaweicloud.com/live/cloud_live/20230413.html

2、技术框架

2.1 框架概述

整个框架是使用现有大模型的能力,实现了自己的任务,整个技术栈都是现有技术的整合,但是依然做出了一个很好玩的应用

框架总体分为2个部分:模型训练(Traning)和推理(Inference)。

模型训练分为数据工程和模型训练。

整个pipeline的目标是通过使用GPT-3生成编辑指令和描述,以及使用Stable Diffusion生成图像对,来训练Instruct-Pix2Pix模型,使其能够根据编辑指令生成高质量的编辑后的图像。然后,使用训练好的Instruct-Pix2Pix模型进行推理,以提供给用户或实际应用场景所需的编辑后的图像。

2.2 数据生成

2.2.1 编辑指令的生成

这部分完全是文字工作,借助了GPT-3 的能力,给定一个输入的描述,然后由GPT-3 输出编辑后的指令和生成的描述

比如图中输入:The dog looks at the Camera

GPT3 会输出:编辑指令 wearing a hat 和最终的描述指令 The dog wearing a hat looks at the camera

作者使用了700条人工标注的指令,并对GPT-3进行了微调,以便在生成编辑指令和编辑后的指令时能够更好地满足要求。

输入GPT-3的指令格式包括两部分:prompt和completion。其中,prompt是输入指令,用于指导GPT-3生成相应的文本输出;completion是编辑指令和编辑后的指令,用于在GPT-3生成的结果上进行进一步的修改和调整。这样输入的好处是编辑指令也是由GPT-3生成的,这样保证生成的多样哈。最终GPT会生成超过45万的编辑指令,上图高亮的部分都是GPT-3生成,这些指令被用于训练Instruct-Pix2Pix模型,最终为实际应用场景提供高质量的图像编辑服务。

2.2.2 生成图像对

将上一步骤生成的超过45万的编辑指令和描述指令,输入通过Stable Diffusion 生成图像对。

在这个过程中存在一个挑战,做过文生图的同学都知道,即使你固定随机数,差距很小的prompt通过Stable Diffusion也有可能生成内容完全不同的图像,这是因为Stable Diffusion在生成图像时受到许多因素的影响,例如随机数生成、模型参数、输入文本的微小变化等等。因此,即使两个prompt看起来非常相似,Stable Diffusion也可能生成截然不同的图像。

解决办法:

在文生图中,使用了Cross Attention机制来建立文本和图片之间的关联。Cross Attention是一种注意力机制,其本质是通过筛选来实现信息的融合。在文生图中,这种机制被用于找到文本提示(prompt)与图片之间的关系。

具体而言,当给定一个文本提示时,Cross Attention会对文本中的不同单词进行激活,并通过注意力的机制,选择与激活单词相关联的图片区域。通过这种方式,可以根据文本提示中的不同单词来激活不同的图像区域,从而实现文本与图像的关联。

以文生图中的例子为例,如果文本提示中包含单词"bear",则Cross Attention机制会根据该单词的激活程度,选择与之相关联的图片区域。在上图中可以看到,与"bear"相关联的图片区域被激活得最多。这意味着该区域与"bear"这个单词有最强的关联。

通过Cross Attention机制,文生图能够将文本提示和图片进行有效地融合,从而产生与文本提示相对应的图像生成结果。这种机制能够帮助生成更准确和相关的图像,使文本与图像之间的关联更加紧密和有意义。

这个替换可以可以发生在任意一步,替换的越多则图像更多样。

2.3 模型训练,文生图

instructPix2Pix 是通过有监督的方法实现文本编辑图像,使用条件扩散模型。

输入的数据为:一张原图和编辑指令,输出编辑之后的图

2.3.1 文生图原理

整个任务是输入prompt,根据prompt输出一张图。

1.对输入的文字进行tokenlization和embedings获得词向量。

2.词向量会在Diffusion中通过Cross Attention的过程中参与到图像生成的过程中

3.模型还会有一个随机的噪声图向量输入,在扩散的过程中恢复到原图的生成像素向量

4.最后通过解码器将像素向量解码

2.3.2 instructPix2Pix 和Stable Diffusion的不同

1.instructPix2Pix会多出一个图像输入,在输入的时候将原图拼接到噪声图,会需要额外的channel,这些额外的channel会被初始化为0,其他的权重会使用预训练的Stable Diffusion初始化。

2.在训练中增加了随机的条件Dropout来平衡模型的生成的样本的多样性。

3.推理的过程中加入了参数可以调节原始图像所占的比例。

3、案例介绍

编辑命令支持中文,系统将中文翻译为prompt,如果遇到生成的图不好,可能是翻译的不好,也可以直接输入英文。同时系统支持生成海报,方便使用。

3.1 教程

体验地址:https://developer.huaweicloud.com/develop/aigallery/notebook/detail?id=1449263e-83d2-438a-895c-dab8ab9ba5c8&ticket=ST-81479-CIrz2uuQi2uMIRcbTlzdobWR-sso

实名认证教程地址:https://developer.huaweicloud.com/develop/aigallery/article/detail?id=4ce709d6-eb25-4fa4-b214-e2e5d6b7919c

教程中有完成的介绍,这里就不赘述了

注意:

1.切换资源使会有提示,要等资源切换完成后再做操作,不要着急。

2.点击生成海报后,会在notebook同级目录下生成poster.png,右键下载即可。

3.如果没有得到预期结果,可能的原因及方法:

• 如果图片改变程度不够,可能是"图片引导强度"参数过高,这个参数代表输出与输入的相似程度,可以调整该参数多次尝试;

• 如果是对人像进行编辑,而生成图像面部较为奇怪,是因为文生图模型对较小的面部处理结果并不好,可以尝试裁剪图像聚焦到主体;

• 运行采用随机seed,同样的描述语多次编辑会产生不同结果,可尝试反复编辑;

• 使用同义但不同表述的描述语可能对结果有较大的影响,如"turn him into a dog" vs. "make him a dog" vs. "as a dog".

• 如需生成高分辨率图,请切换更高显存的资源,同时修改应用cell中的max_size参数。

3.2 案例总结

整个案例的教程还是很清楚,也是免费的资源,开放的代码,very good

4、总结

1. 在整个视频讲解中,首先详细介绍了Instruct-Pix2Pix的技术架构,并与目前非常火热的Stable Diffusion技术方案进行了比较。通过这些讲解,我们可以深入了解这些技术的底层原理以及整个应用的实现细节。

2. 视频中还演示了Model Art的使用,这是一个用于实践这些技术的工具。在案例讲解中,我们可以看到针对不同的情况进行了多个测试案例,以展示该工具的强大功能。同时,视频还提到了在使用过程中可能遇到的问题和挑战。

综上所述,整个视频讲解提供了对Instruct-Pix2Pix技术架构、Stable Diffusion技术方案以及Model Art工具的全面了解。通过案例讲解和对实现细节的介绍,我们可以更好地理解和应用这些技术,同时也了解了可能面临的挑战和解决方案。

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

Stable Diffusion AIGC:3步成为P图大师的更多相关文章

  1. Stable Diffusion魔法入门

    写在前面 本文为资料整合,没有原创内容,方便自己查找和学习, 花费了一晚上把sd安装好,又花了大半天了解sd周边的知识,终于体会到为啥这些生成式AI被称为魔法了,魔法使用前要吟唱类比到AI上不就是那些 ...

  2. Stable Diffusion 关键词tag语法教程

    提示词 Prompt Prompt 是输入到文生图模型的文字,不同的 Prompt 对于生成的图像质量有较大的影响 支持的语言Stable Diffusion, NovelAI等模型支持的输入语言为英 ...

  3. AI 绘画咒语入门 - Stable Diffusion Prompt 语法指南 【成为初级魔导士吧!】

    要用好 Stable Diffusion,最最重要的就是掌握 Prompt(提示词).由于提示词对于生成图的影响甚大,所以被称为魔法,用得好惊天动地,用不好魂飞魄散 . 因此本篇整理下提示词的语法(魔 ...

  4. AI绘画提示词创作指南:DALL·E 2、Midjourney和 Stable Diffusion最全大比拼 ⛵

    作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 自然语言处理实战系列:https://www.showmeai.tech ...

  5. Window10环境下,Stable Diffusion的本地部署与效果展示

    Diffusion相关技术最近也是非常火爆,看看招聘信息,岗位名称都由AI算法工程师变成了AIGC算法工程师,本周跟大家分享一些Diffusion算法相关的内容. Window10环境下,Stable ...

  6. 最新版本 Stable Diffusion 开源AI绘画工具之部署篇

    目录 AI绘画 本地环境要求 下载 Stable Diffusion 运行启动 AI绘画 关于 AI 绘画最近有多火,既然你有缘能看到这篇文章,那么相信也不需要我过多赘述了吧? 随着 AI 绘画技术的 ...

  7. 最新版本 Stable Diffusion 开源 AI 绘画工具之使用篇

    目录 界面参数 采样器 文生图(txt2img) 图生图(img2img) 模型下载 界面参数 在使用 Stable Diffusion 开源 AI 绘画之前,需要了解一下绘画的界面和一些参数的意义 ...

  8. 在英特尔 CPU 上加速 Stable Diffusion 推理

    前一段时间,我们向大家介绍了最新一代的 英特尔至强 CPU (代号 Sapphire Rapids),包括其用于加速深度学习的新硬件特性,以及如何使用它们来加速自然语言 transformer 模型的 ...

  9. 使用starUML一步一步画顺序图

    顺序图:是UML中能表现出一个过程中各个详细步骤的模型图,过程可以理解为一个功能的执行过程. 下面我们以一个简单的影院管理系统中售票功能为例来一步一步完成顺序图的构建. 建模工具:starUML 版本 ...

  10. 从 GPT2 到 Stable Diffusion:Elixir 社区迎来了 Hugging Face

    上周,Elixir 社区向大家宣布,Elixir 语言社区新增从 GPT2 到 Stable Diffusion 的一系列神经网络模型.这些模型得以实现归功于刚刚发布的 Bumblebee 库.Bum ...

随机推荐

  1. Vulnhub Joy Walkthrough

    Recon 这台靶机对枚举的要求较高,如果枚举不出有用的信息可能无法进一步展开,我们首先进行普通的扫描. ┌──(kali㉿kali)-[~/Labs/Joy/80] └─$ sudo nmap -s ...

  2. Semantic Kernel 入门系列:📅 Planner 计划管理

    Semantic Kernel 的一个核心能力就是实现"目标导向"的AI应用. 目标导向 "目标导向"听起来是一个比较高大的词,但是却是实际生活中我们处理问题的 ...

  3. Linux云计算运维工程师day29软件安装

    1.  diff(文本比较) [root@guosaike ~]# cp /etc/passwd{,.ori}备份 [root@guosaike ~]# diff /etc/passwd{,.ori} ...

  4. Android JetPack~LiveData(二) 数据倒灌问题

    Android数据绑定技术一,企业级开发 Android数据绑定技术二,企业级开发 Android  JetPack~ DataBinding(数据绑定)(一)    集成与使用 Android  J ...

  5. VS2022使用ClickOnce发布程序本地安装.net框架

    因为遇到下面的错误,没有在网上搜到详细解决问题的教程,费了一些时间才解决了问题,特此记录一下,也希望能帮助到其他人. 要在"系统必备"对话框中启用"从与我的应用程序相同的 ...

  6. 在nuxt下引入外部js

    最近在踩nuxt.js的坑,遇到了许多问题,在这里记录一下,方便以后查阅. 1.如何引入外部js 如果是插件,可以在package.json中写明名字和版本,在nuxt.config.js中注册,然后 ...

  7. OData WebAPI实践-OData与EDM

    本文属于 OData 系列 引言 在 OData 中,EDM(Entity Data Model) 代表"实体数据模型",它是一种用于表示 Web API 中的结构化数据的格式.E ...

  8. react之todoList基础小项目

    1.项目最终成品和项目目录快照如图: 2.context.js文件 // 使用context进行多级传递数据 // 1. createContext 创建一个可以多级传递的context数据 // 2 ...

  9. 2023-02-14:魔物了占领若干据点,这些据点被若干条道路相连接, roads[i] = [x, y] 表示编号 x、y 的两个据点通过一条道路连接。 现在勇者要将按照以下原则将这些据点逐一夺回:

    2023-02-14:魔物了占领若干据点,这些据点被若干条道路相连接, roads[i] = [x, y] 表示编号 x.y 的两个据点通过一条道路连接. 现在勇者要将按照以下原则将这些据点逐一夺回: ...

  10. 2020-11-30:java中,卡表和记忆集的区别?

    福哥答案2020-12-04:[答案来自此链接:](http://bbs.xiangxueketang.cn/question/530)这两个都是G1收集器中的概念记忆集,RemeberSet,用来记 ...