Stable Diffusion本地部署踩坑记录

Stable Diffusion本地部署踩坑记录

折腾Stable Diffusion本地部署有一段时间了,从环境配置到各种插件,踩了不少坑。记录一下实战经验。

Stable Diffusion原理简述

核心是在潜在空间(Latent Space)做扩散,不是直接处理像素。这样计算量小很多,消费级显卡也能跑。

潜在空间类比:就像用18位身份证号能唯一标识一个人,潜在空间用较少的维度(512×512图像只需约768维)就能捕捉图像本质特征。

硬件与软件环境

最低配置:

  • 显卡:GTX 1060 6GB
  • 内存:8GB
  • 硬盘:20GB SSD

推荐配置:

  • 显卡:RTX 3060 12GB+
  • 内存:16GB+
  • 硬盘:100GB+ NVMe SSD

软件环境:

1
2
3
4
5
6
7
8
9
# Python 3.10
conda create -n sd python=3.10 -y
conda activate sd

# PyTorch CUDA 11.8
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# 验证CUDA
python -c "import torch; print(torch.cuda.is_available())"

WebUI安装

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

常见安装问题

GFPGAN安装失败

经常卡在Installing GFPGAN,手动安装:

1
2
3
4
5
git clone https://github.com/TencentARC/GFPGAN.git
cd GFPGAN
python -m pip install basicsr facexlib
python -m pip install -r requirements.txt
python setup.py develop

CUDA版本不匹配

1
2
3
4
5
6
7
# 查看CUDA版本
nvidia-smi
nvcc --version

# 重装对应版本的PyTorch
pip uninstall torch
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

启动WebUI

1
2
3
4
5
# Windows
webui-user.bat

# Linux/Mac
./webui.sh

浏览器访问 http://localhost:7860

基础使用

提示词结构

正面提示词:

1
(质量标签), (主体), (细节), (风格), (光线), (视角)

示例:

1
2
3
masterpiece, best quality, 1girl, long hair, blue eyes,
school uniform, standing in classroom, sunlight,
anime style, detailed face

负面提示词:

1
2
(worst quality, low quality:1.4), (zombie, sketch, interlocked fingers),
monochrome, greyscale, signature, watermark, username

关键参数

参数 说明 推荐值
Sampling Steps 采样步数 20-30
CFG Scale 提示词权重 7-12
Resolution 分辨率 512×512或768×768
Seed 随机种子 -1随机/固定值复现

ControlNet高级应用

ControlNet可以通过额外条件(姿态、边缘、深度等)控制图像生成。

工作流程:

1
参考图像 → 预处理器 → 控制图 → ControlNet → 图像生成

预处理器类型:

  • OpenPose:人体姿态
  • Canny:边缘检测
  • Depth:深度图
  • Scribble:涂鸦
  • Normal:法线贴图

角色设定图生成

步骤1:准备骨骼四视图的OpenPose骨骼图

步骤2:写提示词

1
2
3
4
5
6
(character sheet of the same exact:1.4)(Gradient background:1.2),
(simple studio background:1.2), reference sheet,
(best quality, masterpiece), (realistic), photorealistic,
RAW photo, no text, ultra high res, detailed face,
(brown hair), very long hair, red eyes, medium breasts,
slim body, (white silk)

关键提示词:

  • character sheet of the same exact:确保同一角色的多个视图
  • reference sheet:参考表格式
  • Gradient background:渐变背景

步骤3:ControlNet设置

1
2
3
4
5
6
7
ControlNet Unit 0:
- 启用: ✓
- 预处理器: none (骨骼图已处理)
- 模型: OpenPose
- 控制权重: 1.0
- 引导介入时机: 0
- 引导终止时机: 1

步骤4:设置出图尺寸

  • 宽度: 1024
  • 高度: 768(根据骨骼图比例)

图生图放大

  1. 文生图生成满意结果后,点击”发送到图生图”
  2. 重绘幅度: 0.5(保持原图结构)
  3. 放大倍数: 1.5x 或 2x
  4. 可再添加ControlNet防止跑偏

局部重绘修复

