35张图,直观理解Stable Diffusion

00fb013f62023d0b0f883747c83475f9.png

作者|Jay Alammar

翻译|杨婷、徐佳渝

最近,AI图像生成引人注目,它能够根据文字描述生成精美图像,这极大地改变了人们的图像创作方式。Stable Diffusion作为一款高性能模型,它生成的图像质量更高、运行速度更快、消耗的资源以及内存占用更小,是AI图像生成领域的里程碑。

在接触了AI图像生成以后,你可能会好奇这些模型背后的工作原理。

下面是对Stable Diffusion工作原理的概述。

 be7144b37f5e5360d34b6df2be22ca9d.png

Stable Diffusion用途多样,是一款多功能模型。首先它可以根据文本生成图像(text2img)。上图是从文本输入到图像生成的示例。除此之外,我们还可以使用Stable Diffusion来替换、更改图像(这时我们需要同时输入文本和图像)。

46b9cdd12867eb6ea168dca9b5674a0b.png

下面是Stable Diffusion的内部结构,了解内部结构可以让我们更好地理解Stable Diffusion的组成、各组成部分的交互方式、以及各种图像生成选项/参数的含义。

1
Stable Diffusion的组成

Stable Diffusion并不是一个单一模型,而是由多个部分和模型一起构成的系统。

从内部来看,首先我们可以看到一个文本理解组件,这个组件将文本信息转化为数字表示(numeric representation)以捕捉文本意图。

dcbc99553671c0e96e94cd596fbfe0a5.png

这部分主要对ML进行大概介绍,文章后续还会讲解更多细节。可以说这个文本理解组件(文本编码器)是一个特殊的Transformer语言模型(严格来说它是一个CLIP模型的文本编码器)。将文本输入到 Clip 文本编码器得到特征列表,对于文本中的每一个word/token 都有会得到一个向量特征。

然后将文本特征作为图像生成器的输入,图像生成器又由几部分组成。

9ac18052b6b6a5a2a3710085bbc3e39d.png

图像生成器两步骤:

1-图像信息创建器(Image information creator)

图像信息创建器是Stable Diffusion特有的关键部分,也是其性能远超其他模型的原因。

图像信息创建器运行多个step生成图像信息。Stable Diffusion接口(interfaces)和库(libraries)的step参数一般默认为50或100。

图像信息创建器完全在图像信息空间(亦称潜在空间)上运行,这让Stable Diffusion比以前在像素空间(pixel space)上运行的扩散模型速度更快。从技术上讲,图像信息创建器由UNet神经网络和调度算法组成。

“扩散”一词描述了图像信息创建器中发生的事情。因为图像信息创建器对信息作了逐步处理,所以图像解码器(image decoder)才能随后产出高质量图像。

3e942dfb22dd60214bde725c8fc22df9.png

2-图像解码器(Image Decoder)

图像解码器根据图像信息创建器的信息绘制图像,它只用在过程结束时运行一次,以生成最终的像素图像。

39d21fb2c648f60789765a534ca4310e.png

这样就构成了Stable Diffusion的三个主要组成部分,每个部分都有自己的神经网络:

  • ClipText: 用于文本编码。输入: 文本。输出: 77个token embeddings向量,每个向量有768维。

  • UNet+调度程序: 在信息(潜在)空间中逐步处理信息。输入: 文本embeddings和一个初始化的多维数组(结构化的数字列表,也称为张量)组成的噪声。输出:经过处理的信息数组。

  • 自动编码解码器(Autoencoder Decoder): 使用经过处理的信息数组绘制最终图像。输入:经过处理的信息数组(维数:(4,64,64))输出: 生成的图像(维数:(3,512,512),即(红/绿/蓝;宽,高))。

7904820c5f6202fd79c08a03a469e994.png

2

到底何为扩散(Diffusion)?

扩散是发生在粉色区域图像信息创建器组件中的过程。这一部分有一个表示输入文本的token embeddings和一个随机初始化的图像信息数组,这些数组也被称为latents,在这个过程中会产生一个信息数组,图像解码器(Image Decoder)使用这个信息数组生成最终图像。

4de2df29e2f4e18b443d02128f287e59.png

扩散是循序渐进逐步发生的,每一步都会增加更多的相关信息。为了更加直观地了解这个过程,我们可以检查随机latents数组,看它是否转化为了视觉噪音(visual noise)。在这种情况下,视觉检查(Visual inspection)是通过图像解码器进行的。

