扩散模型微调方法/文献综述

news2024/11/19 23:25:35

🎀个人主页: https://zhangxiaoshu.blog.csdn.net
📢欢迎大家:关注🔍+点赞👍+评论📝+收藏⭐️,如有错误敬请指正!
💕未来很长,值得我们全力奔赴更美好的生活!

前言

近年来,扩散模型近年来取得了迅速的发展。扩散模型被广泛应用于文本到图像生成、文本到视频生成、点云完成和生成等各种生成式任务上。然而,从头训练一个扩散模型往往涉及巨大的计算成本和时间投入,限制了其在实际应用中的广泛使用。为了克服这一挑战,研究者们开始关注如何在现有的通用扩散模型基础上,通过微调的方式,将模型专门适应特定的下游任务。微调的思想源于对预训练模型知识的有效重用,通过在具体任务上进行有针对性的调整,以适应不同的应用场景。


文章目录

  • 前言
  • 1. PEFT
  • 2. Prefix Tuning
  • 3. DreamBooth和HyperDreamBooth
  • 4. AdaLoRA
  • 5. DiffFit
  • 6. Uni-ControlNet
  • 7. Textual Inversions
  • 8. InstructCV


从头训练一个扩散模型的代价巨大,因为它需要大规模的数据和计算资源,并且通常需要对模型的架构和超参数进行仔细调整。相比之下,基于微调的方法在保留了预训练模型的通用性的同时,能够更加高效地适应不同的任务需求。这种方法不仅可以显著降低训练成本,同时还能够在更短的时间内实现模型的迭代和优化。

因此,通过在通用扩散模型的基础上进行微调,能够在计算效率和任务适应性之间找到平衡点,为各种特定的下游任务提供了一种灵活、可行的解决方案。这一研究方向的快速发展为在实际应用中更广泛地利用扩散模型提供了有力支持,同时为未来的深度生成模型研究开辟了新的方向。

1. PEFT

论文:Parameter-Efficient Transfer Learning for NLP

2019年,谷歌的研究人员首次提出了一种新的微调方式,即PEFT(Parameter-Efficient Transfer Learning for NLP),并在论文中详细介绍了这一方法,为PEFT研究开辟了新的方向。他们指出,在处理特定的下游任务时,进行完全微调(Full-Finetuning,即微调预训练模型中的所有参数)效率较低。另一方面,如果采用固定预训练模型的某些层,只微调接近下游任务的那几层参数,虽然效率提高,但很难获得令人满意的性能。PEFT方法旨在解决这一问题,实现在保持高效性的同时获得较好的模型性能。这一研究为微调方法的发展提供了新的思路和实践经验。
在这里插入图片描述

2. Prefix Tuning

论文:Prefix-Tuning: Optimizing Continuous Prompts for Generation

在2021年,斯坦福大学的研究人员在论文《Prefix-Tuning: Optimizing Continuous Prompts for Generation》中提出了一种新的微调方法,称之为Prefix Tuning。与Full-finetuning不同,该方法在进行训练之前不是更新所有参数,而是在输入token之前构造一段与任务相关的虚拟tokens作为Prefix。在训练过程中,仅更新Prefix部分的参数,而Transformer中的其他部分参数则保持固定。这一方法的思想与构造Prompt类似,但是与Prompt不同的是,Prefix是一种可以学习的“隐式”提示,相对于显式构造的Prompt具有更大的灵活性。这种新的微调方法为生成模型提供了一种更为高效且可控的调整方式。
在这里插入图片描述

3. DreamBooth和HyperDreamBooth

论文:DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation
论文:HyperDreamBooth: HyperNetworks for Fast Personalization of Text-to-Image Models

