Stable Diffusion v2 实战指南:从零跑通本地文生图与图像修复
2026/8/24 8:30:37 网站建设 项目流程

Stable Diffusion v2 实战指南:从零跑通本地文生图与图像修复

【免费下载链接】stablediffusionHigh-Resolution Image Synthesis with Latent Diffusion Models项目地址: https://gitcode.com/GitHub_Trending/st/stablediffusion

想让图像生成在本地跑起来,你大概率被两件事劝退过:要么显存需求高到不敢装,要么只会调 API、参数改不动。Stable Diffusion v2 把扩散去噪搬进低维潜在空间,让 865M 参数的 UNet 在 6GB 显存的消费级显卡上就能出图(示例值,以实际硬件为准),文生图、改图、修复、放大四类任务共用同一套脚本。这篇指南以官方源码仓库为基准,带你走通环境安装、四个真实场景和性能调优,让你能自己判断"这台机器值不值得跑、参数该往哪调"。

读完你能带走:

  • 能装好 conda 环境并跑通第一张 768×768 的 Stable Diffusion 文生图
  • 能用--strength--scale--steps三个参数控制改图强度、提示词贴合度与耗时
  • 能判断低配机器(含纯 CPU)选哪个配置跑得动
  • 能识别文字渲染、空间关系等已知坑及对应的绕行方案
  • 能定位 txt2img / img2img / depth2img / inpainting / superresolution 五类脚本与对应 checkpoint

它解决了什么问题:潜在空间里的"缩略图重绘"

这一节回答:为什么 865M 参数的扩散模型能塞进消费级显卡。

传统扩散模型直接在像素空间反复加噪、去噪。你可以把它想象成在一整幅 A2 画布上逐笔擦改:每一步都要处理全部像素,512×512 就是 26 万个像素点 × 上千个时间步,计算量随分辨率平方增长。

Stable Diffusion(潜在扩散模型 LDM)的做法像换个工作习惯:先把画布缩成名片大小的缩略图,所有擦改都在缩略图上进行,最后再把缩略图放大、补回细节。具体数字是——自动编码器(Autoencoder)以 8 倍下采样把 512×512×3 的图像压成 64×64×4 的潜在表示,数值量从 786,432 降到 16,384,约 48 倍压缩;去噪网络(UNet,865M 参数)只需处理这张"缩略图"。原论文报告相对像素空间扩散方法最高约 1000 倍计算量节省,这是它能用 50 步左右生成 768×768 图像的底层原因。

v2 与 v1 的关键区别在文本编码器:v2-v 模型换用 OpenCLIP ViT-H/14(上下文维度 1024),并采用 v-prediction 参数化(配置里parameterization: "v"),所以 768 分辨率下可以用更高的 guidance scale。仓库自带的assets/里有一组不同 guidance scale 下的对比图,能直观看到"数值越大越贴提示词、但越容易过饱和":

5分钟快速上手:环境要求与三步安装

这一节回答:我的机器够不够、装好要敲哪几条命令。

系统需求

档位CPU显存 / 内存存储
最低(示例值)4核8线程NVIDIA 6GB 显存;纯 CPU 需 16GB 内存20GB+(含权重)
推荐8核12–24GB 显存NVMe SSD
纯 CPU 兜底支持 AVX512/bfloat16 更佳同上

第 1 步,拿到源码(约 10 秒):

git clone https://gitcode.com/GitHub_Trending/st/stablediffusion cd stablediffusion

第 2 步,建 conda 环境并装依赖(环境名固定为ldm,锁定 Python 3.8.5 + PyTorch 1.12.1):

conda env create -f environment.yaml conda activate ldm pip install -r requirements.txt

第 3 步,放权重、跑第一张图。推理配置默认指向 EMA-only checkpoint,权重需自行从官方权重托管平台(Hugging Face 的 Stability AI 组织)下载v2-1_768-ema-pruned.ckpt(768 v 模型)或 512 base 模型,放入checkpoints/目录。然后执行:

python scripts/txt2img.py \ --prompt "a professional photograph of an astronaut riding a horse" \ --ckpt checkpoints/v2-1_768-ema-pruned.ckpt \ --config configs/stable-diffusion/v2-inference-v.yaml \ --H 768 --W 768 --n_samples 4 --device cuda

