Stable Diffusion零基础学习指南:名词辨析、运行原理与文生图三大组件(CLIP/U-Net/VAE)详解

平台:oii、seko、lovart

关于 Stable Diffusion 的几个名词

Stable Diffusion 名词一览

  • Diffusion Model:扩散模型,一款支持文本生成图像的算法模型,目前市面上主流的DALL E、Midjourney、Stable Diffusion等AI绘画工具都是基于此底层模型开发的
  • Latent Diffusion Model:即潜在扩散模型,基于上面扩散模型基础上研制出的更高级模型,升级点在于图像图形生成速度更快,而且对计算资源和内存消耗需求更低
  • Stable Diffusion:简称SD模型,其底层模型就是上面的潜在扩散模型,之所以叫这个名字是因为其研发公司名叫Stability AI,相当于品牌冠名了
  • Stable Diffusion Web UI:简称SD WebUI,用于操作上面Stable Diffusion 模型的网页端界面,通过该操作系统就能控制模型出图,而无需学习代码

Stable Diffusion模型的运行原理

Diffusion模型是图像生成领域中应用最广的生成式模型之一,除此之外市面上还有生成对抗模型(GAN)、变分自动编码器(VAE)、流模型(Flow based Model)等其他模型,它们都是基于深度学习为训练方式的模型。

图片来源:DeepGenerative Models for Text-to-Speech Synthesis

扩散模型之所以用Diffusion来命名,因为它的运作过程就是向训练图像不断地添加噪声,直到变为一张无意义的纯噪声图,再逐步恢复的过程。

其中加噪的过程就像在干净的水中滴了一滴墨汁,颜料会逐渐向整个水体扩散,直至整个水体变浑。如果你之前有尝试过AI绘画,会发现整个绘图过程就是从一张模糊的噪声图,逐渐变为清晰的图像,而这就是逆向降噪的过程。

扩散算法的过程

正常来说,标准的扩散模型已经可以实现图像训练和绘制了,为什么要再出一套 Latent Diffusion Model 潜在扩散模型呢?这里主要是为了计算量的问题:

标准的扩散模型是在像素空间(可以理解为高维空间)中进行的,对于一张512x512尺寸的RBG图片,这将是一个768432(512x512x3)维度的空间,意味着生成一张图需要确定768432个值,这个过程往往需要多台专业显卡同时运算,我们平时自己用的商业级显卡资源是不可能完成这个任务的。

而潜在扩散模型就是解决这个问题的,它的过程是先把训练图像先缩小48倍再进行运算,结束后再恢复到原始尺寸,这样运算过程中需要处理的计算数据就少了许多,运算速度也会比正常的像素空间中快了很多,在硬件上的要求也大大降低,而这个压缩后再运算的空间就是Latent潜空间(可以理解为低维空间)。

潜在扩散模型的工作原理

以上是潜在扩散模型的工作原理,但Stable Diffusion模型并不是单一的文生图模型,而是多个模型组成的运作系统,其中的技术可以拆解为3个结构来看:

Stable Diffusion模型的文生图流程拆解

  • ClipText 文本编码器:用于解析提示词的Clip模型
  • Diffusion扩散模型:用于生成图像的U-Net 和Scheduler
  • VAE模型:用于压缩和恢复的图像解码器

先来看看编码器Clip,它是由OpenAI公司开发的模型,包括文本编码和图像编码2个部分,分别用于提取文本和图像的特征,通过搜集大量网络上的图像和文字信息再对Clip模型进行训练,可以实现文本和图像的对应关系。

Clip是由OpenAI公司研发,用于链接文本和图像的模型

在SD模型运作过程中,它可以提取提示词文本部分的特征传递给图像生成器,让模型理解我们输入的提示词内容,从而达到文本控制图像生成的目的。

图像生成器里包含了 U-Net神经网络Scheduler采样算法 2个部分。

U-Net 原本是用于生物医学图像分割的神经网络模型,因为工作结构像一个U型字母,因此被称为U型神经网络训练模型。在扩散模型中,U-Net可以辅助提取并解构训练图像的特征,有了它就能在较少训练样本的情况下获得更加准确多样的数据信息,从而使模型在出图结果上更加精确。

U-Net模型是一种解构图像特征的神经网络算法,因其结构形似字母U而得名

在训练扩散模型过程中,可以采用不同的算法来添加噪音,而 Scheduler 就是用来定义使用哪种算法来运行程序,它可以定义降噪的步骤、是否具备随机性、查找去噪后样本的算法等,因此它又被称为采样算法。在WebUI中,它是可调节的一项,可以根据图像类型和使用的模型来选择不同的采样器,从而达到更佳的出图效果。

Scheduler是用于控制添加噪声方法的函数,在WebUI中作为采样方法参数可以切换

最后的解码器VAE,全称是Variational Auto Encoder变分自动编码器。简单来说,它的作用就是将高维数据(像素空间)映射到低维空间(潜空间),从而实现数据的压缩和降维。它由编码器(Encoder)和解码器(Decoder)两部分组成,编码器用于将图像信息降维并传入潜空间中,解码器将潜在数据表示转换回原始图像,而在潜在扩散模型的推理生成过程中我们只需用到VAE的解码器部分。

VAE模型可优化主模型的出图效果,像是添加了一层修图滤镜

在WebUI中,VAE模型一般是训练好的内置模型,实际效果类似模型的调色滤镜,可以修饰最终图像的色彩和质感。

是不是看到这里已经有点头晕了,别担心,这里只需简单了解每一部分的功能即可,在后续WebUI的功能介绍中我们还和他们有更深的接触,到时候就更容易理解每一部分的概念了。

本文结束 感谢您的阅读