在CVPR 2023中Google研究院提出了一种用于文本到图像扩散模型的“个性化”新方法DreamBooth。仅给定主体的几张图像作为输入,通过微调预训练的文本到图像模型,使其学会将唯一标识符与特定主体绑定。一旦主体嵌入到模型的输出领域中,唯一标识符可用于在不同场景中合成主体的新的照片级图像。通过利用嵌入在模型中的语义先验和新的自生成类特定先验保持损失,这项技术能够应用于主体再背景化、文本引导的视图合成和艺术渲染,同时保留主体的关键特征。
在这里插入图片描述
之后,Google研究院又提出了HyperDreamBooth——一个能够从一个人的单张图像中高效生成一小组个性化权重的超网络。通过将这些权重组合到扩散模型中,再加上快速微调,HyperDreamBooth能够在各种情境和风格中生成一个人的面部,保持高主体细节的同时还保留了模型对各种风格和语义修改的关键知识。在大约20秒内实现了对面部的个性化,比DreamBooth快25倍,比Textual Inversion快125倍,仅使用一张参考图像,而质量和风格的多样性与DreamBooth相同。此外,此方法生成的模型比普通DreamBooth模型小10000倍。

在这里插入图片描述

4. AdaLoRA

论文:Adaptive budget allocation for parameter-efficient fine-tuning

2023年微软等在ICLR中提出了AdaLoRA,该方法根据权重矩阵的重要性分数自适应地分配参数预算。具体而言,AdaLoRA将增量更新参数化为奇异值分解的形式。这种新颖的方法使我们能够有效地修剪不重要更新的奇异值,从而实质上减少其参数预算,同时避免了繁琐的精确奇异值分解计算。我们在自然语言处理、问答和自然语言生成等领域对几个预训练模型进行了广泛实验证明了AdaLoRA的有效性。实验结果表明,在低预算设置下,AdaLoRA相对于基线表现出显著的改进。
在这里插入图片描述

5. DiffFit

论文:DiffFit: Unlocking Transferability of Large Diffusion Models via Simple Parameter-Efficient Fine-Tuning

扩散模型在生成高质量图像方面已经被证明非常有效。然而,将大型预训练的扩散模型调整适应新领域仍然是一个待解决的挑战,这对于实际应用至关重要,2023年华为诺亚方舟实验室提出了DiffFit,这是一种参数高效的策略,用于微调大型预训练的扩散模型,以实现对新领域的快速适应。DiffFit非常简单,只微调了特定层中的偏差项和新增的缩放因子,但实现了显著的训练加速和减少模型存储成本。与完全微调相比,DiffFit实现了2倍的训练加速,并且只需存储大约总模型参数的0.12%。并且文中证明缩放因子对于快速适应的有效性。在8个下游数据集上,DiffFit在效率更高的同时实现了卓越或具有竞争力的性能。展示了DiffFit可以通过最小的成本将预训练的低分辨率生成模型调整适应高分辨率的模型。
在这里插入图片描述

6. Uni-ControlNet

论文:Uni-ControlNet: All-in-One Control to Text-to-Image Diffusion Models

2023年香港大学Shihao Zhao等人提出了Uni-ControlNet,这是一个统一的框架,允许在单一模型内以灵活且可组合的方式同时利用不同的局部控制(例如,边缘图、深度图、分割蒙版)和全局控制(例如,CLIP 图像嵌入)。与现有方法不同,Uni-ControlNet只需要对冻结的预训练文本到图像扩散模型进行两个额外适配器的微调,消除了从头开始训练的巨大成本。此外,由于一些专门的适配器设计,Uni-ControlNet只需要一个常数数量的适配器(即2个),而不管使用的局部或全局控制的数量。这不仅降低了微调成本和模型大小,使其更适合实际部署,还促进了不同条件的可组合性。通过定量和定性比较,Uni-ControlNet在可控性、生成质量和可组合性方面展示了其优越性。
在这里插入图片描述

7. Textual Inversions

论文:An Image isWorth One Word: Personalizing Text-to-Image Generation using Textual Inversion

英伟达在ICLR 2023上提出了引入个性化、语言引导的生成任务,其中利用文本到图像模型创建特定概念在新环境和场景中的图像方法Textual Inversions,通过将概念反转为预训练文本到图像模型的文本嵌入空间中的新伪词而运作。这些伪词可以通过简单的自然语言描述注入到新场景中,从而实现简单且直观的修改。在某种意义上,此方法允许用户利用多模态信息,使用基于文本的界面轻松进行编辑,整个diffusion model以及Text Encoder都是冻结的,训练的优化目标是让文本编码器找到最最合适的嵌入向量,就是一个单词与其对应向量的映射记录,是一个非常非常小的数据,一般只有十几K。因此Textual Inversion的微调方法非常的轻量化,
在这里插入图片描述