结果默认写入outputs/txt2img-samples/,每张图自动嵌入不可见水印(可用scripts/tests/test_watermark.py验证)。下面这张就是 768 配置的文生图样例:

关键配置文件一览(都在configs/stable-diffusion/,只需换--config即可切换任务):

配置文件模型/分辨率用途
v2-inference.yaml512×512 base基础文生图
v2-inference-v.yaml768×768 v高分辨率文生图(推荐)
v2-midas-inference.yaml512×512深度条件改图
v2-inpainting-inference.yaml512×512局部修复
x4-upscaling.yaml2048×20484倍超分

另外强烈建议在 GPU 上装 xformers(编译耗时可达 30 分钟),装好后代码会自动启用内存高效注意力,无需改任何参数。

四个真实场景:线稿变插画、保构图换风格、局部修复、4倍放大

这一节按需求而不是按功能名组织,每个场景给一条最小命令和一个关键调参点。

场景 1:线稿/草图变插画(img2img)

需求:手里有一张山的草图,想变成油画风。

python scripts/img2img.py \ --prompt "A fantasy landscape, trending on artstation" \ --init-img assets/stable-samples/img2img/sketch-mountains-input.jpg \ --strength 0.8 \ --ckpt checkpoints/v2-1_768-ema-pruned.ckpt

关键参数--strength(0–1):0.3 左右给线稿轻轻上色,0.8 只保留构图大幅重画,1.0 等于完全丢弃原图信息、退化成纯文生图。输入与输出的效果对比见仓库自带样例(草图输入、不同 strength 下的输出):

场景 2:保构图换风格(depth2img)

需求:同一张照片想换成"赛博城市/水墨"等风格,但人物姿态和空间布局不能变。先下载 depth 条件 checkpoint 和 MiDaS 的dpt_hybrid权重(放入midas_models/目录),然后:

python scripts/gradio/depth2img.py configs/stable-diffusion/v2-midas-inference.yaml <ckpt>

流程是:MiDaS 先估单目深度图,扩散模型同时吃"文本 + 深度"两个条件,所以结构基本锁死。strength=1.0 时丢弃全部像素信息、只靠深度+文本重画。仓库样例里真人照片被重绘成奇幻风格,姿态和透视几乎不变:

场景 3:局部修复(inpainting)

需求:抹掉图中某个物体,补上符合周围的内容。

python scripts/gradio/inpainting.py configs/stable-diffusion/v2-inpainting-inference.yaml <ckpt>

启动后在浏览器里涂抹要擦除的区域、填提示词即可,模型按语义补全而不是简单涂抹。下面是官方修复样例(替换/补全多个目标区域):

场景 4:4倍放大(superresolution)

需求:把 512 的图放大到 2048,且要"放大后有细节"而不是模糊拉伸。

python scripts/gradio/superresolution.py configs/stable-diffusion/x4-upscaling.yaml <ckpt>

关键参数noise_level(0–350,界面默认 20):处理真实照片取低值保细节;对模型自己生成的图建议调高(如 100+)增加纹理。效果样例:

参数速查表(txt2img / img2img 通用,基于脚本实际定义)

参数范围作用推荐值
--scale1.5–12guidance 强度,越大越贴提示词、越易过饱和脚本默认 9.0;512 base 用 7.5 左右
--steps20–100去噪迭代步数,越多越稳越慢50(默认)
--strength0.1–1.0img2img 对原图的重画程度0.6–0.8
--seed0–2³¹随机种子,固定后结果可复现对比实验时固定
--n_samples1–8一次生成张数(即 batch)6GB 显存用 1–2
--H/--W512/768输出分辨率,须与模型训练分辨率匹配768(v 模型)

调参速查表:采样器对比与低配机器跑法

这一节回答:想更快怎么改,想更稳怎么改。

采样器对比scripts/txt2img.py通过开关切换,DDIM 为默认):

方案开关常用步数相对速度(示例值,以实测为准)说明
DDIM50基准确定性采样,结果可复现
PLMS--plms20–50略快于同步步数 DDIM二阶方法,质量接近
DPM-Solver--dpm20三者中最快少步数逼近多步质量,适合批量出图