修复面部崩坏:

  1. 进入图生图 → 局部重绘
  2. 用画笔涂抹变形的面部
  3. 局部重绘设置:
    • Mask content: original
    • Inpaint area: Only masked
    • Denoising strength: 0.3-0.5
  4. ControlNet添加canny预处理器
  5. 生成修复

LoRA模型使用

LoRA(Low-Rank Adaptation)是轻量化的模型微调方法,用于生成特定风格或角色。

提示词格式:<lora:模型名:权重>

示例:

1
<lora:anime_style_v1:0.8>, 1girl, school uniform

权重建议:

用途 权重范围 说明
风格融合 0.3-0.6 轻微影响
角色特征 0.6-0.9 明显特征
精确还原 0.9-1.2 高度还原

GFPGAN人脸修复

GFPGAN是腾讯开源的人脸修复算法,可以修复模糊、低质量的人脸。

WebUI中使用

  1. 点击”Extras”标签
  2. 上传需要修复的图像
  3. 选择”GFPGAN”选项卡
  4. 设置可见度(0-1)
  5. 点击”Generate”

手动安装GFPGAN

1
2
3
4
5
6
7
8
9
10
11
git clone https://github.com/TencentARC/GFPGAN.git
cd GFPGAN

conda create -n gfpgan python=3.10 -y
conda activate gfpgan

pip install basicsr facexlib
pip install -r requirements.txt
python setup.py develop

# 下载预训练模型放weights/目录

AI生成视频

Text-to-Video(达摩模型)

1
2
3
4
5
conda create -n videoai python=3.9 -y
conda activate videoai

pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118
pip install diffusers transformers accelerate opencv-python

运行代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import torch
from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler
from diffusers.utils import export_to_video

pipe = DiffusionPipeline.from_pretrained(
'damo-vilab/text-to-video-ms-1.7b',
torch_dtype=torch.float16,
variant='fp16'
)
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
pipe.enable_model_cpu_offload()

prompt = 'Spiderman is surfing'
video_frames = pipe(prompt, num_inference_steps=25).frames
video_path = export_to_video(video_frames)
print(video_path)

效果一般,但能跑通。显存占用比较大,建议12GB以上显卡。

高级技巧

CLIP Skip设置

1
CLIP Skip: 2

跳过CLIP模型的最后几层,减少文本编码的细节,生成图像更具艺术性。

VAE选择

VAE类型 特点 适用场景
自带VAE 通用 日常生成
vae-ft-mse 色彩饱和 动漫风格
840000 VAE 写实 真人照片

Prompt矩阵批量生成

1
{1girl|1boy}, {red|blue|green} hair, masterpiece

生成组合:

  • 1girl, red hair
  • 1girl, blue hair
  • 1girl, green hair
  • 1boy, red hair
  • 1boy, blue hair
  • 1boy, green hair

性能优化

启用xformers加速:

1
pip install xformers

启动参数:

1
2
3
4
5
# webui-user.bat里修改
set COMMANDLINE_ARGS=--xformers --medvram

# 低显存模式
set COMMANDLINE_ARGS=--lowvram --always-batch-cond-uncond

常见问题汇总

安装问题

问题 解决方案
GFPGAN安装失败 手动下载安装
CUDA out of memory 降低分辨率或启用xformers
torch.compile错误 注释掉app.py中的torch.compile行
编码错误 将文件编码改为UTF-8

生成问题

问题 解决方案
脸部崩坏 使用GFPGAN修复或ADetailer
肢体扭曲 使用ControlNet OpenPose
画质低 增加采样步数或使用高分辨率修复
无法复现 固定种子值

模型推荐

写实风格

  • Realistic Vision:真实感强
  • Deliberate:细节丰富
  • DreamShaper:平衡性好

动漫风格

  • Anything V5:动漫风格
  • Counterfeit:精致画风
  • MeinaMix:日系风格

特殊用途

  • ControlNet模型:姿态/边缘控制
  • LoRA模型:特定角色/风格
  • Embedding:负面提示词优化

Stable Diffusion本地部署整体来说门槛不算高,但坑不少。主要是依赖包版本冲突、显存不足、模型下载慢这些问题。建议用Conda管理环境,显存不够就用低显存模式或者降低分辨率。ControlNet和LoRA用熟了能出很好的效果。