首页 > 其他分享 >基础篇:Stable Diffusion 基础原理详述

基础篇:Stable Diffusion 基础原理详述

时间:2024-07-04 16:30:41浏览次数:12  
标签:Diffusion 详述 Prompt Stable Encoder 图像 降噪

【基础篇】Stable Diffusion 基础原理详述

前言

我认为学习 ComfyUI 应该先从理论学起。

与传统绘图工具(如 Photoshop 或 Figma)相比,AI 绘图工具有着显著不同。首先,许多设置和操作在 AI 绘图工具中是非可视化的,这意味着即使你更改了某个配置,界面上也未必会有任何变化,这使得自学变得更加困难,难以像学习 Figma 那样通过自主探索来掌握。其次,AI 绘图工具的结果具有随机性,即使完全按照别人的教程操作,你也可能无法得到相同的结果,这更容易让人产生挫败感。

那有没有什么解决方案呢?

在我看来,学习这种工具的第一步并不是直接学习如何操作,而是应该先掌握与 AI 相关的理论知识。一旦你理解了这些基础知识,就能够明白这些绘图工具上的各种设置及用途,还能举一反三,开发出更多的使用方法。

因此,基础篇教程将从 Stable Diffusion 的基本概念入手。在你掌握了 Stable Diffusion 的基础知识后,我将进一步讲解如何使用 ComfyUI,这样你就能够真正理解其原理和应用。

目录

1.Stable Diffusion 原理概述

2.Image Information Creator(图像信息生成器)

3.Image Decoder(图片解码器)

4.Text Encoder(文本编码器)

5.总结

Stable Diffusion 原理概述

为了便于理解,我将尽量减少涉及数学和公式的部分,并采用类比的方式来帮助你掌握一些概念。因此,可能会出现一些不够严谨的地方。如果你有更好的解释,欢迎在评论区留言,我们一起讨论。

Stable Diffusion并非是一个单独的模型,而是由多个模型组合起来的一个体系。我将用最基本的文生图工作流来解释Stable Diffusion的基本结构和原理。

当我们输入一句提示词(1gril,sea,sky,sun,clothes)之后,Stable Dissusion将生成一张一个女孩在海边享受阳光的图。

IMG_256

实际上,整个生成过程包括三个主要步骤。我会先概述这三个步骤,让大家对 Stable Diffusion 有一个整体的认识,然后再详细讲解其中的细节:

  1. 首先,用户输入的 Prompt 会经过一个称为 Text Encoder(文本编码器)的模型,将其编译成词特征向量。这一步生成 77 个等长的向量,每个向量有 768 个维度。可以先简单地理解为「将人类能理解的文本转化为计算机能够识别的数字串」,后面我会详细解释这些向量的作用。
  2. 接着,这些特征向量会与一张随机图像(布满噪声的图像)一同放入 Image Information Creator。此时,计算机会将特征向量和随机图像转换到一个 Latent Space(潜空间),并通过特征向量的指导将随机图像“降噪”成一个“中间产物”。尽管这个“中间产物”目前对人类来说是无法理解的“图像”,只是一组数字,但它包含的信息实际上已经描绘了一个女孩在海边享受阳光。
  3. 最后,这个中间产物会被 Image Decoder(图片解码器)解码成一张人眼可以分辨的图片。

IMG_257

总体流程可以简单理解为:用户输入了一段 Prompt 指令,计算机会根据这个指令,在潜空间里将一张随机图降噪成符合指令要求的图片。

整个过程,与其说是 AI 在「生成」图片,不如说是「雕刻」更贴切。就像米开朗基罗在完成大卫雕像后所说的那样:雕像原本就存在于石头中,我只是将多余的部分去掉。

IMG_258

通过上图可以清晰的看出ComfyUI的生图过程。如图所示,ComfyUI生图时会分多次对图片进行「降噪」,这个过程发生在潜空间里,ComfyUI只是将最后一次降噪的结果解码成照片。

Image Information Creator(图像信息生成器)

接着上面所说,我们来详细分析一下降噪这个过程。

首先,整个降噪过程会在一个潜空间(Latent Space)中进行,并经过多步降噪。这些步骤(Steps)可以自己设置,通常步骤越多,图片质量越高,同时生图所需的时间也会更长。当然,这也取决于模型的性能。例如,Stable Diffusion XL Turbo 能在1步内生成图像,耗时不到1秒,并且生成的图片质量相当不错。那这个过程到底是怎么样的呢?如果我们将整个Denoise过程可视化,如下所示:

IMG_259

