菜单

文本到图像 (txt2img)

相关源文件

文本到图像(txt2img)是 Stable Diffusion Web UI 中的主要图像生成系统,允许用户根据文本描述(prompt)创建图像。本文档记录了 txt2img 流程、其组件以及它们如何交互以生成图像。

有关使用 Stable Diffusion 修改现有图像的信息,请参阅图像到图像(img2img)

概述

txt2img 系统接收文本提示和可选参数,通过 Stable Diffusion 模型进行处理,并输出一个或多个生成的图像。该系统支持批量处理、各种采样器以及高分辨率精炼等高级功能。

来源:modules/txt2img.py102-120 modules/processing.py819-863

核心组件

txt2img 函数

txt2img 系统的核心函数是 modules/txt2img.py 文件中的 txt2img 函数。此函数

  1. 创建带有用户参数的处理对象
  2. 运行任何适用的脚本
  3. 处理图像
  4. 将结果返回给 UI

来源:modules/txt2img.py102-120

StableDiffusionProcessingTxt2Img

此类扩展了用于文本到图像生成的 StableDiffusionProcessing 基类。它负责处理

  • 提示和负面提示的处理
  • 参数设置和验证
  • 与模型的集成

处理类包含生成所需的所有参数,包括尺寸、采样器、批次大小以及高分辨率修复等特殊功能。

来源:modules/processing.py136-218

用户界面组件

txt2img 界面是使用 Gradio 组件构建的,并分为几个部分

章节组件目的
提示文本输入,样式下拉菜单定义您想生成的内容
负面提示文本输入定义生成时要避免的内容
尺寸宽度/高度滑块设置图像大小
批次计数/大小滑块控制图像数量
CFG Scale(提示词引导强度)滑块控制提示的影响强度
采样器下拉菜单选择采样算法
步数滑块设置去噪步数
Hires Fix折叠面板启用双通道高分辨率生成

UI 在 modules/ui.py 文件中的 create_ui 函数中定义,该函数设置了所有组件及其交互。

来源:modules/ui.py253-497

生成过程

当用户发起生成时,会发生以下过程

  1. 初始化:

    • 收集用户参数并创建 StableDiffusionProcessingTxt2Img 对象
    • 设置种子(来自用户输入或随机生成)
  2. 提示处理:

    • 处理提示并应用样式
    • 解析额外的网络标签(如 LoRA、Textual Inversion)
    • 通过 CLIP 对提示进行编码以创建条件向量
  3. 脚本执行:

    • 运行任何活动的脚本,这些脚本可能会修改参数或流程
  4. 图像生成:

    • 根据种子生成随机噪声
    • 采样器在条件引导下逐渐对噪声进行去噪
    • UNet 在每一步预测噪声残差
    • CFG(Classifier-Free Guidance)引导生成向提示方向进行
  5. VAE 解码:

    • 最终的潜在表示由 VAE 解码以生成可见图像
  6. 后期处理:

    • 可能应用可选的面部修复
    • 保存图像(如果启用)
    • 记录生成信息

来源:modules/processing.py819-863 modules/processing.py863-928

高分辨率修复

txt2img 的一个特殊功能是高分辨率修复(hires fix),它使用两阶段生成过程

  1. 首先,以较低的分辨率生成图像
  2. 然后,对该图像进行放大,并通过第二次去噪过程进行精炼

这使得在占用更少 VRAM 的情况下生成细节更好的大尺寸图像成为可能。

hires fix 参数包括

  • 放大器选择
  • 缩放因子或目标分辨率
  • 第二次去噪的去噪强度
  • 第二次可能单独使用的提示

来源:modules/ui.py311-339 modules/processing.py93-100

参数深入研究

CFG Scale(提示词引导强度)

分类器无关引导(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 的脚本系统集成,允许扩展修改生成过程。脚本可以

  • 添加新的 UI 元素
  • 在生成前修改参数
  • 处理或修改生成的图像
  • 实现全新的生成工作流

当调用 txt2img 时,系统会检查任何活动的脚本并首先执行它们。如果脚本返回结果,则使用该结果;否则,继续正常的生成过程。

来源:modules/txt2img.py104-109

信息文本生成

图像生成后,系统会创建包含所有生成参数的详细“信息文本”。这使得

  • 结果的可复现性
  • 与他人共享设置
  • 分析哪些参数产生了好的结果

信息文本存储在 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 函数中,这些函数负责处理复杂的图像生成工作流。

来源:modules/processing.py819-863 modules/txt2img.py14-55