b48f455a0fc2409e3c31e184fb941f6e.png

扩散分为多个step,每个step都在输入的latents数组上运行,并且会产生另一个latents数组,这个数组更类似于输入文本以及模型在模型训练时的所有图像中获取的所有视觉信息。

6a3e27c6861c259c8ed17966a7a00160.png

我们可以对一组这样的latents数组执行可视化,看看每一步都添加了什么信息。这一过程令人叹为观止。

2ea53e20c5652964ab949171d6e624c2.png

视频链接:

在这种情况下,步骤2和4之间发生了一些特别有意思的事情,就好像轮廓是从噪音中浮现出来的。

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

3
Diffusion的工作原理

扩散模型图像生成的核心是强大的计算机视觉模型。在足够大的数据集的基础上,这些模型可以学会很多复杂运算。扩散模型通过如下方式建构问题来实现图像生成:

假设我们有一个图像,我们首先生成一些噪音(noise),然后将这些噪音添加到图像上。

99d4fb4017b7b7eac29fd2900ab6f94f.png

我们可以将这看成是一个训练示例。之后我们使用同样的公式去创建更多的训练示例,然后用这些示例去训练图像生成模型的中心组件。

d4a6e4cdd5f570bfdfcbefaf9d69f49c.png

虽然这个例子展示了从图像(总量0,没有噪音)到总噪音(总量4,总噪音)的一些噪音值,但是我们可以轻松控制向图像中添加的噪音,因此我们可以将其分为数十个step,为数据集中的每个图像创建数十个训练示例。

e35dd1d1181b6685f2dada107e071bed.png

有了这个数据集,我们可以训练噪音预测器(noise predictor),并最终得到一个在特定配置下运行时可以创建图像的预测器。接触过ML的人会觉得训练步骤非常熟悉:

c1c80e432f1d1c37c53ea5682859cbf7.png

接下来我们来看看Stable Diffusion是如何生成图像的。

4
通过降噪绘图

经过训练的噪音预测器可以对噪音图像进行降噪处理,并且可以预测噪音。

9c4e0d7bde70dca91db8f8c9d2ff3d03.png

因为样本噪音(sampled noise)被预测,所以如果我们从图像中去掉这个样本,我们得到的图像就会更接近模型训练的图像。(这个图像不是确切的图像本身,而是图像分布,也就是图像的像素排列,在像素排列中天空通常是蓝色的,高于地面,人有两只眼睛,猫有尖耳朵并且总是懒洋洋的)。

b772f1d5d6910ac8aa07de961d02aac3.png

如果训练数据集中的图像比较美观,比如说Stable Diffusion训练的LAION Aesthetics,那么训练出来的图像的可观赏性也会更高。如果我们在logo图像上对其进行训练,那么我们最终会得到一个logo生成模型。

53724a5f1819fcfe2acf8f46147fda12.png

这里总结了扩散模型处理图像生成的过程,主要如论文Denoising Diffusion Probabilistic Models所述。相信你对扩散的含义有了一定的了解,知道了Stable Diffusion、Dall-E 2和谷歌Imagen的主要组件。

值得注意的是,到目前为止我们所描述的扩散过程,没有使用任何文本数据,只需运行模型就能生成精美图像。不过我们无法控制图像的内容,它可能是一座金字塔,也可能是一只猫。接下来,我们将讨论如何将文本信息融入扩散过程以控制图片类型。

5
速度提升:在压缩(Latent)数据中扩散

为了加快图像生成过程,Stable Diffusion论文没有在像素图像上进行运行,而是在图像的压缩版本上运行。论文将这称为前往潜在空间(Departure to Latent Space)。

压缩(随后是解压缩/绘图)通过编码器完成。自动编码器使用Image Encoder将图像压缩进潜空间,然后使用Image Decoder再对压缩信息进行重构。

0c80b86cafa5a2d5625a290c42aa4074.png

正向扩散在潜空间上完成。噪声信息应用于潜空间,而不是应用于像素图象。因此,训练噪声预测器(noise predictor)实际上是为了预测压缩表示(compressed representation)上的噪音,这个压缩表示也被称为潜空间(latent space)。

09adfc49fd6d134e0279bb38007f35fc.png

正向扩散是使用Image Encoder生成图像数据,来训练噪声预测器。训练一旦完成,就可以执行反向扩散,使用Image Decoder生成图像。

