深入浅出讲解Stable Diffusion原理,新手也能看明白

本文详细介绍了StableDiffusion的工作原理,包括前向和反向扩散过程,以及如何在潜在空间中进行运算以提高效率。文章还探讨了变分自编码器在压缩图像和噪声预测因子在生成过程中的作用,以及文本条件如何引导图像生成。此外,提到了模型的不同版本及其训练数据对结果的影响。

说明

最近一段时间对多模态很感兴趣,尤其是Stable Diffusion,安装了环境,圆了自己艺术家的梦想。看了这方面的一些论文,也给人讲过一些这方面的原理,写了一些文章,具体可以参考我的文章:

北方的郎:图文匹配:Clip模型介绍

北方的郎:VQGAN(Vector Quantized Generative Adversarial Network)模型简介

北方的郎:当倚天剑遇到屠龙刀 VQGAN-CLIP 介绍

不知道看文章的人怎么看,听我讲的人经常反应的就是听不明白。于是我又在网上找了一下,发现这篇文章讲的很好,算得上是深入浅出,可惜是英文的,就把它翻译了一下:

https://stable-diffusion-art.com/how-stable-diffusion-work/

在翻译的过程中,我增加了自己的一些东西,调整了一些内容。

Stable Diffusion如何工作?

Stable Diffusion是一种深度学习模型。我们将深入探讨Stable Diffusion是如何工作的。你为什么需要知道这部分内容?除了它本身就是一个引人入胜的主题之外,对内在机制的一些理解将使您成为更好的艺术家。您可以正确使用该工具以获得更高精度的结果。文本到图像(text-to-image)与图像到图像(image-to-image)有何不同?什么是CFG价值?什么是降噪强度?您将在本文中找到答案。

Stable Diffusion能做什么?

在最简单的形式中,Stable Diffusion是一种文本到图像模式。给它一个文本提示(Text Prompt)。 它将返回与文本匹配的图像。

Stable Diffusion将文本提示转换为图像。

扩散模型(Diffusion model)

Stable Diffusion属于一类称为扩散模型(diffusion model)的深度学习模型。它们是生成模型,这意味着它们的目的是生成类似于它们训练数据的新数据。对于Stable Diffusion来说,数据就是图像。
为什么叫扩散模型?因为它的数学看起来很像物理学中的扩散。让我们来解释这个理念。假设我训练了一个只有两种图像的扩散模型:猫和狗。在下图中,左边的两个山峰代表猫和狗这两组图像。

前向扩散将照片变成噪点。(图修改自本文)

前向扩散(Forward diffusion)

前向扩散过程将噪声添加到训练图像中,逐渐将其转换为没有特点的噪声图像。前向过程会将任何猫或狗的图像变成噪声图像。最终,您将无法分辨它们最初是狗还是猫。就像一滴墨水掉进了一杯水里。墨滴在水中扩散。几分钟后,它会随机分布在整个水中。你再也分不清它最初是落在中心还是边缘附近。
下面是一个进行前向扩散的图像示例。猫的图像变成随机噪音。

猫图像的前向扩散。


反向/逆向扩散(Reverse diffusion)

现在是令人兴奋的部分。如果我们能逆转扩散呢?就像向后播放视频一样。时光倒流。我们将看到墨滴最初添加的位置。

反向扩散过程恢复图像。

从嘈杂、无意义的图像开始,反向扩散恢复了猫或狗的图像。这是主要思想。从技术上讲,每个扩散过程都有两部分:(1)漂移或定向运动和(2)随机运动。反向扩散向猫或狗的图像漂移,但两者之间没有任何变化。这就是为什么结果可以是猫或狗。

如何进行训练


反向扩散的想法无疑是聪明而优雅的。但重要的问题是,“怎么能做到呢?为了反向扩散,我们需要知道图像中添加了多少噪声。答案是教神经网络模型来预测增加的噪声。它被称为Stable Diffusion中的噪声预测因子(noise predictor)。这是一个U-Net模型。培训如下。

  1. 选择一个训练图像,例如猫的照片。
  2. 生成随机噪声图像。
  3. 通过将此噪声图像添加到一定数量的步骤来损坏训练图像。
  4. 训练噪声预测器告诉我们添加了多少噪声。这是通过调整其权重并向其显示正确答案来完成的。

噪声在每一步按顺序添加。噪声预测器估计每个步骤的总噪声加起来。

训练后,我们有一个噪声预测器,能够估计添加到图像中的噪声。

反向/逆向扩散(Reverse diffusion)

现在我们有了噪声预测器。要如何使用呢?
我们首先生成一个完全随机的图像,并要求噪声预测器告诉我们噪声。然后,我们从原始图像中减去这个估计的噪声。重复此过程几次。你会得到一只猫或一只狗的图像。

反向扩散的工作原理是从图像中连续减去预测的噪声。

您可能会注意到我们无法控制生成猫或狗的图像。当我们谈论条件反射时,我们将解决这个问题。目前,图像生成是无条件的

译者:大家可以结合这张WebUi的界面看后面的内容,其实后面的内容很好的解释了这些参数的用途。

Stable Diffusion Model


现在我需要告诉你一些坏消息:我们刚才谈论的不是Stable Diffusion的工作原理!原因是上述扩散过程是在图像空间中。它在计算上非常非常慢。 您甚至无法在任何单个GPU上运行,更不用说笔记本电脑上蹩脚的GPU了。

图像空间是巨大的。想一想:具有三个颜色通道(红色、绿色和蓝色)的 512×512 图像是一个 786,432 维的空间!

像谷歌的Imagen和Open AI的DALL-E这样的扩散模型都在像素空间中。他们使用了一些技巧来使模型更快,但仍然不够。

潜在扩散模型(Latent diffusion model)


Stable Diffusion旨在解决速度问题。方法如下:
Stable Diffusion是一种在潜在空间扩散(latent diffusion)的模型。它不是在高维图像空间中操作,而是首先将图像压缩到潜空间(latent space)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值