前言
Stable Diffusion目前的生态演化得比较复杂,虽说有A1111做的WebUI,但我作为使用者有时候用起来也一头雾水,总之希望写一些使用中遇到的问题和技巧,以免未来重蹈覆辙吧(当然能帮到其他人的话那就更好了)。
安装部署
Windows上已经有Stable Diffusion整合包了,功能也比较全,直接安装即可,此处简单写一下Linux环境下的WebUI部署方法。
- 克隆WebUI仓库,在Shell中运行如下代码:
|
|
注意
可预先设置一下Git HTTP代理,假设你的代理服务器在
http://proxy.server:7890
,执行
1 2
git config --global http.proxy http://proxy.server:7890 git config --global https.proxy http://proxy.server:7890
- 移至仓库目录,进行依赖安装:
|
|
注意
可以预先设置Shell的HTTP代理,沿用上文的代理服务器,则可执行
1 2 3 4
http_proxy=http://proxy.server:7890 https_proxy=$http_proxy HTTP_PROXY=$http_proxy HTTPS_PROXY=$http_proxy
-
不出意外的话在经过漫长的等待后就可以访问一个localhost的网页了。
-
检查WebUI成功部署后,可以退出进程,重新将进程在后台执行:
|
|
注意
可以将上述代码保存在
start_server.sh
之类的shell脚本文件中,以便后续重复启动。
注意
可以在第二行的python命令中添加命令行参数 ,常用的如下:
--listen
侦听0.0.0.0
网段,暴露给公网。--port PORT
侦听PORT
端口,改成你想要的端口号。--device-id DEVICE_ID
使用DEVICE_ID
对应的CUDA设备。--opt-sdp-attention
使用PyTorch 2.0时可以调用,加速推理、减少VRAM占用。--xformers
使用xformers加速推理、减少VRAM,与上一项二选一即可。--medvram
将推理分成三部分放入VRAM处理,用时间换空间,显存低于6GB可尝试。--lowvram
进一步降低VRAM消耗。
基本使用
要生成质量尚可的结果,一般而言有如下步骤:
- 以低分辨率、低采样步数使用Stable Diffusion生成草稿图。
- 将草稿图使用Upscaler超采样得到高分辨率草稿图。
- 将高分辨率草稿图导入
img2img
,以高分辨率、高采样步数使用Stable Diffusion生成精细大图。
其中,后两步可直接由txt2img
标签页的Hires. fix
选项一键完成。此外,还有其他常用细节控制方法:
ControlNet
:利用一张辅助图片帮助模型生成大致相似的形状、动作等。- Inpaint:对生成图片进行微调,可以处理一些错误细节。
- LoRA:使用图片数据集进行风格微调,可以实现轻量级的风格迁移。
- Textual Inversion:训练特定的Embedding,帮助生成或者排除指定的主题。
Stable Diffusion基础模型
首先你需要有一个基本的Stable Diffusion模型。可以从Civitai
下载一个你喜欢的、标签为CHECKPOINT
的模型,其文件后缀名通常为ckpt
或safetensors
,直接放入models/Stable-diffusion
文件夹里。
注意
文件夹里所有的模型都会被新版WebUI识别,并且可以在左上角进行切换。如果你没找到,建议用
git pull
更新一下WebUI仓库,或者重新搞吧。
Upscaler
Latent系列Upscaler是可以直接使用的,因为他只是改了Stable Diffusion内的latent维度。
我尝试了SwinIR、Swin2SR这两个Upscaler,只需要像基础模型一样放入对应的文件夹即可。SwinIR是放到models/SwinIR
里。
ControlNet
ControlNet插件可以直接在Extension
标签页里安装,点击Available
的Load from
按钮,找到sd-webui-controlnet
安装,在Installed
里应用并重启UI即可。
ControlNet模型文件可以去Huggingface之类的地方下载,放在extensions/sd-webui-controlnet/models
里。
LoRA
LoRA模型文件可以在Civitai
下载,放入models/LoRA
文件夹里。
使用的时候在prompt中添加一项<lora:filename:weight>
即可(filename
即为你下载的LoRA模型文件名,weight
为权重)。
Textual Inversion
Embedding文件通常是pt
或safetensors
文件,放在embeddings
文件夹里。
使用时直接在prompt里添加对应文件名的一项即可,如果成功会在生成图片后,下方文字部分提示使用的Embedding。
VAE
VAE可以作为Stable Diffusion基础模型的附属模型放在它旁边(一般会在文件名里多一个.vae
),但是也可以下载单独的模型放在models/VAE
里。
记得在WebUI Settings - Stable Diffusion - SD VAE
里选择你要的VAE模型。
注意
如果你的图片生成出来灰蒙蒙的,饱和度和对比度低,很可能是因为没有使用VAE模型。去找找你基础模型对应的VAE模型文件,或者下一个通用的放到VAE文件夹里使用。