sd-webui-lora-block-weight 是一个为 AUTOMATIC1111 的 Stable Diffusion WebUI 设计的自定义脚本。它的核心功能是让用户在应用 LoRA 模型时,能够精细地控制 LoRA 对神经网络不同层次(Block)的影响强度。
项目地址
项目地址:hako-mikan/sd-webui-lora-block-weight
核心问题与解决方案
- 问题:标准的 LoRA 应用方式是对整个模型使用一个统一的强度权重。这有时会导致不希望的效果,例如一个旨在改变人物发型的 LoRA 也可能意外地改变画面的整体风格或色彩。
- 解决方案:这个脚本允许用户为 U-Net 模型的不同组成部分(即不同的“Block”或“层”)设置不同的权重。通过抑制某些区块的强度、增强另一些区块的强度,用户可以更精确地控制 LoRA 的效果,从而生成更符合预期的图像。
主要功能
分层权重控制
- 用户可以在提示词中通过特定的语法,为每个 LoRA 指定一个权重列表,精确控制其在不同神经网络区块的强度。
- 支持多种模型架构:包括标准 LoRA(17层)、LyCORIS(26层)、SDXL LoRA(12层)、SDXL LyCORIS(20层)以及最新的 Flux 模型(61层)。
动态时间步控制
可以指定 LoRA 效果在生成的哪个时间步开始生效或停止生效。
*语法示例:
- :从第10步开始应用 LoRA。
- :在第10步之后停止应用 LoRA。
- :仅在5到10步之间应用 LoRA。
这对于分离“构图/角色”和“画风”效果非常有用,可以在角色定型后停止 LoRA,以避免影响最终的画风。
XYZ 绘图功能
- 与 WebUI 内置的 XYZ 绘图脚本集成,可以自动化地测试不同区块权重组合的效果。
- 可以系统地遍历不同层的权重值,或者测试不同的预设组合,从而找到最优配置。
有效区块分析器
- 这是一个诊断工具,可以帮助用户可视化并量化 LoRA 中哪个区块对最终图像的影响最大。它通过降低特定区块的权重并计算与原始图像的差异来实现。
元素级控制
提供了更细粒度的控制,可以针对每个区块内的特定组件(如 attn, mlp, proj 等)设置权重,而不仅仅是整个区块。
随机权重
支持在权重中使用 R 和 U 来引入随机值,用于探索性的创作。
API 支持
- 提供了完整的 API 接口,允许其他程序或脚本调用该插件的所有功能。
安装与基本使用
安装
1、在 WebUI 的 “Extensions” 标签页中,通过 “Install from URL” 输入项目 Git 地址进行安装。
2、或者,将 lora_block_weight.py 脚本文件手动放入 WebUI 的 scripts 文件夹。
3、安装后需要重启 WebUI。
4、激活
- 在文生图或图生图页面向下滚动,找到 “LoRA Block Weight” 脚本勾选框,勾选以激活功能。
5、在提示词中使用
使用特定的语法在提示词中调用 LoRA 并指定分层权重。
基本语法:
示例:
- :仅对第3个区块(IN02)应用强度为1的效果,其他区块为0。
- :使用预设的 OUTS 权重配置。
- :用于 LyCORIS 模型的语法。
6、管理预设
- 在脚本的 “Weights Setting” 区域,可以定义和保存命名的权重预设(如 INS, MIDD, OUTALL),方便在提示词中通过 lbw=预设名 快速调用。
应用场景与价值
- 角色与画风分离:使用一个角色 LoRA 和一个画风 LoRA,通过抑制画风 LoRA 中影响角色细节的区块,或使用 stop 参数提前终止,可以更好地融合两者。
- 问题修复:如果某个 LoRA 总是产生不希望的伪影(如奇怪的背景),可以通过降低相关区块的权重来减轻或消除该问题。
- 效果探索:利用 XYZ 绘图功能,系统地探索 LoRA 各个区块的作用,深化对模型行为的理解。
- 高效工作流:通过预设和 API,可以建立可重复的、精细化的 LoRA 应用流程。
总结
sd-webui-lora-block-weight 是一个功能强大且专业的 WebUI 扩展,它将 LoRA 的应用从“粗放式”提升到了“精细化”的级别。对于希望最大限度发挥 LoRA 潜力、解决 LoRA 副作用问题或进行深度图像定制的高级用户来说,这是一个不可或缺的工具。