上图看起来很复杂,但不用害怕,只要懂得基本的加减乘除,我们就能理解每个降噪步骤:

IMG_260

  1. 首先,在降噪过程中有一个名为 Noise Predictor(噪音预测器)的模型,它的作用是预测随机图中的噪音成分。除了输入随机图像和 Prompt 的词特征向量外,还需要输入当前步骤的序号。在上面的可视化流程中,你可能会看到多个降噪步骤,但实际上程序运行的始终是同一个降噪模型,因此需要将步骤序号告知噪音预测器,以便它了解当前进行到哪一步。
  2. 接下来,我们先来看蓝色的线条,Noise Predictor 会使用随机图(例如一张 512*512 的图)和 Prompt 的词特征向量来预测出一张噪声图 B。注意,这里不是实际输出的图像,而是一张噪声图。换句话说,Noise Predictor 根据词向量来预测这张随机图中有哪些不需要的噪声。如果用前面雕刻的例子来类比,它输出的是雕像制作中不需要的废料。同时,Noise Predictor 还会使用不包含 Prompt 的词特征向量来预测出另一张噪声图 C(图中的橙色线条)。

注意:如果你想要改变最终生成图像的大小,例如将512*512改为1024*1024,不是通过提示词下达指令修改,而是通过修改随机图的比例或大小。就好比前面举得“雕刻”的例子,用 1 立方米的石头进行雕刻,不管雕刻师技艺有多好,都没法雕刻出一个高 10 米的雕像。它最多只能雕刻一个高 1 米的雕像。

  1. 接着,降噪步骤会将噪音图 B 和噪音图 C 相减,得到图 D。我们可以用简单的数学来解释这张图的意义。首先,图 B 是通过 Prompt 和随机图预测的噪声,可以简单理解为包含「根据 Prompt 预测的噪声」和「根据随机图预测的噪声」,而图 C 则仅包含「根据随机图预测的噪声」。因此,B 减去 C,就得到「根据 Prompt 预测的噪声」。
  2. 然后,降噪过程会将噪声图 D 通过乘以一个系数放大,这个系数在 Stable Diffusion 设置中被称为CFG。接着,将放大后的图与噪声图 C 相加,得到图 E。这样做的目的是提高图片生成的准确性,通过增加「根据 Prompt 预测的噪声」的权重来确保生成的图像与 Prompt 更加相关。如果没有这一步,生成的图片可能与 Prompt 的关联度较低。这种方法被称为 Classifier Free Guidance(无分类引导法)。
  3. 最后,降噪过程会将图 A 减去图 E,得到一张新的图像。这就像之前提到的“雕刻”过程,通过去除不需要的噪声来精炼图像。

如果你使用过 Stable Diffusion 工具,你会注意到 Prompt 输入框有两个,一个是正向的,一个是负向的。那么负向的 Prompt 如何起作用呢?用上面的数学方法来简单解释,当输入负向 Prompt 时,会生成一张噪声图 B2。此时,我们会用正向 Prompt 生成的噪声图 B1 减去 B2,然后再减去 C 得出 D。这意味着最终生成的图片会更加远离 B2,因为去除了更多与 B2 相关的噪声。

Image Decoder(图片解码器)

接下来,我们来讨论一下潜空间(Latent Space)。在学习这个概念时,我最大的疑惑是,为什么要在潜空间中进行处理,而不是直接对图像进行降噪?

要回答这个问题,首先需要理解什么是潜空间。

潜空间是机器学习和深度学习中用于表示数据的低维空间。它通过对原始数据进行编码和降维而生成的一组潜在变量。潜空间的维度通常比原始数据低,因此可以提取出数据中最关键的特征和结构。

虽然看起来很复杂,但简单来说,潜空间将图片编码成一组数字,同时对这些数字进行压缩。让我们通过可视化的方式来看看这个过程:

IMG_261

图片会首先通过一个图像编码器(Image Encoder)被编码成一组数据,并进行压缩。如果从像素的角度来衡量这种数据压缩效果,原始图像可能是 512x512 像素,而压缩后变为 64x64 像素,数据量大幅减少。然后再使用图像解码器(Image Decoder)进行还原。这个编码器和解码器组合的组件被称为变分自编码器(Variational Auto Encoder),简称 VAE。因此,图像解码器在一些产品中也称为 VAE 解码器。

那使用这个技术有什么益处和弊处呢?

益处:

  1. 首先,效率得到了极大提升。使用 VAE 后,即使是民用 GPU 也能以相对较快的速度完成降噪运算。同时,模型的训练时间也会显著缩短。
  2. 此外,潜空间的维度通常远低于原始图像的维度,这意味着它能更高效地表示图像特征。通过在潜空间中进行操作和插值,可以更精细地控制和编辑图像。这使得在生成图像时,可以更好地掌控图像的细节和风格,从而提升生成图像的质量和逼真度。