三条调优技巧:

  • GPU 显存不够时先装 xformers,再确认--precision保持默认的autocast(混合精度),显存占用直接减半。
  • 批量出图把--steps从 50 降到 20 并加--dpm,耗时约降至原来的四成(示例值),单张质量损失很小。
  • 同一提示词做 A/B 对比时固定--seed--scale,一次只改一个变量,否则判断不出是哪个参数的功劳。

没有 GPU?纯 CPU 也能跑:仓库为 Intel CPU 准备了一整套 IPEX(Intel Extension for PyTorch)优化配置,位于configs/stable-diffusion/intel/(fp32 与 bf16 各两档分辨率)。装好 IPEX、jemalloc、numactl 后,给txt2img.py追加--device cpu --torchscript --ipex参数即可;CPU 支持 bfloat16 时改用intel/v2-inference-v-bf16.yaml并加--bf16,速度明显快于 fp32(示例值)。CPU 路线适合离线批量跑 512 图,实时交互请直接用 GPU 或 API。

边界在哪:做不好什么,以及本地 vs API 怎么选

这一节回答:什么需求别用它,以及和调 API 相比值不值。

已知限制(≤4 条,各附绕行方案):

  1. 文字渲染:图里写字基本是乱码。→ 把文字留到后期排版工具里加,或只让它生成背景。
  2. 多主体空间关系:"红色立方体在蓝色球体上方"这类约束容易出错。→ 用 depth2img 先锁结构,或在提示词里强化方位描述。
  3. 人脸/肢体:偶尔多出五官或手指。→ 换--seed重抽,或用 inpainting 局部修复重画问题区域。
  4. 训练数据偏见:模型基于 LAION-5B 子集训练,会放大数据中的偏见且存在敏感内容风险。→ 官方已内置不可见水印便于识别 AI 生成内容;对外提供服务前必须自加过滤与审核机制。

本地部署 vs 调 API

维度本地 Stable Diffusion图像生成 API
前期投入装环境+下载权重,约半小时起近乎为零
单张成本电费按张计费
参数可控性scale/steps/seed/模型全开放仅开放接口提供的字段
数据隐私图像不出本机需上传
上手速度慢(依赖环境排错)分钟级

结论很直接:个人创作、隐私敏感、要批量调参,本地更划算;临时出图、不想维护环境,API 更省时间。

合规一句话:代码为 MIT,权重为 CreativeML Open RAIL++-M 许可(见LICENSE-MODEL),官方明确声明权重是研究用途,商用产品需自行补齐安全机制,防止深度伪造与误导信息传播。

下一步去哪:unCLIP、Karlo 与社区资源

这一节给你一条学习路径和明确的第一个行动。

仓库内学习路径:

  • README.md:各任务官方用法与 checkpoint 索引,最权威的第一站
  • doc/UNCLIP.MD:Stable unCLIP 图像变体玩法——给一张图生成同语义的多张变体,调noise_level控制发散程度(0 几乎不变,越大越天马行空),样例如下:

  • scripts/streamlit/:depth2img、inpainting、superresolution、stableunclip 四个浏览器交互 Demo,不用敲参数就能先感受效果
  • ldm/models/diffusion/:DDIM/PLMS/DPM 采样器源码,想改采样逻辑从这里入手

项目近期方向:仓库持续更新 checkpoint——2023 年 3 月发布的 Stable unCLIP 2.1(768×768,L/H 两档 CLIP 图像嵌入)支持图像混合与变体操作,并可结合 KakaoBrain 开源的 Karlo 文本先验组成 "Stable Karlo" 完整文生图链路(Karlo 先出 64 草图,SD 2.1 再放大精修)。

现在就动手:跑python scripts/txt2img.py --prompt "你的提示词" --ckpt <你的ckpt> --config configs/stable-diffusion/v2-inference-v.yaml --H 768 --W 768 --device cuda,生成你的第一张 768×768 图像,然后用--seed 42固定种子,开始你的第一次调参实验。

【免费下载链接】stablediffusionHigh-Resolution Image Synthesis with Latent Diffusion Models项目地址: https://gitcode.com/GitHub_Trending/st/stablediffusion

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询