今天和咱们共享一篇关于Stable Diffusion是怎么作业的文章《How does Stable Diffusion work?》。

感兴趣可以直接阅读英文网页

我对原文进行了精简并修改了部分内容使咱们更简单了解,下面请看熟肉。

Stable Diffusion能做什么?

在最简单的方式中,Stable Diffusion是一种文本到图画的模型。给它一个文本提示,它将返回与文本匹配的图画。

一文看懂Stable Diffusion是怎么作业的,深入浅出!

分散模型 Diffusion model

Stable Diffusion归于一类称为「分散模型」的生成式深度学习模型。这意味着它们旨在生成类似于它们在练习中看到的新数据。在安稳分散的情况下,数据是图画。

为什么叫分散模型?因为它的数学方式看起来很像物理学中的分散,让咱们来看看这个主意。

假设我只用两种图画练习了一个分散模型:猫和狗。在下图中,左边的两个峰代表猫和狗图画组。

一文看懂Stable Diffusion是怎么作业的,深入浅出!

前向分散 Forward diffusion

「前向分散」进程向练习图画增加噪声,逐步将其变成不典型的噪声图画。前向进程会将任何猫或狗图画变成噪声图画。终究,你将无法分辩它们开始是狗仍是猫。就像一滴墨水落入一杯水中,墨滴在水中分散。几分钟后,它随机分布在整个水中,你不再可以判断它开始是落在中心仍是边际附近。

下面是进行前向分散的图画的示例。猫图画变成随机噪声。

一文看懂Stable Diffusion是怎么作业的,深入浅出!

反向分散 Reverse diffusion

现在到了令人兴奋的部分,假如咱们可以逆转分散呢?就像倒放视频一样,时刻后退,咱们将看到墨滴开始增加的方位。

一文看懂Stable Diffusion是怎么作业的,深入浅出!

从喧闹、无意义的图画开始,「反向分散」恢复猫或狗的图画。从技能上讲,每个分散进程都有两个部分:漂移和随机运动。反向分散会倾向猫或狗图画,但不会倾向于两者之间。这便是为什么成果可以是猫或狗。

模型怎么进行练习

反向分散的主意无疑是巧妙而优雅的。但价值百万美元的问题是:“怎么才能做到这一点?”。为了反向分散,咱们需求知道图画中增加了多少噪声。

答案是练习神经网络模型来猜测增加的噪声。它在安稳分散中被称为「噪声猜测器」(Noise predictor),是一个U-Net模型。练习进程如下:

  1. 选择一张练习图画,例如猫的照片。

  2. 生成随机噪声图画。

  3. 经过将噪声图画增加到一定数量的进程来损坏练习图画。

  4. 让噪声猜测器告知咱们增加了多少噪声。(经过调整其权重并向其显示正确答案来完结)。

一文看懂Stable Diffusion是怎么作业的,深入浅出!

练习后,咱们有了一个噪声猜测器,可以估量增加到图画中的噪声。

运用噪声猜测器

现在咱们有了噪声猜测器。怎么运用它?

咱们首要生成一个完全随机的图画,并要求噪声猜测器告知咱们噪声。然后,咱们从原始图画中减去这个估量的噪声。重复此进程几次,就可以得到一只猫或一只狗的图画。

一文看懂Stable Diffusion是怎么作业的,深入浅出!

安稳分散模型 Stable Diffusion model

现在我要告知你一些坏消息:咱们刚才评论的不是安稳分散的作业原理!原因是上述分散进程是在图画空间中进行的。它的计算速度十分十分慢。您将无法在任何单个GPU上运转,更不用说笔记本电脑上的糟糕GPU了。

图画空间是巨大的。想想看:具有三个颜色通道(红、绿、蓝)的512512图画是一个786432维的空间!像Google的Imagen和Open AI的DALL-E这样的分散模型都在像素空间中。他们运用了一些技巧来使模型更快,但仍然不行。

潜在分散模型 Latent Diffusion model

而「Stable Diffusion」便是用来解决这个问题。它是一种潜在分散模型,它不是在高维图画空间中操作,而是首要将图画压缩到「潜在空间」中。潜在空间小了48倍,因而它获得了处理更少数字的优点。这便是为什么它要快得多。

变分主动编码器 Variational Autoencoder

而压缩的这个进程便是运用「变分主动编码器」这个技能来进行的。变分主动编码器 (VAE) 神经网络有两部分:编码器和解码器。编码器将图画压缩为潜在空间中的较低维表明,解码器从潜在空间恢复图画。

一文看懂Stable Diffusion是怎么作业的,深入浅出!

Stable Diffusion的潜在空间为4x64x64,比图画像素空间小48倍。「咱们谈到的一切前向和反向分散实际上都是在潜在空间中完结的」

因而,在练习进程中,它不会生成噪声图画,而是在潜在空间(潜在噪声)中生成随机张量。它不是用噪声损坏图画,而是用潜在噪声损坏图画在潜在空间中的表明。正是这样的作法使得Stable Diffusion速度更快。

条件效果 Conditioning

即使这样还不行,文字提示在哪里进入图片?没有它,Stable Diffusion就不是文本到图画的模型。

这便是「条件效果」(Conditioning)的用武之地。条件效果的意图是引导噪声猜测器,以便猜测的噪声在从图画中减去后可以为咱们提供想要的成果。

下面概述了怎么处理文本提示并将其输入噪声猜测器。「分词器」(Tokenizer,Stable Diffusion v1.5运用CLIP的分词器)首要将提示中的每个单词转换为一个称为token的数字。然后,每个符号都会转换为一个称为embedding的768个值向量。embedding随后由文本转换器进行处理,并准备好供噪声猜测器运用。

一文看懂Stable Diffusion是怎么作业的,深入浅出!

但文本提示并不是调节安稳分散模型的仅有方法。文本提示和深度图画都用于调节深度到图画模型,ControlNet运用检测到的概括、人体姿态等来调节噪声猜测器,并完成对图画生成的出色操控。

这也是为什么Stable Diffusion不仅可以进行文生图,还可以图生图和部分重绘。以下便是Stable Diffusion的模型架构和文生图流程。

Stable Diffusion的模型架构

一文看懂Stable Diffusion是怎么作业的,深入浅出!
文生图流程

一文看懂Stable Diffusion是怎么作业的,深入浅出!

end~

看到这里你大概就弄懂了Stable Diffusion模型的运转进程了吧,假如觉得还不错的话,欢迎关注我。

也欢迎关注我的公棕号「ChaosstuffAI」,了解更多关于Stable Diffusion的常识与AIGC创作技巧!

一文看懂Stable Diffusion是怎么作业的,深入浅出!

Stable Diffusion 原理与技巧 第一篇:采样方法和采样步数

9个Stable Diffusion模型网站共享(应该是全网最全)