SD-Latent-Interposer简介
SD-Latent-Interposer是一个创新的小型神经网络,旨在实现不同版本Stable Diffusion模型之间的潜空间兼容性。它允许用户直接将一个模型(如SDXL)生成的潜在表示传递给另一个模型(如SDv1.5),而无需通过变分自编码器(VAE)进行解码和重新编码。这大大简化了AI艺术创作的工作流程,提高了效率。
主要优势
- 互操作性: 实现不同Stable Diffusion模型之间的潜在表示无缝转换。
- 效率: 消除了VAE解码和重新编码的需求,节省时间和计算资源。
- 质量: 通过最小化人工痕迹来维持图像的构图和质量。
工作原理
SD-Latent-Interposer的核心功能是充当不同Stable Diffusion模型潜空间之间的翻译器。想象一下有两个人说着不同的语言,通常需要一个翻译者将一种语言转换成另一种语言,然后再转回来。SD-Latent-Interposer就像一个直接的翻译器,让这两个人无需中间步骤就能相互理解。
基本原理
- 潜空间: 在AI艺术生成中,潜空间是图像的压缩表示。不同的模型有不同的潜空间。
- 插值网络: 该网络将一个模型的潜在表示翻译成另一个模型的表示,确保兼容性。
- 去噪: 调整去噪设置以隐藏任何人工痕迹,同时保留图像的构图。
通过将SD-Latent-Interposer放置在通常使用VAE解码后接VAE编码的位置,用户可以直接在模型之间传递潜在表示,使工作流程更加高效和直接。
功能特性
SD-Latent-Interposer具有多项旨在增强AI艺术创作体验的功能:
互操作性
- 直接潜在表示转换: 无需中间步骤即可在不同Stable Diffusion模型之间移动潜在表示。
- 去噪控制: 调整去噪设置以管理人工痕迹并保持图像质量。
自定义选项
- 本地模型: 如果用户更喜欢离线工作或网络连接不稳定,可以将模型存储在本地。该扩展程序会优先使用本地文件而不是Hugging Face hub上的文件。
- 模型权重: 用户可以访问和使用不同的模型权重,观察它们如何影响结果。
支持的模型
- Stable Diffusion v1.x
- SDXL
- Stable Diffusion 3
- Flux.1
- Stable Cascade (Stage A/B)
模型兼容性
SD-Latent-Interposer支持多种模型之间的转换:
源模型 | 到 v1 | 到 xl | 到 v3 | 到 fx | 到 ca |
---|---|---|---|---|---|
v1 | - | v4.0 | v4.0 | 否 | 否 |
xl | v4.0 | - | v4.0 | 否 | 否 |
v3 | v4.0 | v4.0 | - | 否 | 否 |
fx | v4.0 | v4.0 | v4.0 | - | 否 |
ca | v4.0 | v4.0 | v4.0 | 否 | - |
安装和使用
要安装SD-Latent-Interposer,只需将其仓库克隆到custom_nodes文件夹中:
git clone https://github.com/city96/SD-Latent-Interposer custom_nodes/SD-Latent-Interposer
或者,用户也可以将comfy_latent_interposer.py文件下载到ComfyUI/custom_nodes
文件夹中。可能需要在虚拟环境中使用pip install huggingface-hub
命令安装hfhub。
使用时,只需将其放置在通常使用VAE解码后接VAE编码的位置。根据需要调整去噪设置,以隐藏任何人工痕迹,同时保持图像的构图。
本地模型使用
默认情况下,该节点从Hugging Face hub拉取所需文件。如果用户网络连接不稳定或更喜欢完全离线使用,可以创建一个models
文件夹并将模型放置在那里。自定义节点在可用时会优先使用本地文件而不是HF文件。路径应为:ComfyUI/custom_nodes/SD-Latent-Interposer/models
或者,也可以直接克隆整个HF仓库:
git clone https://github.com/huggingface.co/city96/SD-Latent-Interposer custom_nodes/SD-Latent-Interposer/models
训练细节
SD-Latent-Interposer的训练过程是一个复杂而精细的过程。训练代码从提供的配置文件初始化大多数训练参数。数据集应该是每个潜在版本的单个.bin文件,使用torch.save
保存。格式应为[batch, channels, height, width],其中"batch"尽可能大,例如88000。
Interposer v4.0
v4.0版本的训练代码初始化了两个模型副本,一个在目标方向,一个在相反方向。损失函数基于此定义:
p_loss
是主模型的主要标准。b_loss
是次要模型的主要标准。r_loss
是主模型输出通过次要模型后与源潜在表示的对比(基本上是通过两个模型的往返)。h_loss
与r_loss
相同,但适用于次要模型。
所有模型都训练了50000步,批量大小为128(xl/v1)或48(cascade)。训练在RTX 3080和Tesla V100S上本地进行。