Stable Diffusion

image-20230418190503271

Stable Diffusion的大致工作流程如下:

首先,Stable Diffusion模型将潜在种子和文本提示作为输入。 然后使用潜在种子生成大小为 64×64 的随机潜在图像表示,而文本提示通过 CLIP 文本编码器转换为 77×768 的文本嵌入。

接下来,U-Net 以文本嵌入为条件迭代地对随机潜在图像表示进行去噪。 U-Net 的输出是噪声残差,用于通过调度算法计算去噪的潜在图像表示。 调度算法根据先前的噪声表示和预测的噪声残差计算预测的去噪图像表示。这里可选用的调度算法很多,每个算法各有优劣,对Stable Diffusion来说建议用以下几个:

PNDM scheduler(默认)
DDIM scheduler
K-LMS scheduler
去噪过程重复大约 50 次以逐步检索更好的潜在图像表示。 完成后,潜在图像表示由变分自动编码器的解码器部分解码。

本地部署Stable Diffusion

本地部署Stable Diffusion最简单的方法是使用Stable Diffusion Web Ui。

Stable Diffusion Web Ui是一套无代码、可视化的Stable Diffusion集成运行环境。它将Stable Diffusion的安装部署集成打包,提供一键安装脚本,并提供Web界面操作界面,极大简化了Stable Diffusion的操作和使用,让没有不懂代码的小白也能轻松上手使用Stable Diffusion模型。

使用Stable Diffusion Web Ui

界面介绍

Stable Diffusion Web Ui整体上分为2个部分,最上面是模型选择,可以从下拉列表中选择已下载的预训练模型在这里插入图片描述

模型选择下面是一个Tab栏,这里是Stable Diffusion Web Ui提供的所有功能。在这里插入图片描述

  • txt2img — 根据文本提示生成图像;
  • img2img — 根据提供的图像作为范本、结合文本提示生成图像;
  • Extras — 优化(清晰、扩展)图像;
  • PNG Info — 显示图像基本信息
  • Checkpoint Merger — 模型合并
  • Train — 根据提供的图片训练具有某种图像风格的模型
  • Settings — 系统设置

平时使用最多的是txt2imgimg2img,下面针对这2大块功能详细讲解。

txt2img

txt2img有三个区域:

  • 提示区
  • 参数调节区
  • 输出浏览区在这里插入图片描述

提示区主要是2个文本框,可以输入提示文本。其中:

prompt: 主要是对于图像进行描述。prompt对Stable Diffusion图像生成质量至关重要,因此如果想生成高质量图片,一定要在提示设计上下功夫。一个好的提示需要详细和具体,后面会专门讲解如何设计一个好的提示。

Negative prompt:主要是告诉模型我不想要什么样的风格或元素;

参数调节区提供了大量参数用于控制和优化生成过程:

Sampling method:扩散去噪算法的采样模式,不同采样模式会带来不一样的效果,具体需要在实际使用中测试;

Sampling steps:模型生成图片的迭代步数,每多一次迭代都会给 AI 更多的机会去对比 prompt 和 当前结果,从而进一步调整图片。更高的步数需要花费更多的计算时间,但却不一定意味着会有更好的结果。当然迭代步数不足肯定会降低输出的图像质量;

Width、Height:输出图像宽高,图片尺寸越大越消耗资源,显存小的要特别注意。一般不建议设置的太大,因为生成后可以通过 Extras 进行放大;

Batch count、 Batch size:控制生成几张图,前者计算时间长,后者需要显存大;

CFG Scale:分类器自由引导尺度,用于控制图像与提示的一致程度,值越低产生的内容越有创意;

Seed:随机种子,只要种子一样,参数和模型不变,生成的图像主体就不会剧烈变化,适用于对生成图像进行微调;

Restore faces:优化面部,当对生成的面部不满意时可以勾选该选项;

Tiling:生成一张可以平铺的图像;

Highres. fix:使用两个步骤的过程进行生成,以较小的分辨率创建图像,然后在不改变构图的情况下改进其中的细节,选中该选项会有一系列新的参数,其中重要的是:

Upscaler:缩放算法;

Upscale by:放大倍数;

Denoising strength:决定算法对图像内容的保留程度。0什么都不会改变,1会得到一个完全不同的图像;

img2img

img2img跟txt2img界面类似,不同的是没有了txt2img中的参数调节区,取而代之的是图像范本区。在这里插入图片描述

我们可以上传范本图片让Stable Diffusion模仿,其他地方跟txt2img相同

界面汉化

通过这里下载简体中文语言文件,下载完成后将其复制到项目文件夹的“localizations”目录中。之后在Settings -> User interface -> Localization (requires restart),在下拉菜单中选择zh_CN。如果下拉列表中看不到zh_CN,请先点击右侧的刷新按钮,然后就能在下拉列表中看到了。设置完成后记得点击页面上方的“Apply settings”按钮保存设置。
在这里插入图片描述

语言设置需要重启才能生效。Ctrl + C先终止Stable Diffusion Web Ui服务,然后再运行webui.batwebui.sh,重启后刷新浏览器页面就能看到语言变成了简体中文了。在这里插入图片描述

prompt语法

为了产生具有特定风格的图像,必须以特定格式提供文本提示。 这通常需要添加提示修饰符或添加更多关键字或关键短语来实现。下面为大家介绍一下Stable Diffusion的prompt语法规则。

Stable Diffusion提示文本中的关键字或关键短语通过半角逗号分割,一般越靠前权重越高。我们可以通过提示修饰符来认为修改权重。

  • (tag):增加权重5%
  • [tag]:降低权重5%
  • (tag: weight):设置具体权重值

Stable Diffusion资源列表

好的生成质量离不开好的模型,这里为大家列出了Stable Diffusion预训练模型资源的获取来源。

1.Hugging Face

Hugging Face是一个专注于构建、训练和部署先进开源机器学习模型的网站。

HuggingFace是Stable Diffusion模型创作的首选平台,目前平台上有270多个与Stable Diffusion相关的模型,用”Stable Diffusion”作为关键字就能搜到。
hugging face Stable Diffusion models search results

2. Civitai

Civitai是一个专为Stable Diffusion AI艺术模型设计的网站。该平台目前有来自250+创作者上传的1700个模型。这是迄今为止我所知的最大的AI模型库。你可以在上面分享自己的模型或生成作品。在这里插入图片描述

3. Discord

在Stable Diffusion的Discord页面中有一个名为“Models-Embeddings”的专属频道,里面提供了很多可以免费下载的各种模型。Models-embeddings Discord channel Discord page for Stable Diffusion