Stable Diffusion模型原理

这篇具有很好参考价值的文章主要介绍了Stable Diffusion模型原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 Stable Diffusion概述

1.1 图像生成的发展

在Stable Diffusion诞生之前,计算机视觉和机器学习方面最重要的突破是 GAN(Generative Adversarial Networks 生成对抗网络)。GAN让超越训练数据已有内容成为可能,从而打开了一个全新领域——现在称之为生成建模。

然而,在经历了一段蓬勃发展后,GAN开始暴露出一些瓶颈和弊病,大家倾注了很多心血努力解决对抗性方法所面临的一些瓶颈,但是鲜有突破,GAN由此进入平台期。GAN的主要问题在于:

  • 图像生成缺乏多样性
  • 模式崩溃
  • 多模态分布学习困难
  • 训练时间长
  • 由于问题表述的对抗性,不容易训练

另外,还有一条基于似然(例如,马尔可夫随机场)的技术路线,尽管已经存在很久,但由于对每个问题的实施和制定都很复杂,因此未能产生重大影响。

近几年,随着算力的增长,一些过去算力无法满足的复杂算法得以实现,其中有一种方法叫“扩散模型”——一种从气体扩散的物理过程中汲取灵感并试图在多个科学领域模拟相同现象的方法。该模型在图像生成领域展现了巨大的潜力,成为今天Stable Diffusion的基础。

1.2 Stable Diffusion介绍

Stable Diffusion是stability.ai开源的图像生成模型,可以说Stable Diffusion的发布将AI图像生成提高到了全新高度。Stable Diffusion 作为一款高性能模型,它生成的图像质量更高、运行速度更快、消耗的资源以及内存占用更小,是 AI 图像生成领域的里程碑。

Stable Diffusion模型原理,深度学习模型,stable diffusion

1.3 Stable Diffusion组成

 Stable Diffusion不是一个整体模型,它由几个组件和模型组成。

  • 文本理解组件:text-understanding component ,将文本信息转换成数字表示,以捕捉文本中的想法。
  • 图像生成器:image generator,图像生成器包括两步,图像信息创建者( Image information creator)和图像解码器(Image Decoder)。

图像信息创建者这一组件运行多步以生成对象,这是stable diffusion接口和库中的步长参数,通常默认为50或者100。图像信息创建者完全在图像信息空间(隐藏空间)中工作,此特性比在像素空间中工作的扩散模型更快。

图像解码器根据从图像信息创建者哪里获得信息绘制图片,它仅仅在生成最终图像的结束阶段运行一次。

Stable Diffusion模型原理,深度学习模型,stable diffusion

 上图是stable diffusion的一个流程图,包含了上述描述的三个组件,每个组件都有相应的神经网络。

  • 文本理解组件:Clip Text为文本编码器。以77 token为输入,输出为77 token 嵌入向量,每个向量有768维度

  • 图像信息创建者:UNet+Scheduler,在潜在空间中逐步处理扩散信息。以文本嵌入向量和由噪声组成的起始多维数组为输入,输出处理的信息数组。

  • 图像解码器:**自动编码解码器,使用处理后的信息数组绘制最终的图像。以处理后的维度为 4×64×64的信息数组为输入,输出尺寸为3×512×512的图像。

2 Stable Diffusion工作原理

2.1 到底何为扩散(Diffusion)

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

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

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

2.2 通过降噪绘图

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

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

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

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

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

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

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

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

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

2.5 如何训练 CLIP

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

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

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

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

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

可以看到:

  • 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 向量,在网络层中使用

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

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

Stable Diffusion模型原理,深度学习模型,stable diffusion

文本信息不直接由 ResNet 处理,而是通过注意力层将这些文本表示融入到 latents 中。这样,下一个 ResNet 就能在处理过程中利用融入的文本信息。文章来源地址https://www.toymoban.com/news/detail-775947.html

