Stable Diffusion高级教程 - 如何使用Stable Diffusion?
前言
今天这篇介绍怎么运行 SD,包含在线使用和本地运行 stable-diffusion-webui,并体验效果。
Civitai 平台
首先要介绍一个平台: Civitai 是目前最知名的 Stable Diffusion AI 艺术模型的社区平台,用户把它称为 C 站,它里面有非常多用户上传的模型:
另外可以通过图片过滤,且模型里面会列出相关用户上传的优质图片。图片页面有相关的提示词文本、使用的模型以及采样数据等参数,可以帮助还不熟悉 Stable Diffusion 的用户快速上手:
PS: Browing mode 选择 Everything 有惊喜,请做好心理建设哟~
在线使用 Stable Diffusion
如果你只是想要试玩一下,最简单的方法就是在线访问 Stable Diffusion 官方网站 https://beta.dreamstudio.ai/ ,可以免费产生约一百张图,之后需付少许费用。
其实还有一些其他在线服务,但都是阉割版 (例如不支持模型选择,不支持插件等等),无法体现 Stable Diffusion 的真实能力,就不推荐了,大家认准官方就好了。
本地部署 Stable Diffusion
这个我主推的方式,也是玩 Stable Diffusion 最有意思的地方。目前最主流的方法就是使用 https://github.com/AUTOMATIC1111/stable-diffusion-webui 这个项目,本地运行一个 Python 的 Web UI。
首先要明确 AI 绘画需要进行大量的图像处理和计算,所以对于电脑是有硬件要求的:
本地运行需要需要足够大的显存 (独立显卡的内存),最低配置 10GB 显存,越大越好。 内存也不能太小,最好大于 16GB。显存大小决定了你能生成的图片尺寸,一般而言图片尺寸越大,SD 能发挥的地方越多,画面里填充的细节就越多。 通常都是用通过 GPU 来跑 SD,因为 GPU 会加速计算。但用 CPU 跑也是可以的,但是速度会非常慢:例如一张显卡 30 秒就能算好的图,CPU 要算 10 分钟。
我的电脑是 Macbook M1 架构,所以参照的官方 wiki 文档 Installation on Apple Silicon 配置即可,简单看了下启动脚本,即便不是 Python 开发者我认为也可以顺滑的完成启动过程。接下来是我配置的过程:
首先下载相关依赖和 stable-diffusion-webui:
➜ brew install cmake protobuf rust python@3.10 git wget
➜ cd ~/workspace
➜ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
 | 
目前只是代码克隆下来,还没有任何可用模型,此时可以从文档提到的 Hugging Face 或者 C 站 Civitai.com 下载模型。
模型格式一般是.ckpt 或者.safetensors 作为文件扩展名。格式的区别是:
.ckpt: 包含 Python 代码的压缩文件,对于 Python 语言的程序来说很通用方便,缺点是文件很大,一般 2-8G。.safetensors: 只包含生成所需的数据,不包含代码,一般只有几十到几百 M,加载文件也更安全和快速。
我一般从 C 站下载,找了一个例子: https://civitai.com/models/25995/blindbox
注意,这是一个 Lora 模型 (右侧信息中的 Type 是 LORA),所以和文档说的放在 models/Stable-diffusion 目录不同,应该放在 models/Lora。
mv ~/Downloads/blindbox_V1Mix.safetensors ~/workspace/stable-diffusion-webui/models/Lora  | 
然后拉到页面下面,我找到了一个生成的效果图 https://civitai.com/images/421118?period=AllTime&sort=Most+Reactions&modelVersionId=32988&modelId=25995&postId=128086
可以看到生成这个图时候用的各个参数,注意其中的 Model 叫做`revAnimated_v11・,本地也没有需要下载,可以先搜一下就找到了: https://civitai.com/models/7371/rev-animated
可以看到右侧的 Type 说明它是一个 CHECKPOINT 的类型,下载并把它放在 models/Stable-diffusion 目录:
mv ~/Downloads/revAnimated_v122.safetensors ~/workspace/stable-diffusion-webui/models/Stable-diffusion  | 
这里提一下 Checkpoint 这个模型类型,按我的理解它表示存档点,就是可以使用开源的 Stable-diffusion 不同版本的某个点作为模型使用。另外这个模型子类型叫做 Checkpoint Merge,也就是它是将多个模型混合在一起,而且合并后不同的模型占了不一样的比例的权重。
然后启动 webUI:
cd stable-diffusion-webui
./webui.sh
 | 
第一次启动会下载相关依赖,比较慢,下载完成就会看到启动提示:
...
Running on local URL:  http://127.0.0.1:7860
 | 
打开浏览器,访问这个地址就可以看到 Web 页面了。SD 目前支持文生图和图生图 2 个模式,这篇文章先体验文生图,图生图因为需要很多额外的知识我们过段时间铺垫完了再专门写。
文本转图片 (txt2img)
这是 SD 最基础的功能,将文本提示转换为图像。还是用上面提到的 blindbox 的例子,就用它的各种参数,唯一要提的是「Batch size」选了 8,,就是一次性生成 8 张图 (事实是 9 张,另外一张是全部图的缩略图),然后点右侧的「Generate」,就会开始生成了,大概...
剩余内容已隐藏