8. InstructCV

论文:InstructCV: Instruction-Tuned Text-to-Image Diffusion Models as Vision Generalists

2023年北京大学和加州大学为计算机视觉任务开发了一个统一的语言接口,抽象了特定任务设计选择,并通过遵循自然语言指令执行任务。涉及将多个计算机视觉任务视为文本到图像生成问题。在这里,文本表示描述任务的指令,生成的图像是一个视觉编码的任务输出。为了训练模型,汇总了涵盖一系列任务的常用计算机视觉数据集,包括分割、目标检测、深度估计和分类。然后使用大型语言模型对传达每个图像上要执行的具体任务的提示模板进行释义,通过这个过程,创建了一个包括输入和输出图像以及带有注释的指令的多模态和多任务训练数据集。在InstructPix2Pix架构的指导下,使用构建的数据集对文本到图像扩散模型进行指令调整,将其功能从生成模型引导到指令引导的多任务视觉学习器。实验验证了InstructCV与其他通用和任务特定的视觉模型相比表现出竞争力。此外,它展现了强大的泛化能力,适用于未见过的数据、类别和用户指令。
在这里插入图片描述


参考:

大模型微调总结
SD模型微调方法

文中有不对的地方欢迎指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1385683.html

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

相关文章

SMD NTC Thermistor NTC热敏电阻产品基本参数定义

热敏电阻器(Thermistor)是一种电阻值对温度极为灵敏的半导体元件,温度系数可分为Positive Temperature Coefficient 正温度系数热敏电阻又称PTC热敏电阻和Negative Temperature Coefficient 负温度系数热敏电阻又称NTC热敏电阻. NTC热敏电…

基于YOLOv8深度学习的苹果叶片病害智能诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

外汇天眼:不仅骗钱还骗感情?小心这类骗子盯上你

什么是外汇“杀猪盘”骗局?通俗一点来说就是骗子利用社交平台或者网站,伪造虚假的人设和故事,然后诱导网友进入虚假的外汇平台进行投资交易。随着现代网络科技的发展,各种交友软件可以说是层出不穷,虽然给人们提供了更…

智慧公厕:引领城市卫生管理新时代

在智慧城市建设中,智慧公厕作为城市环境卫生信息化的重要组成部分,扮演着关键角色。它不仅可以提升城市管理水平,满足人民群众的需求,还能提高公厕使用体验和城市环境卫生水平。如广州中期科技有限公司自主研发的智慧公厕管理系统…

Type Script 安装 NPM 安装

使用终端命令 npm -v 这里需要使用到npm npm node.js安装包自带 去官网 Node.js — Download下载对应版本安装 1.npm config set registry https://registry.npmmirror.com 2.npm install -g typescript error: npm notice npm notice New minor version of npm availab…

SpringBoot+Vue实现对称加密和非对称加密

我们先来了解一下什么是对称加密和非对称加密,以及两者的优缺点 对称加密 使用同一个密钥对消息进行加密解密 优点:加密和解密的速度快,适合于数据量大的加解密 缺点:密钥在网络传输中可能被泄露,因此安全性相对较低…

arcgis javascript api4.x以basetilelayer方式加载天地图web墨卡托(wkid:3857)坐标系