弊处:

  1. 编码和还原数据的过程中会导致一些数据丢失。由于潜空间的维度较低,它可能无法完全捕捉原始数据中的所有细节和特征,最终导致还原后的图片显得有些奇怪。

为什么 Stable Diffusion 生成的图片中的文字通常看起来很奇怪呢?原因有两方面。一方面,文字的一些 细节特征在这个过程中丢失了。另一方面,在预测噪声时,文字的预测相比图像的预测不那么连贯。例如, 预测猫的特征相对简单,因为猫通常有两个眼睛,眼睛下是鼻子,这些特征是连贯的。而英文单词“Cat”和中文字符“猫”差别很大,且很难预测。例如,中文的笔画大多由横、竖、勾、撇、捺组成,但很难预测撇之后是什么。

Text Encoder(文本编码器)

在最前面的流程中,我提到过,Text Encoder(文本编码器)会将你输入的 Prompt 编译成词特征向量。这一步会生成77个等长的向量,每个向量包含768个维度。那么这些向量具体有什么作用呢?

还有一个更有趣的问题是,当我们在 Prompt 中只输入“Cat”,并没有加入“stripe”这个词,为什么最后生成的猫是有斑点条纹的呢?要回答这个问题,我们需要先理解 Text Encoder 的实现原理。

目前,Stable Diffusion 常用的 Text Encoder 是 OpenAI 开源的 CLIP 模型,全称为对比语言图像预训练(Contrastive Language Image Pre-training)。我们先画个图来解释一下:

IMG_262

首先,CLIP 模型包含一个 Text Encoder,用于将文本转换为特征向量。同时,它还有一个 Image Encoder,将图像也转换成特征向量。如果这两个向量越接近,意味着文本描述与图像内容越匹配;相反,如果向量距离越远,则表明两者的相关性越低。

OpenAI 用 4 亿组图片和文本对对 CLIP 模型进行了训练,最终效果如图所示。当我们输入图片描述时,CLIP 能识别出与描述最接近的图片。例如,第四行描述为“一张斑点猫面部照片”,与第四张图片的相似度最高,达到 0.31,而与第一张书本截图的相似度仅为 0.12。

IMG_263

回到 Stable Diffusion,我们只使用了 CLIP 的 Text Encoder 部分,因为它能够将文本转换为对应的特征向量,并且这些特征向量与现实中的图像存在相关性。

再回到之前提到的两个问题,其实它们互为答案。

为什么当我们输入 "Cat" 时,生成的图像很可能是一只橘猫或斑点猫?这是因为 Text Encoder 将 "Cat" 转换成的 77 个等长向量 Embedding 中包含了与 "Cat" 相关的一些特征和意义:

  1. 形态特征:向量表示可能会捕捉到 "Cat" 的形态特征,例如它的体型、头部形状、四肢位置等。这些特征有助于区分 "Cat" 与其他动物或物体。
  2. 视觉特征:向量表示可能包含 "Cat" 的视觉特征,例如颜色、斑纹、眼睛的形状等。这些特征有助于识别 "Cat" 的外观特点。
  3. 语义含义:向量表示可能包含与 "Cat" 相关的语义信息,例如它是一种宠物、一种独立的动物,以及与人类的亲密关系等。这些含义有助于理解 "Cat" 在人类文化和社会中的角色和意义。

请注意,由于模型在某些方面具有不可解释性,这些向量实际上不一定包含上述特征。我举这些具体的例子主要是为了更好地解释这个概念。

最后,由于在 Stable Diffusion 中只使用了 CLIP 的 Text Encoder 部分,所以在某些产品中,它被称为 CLIP Text Encoder 或 CLIP Text Encode。

为什么在使用 Stable Diffusion 或 Midjourney 时,输入的 Prompt 不需要考虑语法且对大小写不敏感呢?这是因为这些 Prompt 会被 Text Encoder 转换成特征向量。语法和大小写在转换成特征向量后,都会变成 一串数字,这些细节在没有对模型进行特别调整的情况下,影响不大。

总结

感谢你阅读完这篇关于 Stable Diffusion 的基础详细解释。相信我,掌握了这些基础概念后,你会发现学习 ComfyUI 变得更加轻松。

孜孜以求,方能超越自我。坚持不懈,乃是成功关键。

