跳转至

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: 生成的图像质量差?

  1. 使用高质量的 Checkpoint 模型
  2. 增加 Steps(25-40)
  3. 调整 CFG Scale(5-12)
  4. 在 Prompt 开头加 masterpiece, best quality
  5. 使用合适的 VAE

Q: 人脸/手部畸变?

  • 安装 ADetailer 扩展自动修复
  • 使用 Inpaint 手动修复问题区域
  • 在负面提示词中加 deformed hands, extra fingers

Q: SDXL 跑不动?

  • 使用 --medvram 参数
  • 生成尺寸从 768x768 开始
  • 考虑使用 SD 1.5 模型(显存需求更低)

Q: 如何使用 LoRA?

将 LoRA 文件放入 models/Lora/ 目录,在提示词中使用 <lora:model_name:weight>

a girl in anime style, <lora:anime_style:0.8>


参考资源

  • 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(启动后访问)