菜单

X/Y/Z 绘图

相关源文件

X/Y/Z 图是 Stable Diffusion Web UI 中的一个高级脚本,它通过生成具有受控变化的图像网格来实现系统化的参数探索。此强大功能允许用户比较不同参数值如何影响图像生成结果,这对于查找最佳设置和理解参数关系非常有价值。

概述

X/Y/Z 图创建一个结构化的可视化,其中

  • X 轴:选定参数的水平变化
  • Y 轴:不同参数的垂直变化
  • Z 轴:多个网格,每个网格代表第三个参数的不同值

此方法允许同时高效地试验多达三个不同的参数,显示它们对图像生成结果的组合影响。

来源: scripts/xyz_grid.py287-396

可用参数

X/Y/Z 图脚本支持沿每个轴变化的各种参数

类别参数
种子控制种子,变体种子,变体强度
步数和采样步数,采样器,CFG 尺度,调度器类型
模型控制检查点名称,VAE,Clip skip
提示词操作提示词搜索/替换,提示词顺序
去噪参数去噪强度,Sigma 值,Eta
精炼精炼检查点,精炼切换时间
尺寸和缩放尺寸,放大器(高分辨率)
附加功能面部修复,Token 合成比例

来源: scripts/xyz_grid.py238-284

系统架构

X/Y/Z 图作为脚本类实现,与主 Web UI 的脚本系统集成。以下是它如何与更大的系统连接:

来源: scripts/xyz_grid.py415-448 scripts/xyz_grid.py287-396

用途

设置 X/Y/Z 图

  1. 选择轴类型:选择要在每个轴(X、Y、Z)上变化的参数
  2. 指定值:输入要为每个参数使用值
    • 逗号分隔列表: 1, 2, 3, 4
    • 带步长的范围: 1-10(1)(从 1 到 10,步长为 1)
    • 带计数的范围: 1-10[5](1 和 10 之间均匀分布的 5 个值)
  3. 配置选项:
    • 绘制图例:为网格添加参数标签
    • 保留/变化种子:控制网格中种子的行为
    • 包含子图像/网格:控制要保留的输出图像

来源: scripts/xyz_grid.py419-457

值格式示例

格式类型示例结果
简单列表1, 2, 3三个值:1, 2, 3
带步长的范围1-5(1)五个值:1, 2, 3, 4, 5
带计数的范围1-10[5]五个值:1, 3.25, 5.5, 7.75, 10
检查点列表model1, model2两个检查点模型
提示词搜索/替换cat, dog在提示词中将“cat”替换为“dog”

来源: scripts/xyz_grid.py547-615

内部工作原理

1. 网格生成过程

X/Y/Z 图系统遵循此过程来创建图像网格

来源: scripts/xyz_grid.py538-817 scripts/xyz_grid.py287-396

2. 参数应用系统

脚本使用灵活的系统来应用参数值

来源: scripts/xyz_grid.py30-197 scripts/xyz_grid.py707-728

3. 处理优化

系统根据参数“成本”(计算成本)优化处理顺序

  • 高成本参数(如更改模型检查点)放在外层循环
  • 低成本参数放在内层循环
  • 这可以最大限度地减少生成过程中的昂贵操作(如加载模型)

例如,当变化检查点(高成本)、CFG 尺度(低成本)和步数(中等成本)时,系统将按此顺序处理

  1. 遍历检查点值(外循环)
  2. 对于每个检查点,遍历步数值
  3. 对于每个步数,遍历 CFG 尺度值(内循环)

来源: scripts/xyz_grid.py683-703

参数使用示例

采样器比较

设置一个网格来比较不同的采样器

  • X 轴: 采样器,值为 Euler a, DPM++ 2M, DPM++ SDE
  • Y 轴: 步数,值为 20, 30, 40
  • Z 轴: CFG 尺度,值为 7, 10, 13

这将创建一个可视化,显示不同采样器在不同步数和 CFG 尺度下的表现。

提示词探索

用于探索提示词中的变化

  • X 轴: 提示词搜索/替换,值为 cat, dog, bird
  • Y 轴: CFG 尺度,值为 5-11(2)(5, 7, 9, 11)
  • Z 轴: (单个网格)

此设置将提示词中的“cat”替换为每种动物,并显示不同 CFG 尺度下的结果。

模型对比

用于比较不同模型和 VAE

  • X 轴: 检查点名称,值为不同模型的名称
  • Y 轴: VAE,值为 Automatic, None, vae1
  • Z 轴: 步数,值为 20, 40

这将创建多个网格,显示不同模型+VAE 组合在不同步数下的表现。

来源: scripts/xyz_grid.py238-284

技术实现细节

AxisOption 类

The AxisOption 类是 X/Y/Z 图系统的基础,定义了参数如何被变化和应用

AxisOption(
    label,            # Display name 
    type,             # Data type (int, float, str)
    apply,            # Function to apply value to processing
    format_value,     # How to format for display
    confirm,          # Validation function
    cost,             # Computational cost (for optimization)
    choices,          # Available choices function
    prepare           # Value preparation function
)

来源: scripts/xyz_grid.py214-223

单元格处理

网格中的每个单元格都经历以下步骤

  1. 复制原始处理对象
  2. 使用各自的应用函数应用 X、Y、Z 参数值
  3. 如果启用了种子变体,则调整种子
  4. 使用修改后的参数处理图像
  5. 将结果存储在网格的相应位置

来源: scripts/xyz_grid.py707-728

网格组装

最终输出包括

  1. 每个 Z 值的独立 X/Y 网格
  2. 包含所有 Z 值网格的主网格
  3. 可选的显示参数值的图例
  4. 可选的每个单元格的独立图像

系统会自动处理网格边距、注解以及子网格到最终输出的组装。

来源: scripts/xyz_grid.py287-396

高级特性

值范围语法

脚本支持用于指定参数范围的高级语法

  • 带步长的整数范围: 1-10(2)(1, 3, 5, 7, 9)
  • 带步长的浮点数范围: 0.1-0.5(0.1)(0.1, 0.2, 0.3, 0.4, 0.5)
  • 带计数的范围: 1-100[5](均匀分成 5 个值)
  • 排列:对于 提示词顺序,它会生成提供的所有值的排列

来源: scripts/xyz_grid.py408-413 scripts/xyz_grid.py560-605

种子行为控制

该脚本提供对种子进行精细控制

  • 种子保留 -1:保持 -1 种子值(每次生成随机)
  • 为 X/Y/Z 变化种子:沿特定轴改变种子
  • 固定种子:自动为所有网格单元分配可重现的种子

这些选项允许在一致性和多样性之间进行平衡。

来源: scripts/xyz_grid.py642-646 scripts/xyz_grid.py719-725

处理优化

系统分析参数成本以优化处理顺序,这对于以下情况尤为重要

  • 模型检查点(成本最高 - 需要加载新模型)
  • VAE 更改(高成本)
  • 采样器更改(中等成本)
  • 简单的数值参数(低成本)

这种优化可以大大减少包含昂贵参数的网格的生成时间。

来源: scripts/xyz_grid.py683-703

总结

X/Y/Z 图表系统是一个强大的工具,可通过系统化可视化来探索 Stable Diffusion 参数。它允许您

  1. 同时比较多达三个不同的参数
  2. 可视化参数交互及其对输出的影响
  3. 有效找到针对特定生成目标的最佳设置
  4. 了解不同模型、采样器和设置如何交互

其灵活的实现支持广泛的参数和值格式,使其成为系统化图像生成实验最通用的工具之一。