标签:Diffusion,详述,Prompt,Stable,Encoder,图像,降噪
From: https://www.cnblogs.com/LIU-QiuXue/p/18284046

相关文章

  • Stable Diffusion 之 IP模型训练小白篇——只需4步就可上手
    前言在我们的日常设计工作中,设计师会经常接到3D的设计需求,根据以往的工作模式来看,我们需要在3D软件里面进行建模,渲染再进行输出。这样复杂的工作,会让工作时间变长,影响我们的工作效率。结合如今的AI工具,我们采用AIGC的能力,也许会有不同的解决方案,减少总设计时长。本文通过......
  • 新手必看!超强Stable Diffusion XL模型推荐,轻松打造惊艳AI图像!
    前言哈喽大家好我是大觉AI今天给大家推荐几款必备的StableDiffusionXL大模型,新手也能快速上手,我们知道决定StableDiffusion画面风格的就是取决于你的主模型,一开始上手时候不知道StableDiffusionXL如何选择,以及如何使用,本篇文章将推荐5款常用的StableDiffusionXL模型......
  • 解锁Diffusion Model: 初识Stable Diffusion、DALL-E、Imagen!
    前言扩散模型在生成高质量图像、视频、声音等方面表现突出。它们与物理学中的自然扩散过程相似而得名,自然扩散过程描述了分子如何从高浓度区域移动到低浓度区域。在机器学习的背景下,扩散模型通过逆转扩散过程来生成新数据。主要的思想是向数据添加随机噪声,然后反过来从噪声......
  • Stable Diffusion | 文生图&图生图
    Hello.大家好今天给大家带来StableDiffusion基础操作分享(文末可获取AI工具和学习资料)文生图&图生图1文生图首先是文生图,它分正向提示词和反向提示词,正向提示词意为你希望在画面中出现的物体,顾名思义,反向提示词则为不希望画面出现某些物件,比如我们希望在画面中有一位......
  • Stable Diffusion教程:文生图
    总结了StableDiffusion的一些基础知识,今天就给大家再唠叨一下文生图这个功能,会详细说明其中的各个参数。文生图是StableDiffusion的核心功能,它的核心能力就是根据提示词生成相应的图片。本文以StableDiffusionWebUI为例,使用方法参考下图:1、基础模型:选择一个用来......
  • Stable Diffusion教程:图生图
    大家好,我是每天分享AI应用的萤火君!“图生图”是StableDiffusion的核心功能之一,它的主要能力是根据现有的图片+提示词生成新的改造图片,这在日常的工作和生活中都特别有用。话不多说,让我们看看它都有什么神奇的魔法吧。基本使用本节以生成人物的二次元风格的照片为例......
  • AI绘画·为电商图优化赋能AI虚拟模特电商图实战StableDiffusion电商图优化教程
    随着科技的不断发展,AI绘画技术逐渐在电商领域展现出其独特的优势。StableDiffusion作为一种先进的AI绘画技术,为电商图优化提供了强有力的支持。本教程将详细介绍如何利用StableDiffusion技术实现AI虚拟模特电商图的优化。StableDiffusion技术概述StableDiffusion是一种基......
  • Stable Diffusion做AI儿童绘本副业创收居然超主业?变现方式详细拆解!新手小白必看!
    AI儿童绘本各大平台上故事绘本、幼儿园儿歌、英文绘本、古诗词,从下图里,可以看出需求量很大AI儿童绘本实现方式\1.gpt\2.leonardo.ai\3.Midjourney\4.StableDiffusion变现方式\1.自制绘本售卖\2.卖书卖课针对各位初学者,这里列举了一条完整的学习计划,感兴趣的可......
  • 我用Stable Diffusion做AI绘画美女,搞副业,赚钱真香!(内附高质量美女提示词)
    前言AI绘画虽然生成能力已经很强大了,但不是随便就能出高质量图的,比较依赖提示词,英文版效果会更好。今天就直接上干货,给铁子们上一些生成高质量美女的提示词,每一种美女类型都附有魔法咒语,可应用于midjourney和stablediffusion,直接复制即可。话不多说,直接上图,上提示词,请欣......
  • AI绘画Stable Diffusion 3.0大模型解锁AIGC写实摄影:摄影构图与视角关键提示,SD3模型最
    大家好,我是设计师阿威在现实摄影领域中,创作出优秀的摄影图像会涉及很多关键技术要素,如:光影效果、摄影构图(摄影机位置:相机与主体的距离)和摄影角度(相机相对于主体的位置)等的选择。这些核心要素对于AIGC绘图(StableDiffusion1.5/XL、Playground、Midjourney)创作也极为重要......