Stable Diffusion WebUI¶
为什么要学 Stable Diffusion WebUI¶
Stable Diffusion WebUI(通常指 AUTOMATIC1111 的 webui)是本地运行 Stable Diffusion 图像生成模型的最流行界面。它提供了丰富的图像生成、编辑和后处理功能,支持各种插件扩展,可以实现从文生图、图生图到 ControlNet 精确控制等多种创作方式。对于需要在本地进行 AI 图像创作且不想付费使用 Midjourney 的用户来说,WebUI 是功能最全面的免费方案。
核心概念¶
| 概念 | 白话解释 | 用途 |
|---|---|---|
| txt2img | 文生图 | 从文字描述生成图片 |
| img2img | 图生图 | 基于参考图修改生成新图 |
| Checkpoint | 模型文件 | 预训练的图像生成模型 |
| LoRA | 低秩适应 | 轻量微调模型,调整风格 |
| ControlNet | 控制网络 | 用姿势、线稿等精确控制生成 |
| Sampler | 采样器 | 生成图像的算法(Euler/DPM等) |
| CFG Scale | 引导系数 | 文字描述对图像的影响程度 |
| Prompt | 提示词 | 描述想要生成图像的文字 |
| Negative Prompt | 反向提示词 | 描述不想出现的元素 |
安装配置¶
安装步骤¶
# 前置:Python 3.10, Git, CUDA
# 克隆仓库
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
# Linux/macOS
bash webui.sh
# Windows
webui-user.bat
# 首次启动会自动下载依赖和基础模型
# 默认访问:http://127.0.0.1:7860
命令行参数¶
# 常用启动参数
python launch.py \
--listen # 监听所有接口(局域网访问)
--port 7860 # 指定端口
--xformers # 启用 xformers 加速
--medvram # 中等显存优化(6-8GB)
--lowvram # 低显存优化(4GB)
--api # 启用 API
--enable-insecure-extension-access # 允许安装扩展
下载模型¶
# 模型存放位置
models/Stable-diffusion/ # Checkpoint 模型
models/Lora/ # LoRA 模型
models/VAE/ # VAE 模型
extensions/ # 扩展插件
# 推荐下载(从 civitai.com 或 huggingface.co):
# - Stable Diffusion XL (SDXL)
# - DreamShaper
# - Realistic Vision
# - Anything V5(二次元)
快速上手¶
文生图基本流程¶
1. 选择 Checkpoint 模型
2. 编写提示词(Prompt)
3. 设置参数:
- Sampling method: DPM++ 2M Karras
- Steps: 20-30
- CFG Scale: 7
- Size: 512x512 (SD1.5) 或 1024x1024 (SDXL)
- Seed: -1(随机)
4. 点击 Generate
提示词技巧¶
正向提示词(Prompt):
masterpiece, best quality, detailed,
1girl, long hair, blue eyes,
standing in a garden, sunlight, flowers,
digital art, sharp focus
反向提示词(Negative Prompt):
worst quality, low quality, blurry,
deformed, ugly, extra limbs,
watermark, text, signature
提示词权重:
(important word:1.5) # 增加权重
(less important:0.5) # 降低权重
[word] # 轻微降低
图生图¶
1. 切换到 img2img 标签
2. 上传参考图片
3. 编写提示词(描述想要的变化)
4. 调整 Denoising strength(0.3-0.7)
- 低值:更接近原图
- 高值:变化更大
5. Generate
进阶用法¶
ControlNet¶
安装 ControlNet 扩展后:
1. 在 ControlNet 面板启用
2. 上传控制图像(姿势、线稿等)
3. 选择预处理器和模型:
- OpenPose:姿势控制
- Canny:边缘/线稿
- Depth:深度图
- Scribble:涂鸦引导
- IP-Adapter:风格参考
4. 设置控制权重(0.5-1.0)
5. 正常生成
API 调用¶
import requests
import base64
from PIL import Image
from io import BytesIO
API_URL = "http://127.0.0.1:7860"
# txt2img
response = requests.post(f"{API_URL}/sdapi/v1/txt2img", json={
"prompt": "a beautiful landscape, mountains, lake, sunset",
"negative_prompt": "low quality, blurry",
"steps": 25,
"cfg_scale": 7,
"width": 1024,
"height": 1024,
"sampler_name": "DPM++ 2M Karras",
"seed": -1,
})
# 解码图像
result = response.json()
image_data = base64.b64decode(result["images"][0])
image = Image.open(BytesIO(image_data))
image.save("api_output.png")
# img2img
with open("input.png", "rb") as f:
init_image = base64.b64encode(f.read()).decode()
response = requests.post(f"{API_URL}/sdapi/v1/img2img", json={
"init_images": [init_image],
"prompt": "oil painting style",
"denoising_strength": 0.5,
"steps": 25,
})
批量生成¶
prompts = [
"a cat sitting on a windowsill, watercolor",
"a dog playing in the park, photography",
"a bird flying over the ocean, digital art",
]
for i, prompt in enumerate(prompts):
response = requests.post(f"{API_URL}/sdapi/v1/txt2img", json={
"prompt": prompt,
"steps": 25,
"cfg_scale": 7,
"width": 1024,
"height": 1024,
})
image_data = base64.b64decode(response.json()["images"][0])
with open(f"batch_{i}.png", "wb") as f:
f.write(image_data)
常用扩展¶
必装扩展:
- ControlNet:精确控制生成
- ADetailer:自动修复人脸/手部
- Regional Prompter:分区域提示词
- Ultimate Upscale:高清放大
- Civitai Helper:模型管理
- TagComplete:提示词自动补全
安装方式:
Extensions → Install from URL → 输入 Git URL → Install
显存优化¶
# 4GB 显存
--lowvram --opt-sub-quad-attention
# 6GB 显存
--medvram --xformers
# 8GB+ 显存
--xformers
# SDXL 需要至少 6GB,推荐 8GB+
常见问题¶
Q: 生成的图像质量差?¶
- 使用高质量的 Checkpoint 模型
- 增加 Steps(25-40)
- 调整 CFG Scale(5-12)
- 在 Prompt 开头加
masterpiece, best quality - 使用合适的 VAE
Q: 人脸/手部畸变?¶
- 安装 ADetailer 扩展自动修复
- 使用 Inpaint 手动修复问题区域
- 在负面提示词中加
deformed hands, extra fingers
Q: SDXL 跑不动?¶
- 使用
--medvram参数 - 生成尺寸从 768x768 开始
- 考虑使用 SD 1.5 模型(显存需求更低)
Q: 如何使用 LoRA?¶
将 LoRA 文件放入 models/Lora/ 目录,在提示词中使用 <lora:model_name:weight>:
参考资源¶
- GitHub:https://github.com/AUTOMATIC1111/stable-diffusion-webui
- Wiki:https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki
- 模型资源:https://civitai.com/
- 提示词参考:https://prompthero.com/
- API 文档:http://127.0.0.1:7860/docs(启动后访问)