本文档解释了 Stable Diffusion Web UI 中的脚本架构。脚本是模块化组件,可以扩展 UI 和处理流程,增加额外功能。有关包含脚本的通用扩展系统的信息,请参阅 扩展系统。
脚本架构提供了一个插件系统,允许开发人员修改图像生成过程并添加自定义 UI 组件。脚本可以挂钩到生成流程的各个阶段,从预处理提示到后处理生成的图像。
来源
Script 类是脚本架构的基础。它定义了所有脚本必须实现的接口
Script 类包含几个关键方法
| 方法 | 目的 |
|---|---|
title() | 返回 UI 下拉菜单中显示的显示名称 |
ui(is_img2img) | 为脚本创建 Gradio UI 组件 |
show(is_img2img) | 确定脚本在 UI 中的可见性 |
run(p, *args) | 可选择脚本的主要执行函数 |
process(p, *args) | 始终运行脚本的处理钩子 |
before_process(p, *args) | 始终运行脚本的早期处理钩子 |
postprocess(p, processed, *args) | 始终运行脚本的后处理钩子 |
脚本可以分为两种主要类型
来源
ScriptRunner 类负责脚本的加载、组织和执行。它
ScriptRunner 中的关键方法
来源
脚本系统会自动发现并从多个位置加载脚本
scripts 目录modules/processing_scripts 目录加载过程包括
来源
在生成过程中,脚本会在流程的各个点执行
执行流程允许脚本
来源
脚本可以添加出现在 txt2img 和 img2img 选项卡中的 UI 组件
UI 集成通过以下方式实现
ui(is_img2img) 方法,用于创建 Gradio 组件ScriptRunner.setup_ui() 方法,用于组装组件脚本还可以使用以下方法注册组件创建时的回调
before_component()after_component()on_before_component()on_after_component()来源
脚本系统使用回调机制来允许脚本挂钩到生成过程的不同阶段
| 回调 | 目的 | 何时调用 |
|---|---|---|
before_process | 早期设置 | 在任何处理开始之前 |
process | 主要处理钩子 | 在生成开始之前 |
before_process_batch | 批处理准备 | 在处理每个批次之前 |
process_batch | 批量处理 | 为每个批次在生成之前 |
postprocess_batch | 批处理后处理 | 每个批次生成后 |
post_sample | 样本修改 | 创建样本后,在 VAE 解码之前 |
postprocess_image | 图像后处理 | 为每个生成的图像 |
postprocess | 最终后处理 | 在所有处理完成后 |
回调根据脚本定义以及扩展元数据中指定的任何顺序执行。
来源
要创建自定义脚本,开发人员需要
scripts 目录或扩展的 scripts 目录中创建一个 Python 文件Script 的类这是一个简化的示例结构
脚本通常是扩展的一部分,扩展提供了更广泛的框架来为 Web UI 添加功能
关系包括
scripts 目录中包含多个脚本来源
脚本可以与 WebUI 的设置系统进行交互,以
shared.opts 访问全局设置配置定义在 shared_options.py 中,并且可以由扩展进行扩展。
来源