菜单

附加网络面板

相关源文件

附加网络面板是 Stable Diffusion Web UI 的核心组件,它提供了一个集中的界面,用于浏览、搜索和应用各种类型的网络模型,例如文本反转(嵌入)、LoRA、超网络和模型检查点。本文档解释了该面板的工作原理、其架构以及用户如何与之交互。

有关可以通过此面板管理的不同类型网络的信息,请参阅模型管理

1. 目的和功能

附加网络面板作为模型资产的有组织画廊,这些模型资产可以添加到您的生成过程中。它允许您

  • 在视觉卡片式界面中浏览不同类别的模型
  • 按名称或位置搜索和过滤模型
  • 按不同标准(名称、创建日期等)对模型进行排序
  • 一键将模型引用添加到您的提示中
  • 查看与模型相关的元数据
  • 在树状/目录视图中组织模型

2. 面板架构

附加网络面板被组织为一个标签页界面,该界面出现在 txt2img 和 img2img 标签页中的主生成控件下方。每个标签页代表不同类别的模型(例如,文本反转、超网络、检查点)。

来源:modules/ui_extra_networks.py186-209 modules/ui_extra_networks.py702-744

3. 核心组件

3.1 页面系统

附加网络面板采用基于页面的架构,其中每种类型的模型都由一个派生自 ExtraNetworksPage 的特定页面类进行管理。这使得可以对不同模型类型进行可扩展和定制化的处理。

来源:modules/ui_extra_networks.py186-633 modules/ui_extra_networks.py693-700

3.2 数据结构

每个网络都表示为一个“项”——一个包含模型信息的字典

描述
名称模型的显示名称
filename模型文件的完整路径
preview预览图像的 URL
description文本描述(来自相关的 txt 文件)
prompt要插入到提示中的 JavaScript 字符串
local_preview预览图像的本地路径
metadata模型元数据(来自文件或用户定义)
search_terms用于过滤的词语
sort_keys用于排序的键

来源:modules/ui_extra_networks.py224-247 modules/ui_extra_networks.py252-351

4. 视图模式

附加网络面板提供了三种不同的方式来浏览和导航可用的模型

4.1 卡片视图

卡片视图是浏览模型的主要界面。每个模型都表示为一个卡片,其中包含

  • 预览图像(如果可用)
  • 模型名称
  • 描述(可选)
  • 操作按钮(元数据、复制路径、编辑)

卡片以网格形式显示,可以进行排序和过滤。

┌──────────────────────────┐
│                          │
│         [Preview]        │
│                          │
│ Model Name           [⋮] │
│ Description              │
│                          │
└──────────────────────────┘

来源:modules/ui_extra_networks.py552-573 style.css1013-1075

4.2 树状视图

树状视图提供了一个分层的、根据目录结构组织的模型文件系统视图。

来源:modules/ui_extra_networks.py455-509 style.css1212-1646

4.3 目录视图

目录视图提供了一个扁平化的目录导航,带有每个文件夹的按钮。

[all] [lora/] [lora/characters/] [lora/styles/] [embeddings/]

来源:modules/ui_extra_networks.py511-550 style.css900-913

5. 用户交互

5.1 将模型添加到提示

当用户单击模型卡片时,会触发 cardClicked JavaScript 函数,该函数会

  1. 确定模型应添加到正面提示还是负面提示
  2. 检查模型是否已在提示中(以避免重复)
  3. 将模型引用添加到相应的文本区域

模型的提示格式因网络类型而异

  • 文本反转:embedding:concept
  • LoRA:<lora:model:strength>
  • 超网络:<hypernet:model:strength>

来源:javascript/extraNetworks.js256-264 javascript/extraNetworks.js209-253

5.2 搜索和过滤

搜索功能允许按名称或路径过滤模型。搜索是在客户端使用 JavaScript 完成的。

来源:javascript/extraNetworks.js51-70 modules/ui_extra_networks.py314-323

5.3 排序

模型可以按以下方式排序:

  • 名称(按字母顺序)
  • 路径(目录位置)
  • 创建日期
  • 修改日期

排序在 JavaScript 中实现,并动态重新排序卡片。

来源:javascript/extraNetworks.js73-109 modules/ui_extra_networks.py634-645

6. 高级功能

6.1 元数据查看

可以通过单击卡片上的信息按钮来查看模型元数据。元数据通过 API 端点从服务器获取,并在弹出窗口中显示。

来源:javascript/extraNetworks.js613-629 modules/ui_extra_networks.py139-152

6.2 预览管理

系统通过多种方式处理模型预览

  1. 外部预览文件(model.png, model.preview.png
  2. 嵌入 safetensors 元数据中的预览
  3. 从生成的图像中生成新预览

系统使用一个特定的端点来提供这些预览。

./sd_extra_networks/thumb?filename={quoted_filename}&mtime={mtime}

来源:modules/ui_extra_networks.py97-111 modules/ui_extra_networks.py647-670

6.3 用户元数据编辑

用户可以为模型添加自定义元数据,这些元数据与模型文件分开存储。这由 UserMetadataEditor 类处理。

来源:javascript/extraNetworks.js633-654 modules/ui_extra_networks.py687

7. 与 UI 集成

附加网络面板通过 create_ui 函数集成到主 UI 中,该函数会

  1. 为每个已注册的附加网络页面创建选项卡
  2. 设置选项卡选择的事件处理程序
  3. 连接到提示区域以添加网络引用

来源: modules/ui_extra_networks.py735-790

8. 可扩展性

Extra Networks Panel 被设计为可扩展的。可以通过以下方式添加新的网络类型:

  1. 创建继承自 ExtraNetworksPage 的新类
  2. 实现所需的方法(list_itemscreate_item 等)
  3. 使用 register_page 注册页面

来源: modules/ui_extra_networks.py89-95

9. 结论

Extra Networks Panel 提供了一个强大且可扩展的界面,用于管理和使用 Stable Diffusion 的各种网络类型。其架构支持轻松浏览、搜索和将模型应用于提示,并支持不同的视图模式和元数据管理。

该面板的设计能够适应基本的使用模式和高级工作流程,并提供树状视图导航、排序和元数据编辑等功能,帮助用户高效地组织和处理大量的模型集合。