文本到图像(txt2img)是 Stable Diffusion Web UI 中的主要图像生成系统,允许用户根据文本描述(prompt)创建图像。本文档记录了 txt2img 流程、其组件以及它们如何交互以生成图像。
有关使用 Stable Diffusion 修改现有图像的信息,请参阅图像到图像(img2img)。
txt2img 系统接收文本提示和可选参数,通过 Stable Diffusion 模型进行处理,并输出一个或多个生成的图像。该系统支持批量处理、各种采样器以及高分辨率精炼等高级功能。
来源:modules/txt2img.py102-120 modules/processing.py819-863
txt2img 系统的核心函数是 modules/txt2img.py 文件中的 txt2img 函数。此函数
此类扩展了用于文本到图像生成的 StableDiffusionProcessing 基类。它负责处理
处理类包含生成所需的所有参数,包括尺寸、采样器、批次大小以及高分辨率修复等特殊功能。
来源:modules/processing.py136-218
txt2img 界面是使用 Gradio 组件构建的,并分为几个部分
| 章节 | 组件 | 目的 |
|---|---|---|
| 提示 | 文本输入,样式下拉菜单 | 定义您想生成的内容 |
| 负面提示 | 文本输入 | 定义生成时要避免的内容 |
| 尺寸 | 宽度/高度滑块 | 设置图像大小 |
| 批次计数/大小 | 滑块 | 控制图像数量 |
| CFG Scale(提示词引导强度) | 滑块 | 控制提示的影响强度 |
| 采样器 | 下拉菜单 | 选择采样算法 |
| 步数 | 滑块 | 设置去噪步数 |
| Hires Fix | 折叠面板 | 启用双通道高分辨率生成 |
UI 在 modules/ui.py 文件中的 create_ui 函数中定义,该函数设置了所有组件及其交互。
当用户发起生成时,会发生以下过程
初始化:
StableDiffusionProcessingTxt2Img 对象提示处理:
脚本执行:
图像生成:
VAE 解码:
后期处理:
来源:modules/processing.py819-863 modules/processing.py863-928
txt2img 的一个特殊功能是高分辨率修复(hires fix),它使用两阶段生成过程
这使得在占用更少 VRAM 的情况下生成细节更好的大尺寸图像成为可能。
hires fix 参数包括
来源:modules/ui.py311-339 modules/processing.py93-100
分类器无关引导(Classifier-Free Guidance)比例控制着图像生成受提示的影响程度。较高的值会生成更符合提示的图像,但可能会有较低的质量或出现伪影。
WebUI 支持多种采样算法,每种都有不同的特点
| 采样器类型 | 属性 | 最佳用例 |
|---|---|---|
| Euler a | 快速,质量好 | 通用 |
| DPM++ 2M Karras | 高质量 | 细节丰富的图像 |
| LCM | 非常快 | 快速迭代 |
| DDIM | 确定性 | 可复现的结果 |
来源:modules/sd_samplers.py11-16
来源:modules/processing.py616-618 modules/processing.py674-686
txt2img 系统与 WebUI 的脚本系统集成,允许扩展修改生成过程。脚本可以
当调用 txt2img 时,系统会检查任何活动的脚本并首先执行它们。如果脚本返回结果,则使用该结果;否则,继续正常的生成过程。
图像生成后,系统会创建包含所有生成参数的详细“信息文本”。这使得
信息文本存储在 PNG 元数据中并在 UI 中显示。
来源:modules/processing.py705-815
txt2img 系统分布在多个文件中实现
modules/txt2img.py:处理 txt2img 请求的主要函数modules/processing.py:图像生成的核心处理逻辑modules/ui.py:用户界面组件modules/sd_samplers.py:采样方法modules/shared.py:全局状态和配置主要的生成过程发生在 process_images 及其伴随的 process_images_inner 函数中,这些函数负责处理复杂的图像生成工作流。