C31:用 LoRA 微调扩散模型:分步指南

LoRA(即低秩自适应)正在改变扩散模型生成特定风格和主体的方式。通过修改扩散模型中交叉注意力层的权重,LoRA 让创作者能够针对独特的艺术或技术需求微调输出。本文将探讨 LoRA 的工作原理、实际应用,以及如何使用 ComfyUI 等工具将它们逐步集成到工作流中。



什么是 LoRA?

LoRA(低秩自适应)是小型模型,旨在引导扩散模型实现特定的结果,例如复现独特的风格或主体。它们通过将大型数据矩阵分解为更小的低秩矩阵来实现这一点,从而减少所需的存储和算力。这使得 LoRA 成为微调扩散模型的高效且可扩展的方案,无需重新训练整个模型。

LoRA 的主要特点:

  • 数据效率:LoRA 存储的数据远少于完整的扩散模型,只关注自适应所需的参数。
  • 交叉注意力层修改:LoRA 调整扩散模型内的特定层,以实现预期结果。
  • 灵活性:LoRA 可应用于艺术、图像生成和技术建模等多个领域。

实际示例:在 ComfyUI 中使用 LoRA

为了展示 LoRA 的强大功能,让我们来看一个使用 Aether Cloud LoRa 的实际示例,该模型专为 SDXL 模型而设计。

ComfyUI 中的 LoRA

步骤 1:搭建工作流

在 ComfyUI 中,首先创建一个基本的文生图工作流,使用 Juggernaut XL 模型。该模型能生成高质量的云朵,但加入 LoRA 后,输出效果可以进一步优化。

  • 加载 LoRA:
    • 使用 LoraLoaderModelOnly 节点加载 LoRA 模型。
    • 将此节点连接到 加载检查点节点 和 KSampler 节点。
  • 调整模型强度:
    • 这个模型强度参数 控制 LoRA 对输出的影响程度。
    • 先从默认强度 1 开始,并根据需要进行调整。

步骤 2:比较输出结果

加载 LoRA 后,排队运行工作流并比较结果:

  • 不使用 LoRA:Juggernaut XL 生成的云朵很逼真,但缺乏艺术感。
  • 使用 LoRA(强度 1):输出变得更加抽象,反映了 Aether Cloud LoRA 的独特特征。

为了在真实感和抽象感之间找到平衡,请将强度降低到 0.5 并重新运行工作流。这一调整将 Juggernaut XL 的内在特性与 LoRA 的艺术风格融合在一起。

步骤 3:增加细节

如需更多细节,请增加推理步数:KSampler 节点:

  • 20 步:能产生不错的结果,但缺少精细的细节。
  • 30 步:增加了令人信服的细节,并提升了整体质量。

高级技巧:使用 LoRA 进行局部重绘

LoRA 还可用于局部重绘,让你在保留整体构图的同时修改图像的特定区域。

示例:创建一朵心形云

  1. 搭建局部重绘工作流:
    • 使用 CropAndStitch 节点 并在要修改的区域上绘制遮罩。
    • 调整参数,例如 denoise strength(如 0.8),以确保底层图像为新生成的内容提供大致的形状。
  2. 修改提示词:
    • 使用一个具体的提示词,例如“two birds kiss each other in the sky.”
  3. 运行工作流:
    • 将工作流排队运行,并将局部重绘的结果与原始图像进行比较。

这项技术可以精确控制输出,将 LoRA 的特征与基础模型融合,从而实现惊艳的效果。


使用 LoRA 的最佳实践

  • 尝试不同的强度参数:调整模型强度,以平衡原始模型的特性与 LoRA 的影响。
  • 优化推理步数:步数越多通常细节越好,但可能会增加处理时间。
  • 与 CLIP 文本编码器结合:某些 LoRA 需要连接到 CLIP 文本编码器才能获得最佳性能。

参考资料

1 thought on “C31: Fine-Tuning Diffusion Models with LoRAs: A Step-by-Step Guide”

发表评论