Stable Diffusion 作为一种先进的深度学习模型,在人工智能领域尤其是图像生成方面具有重要意义。
这个章节是学习使用AI绘图绕不过的,无论使用哪种工具,都需要对其原理有个基础的的了解。

“很简单,我去采石场,看见一块巨大的大理石,我在它身上看到了大卫。我要做的只是凿去多余的石头,去掉那些不该有的大理石,大卫就诞生了。” –米开朗琪罗

整体架构

Stable Diffusion 是一个复杂的系统,由多个组件协同工作。以文生图为例,用户输入文本提示(prompt)后,首先由 Text Encoder(如基于 CLIP 模型的文本编码器)将其转换为 77 个等长的向量,每个向量包含 768 个维度。这些向量包含了文本的形态、视觉和语义等特征信息,使得模型能理解用户需求。
接着,这些向量与一张随机图(可视为充满噪声的图)一同进入 Image Information Creator。在此组件中,它们先被转换到 Latent Space(潜空间),然后通过多步(Steps)降噪过程,将随机图逐步转化为包含用户所需图像信息的 “中间产物”。这个过程中,Noise Predictor 根据随机图、prompt 向量和当前 Step 数预测噪声图,通过一系列计算(如噪声图相减、放大并相加等操作)来去除不需要的噪声,且负向 prompt 也会影响噪声计算从而改变最终图像。
最后,Image Decoder 将潜空间中的 “中间产物” 解码为最终的图片,整个过程类似在充满噪点的图像中 “雕刻” 出符合 prompt 的图片。

技术原理

其基于扩散模型原理,通过在训练过程中学习如何给图像添加噪声然后逆向去除噪声来生成图像。潜空间技术是关键,它通过对原始图像进行编码和降维得到低维空间表示,大大提高了运算效率,使得民用 GPU 也能相对快速地完成任务,同时也有助于更好地控制图像的细节和风格。但该技术也存在一定弊端,如数据编码再还原过程中会导致部分数据丢失,使得图像可能出现一些细节缺失或奇怪的情况,例如生成图像中的文字可能不够准确。

降噪过程与原理

基础概念

在 Stable Diffusion 中,降噪是将随机噪声图逐步转化为符合文本提示(prompt)的清晰图像的关键过程。这个过程主要在 Latent Space(潜空间)中进行,潜空间通过对图像进行编码和降维,将其表示为一组潜在变量,使得在这个空间中进行操作能够提高效率并更好地控制图像特征。

详细步骤

  • 在 Image Information Creator 中的每一步降噪(Denoise)操作,都需要输入随机图、Prompt 的词特征向量以及当前的 Step 数。其中有一个 Noise Predictor(噪音预测器)模型发挥重要作用。
    对于一张初始的随机图(例如 4X4 大小,这里的大小对最终生成图像的比例和大小有影响,若要改变最终图像大小需调整随机图尺寸而非通过 Prompt 指令),Noise Predictor 会根据随机图和 Prompt 词特征向量预测出一张噪声图 B,同时不使用 Prompt 词特征向量预测出一张噪声图 C(蓝色线)。
  • 将噪声图 B 和 C 相减得出图 D,其意义在于得到 “根据 Prompt 预测的噪声”(因为 B 可简单理解为包含 “根据 Prompt 预测的噪声”+“根据随机图预测的噪声”,C 为 “根据随机图预测的噪声”,B - C 就隔离出了与 Prompt 相关的噪声部分)。
  • 将噪声图 C 放大,一般通过乘以一个系数(如 CFG、CFG Scale 或 Guidance Scale),这个操作是为了提高 “根据 Prompt 预测的噪声” 的权重,使得生成的图像更符合 Prompt 描述,然后将放大后的图与噪声图 C 相加得到图 E。
  • 将原始随机图 A 减去图 E,得到一张新的图,这就是一次降噪后的结果,通过不断重复这样的步骤(多 Steps),逐步去除噪声,使图像越来越清晰,直到达到预设的 Steps 数或满足生成条件,最终得到中间产物(潜空间中的图像表示),再由 Image Decoder 解码成最终的清晰图像。

负向 Prompt 的作用机制(与降噪相关)

当输入负向 Prompt 时,也会生成相应的噪声图 B2。此时,会用正向 Prompt 生成的噪声图 B1 减去 B2 再减去 C 得出 D,这意味着最终生成的图像会更加远离负向 Prompt 相关的噪声,从而使图像更符合正向 Prompt 的要求,并且避免出现负向 Prompt 所描述的特征。

与其他模型降噪对比(以 Midjourney 为例)

Midjourney 在生成图像时会展示图像从模糊甚至黑色(充满噪声)逐步变得清晰的过程,即每一步降噪后的图像变化都呈现给用户。而 Stable Diffusion 在 Image Information Creator 中进行多次降噪步骤,但只将最后一次降噪后的结果通过 Image Decoder 解码成最终图像展示给用户,用户在生成过程中看不到中间的降噪步骤图像变化。不过两者的最终目的都是通过降噪技术生成高质量、符合用户需求的图像,只是在展示方式和具体的降噪实现细节上可能存在差异,这些差异也会影响到用户对模型的使用体验和在不同场景下的选择。

Stable Diffusion 使用注意事项

prompt 的重要性:准确、详细的 prompt 是生成理想图像的关键。应明确描述图像的主题、风格、颜色、构图等要素,例如 “一个在阳光明媚的花园中穿着复古连衣裙的年轻女孩,周围是盛开的玫瑰,风格为印象派油画”。
参数调整:
Steps 参数影响图像质量,一般步数越多图像越精细,但会增加生成时间和计算资源消耗。
CFG Scale(Guidance Scale)用于调整图像与 prompt 的相关性,较高的值会使图像更符合 prompt 描述,但可能降低图像的多样性。
模型选择与更新:不同版本的 Stable Diffusion(如 Stable Diffusion XL Turbo 等)有不同特点,用户应根据实际需求选择合适的模型,并关注模型的更新以获取更好的性能和功能。

与其他模型对比

与 Midjourney 对比:
在生成过程中,Midjourney 会展示图像从模糊到清晰的逐步变化过程(降噪过程),而 Stable Diffusion 在 Image Information Creator 中多次降噪但只展示最终解码后的图像。
两者都能生成高质量图像,但在图像风格、细节表现等方面可能因模型训练和算法差异而有所不同,用户可根据个人喜好和需求选择。

参考资料

Stable Diffusion 基础 - Comflowy - 链接