需求: arcgis javascript api4.x以basetilelayer方式加载天地图web墨卡托(wkid:3857)坐标系 效果图: 代码: 提示: 2个文件放同一个文件夹下 MyCustomTileLayer.js define([exports, "…

手把手教你学会接口自动化系列十一-将用例写在json中,持久化管理起来下

上一篇我写了登录,我们发现json还是没有什么大问题,还蛮好用的,但是我们再写下一个,比如线索新建接口的时候,我们写着写着会发现问题: 我们写获取url的没有问题,代码如下: # !/usr…

uniapp中uview组件库丰富的ActionSheet 操作菜单使用方法

目录 #平台差异说明 #基本使用 #配置顶部的提示信息和底部取消按钮 #如何知道点了第几项 #API #Props #Event 本组件用于从底部弹出一个操作菜单,供用户选择并返回结果。 本组件功能类似于uni的uni.showActionSheetAPI,配置更加灵活,所…

vue:使用【3.0】:拖拽数据

1、参考链接&#xff1a;vue.draggable中文文档 - itxst.com 2、想要实现的效果图&#xff1a;红框内容可以拖拽 3、安装 yarn add vuedraggablenext npm i -S vuedraggablenext 4、代码 <template><draggable:list"columns"ghost-class"ghost&qu…

手把收来教大家win10电脑分辨率怎么调

win10系统操作界面和方式和win7系统有很大不同&#xff0c;有些用户想要设置屏幕的分辨率&#xff0c;但是却不知道应该怎么操作&#xff1f;屏幕分辨率会影响我们使用电脑的视觉效果&#xff0c;经常使用电脑的朋友通常都会设置一个合适的分辨率。下面小编来教大家win10电脑分…

webpack的性能优化(一)——分包优化

1.什么是分包&#xff1f;为什么要分包&#xff1f; 默认情况下&#xff0c;Webpack 会将所有代码构建成一个单独的包&#xff0c;这在小型项目通常不会有明显的性能问题&#xff0c;但伴随着项目的推进&#xff0c;包体积逐步增长可能会导致应用的响应耗时越来越长。归根结底这…

什么是google算法?

谷歌算法本身指的是谷歌针对搜索引擎做的规定 要想在别人的地盘玩&#xff0c;那肯定要了解这个地盘的规定&#xff0c;不然做了什么违反了规定&#xff0c;谷歌肯定不会让你继续玩下去 要想做谷歌&#xff0c;那肯定要了解谷歌的算法&#xff0c;然而谷歌的算法也不是一成不变…

代码随想录 Leetcode202. 快乐数

题目&#xff1a; 代码(首刷自解 2024年1月15日&#xff09;&#xff1a; class Solution { public:bool isHappy(int n) {unordered_set<int> hash;while(n ! 1) {int sum 0;while(n/10 ! 0) {sum (n % 10)*(n % 10);n/10;}sum n*n;if (hash.find(sum) ! hash.end()…

SQL备忘--集合运算

前言 本文讨论的是两个子查询结果的合并问题&#xff0c; 是行维度下的合并处理 例如子查询A查出5条记录、子查询B查出3条记录&#xff0c;那么将两个结果合并&#xff0c;则共返回8条记录 行维度上要能进行合并&#xff0c;前置要求是&#xff1a;子查询的列字段是相同的&…

关于你不知道的前端文件上传方式

1、原生方法 我们开发中比较常用的有使用 input 属性的 type 设置为 file,这里我们就不进行过多的阐述&#xff0c;已经老生常谈了。 今天我们主要介绍两个新的属性 showDirectoryPicker 和 showOpenFilePicker 这里是官方文档 1、showDirectoryPicker showDirectoryPicker方…

20240115-【UNITY 学习】第一人称移动增加斜坡移动、冲刺和蹲伏功能

直接修改或者替换PlayerMovement_01.cs using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerMovement_02 : MonoBehaviour {private float moveSpeed; // 玩家移动速度public float walkSpeed 7; // 行走速度public float sp…

内网搭建文件服务器

文件下载地址 Releases rejetto/hfs GitHubHFS is a web file server to run on your computer. Share folders or even a single file thanks to the virtual file system. - Releases rejetto/hfshttps://github.com/rejetto/hfs/releases http://192.168.100.33/apk/ 就…

.net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别

//全局过滤器 builder.Services.AddMvc(m > { m.Filters.Add<AllResultFilter>(); }); 1、实现过滤器 public class AllResultFilter : IResultFilter {/// <summary>/// 结果执行后方法/// 不可更改结果/// </summary>/// <param name"con…

spring常见漏洞(2)

Spring Web Flow框架远程代码执行(CVE-2017-4971)漏洞&#xff0c;是由于Spring Web Flow的数据绑定问题带来的表达式注入&#xff0c;从而导致任意代码执行。 影响版本 2.4.0-2.4.4、Older unsupported versions are also affected 漏洞分析 view对象处理用户事件&#xf…