当前位置:   article > 正文

stable diffusion其他微调方法_stable diffusion 微调

stable diffusion 微调

textual inversion

  • 发布时间:2022

  • 目标:与DreamBooth一样,都是想要微调模型生成特定目标或风格的图像

  • 方法:通过在vocabulary中添加一个额外的embedding来学习输入的新特征。预训练模型的所有参数都锁住,只有新的embedding被训练
    在这里插入图片描述

  • DreamBooth与textual inversion区别

    • 微调参数不同:前者微调所有参数,后者只训练新加的embedding
    • 新token的添加方式:前者是在原有字典中找到一个罕见的word来学习新概念且利用了类别先验学习,而后者是在原有字典中添加了一个新的embedding从头训练。DreamBooth相当于改变那个罕见词汇的含义,textual inversion是添加新词汇
    • 先验保留方式:DreamBooth通过先验保留损失来保证模型原来的认知不变(语言漂移),而由于textual inversion之前的vocabulary是锁住的,因此不会被改变也不需要添加相关损失
    • 模型大小:DreamBooth更大,textual inversion更轻量
    • 效果:textual inversion效果一般,现在也很少使用。个人认为可能是embedding缺少先验,难以训练,且参数较少微调能力不够

T2I Adaptor

  • 发表时间:与ControlNet同期,2023
  • 目标:与ControlNet一样,对图像生成进行控制
  • 方法:与ControlNet很相似,也是额外添加了一个小网络,然后将权重添加到Unet的encoder中(实验结果显示加在encoder中效果较好)。
    在这里插入图片描述
    RB指残差模块
  • 与ControlNet比较
    • 权重添加位置不同,分别是Unet的encoder和decoder
    • 额外的网络结构不同,ControlNet是copy了Unet的block,而T2I的外加网络结构与Unet无关
    • 在实践中,ControlNet效果稍好

AdaLora

  • 没有代码以及WebUI插件
  • 基于Lora的改进:Lora中低秩分解的秩是人为指定的且是统一的,考虑到参数矩阵需要fine tune的秩可能是不一样的,提出自适应的秩,根据其重要性来进行秩的指定(参数分配)。在保证参数总数的情况下提升fine tune的性能
  • 方法:
    • 可以基于svd分解的特征值确定特征向量的重要性,但是svd分解非常耗时,实际操作中并不现实。于是使用三个矩阵模拟 U Σ V U \Sigma V UΣV,其参数是训练更新的,为了保证U和V的正交性,引入惩罚项 L = ∣ ∣ U T U − I ∣ ∣ + ∣ ∣ V T V − I ∣ ∣ L=||U^TU-I||+||V^TV-I|| L=∣∣UTUI∣∣+∣∣VTVI∣∣
    • 但是如果直接使用 Σ \Sigma Σ中特征值绝对值大小评判特征向量的重要程度在实验中效果并不好。于是作者将损失对参数的求导结果作为该特征向量的重要性分数,对分数排序,去除分数低的特征向量。(这里对分数做了历史平滑,也考虑前面step中的重要性)
    • Lora中处理的是qkvo,本文处理的是qkv和feedforward中f1,f2,因为在消融实验中发现微调f1,f2也很重要
      在这里插入图片描述
  • 比较
    • 对Lora实现了参数动态分配,并将低质分解从attention层中扩展了feedforward层

LyCORIS:Lora的其他补充方式

WebUI可以使用,使用较多的是LoCon和LoHa

LoCon:Lora for convolution

  • 将Lora扩展到卷积层。
  • 方法:
    • 在代码上只是将低了卷积的输出通道数
    • 理论:将一个卷积核(一个通道)展开,可以看成是参数矩阵的一列。将所有卷积核按列排布可以得到类似于transformer中的参数矩阵,即卷积操作也是矩阵相乘。通过降低channel数再提高channel数实现降低参数量的目的
      在这里插入图片描述

LoHa:LoRA with Hadamard Product representation

  • 对Lora的改进,将hadamard product应用到矩阵低秩分解中。

在这里插入图片描述
传统的低秩分解算法,需要保证分解后的秩的维度小于2R,而通过LoHa的进一步拆解,使得矩阵的秩扩展到 R 2 R^2 R2,解决了原生LoRA受到低秩的限制。

  • 总结
    • LoCon和RoHa都能实现更细粒度的微调。LoCon可以对实现更细粒度的控制,从全图的调整优化为细粒度的部件调整。RoHa更注重于低秩矩阵分解本身,引入Hadamard Product,将秩的维度 从2R扩展到 R^2。这两个插件都包含在LyCORIS库
    • Lora可以和其他微调方法一起使用以降低微调参数量,常用的是和DreamBooth一起降低参数量
    • 这些方法需要的数据量都较小。一般来讲,微调的参数量越多,需要的数据量也越大(DreamBooth例外)
    • 一般而言,数据越多,效果越好
      在这里插入图片描述
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/574402
推荐阅读
相关标签
  

闽ICP备14008679号