到了这里,关于Stable Diffusion模型原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Stable Diffusion模型原理

    在Stable Diffusion诞生之前,计算机视觉和机器学习方面最重要的突破是 GAN(Generative Adversarial Networks 生成对抗网络)。GAN让超越训练数据已有内容成为可能,从而打开了一个全新领域——现在称之为生成建模。 然而,在经历了一段蓬勃发展后,GAN开始暴露出一些瓶颈和弊病,

    2024年02月03日
    浏览(68)
  • 【深度学习】Stable Diffusion

    Stable Diffusion原理: https://zhuanlan.zhihu.com/p/632866251 https://zhuanlan.zhihu.com/p/613337342 源码中的模型:

    2024年02月11日
    浏览(47)
  • AI 作画:Stable Diffusion 模型原理与实践

    本文首先简单介绍 Stable Diffusion 模型结构 Latent Diffusion 的论文和博客,然后介绍模型的训练和推理技术细节(不含数学推导),接着介绍几个 prompt 搜索引擎等实用工具,最后简单介绍 AI 作画(图像生成)的发展史,并测试了 Stable Diffusion 不同风格和 prompt 的生成样例。 Mod

    2024年02月10日
    浏览(50)
  • Stable Diffusion生成式扩散模型代码实现原理

    Stable Diffusion可以使用PyTorch或TensorFlow等深度学习框架来实现。这些框架提供了一系列的工具和函数,使得开发者可以更方便地构建、训练和部署深度学习模型。因此可以使用PyTorch或TensorFlow来实现Stable Diffusion模型。 安装PyTorch:确保您已经安装了PyTorch,并具备基本的PyTorch使用

    2024年03月13日
    浏览(47)
  • AI绘画Stable Diffusion原理之扩散模型DDPM

    传送门: stable diffusion:Git|论文 stable-diffusion-webui:Git Google Colab Notebook部署stable-diffusion-webui:Git kaggle Notebook部署stable-diffusion-webui:Git AI绘画,输入一段文本就能生成相关的图像,stable diffusion便是其中一个重要分支。自己对其中的原理比较感兴趣,因此开启这个系列的文章

    2024年02月03日
    浏览(50)
  • 由浅入深理解latent diffusion/stable diffusion(2):扩散生成模型的工作原理

    Diffusion Models专栏文章汇总:入门与实战 前言: 关于如何使用stable diffusion的文章已经够多了,但是由浅入深探索stable diffusion models背后原理,如何在自己的科研中运用stable diffusion预训练模型的博客少之又少。本系列计划写5篇文章,和读者一起遨游diffusion models的世界!本文主

    2024年02月08日
    浏览(54)
  • Stable Diffusion学习指南【模型篇】

    模型作为机器学习后的结晶,可以说是对绘图画面影响最大的因素之一,一款好的模型即使不写提示词,出的图都会比绞尽脑汁编写咒语出的图更精美。但当我们兴致勃勃的下载了一堆模型后,往往会被一堆看不懂的文件后缀给乱花了眼,为什么模型要划分这么多类型、不同

    2024年02月01日
    浏览(62)
  • 全网最全Stable Diffusion原理快速上手,模型结构、关键组件、训练预测方式!!!!

    手把手教你入门绘图超强的AI绘画程序,用户只需要输入一段图片的文字描述,即可生成精美的绘画。给大家带来了全新保姆级教程资料包(文末可获取) 在这篇博客中,将会用机器学习入门级描述,来介绍Stable Diffusion的关键原理。目前,网络上的使用教程非常多,本篇中不

    2024年02月22日
    浏览(66)
  • 【AIGC】Stable Diffusion原理快速上手,模型结构、关键组件、训练预测方式

    在这篇博客中,将会用机器学习入门级描述,来介绍Stable Diffusion的关键原理。目前,网络上的使用教程非常多,本篇中不会介绍如何部署、使用或者微调SD模型。也会尽量精简语言,无公式推导,旨在理解思想。让有机器学习基础的朋友,可以快速了解SD模型的重要部分。如

    2024年02月08日
    浏览(63)
  • Stable Diffusion with Diffusers 学习笔记: 原理+完整pipeline代码

    参考链接: https://huggingface.co/blog/stable_diffusion#how-does-stable-diffusion-work 在这篇文章中,我们想展示如何使用Stable Diffusion with the 🧨 Diffusers library,,解释模型是如何工作的,最后深入探讨扩散器是如何允许自定义图像生成pipeline的。 如果你对扩散模型完全陌生,我们建议你阅读

    2024年02月05日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包