Stable Diffusion,(以后简称SD)。首先理解名字。翻译过来就是稳定扩散。为啥叫这个名字?因为sd是基于扩散(diffusion)模型。
严格说来它是一个由几个组件(模型)构成的系统,而非单独的一个模型。
顺便说一句,Midjourney 也是基于diffusion模型。
sd工作原理
扩散模型画图的原理和雕刻很像。就像米开朗基罗的话:雕塑本来就在这块石头里,我只是把无用的部分去掉。
扩散模型画图就是将无用部分去掉的过程。sd从一个随机噪声图出发,逐步去除噪声,最终生成一张高质量的图片
基于扩散模型实现 AI 绘画的精髓就在于,如何实现这个逐步去除噪声的过程。在每一步的去噪过程中,起作用的是一个需要训练的神经网络,也就是一个 UNet
以文生图为例,
当我们输入一句 prompt 后,比如“Cat, standing on the table”,SD会生成一张猫站在桌子上的图,看似只有一步。
但SD实际上进行了以下三大步骤
用户输入的 Prompt 会被一个叫 Text Encoder(文本编译器)的东西编译成一个个的词特征向量。此步骤下会输出 77 个等长的向量,每个向量包含 768 个维度。现在可以简单将其理解为「将文本转化为机器能识别的多组数字」。
这些特征向量会和一张随机图(可以简单理解这是一张布满电子雪花的图,或充满信息噪声的图),一起放到 Image Information Creator 里。在这一步,机器会将这些特征向量和随机图先转化到一个 Latent Space(潜空间)里,然后根据这些特征向量,将随机图「降噪」为一个「中间产物」。你可以简单理解,此时的「中间产物」是人类看不懂的「图」,是一堆数字,但此时这个中间产物所呈现的信息已经是是一只站在桌子上的猫了
最后,这个中间产物会被 Image Decoder(图片解码器)解码成一张真正的图片
Stable Diffusion checkpoint:这里可以选择已经下载的模型。目前许多平台支持开源的 SD 模型下载,例如 Civitai、Hugging Face 等。
txt2img:这个选项表示启用文生图(text-to-image)功能。类似地,img2img 等选项则代表其他功能。
prompt:用于生成图像的文字输入,需要使用英文输入,但你也可以通过探索 Extensions 来实现中文输入。
negative prompt:这是生成图像的反向提示词,用于指定你不希望模型生成的内容。例如,如果你不想图像中出现红色,可以在这里输入“red”。
Sampling method:不同的采样算法,这里深入了 Diffusion 算法领域,稍后我们会更详细地讲解。简单来说,通过这些采样算法,噪声图像可以逐渐变得更清晰。
Sampling steps:与采样算法配合使用,表示生成图像的步数。步数越大,需要等待的时间越长。通常 20-30 步就足够了。
Width & Height:生成图像的宽度和高度。
Batch size:每次生成的图像数。如果显存不够大,建议调小这个数值。
CFG scale:这里表示 prompt 的影响程度。值越大,prompt 的影响就越大。
Seed:生成图像的随机种子,类似于抽奖的幸运种子,会影响生成的图像结果。
模型内包含海量的权重参数,我们下载的动辄几GB的权重,存储的主要就是这些数值。你可以理解为,这些权重参数被用于完成复杂的计算,得到我们预期的AI绘画结果。