stable diffusion其他微调方法

news2025/2/23 6:44:09

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.coloradmin.cn/o/627544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

yolo-v4

目录 一:前言 二:一些数据增强的方法 三:自提议 四:dropout 普通的dropout yolov4的dropblock 五:Label smothing 标签平滑 六: GIOU,DIOU,CIOU 七: 对网络结构的…

移动端APP组件化架构实践

作者:何乐乐 前言 对于中大型移动端APP开发来讲,组件化是一种常用的项目架构方式。个人最近几年在工作项目中也一直使用组件化的方式来开发,在这过程中也积累了一些经验和思考。主要是来自在日常开发中使用组件化开发遇到的问题以及和其他开…

Lecture 16 Dependency Grammar

目录 Dependency GrammarDependency GrammarDependency RelationsApplication: Question AnsweringApplication: Information ExtractionDependency vs. ConstituencyProperties of a Dependency TreeProjectivityTreebank Conversion Transition-based ParsingDependency Pars…

【openEuler 20.03 TLS编译openGauss2.1.0源码】

openEuler 20.03 TLS编译openGauss2.1.0源码 一、安装环境二、安装前准备二、安装步骤 一、安装环境 项目Value操作系统openEuler 20.03 64bit with ARMopenGauss2.1.0openGauss-third_party2.1.0 二、安装前准备 项目Value购买华为ECS鲲鹏 8vCPU32G 100M/s带宽 openEuler 2…

组网配置案例

汇聚层与接入层或者汇聚层与核心层组网 案例: port-group技术:可实现对于所有组内接口进行相同配置 [ACC-1]port-group group-member GigabitEthernet 0/0/1 to GigabitEthernet 0/0/9 [ACC-1-port-group]port link-type access [ACC-1-port-group]port…

【大数据学习番外篇之爬虫1】 爬虫的介绍与基本使用

目录 1. 爬虫的介绍 2. 爬虫基本使用 2.1 爬取搜狗首页的页面数据 2.2 网页采集器 1. 爬虫的介绍 前戏: 1.你是否在夜深人静的时候,想看一些会让你更睡不着的图片却苦于没有资源... 2.你是否在节假日出行高峰的时候,想快速抢购火…

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

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

javaScript蓝桥杯-----天气趋势 A

目录 一、介绍二、准备三、目标四、代码五、完成 一、介绍 日常生活中,气象数据对于人们的生活具有非常重要的意义,数据的表现形式多种多样,使用图表进行展示使数据在呈现上更加直观。 本题请实现一个 Y 城 2022 年的天气趋势图。 二、准备…

【Python】一文带你认识 Web 框架之 FastAPI

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

TI DSP芯片C2000系列读取FLASH数据

本文记录如何读取TI芯片的flash数据 进入TI官网下载UNIFLASH工具 点击查看详情 点击下载选项,根据系统下载对应版本 下载完成之后,点击安装。安装完成之后双击图标点开。如果你的板子已经供电,且编程器已经连接好,UNIFLASH会自动…

使用C++处理一行输入未知个数的字符的问题

今天分享一下使用C处理一行输入未知个数的字符的问题。 一,问题描述 在一行输入未知个数字符,以回车结束输入。 二,分析问题 第一种方式使用String类型,直接读入一串字符,这种方法简单高效。第二种方式一个一个字符…

HCIA-DHCP,FTP,Telnet

目录 DHCP: DHCP的优点: DHCP的工作原理 DHCP的配置 DHCP全局地址池案例: FTP FTP介绍 FTP基本配置 Telnet Telnet的应用场景 Telnet设备配置 Telnet配置案例 DHCP: 解决传统手工配置IP的问题,可以实现IP的…

Openlayers优化加载地图瓦片太慢的问题,Openlayers瓦片缓存实现和请求失败瓦片重试功能

专栏目录: OpenLayers入门教程汇总目录 前言 Openlayers默认加载地图瓦片很慢,通过对比使用openlayers和leaflet加载速度,能够明显看到openlayers加载速度比leaflet要慢很多。 通过Openlayers源码发现是因为Openlayers的瓦片加载机制是通过tileQueue瓦片加载队列来顺序加载…

变电所运维云平台在电力系统中的应用

安科瑞虞佳豪 变电所运维云平台可以看做是电力监控系统的网络应用延伸,变电所运维云平台通过互联网,电力运维人员通过手机可以随时随地了解工厂配电系统的运行情况,做到无人值守或者少人值守,同时可以监测用能状况、漏电、线缆异…

基于图像识别框架Airtest的Windows项目自动化测试实践

写在前面 本次分享的内容是基于Airtest实现Windows应用的自动化测试,内容大纲: Airtest框架介绍:Airtest适用项目、Airtest特点、Airtest的优势 Airtest框架组成、原理 Airtest环境搭建及IDE的简单使用 Airtest开展Windows应用自动化测试实…

Navicat恢复数据库连接及查询sql的解决办法

文章目录 如题一. 恢复Navicat数据库连接信息注册表编辑工具 二. 恢复Navicat每个数据库的sql文件等 如题 因为公司给电脑加域,导致使用新的用户账户,原先的很多配置都失效了,本篇是讲述一下如何恢复数据库连接工具Navicat的连接数据。 一.…

300多个日夜的付出,从外包跑路的我,上岸阿里,没人知道我经历了什么

前言: 没有绝对的天才,只有持续不断的付出。对于我们每一个平凡人来说,改变命运只能依靠努力幸运,但如果你不够幸运,那就只能拉高努力的占比。 2023年5月,我有幸成为阿里的一名自动化测试工程师&#xff…

RTSP/Onvif协议安防视频平台EasyNVR服务频繁重启是什么原因?

EasyNVR平台优秀的视频能力在于通过RTSP/ONVIF协议,将前端接入设备的音视频资源进行采集,并转码成适合全平台、全终端分发的视频流格式,包括RTSP、RTMP、FLV、HLS、WebRTC等格式。平台可拓展性强、部署轻快,在安防监控领域有着广泛…

MVVM (Model-View-ViewModel Pattern)

MVVM 模式中有三个核心组件:模型、视图和视图模型。 每个组件的用途不同。 下图显示了这三个组件之间的关系。 在交互层次上,视图“了解”视图模型,视图模型“了解”模型,但模型不知道视图模型,而视图模型不知道视图。…

链表内指定区间反转

题目: 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n),空间复杂度 O(1)。 例如: 给出的链表为 1→2→3→4→5→NULL,m2,n4 返回 1→4→3→2→5→NULL 数据范围&#xff…