Featured image of post Stable Diffusion 快速入门

Stable Diffusion 快速入门

- 玩 AI 生成,看这里就对了

前言

Stable Diffusion 是一个开源的潜空间扩散模型(Latent Diffusion Model),主要用来根据文字生成图像(文生图),也可以在已有图片的基础上重绘(图生图)、局部重绘(inpainting)等。它的权重公开,在一张消费级显卡上就能本地运行,这也是它火起来的主要原因。

本文介绍 Stable Diffusion 的基本原理,以及如何在本地部署 WebUI 生成第一张图。

Stable Diffusion 是什么

扩散模型

扩散模型的思路很简单:训练时,不断往图片上加噪声,直到变成一片纯噪声,然后训练一个神经网络去学习“每一步该去掉多少噪声”。生成时反过来,从一张随机噪声开始,一步一步去噪,最终“还原”出一张图。

为什么叫“潜空间”

直接在像素上做几十步去噪,计算量非常大。Stable Diffusion 的做法(来自论文 High-Resolution Image Synthesis with Latent Diffusion Models)是:先用一个 VAE 把图像压缩到一个小得多的潜空间(latent space)里,在潜空间里完成去噪,最后再用 VAE 的解码器还原成像素图像。这样显存和算力需求就降到了普通显卡能承受的范围。

文字是怎么起作用的

提示词(prompt)先经过文本编码器(如 CLIP 的文本编码器)变成向量,在每一步去噪时作为条件输入去噪网络(U-Net),引导去噪往“符合描述”的方向走。整体流程如下:

Stable Diffusion 生成流程

几个组件对应到日常使用里:

组件作用你会接触到的地方
文本编码器把 prompt 变成向量提示词、负面提示词
U-Net(去噪网络)在潜空间里逐步去噪采样步数、采样器、CFG
VAE潜空间 ↔ 像素图像可单独更换 VAE 文件
随机噪声生成的起点种子(Seed)

平时下载的“模型”(checkpoint,.safetensors 文件)通常就是把以上几部分的权重打包在一起。

本地部署 Stable Diffusion WebUI

最流行的图形界面是 AUTOMATIC1111/stable-diffusion-webui(下文简称 WebUI),打开浏览器就能用。

硬件要求

  • 显卡:官方推荐 NVIDIA 显卡。显存 4GB 左右可以借助 --medvram / --lowvram 参数跑起来,8GB 及以上体验会好很多;SDXL 这类更大的模型对显存要求更高。AMD 显卡、Intel 显卡、Apple Silicon 也有对应的安装说明,但兼容性和速度不如 NVIDIA。
  • 硬盘:程序本身加上依赖要占用不少空间,单个模型文件通常就有几个 GB,建议预留几十 GB。
  • 网络:首次启动会自动下载 PyTorch 等依赖,需要能正常访问 GitHub 和 PyPI。

Windows

  1. 安装 Python,版本以 WebUI 的 README 为准(README 推荐 3.10.x,过新的 Python 可能装不上对应的 PyTorch),安装时勾选 Add Python to PATH;

  2. 安装 Git;

  3. 克隆仓库:

    1
    
    git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
    
  4. 在资源管理器里以普通用户(不要用管理员)身份双击运行 webui-user.bat。

Linux

  1. 安装依赖(以 Debian / Ubuntu 为例,其他发行版见 README):

    1
    
    sudo apt install wget git python3 python3-venv libgl1 libglib2.0-0
    
  2. 克隆仓库并启动:

    1
    2
    3
    
    git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
    cd stable-diffusion-webui
    ./webui.sh
    

macOS(Apple Silicon)

步骤和 Linux 类似,同样是克隆仓库后运行 ./webui.sh,需要先用 Homebrew 装好依赖,具体见官方 wiki 的 Installation on Apple Silicon。

首次启动

第一次运行会自动创建 Python 虚拟环境、安装 PyTorch 等依赖,耗时较长,耐心等待。看到类似下面的输出后,用浏览器打开地址即可:

1
Running on local URL:  http://127.0.0.1:7860

启动参数