afe47aedb706f5470908d69d60fe94a1.png

LDM/Stable Diffusion论文的图3中提及了这两个过程:

e62e0552ad5f97e08e7dd2c434f0c904.png

上图还显示了“conditioning”组件,这个组件在本例中是描述模型生成图像的文本提示词(text prompts)。接下来,我们继续探讨文本组件。

6
文本编码器:一种Transformer语言模型

Transformer语言模型作为语言理解组件,能够接受文本提示词,生成token embeddings。Stable Diffusion模型使用的是ClipText(基于GPT的模型),而论文中采用的是BERT。

Imagen论文表明,语言模型的选择相当重要。相较于较大的图像生成组件,较大的语言模型组件对生成图像的质量影响更大。

31f1dc0088e4598ad64044bba8376959.png

较大的/更好的语言模型对图像生成模型的质量有巨大的影响。资料来源:Saharia等人所著论文Google Imagen中的图A.5。

早期的Stable Diffusion模型仅使用了OpenAI发布的预训练模型ClipText。未来模型可能转向新发布的更大的CLIP变体OpenCLIP。(更新于2022 年 11 月,详情见Stable Diffusion V2 uses OpenClip。与仅含有630万文本模型参数的ClipText相比,OpenCLIP文本模型参数多达3.54亿。)

7
如何训练CLIP

CLIP模型是在图像和图像说明数据集上训练的。我们可以设想这样一个数据集,它里面有4亿张图像以及这些图像说明的材料。

a36bd304d78149db45257382db9cf340.png

图像及图像说明数据集

实际上,CLIP是在网络上抓取的带有“alt”标签的图像上训练的。CLIP是图像编码器和文本编码器的结合。简单来说,训练CLIP就是分别对图像和图像文本说明进行编码。

eca0ae7b89cd20e892b6eccbc8619a08.png

然后,使用余弦相似度来比较生成的embeddings。刚开始训练时,即使文本正确描述了图像,相似度也会很低。

5caa160d5976634db75203e9f2848b5e.png

我们更新了这两个模型,这样下次嵌入它们时就可以得到相似的embeddings。

7cf0de7ef37e570437159a6bd3f1f0ce.png

通过在数据集上重复此操作并使用大的batch size,最终使编码器能够生成图像和文本说明相似的embeddings。如word2vec,训练过程也需要包含不匹配的图像和文本说明作为负样本,以得到较低的相似度分数。

8
将文本信息融入图像生成过程

为了使文本融入图像生成,我们须调整噪声预测器来输入文本。

1e61bb37f73dcd362cef0c9204f117e3.png

现在,在数据集中加入文本。因为我们是在潜空间中运行,所以输入的图像和预测的噪声都处于潜空间中。

83a0e554842b122124ac75e6831ee5ff.png

为了更好地理解UNet中文本tokens的使用方式,下面我们将进一步探究UNet模型。

Unet噪声预测器的Layers(未使用文本)

首先来看没有使用文本的UNet,其输入和输出如下:

056f94a411396fe377368e247a5e49d2.png

可以看到:

  • UNet是一系列用于转换latents数组的layers

  • 每一layer都对前一个layer的输出进行操作

  • Some of the outputs are fed (via residual connections) into the processing later in the network

  • 通过残差连接(residual connections),将网络前面的layer输出送入到后面的layer进行处理

  • 时间步长被转化为embedding向量,在网络层中使用

d323c1e4b356fb9ee6c5c79face1297f.png

Unet噪声预测器中的Layers (带文本)

现在让我们看看如何改变该系统以增加对文本的关注度。

8f7590e07df2631ed556a6eeec0573a8.png

为了给文本输入提供支持,也就是专业上所说的文本条件(text conditioning),我们需要在系统的 ResNet blocks之间添加一个注意力层(attention layer)。

333a18133ca49cea324b220f112c9347.png

文本信息不直接由ResNet处理,而是通过注意力层将这些文本表示融入到latents中。这样,下一个ResNet就能在处理过程中利用融入的文本信息。

9
总结

希望本文能帮助你深入了解Stable Diffusion的运作机制。虽然还涉及到许多其他概念,但是只要熟悉了以上板块,这些概念就会变得很容易理解。下面是一些我认为很有用的资源。

