stable diffusion其他微调方法

news/2024/7/10 18:52:01 标签: 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例外)
    • 一般而言,数据越多,效果越好
      在这里插入图片描述

http://www.niftyadmin.cn/n/414983.html

相关文章

robocopy复制远程主机目录到当前主机

在windows中移动大文件时,可以考虑使用以下工具或方法来迁移Windows服务器的目录: Robocopy命令: 是一个微软开发的命令行程序,用于高速可靠的文件复制任务。可以用来镜像和迁移Windows服务器的目录。 xcopy命令: 也是一个微软开发的命令行程序,可以复制文件和目录…

【CentOS安装软件系列】Centos7安装Mysql8

前言 公司的系统都是内网部署的,mysql也需要自己在内网部署,虽然使用docker安装很方便,但是有一定的风险。所以简单记录一下怎么安装mysql,以备不时之需。 一、下载安装包 下载地址:https://downloads.mysql.com/arch…

2023年杭州/广州/东莞/深圳软考(中/高级)认证,618报名特惠

软考是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资格考试。 系统集成…

Vue中如何进行地图展示与交互(如百度地图、高德地图)?

Vue中如何进行地图展示与交互 随着移动互联网的普及,地图应用已经成为人们生活中不可或缺的一部分。在Vue.js中,我们可以使用第三方地图库(如百度地图、高德地图)来实现地图的展示和交互。本文将介绍如何在Vue.js中使用百度地图和…

粮油食品行业MES系统源码

MES系统可以提供全面的生产过程监控和数据分析,帮助企业实现智能化、数字化生产。同时,MES系统可以优化生产计划和物料配送,降低废品率和能耗,提高生产效率和质量,降低生产成本,增加利润。 一、粮油MES系统…

vue3ts安装sass(scss)

序 1、我附上个sass的github(跟本教程无关)地址GitHub - sass/sass: Sass makes CSS fun! 2、博主本地环境 "vue": "^3.2.47", "typescript": "^5.0.2" "vite": "^4.3.9", node18.12.1 3、…

Linux日志打包脚本

#!\bin\bash logPath"/home/dockerMount/serviceLog/lark_log" #echo "日志路径:${logPath}" saveTarGzFile"/dev/InfoTest" # 保存压缩包路径 oneMonth$(date -d "1 month ago" "%Y-%m") echo "前一个月…

嵌入式题库

嵌入式题库 作者:杨书瑶 第一次作业 一. 单选题(共6题,42分) 1. (单选题, 7分)下列说法不正确的是? B. ARM是一个人的名称 2. (单选题, 7分)下列不属于嵌入式系统的特点是? C. 具有通用计算机功能 …