启动参数写在 webui-user.bat(Windows)或 webui-user.sh(Linux / macOS)的 COMMANDLINE_ARGS 里,例如:

1
set COMMANDLINE_ARGS=--medvram --xformers
1
export COMMANDLINE_ARGS="--medvram --xformers"

常用的几个:

参数作用
--medvram / --lowvram降低显存占用(速度会变慢),显存小时使用
--xformers启用 xformers 加速注意力计算(NVIDIA 显卡)
--listen监听 0.0.0.0,允许局域网内其他设备访问
--api开启 API,方便用脚本调用

--listen 会把 WebUI 暴露到局域网,不要在公网服务器上裸开。

下载模型

WebUI 本身不等于模型,需要把模型文件(checkpoint)放到:

1
stable-diffusion-webui/models/Stable-diffusion/

推荐从 Hugging Face 上 Stability AI 的官方仓库下载,例如 SDXL 基础模型 stabilityai/stable-diffusion-xl-base-1.0 里的 sd_xl_base_1.0.safetensors。部分新模型需要登录 Hugging Face 并同意许可协议后才能下载。

放好之后,点 WebUI 左上角模型下拉框旁的刷新按钮,就能选到它了。

其他类型的文件也有各自的目录:

类型目录
Checkpoint 主模型models/Stable-diffusion/
VAEmodels/VAE/
LoRAmodels/Lora/

优先选择 .safetensors 格式。老的 .ckpt 格式基于 Python pickle,加载时有执行恶意代码的风险,来路不明的 .ckpt 不要用。

生成第一张图

打开 txt2img(文生图)标签页,界面上主要是这些参数:

WebUI 参数示意

参数说明建议
Prompt(提示词)想要画面里出现什么,用英文短语、逗号分隔效果最好主体 + 细节 + 风格,例如 a cat sitting on a windowsill, sunset, watercolor
Negative prompt(负面提示词)不想出现什么如 blurry, lowres, watermark
Sampling steps(采样步数)去噪的步数20~30 一般就够,太多收益很小
Sampling method(采样器)每一步怎么去噪的算法Euler a、DPM++ 2M 等都是常用选择
CFG Scale生成结果有多“听”提示词的话常用 5~8;太高画面容易过饱和、崩坏
Seed(种子)初始噪声的随机数-1 表示随机;固定种子 + 同样参数可以复现同一张图
Width / Height图片尺寸贴近模型训练分辨率:SD 1.5 约 512×512,SDXL 约 1024×1024

填好提示词,点右上角 Generate,几秒到几十秒后就能看到结果,生成的图片默认保存在 outputs/ 目录下。

图生图

img2img 标签页可以上传一张图片作为起点,其他参数和文生图基本一致,多了一个 Denoising strength(重绘幅度):数值越低越接近原图,越高改动越大。在 img2img 里还能用 Inpaint 只重绘涂抹的区域。

可选:ComfyUI

ComfyUI 是另一个很流行的前端,用节点 + 连线的方式搭建生成流程(工作流)。上手比 WebUI 陡一些,但流程完全透明、灵活,对新模型的支持通常也很快。

  • 新手推荐直接使用官方的 桌面版,Windows 上也有便携版可以下载;

  • 手动安装:克隆仓库,按 README 安装对应显卡的 PyTorch 后执行:

    1
    2
    
    pip install -r requirements.txt
    python main.py
    

    默认在 http://127.0.0.1:8188 打开。

  • 模型放在 ComfyUI/models/checkpoints/ 下。也可以在 ComfyUI 的 extra_model_paths.yaml 里配置,直接复用 WebUI 的模型目录,不用存两份。

总结

  1. Stable Diffusion 是在潜空间里做去噪的扩散模型,主要用来文生图、图生图;
  2. 本地部署推荐 WebUI:克隆仓库,运行 webui-user.bat / webui.sh,自动安装依赖;
  3. 模型从 Hugging Face 官方仓库下载,放进 models/Stable-diffusion/;
  4. 先用默认参数出图,再逐个调整提示词、步数、CFG、种子,感受每个参数的影响。

参考

由 Hugo 强力驱动