- 人工智能
- 本地部署
- 媒体生成
【免费下载链接】stable-diffusion-webui
Stable Diffusion web UI
本指南以 README.md 为骨架,系统梳理 Stable Diffusion WebUI 的核心功能矩阵、Prompt 控制语法、训练与模型管理能力、跨平台安装部署流程及关键命令行参数,并结合仓库源码揭示各功能背后的真实实现机制。读完本文,你将能够从零部署这套基于 Gradio 的 Stable Diffusion 图形界面,掌握注意力控制、Embedding 训练、模型融合、API 调用等进阶技能,并理解每个功能在 modules/ 目录中对应的实现位置。
项目概览:基于 Gradio 的 Stable Diffusion Web 界面
Stable Diffusion WebUI 是一个使用 Gradio 库实现的 Stable Diffusion Web 界面。它将原本晦涩的扩散模型推理过程封装为浏览器中可交互的图形化工具,覆盖文生图(txt2img)、图生图(img2img)两大主线,并在此之上扩展出补全(Outpainting)、局部重绘(Inpainting)、颜色素描(Color Sketch)、Prompt 矩阵(Prompt Matrix)、Stable Diffusion 放大(SD Upscale)、高清修复(Highres Fix)等一系列高阶能力。
项目根目录下的 screenshot.png 展示了默认界面的整体布局。从代码结构看,整个项目遵循清晰的模块化组织:UI 层由 modules/ui.py 及ui_*.py系列文件构建,生成核心逻辑集中在 modules/processing.py,模型加载与切换由 modules/sd_models.py 负责,而入口脚本 webui.py 则通过 launch.py 完成环境准备与启动。
图片说明:Stable Diffusion WebUI 的 Gradio 界面,左侧为提示词输入区与参数面板,右侧为生成结果画廊。
核心功能全景:从基础生成到专业工作流
README 列举的功能清单横跨生成、训练、后处理与工程化四个维度。下面按主题重组并逐项深入。
基础生成模式:txt2img 与 img2img
- txt2img(文生图):输入正向提示词(Prompt)与可选负向提示词(Negative Prompt),指定采样器、步数、宽度/高度、CFG 缩放与种子(Seed)后生成图像。其处理流程的入口为 modules/txt2img.py。
- img2img(图生图):基于输入图像进行再创作,通过调整**重绘幅度(Denoising Strength)**控制与原始图像的差异程度。支持批量处理一组文件、为遮罩目录应用 inpaint 遮罩、读取 PNG Info 还原生成参数等高级选项,完整实现在 modules/img2img.py 的
process_batch与img2img函数中。 - Outpainting(向外补全):在画布边缘向外扩展生成内容,仓库内置脚本位于 scripts/outpainting_mk_2.py,噪声生成部分借鉴自开源项目 g-diffuser-bot 的思路(见 README Credits)。
- Inpainting(局部重绘):通过蒙版指定需要重绘的区域,支持专用 inpaint 模型(RunwayML 的 Stable Diffusion Inpainting 模型),相关配置文件见 configs/v1-inpainting-inference.yaml。此外还提供 scripts/img2imgalt.py(图生图替代方案,基于反向欧拉法的交叉注意力控制)与 scripts/poor_mans_outpainting.py。
- Color Sketch(颜色素描):在图生图中直接以颜色笔触勾勒草图作为生成参考。
- Loopback(回环处理):让 img2img 处理结果反复作为下一次输入,实现多轮迭代式创作,脚本位于 scripts/loopback.py。
- X/Y/Z Plot(三维参数对比图):在同一张画布上生成不同参数组合下的图像矩阵,脚本位于 scripts/xyz_grid.py,是进行参数消融实验与风格探索的利器。
- Stable Diffusion Upscale(SD 放大):结合 img2img 与超分模型实现大幅放大,脚本位于 scripts/sd_upscale.py。
- Highres Fix(高清修复):一键以低分辨率快速构思、再以高分辨率精修的便捷选项,避免直接高分辨率生成的构图失真。其两阶段采样逻辑在 modules/processing.py 的
StableDiffusionProcessingHiresFix类中实现(sample_hr_pass方法)。 - 批量处理(Batch Processing):对一组文件统一执行 img2img 处理,配合自动后处理脚本可大幅提升素材生产效率。
Prompt 控制体系:注意力、编辑与组合
README 中对 Prompt 能力的描述是理解本工具区别于官方实现的关键:
- 注意力调节(Attention):通过括号语法精确控制模型对提示词某一部分的关注程度。
a man in a ((tuxedo)):双重括号让模型更关注 tuxedo;a man in a (tuxedo:1.21):替代语法,数值大于 1 增强关注、小于 1 减弱关注;- 选中文本后按
Ctrl+Up或Ctrl+Down(macOS 为Command+Up/Command+Down)即可自动调整注意力强度,无需手写括号。 - 底层由 modules/sd_emphasis.py 的强调解析与 modules/prompt_parser.py 的语法树共同支撑。
- Prompt Editing(提示词中途切换):允许在生成过程中间切换提示词,例如先生成西瓜再中途切换为动漫少女。语法为
[from:to:当量],例如[watermelon:anime girl:0.6]表示在第 60% 采样步数时从watermelon切到anime girl。get_learned_conditioning_prompt_schedules函数在 modules/prompt_parser.py 中将其展开为按步数排列的调度表,如[mountain:lake:0.25]在 100 步下会生成[25, mountain...]、[100, lake...]的切换序列。 - Composable Diffusion(可组合扩散):一次使用多个提示词,用大写
AND分隔,可叠加权重:a cat :1.2 AND a dog AND a penguin :2.2。 - 无 Token 上限:原始 Stable Diffusion 限制为 75 token,本项目通过重写 CLIP 文本编码器(modules/sd_hijack_clip.py)解除了该限制,可将超长提示词分块送入编码器。
- Negative Prompt(负向提示词):独立的附加文本框,列出不希望出现在画面中的元素。注意 modules/cmd_args.py 中保留了
--show-negative-prompt历史参数,其说明标注为 "does not do anything",因为负向提示词如今已是默认 UI 组件。 - Styles(风格预设):将常用提示词片段保存为命名风格,后续通过下拉框一键套用,样式文件的读写逻辑在 modules/styles.py。
- Variations 与 Seed Resizing:基于子种子(subseed)强度生成同图微变体;通过
seed_resize_from_h/w在分辨率微调后保持画面一致,相关逻辑见 modules/processing.py 的create_random_tensors。
训练与可扩展性:Textual Inversion、Hypernetwork 与 LoRA
- Textual Inversion(文本反转):训练自定义 Embedding,将特定概念编码进词向量。
- 可同时挂载任意数量的 Embedding,且命名自由;
- 支持每个 Token 使用不同数量向量的多 Embedding 组合;
- 兼容半精度(float16)浮点数;
- 官方报告在 8GB 显存下可训练,社区也有 6GB 成功的案例。
- 训练与数据集实现位于 modules/textual_inversion/,预置训练模板见 textual_inversion_templates/(含 subject、style、hypernetwork 等模板),Embedding 文件存放于根目录 embeddings/。
- Hypernetwork(超网络):在扩散模型交叉注意力层旁挂接小型网络以微调生成风格,训练与推理逻辑见 modules/hypernetworks/。
- LoRA(Low-Rank Adaptation):README 评价为"与 Hypernetwork 作用相同但更美观",官方内置实现位于 extensions-builtin/Lora/,其
network_lora.py、network_full.py等文件覆盖了多种 LoRA 变体(LyCORIS、LoHa、LoKr、IA3、OFT 等,见 extensions-builtin/Lora/network_hada.py 等)。 - Extra Networks UI:独立的界面用于带预览地挑选要加入提示词的 Embedding、Hypernetwork 与 LoRA,调用方通过
<name:args>语法嵌入提示词(解析实现在 modules/extra_networks.py 的ExtraNetworkParams与parse_prompt)。 - Checkpoint Merger(模型融合):将最多 3 个 Checkpoint 融合为 1 个,支持加权求和、差异加减等插值方法,实现在 modules/extras.py 的
run_modelmerger,UI 位于 modules/ui_checkpoint_merger.py。 - VAE 切换:可在设置界面为模型选择不同的 VAE(变分自编码器),VAE 加载/解析逻辑在 modules/sd_vae.py,模型文件放在 models/VAE/。
Extras 标签页:人脸修复与超分辨率
README 明确指出 Extras 标签页集成了多款神经网络工具:
- GFPGAN:修复人脸的神经网络。
- CodeFormer:GFPGAN 的替代人脸修复工具,可通过权重参数在修复强度与保真度间折中。
- RealESRGAN:神经网络超分器,实现在 modules/realesrgan_model.py。
- ESRGAN:支持大量第三方模型的超分器,见 modules/esrgan_model.py。
- SwinIR 与 Swin2SR:同为神经网络超分器。
- LDSR(Latent Diffusion Super Resolution):基于潜空间扩散的超分辨率放大,实现位于 extensions-builtin/LDSR/。
- 此外还包含 DAT(modules/dat_model.py)等扩展超分模型,统一的模型加载入口见 modules/modelloader.py(
load_upscalers通过 Spandrel 架构加载各类超分模型)。
训练数据预处理
Training 标签页内置图像预处理能力:裁剪、镜像翻转,以及使用 BLIP 或 DeepDanbooru(针对动漫)的自动打标。预处理脚本位于 extensions-builtin/postprocessing-for-training/scripts/,包含自动尺寸裁剪(postprocessing_autosized_crop.py)、聚焦裁剪(postprocessing_focal_crop.py)、打标(postprocessing_caption.py)、翻转复制与超大图分割等工具。DeepDanbooru 标签预测实现位于 modules/deepbooru.py。
交互体验与工程能力
- 生成参数随图保存(Generation Parameters):生成所用的参数随图像一同保存——PNG 写入 PNG 块(chunk),JPEG 写入 EXIF。将图片拖入PNG Info标签页即可还原参数并自动回填到 UI。实现见 modules/images.py 的
save_image_with_geninfo与read_info_from_image。该行为可在设置中关闭;同时支持把图片或文本参数直接拖拽到提示词框。 - Read Generation Parameters 按钮:一键将 PNG Info 中读取的参数加载回 UI。
- 进度条与实时预览:进度条显示估计剩余时间(Estimated Completion Time);可使用独立的 TAESD 神经网络(modules/sd_vae_taesd.py)以几乎为零的显存与算力开销生成预览图。
- 随时中断(Interrupt):任何时刻可中断正在进行的生成任务,状态管理在 modules/shared_state.py(
interrupt方法)。 - Generate forever(无限生成):持续自动生成直至手动停止。
- Tiling(平铺):勾选后生成可像纹理一样无缝平铺的图像,通过 modules/sd_hijack.py 的
apply_circular将卷积层改为循环填充实现。 - 设置页面与 UI 定制:完整的 Settings 页面(modules/ui_settings.py)支持从设置界面重排 UI 元素顺序、调整多数 UI 组件的默认值/最小/最大/步进值(通过文本配置
ui-config.json,见 modules/cmd_args.py 的--ui-config-file),并支持鼠标悬停提示(javascript/hints.js)。 - 运行任意 Python 代码:UI 中可执行任意 Python 代码,但出于安全考虑必须显式携带
--allow-code启动参数(scripts/custom_code.py)。 - 从 UI 重载 Checkpoint(Reloading checkpoints on the fly):无需重启即可切换模型,实现在 modules/sd_models.py 的
reload_model_weights。 - safetensors 支持与安全:支持加载 safetensors 格式的 Checkpoint,默认启用安全反序列化(
--disable-safe-unpickle可关闭,但 README 强调不推荐)。同时支持 Segmind Stable Diffusion(SSD-1B)等轻量模型。 - 分辨率限制放宽:生成图像尺寸只需是 8 的倍数而非 64 的倍数,提升了分辨率选择的灵活性。
- Clip Skip(CLIP 层跳过):允许跳过 CLIP 文本编码器若干层以获得不同风格表现。
- 批处理种子正确性(Correct seeds for batches):批量生成时每个子批使用正确递增的种子。
- 实时 Token 长度校验(Live prompt token length validation):输入时即时提示 Token 消耗,配合 javascript/token-counters.js 实现。
采样器与噪声控制
- 提供丰富的采样方法选择(Sampling Method),从 k-diffusion 系列(modules/sd_samplers_kdiffusion.py)到 timesteps 系列(modules/sd_samplers_timesteps.py)与 LCM 系列(modules/sd_samplers_lcm.py),统一注册在 modules/sd_samplers.py 的
all_samplers中;UniPC 采样器(Wenliang Zhao 贡献)实现在 modules/models/diffusion/uni_pc/。 - 支持**调节采样器 eta 值(噪声乘数)**与更高级的噪声设置选项。
- 支持多种**调度器(Scheduler)**选择,包括 Align Your Steps、KL Optimal、DDIM、Beta 等,定义在 modules/sd_schedulers.py,从源码可推断采样器与调度器的组合解析由
get_sampler_and_scheduler完成。 - 支持Restart 采样(modules/sd_samplers_extra.py)与Hypertile显存优化(extensions-builtin/hypertile/)。
跨平台安装与运行
依赖与平台支持
README 要求先满足对应硬件的 依赖,官方推荐 NVidia 显卡路线,同时提供 AMD GPU、Intel CPU/GPU(含集显与独显)、Ascend NPU 的安装说明,亦可通过 Google Colab 等在线服务运行。
Windows 10/11 + NVidia:三种安装路径
方式一:发行包快速安装
- 从 v1.0.0-pre 发行版下载
sd.webui.zip并解压; - 运行
update.bat; - 运行
run.bat。
方式二:自动安装
- 安装 Python 3.10.6(注意:更新的 Python 版本不支持 torch),勾选 "Add Python to PATH";
- 安装 git;
git clone本仓库;- 以普通(非管理员)用户身份从资源管理器运行 webui-user.bat。
方式三:手动配置:webui-user.bat 本质是变量壳,将PYTHON、GIT、VENV_DIR、COMMANDLINE_ARGS等变量委托给 webui.bat 执行。
Linux 自动安装
首先安装系统依赖:
# Debian 系 sudo apt install wget git python3 python3-venv libgl1 libglib2.0-0 # Red Hat 系 sudo dnf install wget git python3 gperftools-libs libglvnd-glx # openSUSE 系 sudo zypper install wget git python3 libtcmalloc4 libglvnd # Arch 系 sudo pacman -S wget git python3对于过新的系统(如 Ubuntu 24.04),需手动安装 Python 3.11 或 3.10 并在启动脚本中指定解释器:
# Ubuntu 24.04 sudo add-apt-repository ppa:deadsnakes/ppa sudo apt update sudo apt install python3.11 # Manjaro/Arch(注意包名是 python311) sudo pacman -S yay yay -S python311随后在 webui.sh 或 webui-user.sh 中设置环境变量:
export python_cmd="python3.11" # 或 webui-user.sh 中写 python_cmd="python3.11"接着下载启动脚本或直接克隆仓库,然后运行webui.sh:
wget -q https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh # 或:git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui ./webui.shwebui-user.sh 提供了丰富的可配置变量:install_dir(安装目录)、clone_dir(子目录名)、COMMANDLINE_ARGS(传给 webui.py 的命令行参数)、python_cmd、GIT、venv_dir、LAUNCH_SCRIPT、TORCH_COMMAND(torch 安装命令)、REQS_FILE(依赖清单,默认 requirements_versions.txt)、ACCELERATE、NO_TCMALLOC等。而 webui.sh 本身明确要求"不要修改此文件,变量请在 webui-user.sh 中调整";从 webui.sh 源码可见其默认拒绝 root 运行(除非-f参数)、拒绝 32 位系统,并自动按需选择python3.10/python3。
Apple Silicon
macOS 用户遵循 README 指向的专用安装指南;本仓库同时提供 webui-macos-env.sh 为 macOS 预设环境变量,且 webui.sh 在darwin系统下会优先加载该文件。MPS(Metal)支持逻辑见 modules/mac_specific.py。
启动流程与 Python 版本校验
launch.py 是统一启动入口:依次执行环境准备(prepare_environment)、版本校验(modules/initialize.py 的check_versions与 modules/errors.py),随后调用start()拉起 Gradio 服务。支持--skip-prepare-environment、--test-server、--dump-sysinfo(导出系统信息后退出)等启动参数。
命令行参数详解(源码级)
README 提到可通过命令行参数定制运行行为,完整参数定义于 modules/cmd_args.py,按其用途可分为以下几类:
显存优化(应对不同显存规模):
--medvram/--medvram-sdxl:牺牲少量速度换取低显存占用(后者仅针对 SDXL);--lowvram:大幅牺牲速度换取极低显存占用;--lowram:将权重加载到显存而非内存;--opt-split-attention、--opt-sub-quad-attention、--opt-split-attention-invokeai、--opt-sdp-attention等:选择不同的交叉注意力优化方案;--xformers:启用 xformers 以显著提升部分显卡的速度;--force-enable-xformers、--xformers-flash-attention为进阶选项;--opt-channelslast:将内存类型改为 channels last;--precision {full,half,autocast}(默认autocast)与--no-half、--no-half-vae、--upcast-sampling:控制模型/VAE 的浮点精度。
目录与模型路径:
--data-dir:所有用户数据的根路径;--models-dir:模型根路径(覆盖>赞
- 人工智能
- 本地部署
- 媒体生成
【免费下载链接】stable-diffusion-webui
Stable Diffusion web UI
相关推荐
spring-rest-service-oauth源码分析:OAuth2认证流程的底层实现原理
spring rest service oauth源码分析:OAuth2认证流程的底层实现原理 spring rest service oauth是一个基于Sp
后端Stable Diffusion WebUI Forge完全指南:从安装到高级应用
Stable Diffusion WebUI Forge完全指南:从安装到高级应用 Stable Diffusion WebUI Forge(以下简称"Forg
人工智能大模型媒体生成本地部署深度学习Stable Diffusion WebUI Forge跨平台部署完整指南:从安装到精通
Stable Diffusion WebUI Forge跨平台部署完整指南:从安装到精通 Stable Diffusion WebUI Forge是基于Stab
人工智能大模型媒体生成本地部署深度学习