资源

  • https://www.youtube.com/shorts/qL6mKRyjK-0

  • https://huggingface.co/blog/stable_diffusion

  • https://huggingface.co/blog/annotated-diffusion

  • https://www.youtube.com/watch?v=J87hffSMB60

  • https://www.youtube.com/watch?v=ltLNYA3lWAQ

  • https://ommer-lab.com/research/latent-diffusion-models/

  • https://lilianweng.github.io/posts/2021-07-11-diffusion-models/

  • https://www.youtube.com/watch?v=_7rMfsA24Ls

(本文在遵循CC BY-NC-SA 4.0协议的基础上由OneFlow编译发布,译文转载请联系获得授权。原文:Alammar, J (2018). The Illustrated Transformer [Blog post]. https://jalammar.github.io/illustrated-stable-diffusion/)

其他人都在看

  • 编程的终结;展望2023年AI系统方向

  • ChatGPT的一小步,NLP范式转变的一大步

  • 2023年AI十大展望:GPT-4领衔大模型变革

  • 李白:你的模型权重很不错,可惜被我没收了

  • OpenAI掌门Sam Altman:AI下一个发展阶段

  • 比快更快,开源Stable Diffusion刷新作图速度

  • OneEmbedding:单卡训练TB级推荐模型不是梦

欢迎Star、试用OneFlow最新版本:https://github.com/Oneflow-Inc/oneflow/icon-default.png?t=MBR7https://github.com/Oneflow-Inc/oneflow/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/23077.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

技术报告:Efficient and Effective Text Encoding for Chinese LLaMA AND Alpaca

技术报告:Efficient and Effective Text Encoding for Chinese LLaMA AND Alpaca IntroductionChinese LLaMAChinese AlpacaLora-Fine-tuning实验7Bpre- trainingInstruction-Tuning 13BPre-TrainingInstruct-Tuning Introduction 首先作者说了最近ChatGPT等模型在…

关于ChatGPT,已到了不得不说的危难时刻

文 / 高扬(微信公众号:量子论) 今天在Hacker News上看到了一篇热文,对应着的是热烈争论。 马斯克等科技人士签署公开信,呼吁人工智能实验室立即暂停训练比GPT-4更强大的人工智能系统至少6个月。 该公开信发布于生命未来…

和文心一言聊一聊隐私计算,对比ChatGPT!

开放隐私计算 最近文心一言正式发布,标志着国产对话机器人的问世,大语言模型在国内正式落地。相信我们很多人想到的第一件事不仅仅是文心一言,而是拿它和ChatGPT对比。珠玉在前,文心一言背着巨大压力走到我们面前,给我…

NLP实践!文本语法纠错模型实战,搭建你的贴身语法修改小助手 ⛵

💡 作者:韩信子ShowMeAI 📘 深度学习实战系列:https://www.showmeai.tech/tutorials/42 📘 自然语言处理实战系列:https://www.showmeai.tech/tutorials/45 📘 本文地址:https://sho…

阿里 P10 级大佬吴翰清离职,下一步或将开启 AI 短视频创业

作者 | 苏宓 出品 | CSDN(ID:CSDNnews) 5 月 25 日,据 Tech 星球报道,阿里巴巴集团研究员吴翰清已从阿里离职,接下来其将深度拥抱 AI 新时代,投身于 AI 短视频赛道创业。 这位被阿里程序员誉为大…

智能文本生成:进展与挑战

智能文本生成:进展与挑战 万小军 北京大学王选计算机研究所 摘要:智能文本生成是人工智能与自然语言处理领域的前沿研究方向,也是AI生成内容(AIGC)的关键技术支撑,近些年受到学术界和产业界的高度关注&…

2023.3.20-3.26 AI行业周刊(第142期):AI创业过程中的思考和实践

最近一段时间,因为开始接触更多的市场用户,包括和一些AI公司的创始团队沟通,越来越感觉创业的不容易。 因为需要考虑的因素太多,市场分析后产品的定位,产品打磨出来后用户的推广,用户使用后商业化的落地等…

【热点抢先看】智能文本生成:进展与挑战

智能文本生成:进展与挑战 万小军 北京大学王选计算机研究所 摘要:智能文本生成是人工智能与自然语言处理领域的前沿研究方向,也是AI生成内容(AIGC)的关键技术支撑,近些年受到学术界和产业界的高度关注&…

吴恩达与OpenAI官方合作的ChatGPT提示工程课程笔记

吴恩达与OpenAI官方合作的ChatGPT提示工程课程笔记 🥸 下述代码均在煮皮特上运行喔 LLMs(large language models) Base LLM:基于文本训练数据来预测做“文字接龙” Instruction Tuned LLM(指令调整型LLM):接受了遵循指示的培训&am…

会议学习笔记

目录 1.标注高效的核心思路:1.部分监督PSL2.自监督SSL魔方复原 3.单一标注无标注 2.深度通用学习DUL1.通用特征点检测2.通用MRI重建 3.学习与知识融合 如何把大数据小任务转换成小数据大任务 1.标注高效的核心思路: 以一变二:数据增广无中生…

【Android知识笔记】Parcelable 为什么速度优于 Serializable ?

Q:Parcelable 为什么速度优于 Serializable ? 首先,抛开应用场景谈技术方案都是在耍流氓,所以如果你遇到有面试官问这样的题目本身就是在给面试者挖坑。 序列化 将实例的状态转换为可以存储或传输的形式的过程。 Serializable 实现方式: Serializable 是属于 Java 自带的…

计算机IO模型二、pageCache、mmap作用

前言 文章开始前先推荐两本书,《深入理解linux内核》可以帮助大家对内核有一个系统的理解,《深入理解计算机系统》可以夯实对操作系统的了解 1. 物理内存: 物理内存中有内核,有应用程序,程序在物理内存中是不连续的。…

一个JavaSript信息提示框的实现

在很多时候我们需要在一个Html控件获得光标的时候在控件旁边显示一个提示框,实现这个关键在于怎么定位当前控件的位置。这个位置可以是相对于浏览器左上角窗口的x,y坐标,也可以是相对于Body的X,Y坐标。相对于第一种方法,第二种方法实现起来会方便些,因为要获得相对于浏览器…

ospf协议

一、路由协议基础: 1. 静态路由协议缺点: 1)路由不能随着拓扑的变化而自动变化(网络中接口关闭或者故障是不可知的,有无汇总都会有黑洞的——接口故障关闭断电或者网段不存在之后,此时如果有缺省就会出现…

D3D12渲染技术之顶点着色器

相信大家以前用过D3D9的或是编写过Shader的对顶点着色器都比较了解,现在我们回顾一下: cbuffer cbPerObject : register(b0) {float4x4 gWorldViewProj; };void VS(float3 iPosL : POSITION, float4 iColor : COLOR, out float4 oPosH : SV_POSITION,o…

chatgpt赋能python:Python编程教程之抽签程序

Python编程教程之抽签程序 介绍 对于喜欢玩抽签、体育彩票等游戏的人来说,抽签程序是一款非常有用的小工具。抽签程序可以用来随机抽取一定数量的幸运儿,而且运行速度快,结果随机性高,不需要人工干预。 那么,Python…

《大众证券报》报道云创大数据等企业谋取新春“开门红”

近日,《大众证券报》以《拼研发、抓项目、拓市场 南京上市公司谋取新春“开门红”》为题发表新闻报道,描绘包括南京云创大数据科技股份有限公司等南京本地上市公司在新春伊始的生机活力景象,报道这些企业是如何围绕主业谋发展,力争…

游戏版《西部世界》来了!NPC全由AI操控,行动自如有理想和记忆,基于最新GAEA技术系统打造

​ChatGPT彻底引爆了AI领域,也点燃了各赛道玩家的热情。 以虚拟交互体验为例,就已经有不少新产品冒头。 不仅像Chat D-ID这类以ChatGPT驱动的虚拟女友bot花样百出,就连游戏AI NPC也变得火热起来,这几天知名游戏公司育碧要推出AI…

游戏版《西部世界》来了!NPC全由AI操控,行动自如有理想和记忆,基于最新GAEA技术系统打造...

萧箫 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT彻底引爆了AI领域,也点燃了各赛道玩家的热情。 以虚拟交互体验为例,就已经有不少新产品冒头。 不仅像Chat D-ID这类以ChatGPT驱动的虚拟女友bot花样百出,就连游戏AI NPC也变得火热起来&#x…

无人出租车被警察截停后逃逸!AI:我当时害怕极了

新智元报道 编辑:好困 袁榭 snailnj 【新智元导读】愚人节当晚,在美国旧金山上演了史上第一场无人驾驶汽车被警察截停后逃逸的事件,画面爆笑。 警察拦车很常见,但是拦AI开的出租车你见过么? 在最近爆火的一段视频中&…