SVDiff: Compact Parameter Space for Diffusion Fine-Tuning——【论文笔记】

news2024/9/23 9:27:27

本文发表于ICCV 2023

论文地址:ICCV 2023 Open Access Repository (thecvf.com) 

官方代码:mkshing/svdiff-pytorch: Implementation of "SVDiff: Compact Parameter Space for Diffusion Fine-Tuning" (github.com)

一、Introduction

        最近几年,基于扩散的文本到图像生成模型取得了快速发展,使得简单的文本提示可以生成高质量的图像。这些模型具有现实主义和多样性,引发了研究人员对于图像编辑的兴趣。一些最近的作品如Textual-Inversion、DreamBooth和Custom Diffusion进一步发掘了大规模文本到图像扩散模型的潜力。这些方法通过微调预训练模型的参数,实现了模型适应特定任务或个人用户偏好。然而,微调大规模文本到图像扩散模型仍然面临一些限制。一个限制是参数空间过大可能导致过拟合或泛化能力下降。另一个挑战是学习多个个性化概念的困难,尤其当它们属于相似类别时。

        为了解决这些问题,作者从GAN文献中得到启发,提出了一种紧凑而有效的参数空间,称为谱移。谱移通过仅微调模型权重矩阵的奇异值,减小了参数空间的规模,从而有助于缓解过拟合和语言漂移问题。此外,作者还提出了一种数据增强技术,即剪切-混合-分解方法,用于增强模型学习多个个性化概念的能力。通过这些方法,作者展示了基于文本的单图像编辑框架的应用,并为进一步研究提供了有前景的起点。

        总而言之,这项工作的主要贡献是提出了一个紧凑而有效的参数空间,用于微调大规模文本到图像扩散模型,并提出了一种数据增强技术,为图像个性化和定制开辟了新的途径。

二、Related Work

        这部分主要介绍了基于扩散模型的文本生成图像、个性化图像生成、图像编辑相关的知识,并引入论文所提出的方法SVDiff。

        基于扩散的文本到图像生成模型通过微调文本嵌入、全权重、交叉注意力层或适配器等方式,使用少量个性化图片进行了模型的个性化调整。其他研究也探索了用于快速适应的无需训练的方法。在GAN领域,FSGAN引入了仅微调权重矩阵奇异值的概念,NaviGAN进一步通过无监督方法在这个紧凑参数空间中发现语义方向。我们的方法称为SVDiff,将这一概念引入到文本到图像扩散模型的微调中,并设计用于少样本迁移学习。LoRA是另一种类似的方法,探索了用于文本到图像扩散微调的低秩适配,而我们的SVDiff优化了权重矩阵的所有奇异值,从而得到了更小的模型检查点。类似的想法也在少样本分割中得到了探索。 除了文本到图像生成,扩散模型还显示出在语义编辑方面的巨大潜力。这些方法通常集中在通过优化空文本嵌入或过度拟合给定图像进行反演和重建。我们提出的方法SVDiff是基于DreamBooth的单图像编辑框架,展示了SVDiff在单图像编辑和减少过拟合方面的潜力。

三、Method

3.1 Preliminary

        这部分讲述了本文是基于Stable-Diffusion来实现的,然后介绍了FSGAN,FSGAN基于奇异值分解(SVD)技术,并提出了一种有效的方法来适应少数设置中的GAN。它利用奇异值分解来学习一个紧凑的更新,用于在GAN的参数空间中进行域自适应,作者就是从此汲取的灵感。

3.2. Compact Parameter Space for Diffusion Fine-tuning

论文的核心思想就是把FSGAN中的谱移概念移入扩散模型的参数空间中,所以,首先要对预训练扩散模型的权重矩阵执行奇异值分解(SVD),具体过程如下图:

对于这幅图,我的理解是这样的:

        a. Convolution:SVDiff操作在模型的中间层执行,Wtensor即模型的卷积层的权重矩阵。

        b. Matrix Multiplication:在模型的中间层中,卷积权重起到了关联记忆的作用,这意味着它能够捕捉输入数据中的某些关联模式或特征。

        c. 奇异值分解(SVD):这部分就是对权重矩阵进行奇异值分解。

        首先获得模型中间层的卷积权重矩阵Wtensor,然后对Wtensor进行重塑,将其转换为一个二维矩阵W,以便执行奇异值分解。然后对W进行奇异值分解,将W分解成三个矩阵的乘积:U、Σ 和 V^T。其中,U 和 V 是正交矩阵,Σ 是一个对角矩阵,其对角线上的元素称为奇异值。

        接下来,我们只微调奇异值,而不是整个权重矩阵。这样可以减少参数空间的大小,从而减少过拟合的风险,并提高模型的泛化能力。最后,我们将微调后的奇异值与原始的正交矩阵和对角矩阵相乘,得到新的权重矩阵。通过这种方式,SVDiff方法能够有效地优化模型的参数空间,提高模型的性能和效率。

        执行奇异值分解后,将变形后的权重矩阵与变形后的特征贴片相乘,实现了f_out = W*f_in的操作。这个操作的目的是利用奇异值分解后得到的新的权重矩阵来对输入特征贴片进行变换,从而获得更具有表征能力的特征表示。这种操作可以帮助模型学习到数据中的更复杂的模式和结构,从而提高模型的泛化能力和生成能力。通过奇异值分解和权重更新,SVDiff方法能够有效地优化模型的参数空间,提高模型的性能和效率。

3.3 Cut-Mix-Unmix for Multi-Subject Generation

        在使用StableDiffusion模型同时训练多个概念时,我们发现在一些困难的合成或相似类别的主题上,模型往往会在渲染图像时混合它们的风格。为了明确告诉模型不要混合个性化风格,提出了一种简单的技巧,称为Cut-Mix-Unmix。

        通过构建和呈现“正确”切割和混合的图像样本,我们指导模型进行风格分离。这个方法的主要原理就是:手动创建类似于CutMix的图像样本和相应的提示(例如“左边是一个[V1]的狗和右边是一个[V2]的雕塑”或者“左边是[V2]的雕塑和右边是一个[V1]的狗”)。先验损失样本以类似的方式生成。在训练时,Cut-Mix-Unmix数据增强被以预定义的概率应用(通常设为0.6)。这个概率没有设为1,因为这样做会让模型在区分主题时变得困难。在推断阶段,我们使用与训练时不同的提示,例如“一只坐在[V1]的狗旁边的[V2]的雕塑”。然而,如果模型过度拟合了Cut-Mix-Unmix样本,即使使用不同的提示,它可能仍会生成带有拼接伪影的样本。然后论文中提到,使用负面提示有时可以缓解这些伪影。

        由于微调后的模型中,狗的特殊标记往往在熊猫的区域上增加了关注度。为了强制两个主题之间的分离,我们在交叉注意力图的非对应区域上使用均方误差(MSE)。这个损失鼓励狗的特殊标记只关注狗,而熊猫的特殊标记只关注熊猫。这个扩展的结果显示出了明显减少的拼接伪影,这就是通过在交叉注意力图上加入“分离”正则化。

3.4. Single-Image Editing 

        针对单张图片的编辑,基于SVDiff方法,论文提出了一个编辑框架,在这个框架中,使用单图像编辑的方式来实现对图像的编辑。我们通过将图像和相应的文本对输入到一个扩散模型中,通过微调模型来实现所需的编辑。在推理时,通过修改提示来获得所需的编辑效果。

        为了减轻微调过程中的过拟合问题,使用频谱转移参数空间而不是完整的权重。对于不需要进行大量结构变化的编辑,使用DDIM反演来改善结果。对于需要较大结构变化的编辑,可以在去噪过程中注入更多的噪声。

四、Experiment 

        实验评估了SVDiff在各种任务上的作用,例如单/多受试者生成、单个图像编辑和消融。DDIM 采样器(η = 0)用于所有生成的样本。

        下图将SVDiff方法与当前几个流行方法在单个对象的个性化图像生成上进行比较的结果:

        下图是在多个对象的个性化图像生成上所做的比较,主要是看论文所提出的数据增强技术Cut-Mix-Unmix的效果,Full的意思是更新整个权重矩阵(SVD方法只需要更新奇异值矩阵即可,无需更新整个权重矩阵)。 

下图是利用论文所提的方法实现的图像编辑

 

接下来就是消融实验:

下表分析了微调UNet中的12个参数子集及其相应的模型大小,论文中提到:

(1)与优化关键和值投影相比,优化交叉注意(CA)层通常会更好地保留主题身份。(2)单独优化UNet的上、下或中间块不足以保持同一性,这就是为什么我们没有进一步隔离每个部分的子集。然而,看起来上块表现出最好的身份保护。(3)在维度方面,2D权重表现出最大的影响力,并提供比UNet-CA更好的身份保护。

        下图中,图(a)表示的是谱移的相关性,针对两个主题而言, 通过计算两个主题的光谱偏移的余弦相似度,并将所有层的相似度求平均后绘制。对角线显示了不同学习速率的两次运行之间的平均相似度。(光谱偏移的相关性是指在机器学习领域中,对于不同的数据集或主题,模型在每个层中学习到的光谱偏移之间的相似程度。光谱偏移是指在经过模型的每一层后,特征向量在空间中的位置发生的变化。)

        谱移相关性越高,表示不同主题在模型学习中共享更多的特征;相关性越低,表示不同主题在模型学习中学习到的特征差异性较大。

 

        上图中,图(b) 则是针对论文所提出的方法和其他方法在单个对象个性化图像生成上,针对文本相关性和图像相关性所做的图表,从图中可知,论文所提出的方法有着更好的表现。

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

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

相关文章

Apache POl Excel

目录 介绍 Apache POl的应用场景: 入门使用 通过POI创建Excel文件并且写入文件内容 通过POI读取Excel文件中的内容 介绍 Apache POl是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用POI在Java程序中对Miscrosoft O…

AI应用开发-Visual Studio Code及Remote Development插件远程开发

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…

由vscode自动升级导致的“终端可以ssh服务器,但是vscode无法连接服务器”

问题描述 简单来说就是,ssh配置没动,前两天还可以用vscode连接服务器,今天突然就连不上了,但是用本地终端ssh可以顺利连接。 连接情况 我的ssh配置如下: Host gpu3HostName aaaUser zwx现在直接在终端中进行ssh&am…

【数位dp】【动态规划】【KMP】1397. 找到所有好字符串

作者推荐 【动态规划】【字符串】【表达式】2019. 解出数学表达式的学生分数 本文涉及知识点 动态规划汇总 LeetCode1397. 找到所有好字符串 给你两个长度为 n 的字符串 s1 和 s2 ,以及一个字符串 evil 。请你返回 好字符串 的数目。 好字符串 的定义为&#x…

从零开始:构建高效的 JMeter 集群压测环境

当面对大量用户模拟和性能测量需求时,单台计算机运行 JMeter 往往显得力不从心。因此,构建一个多节点的JMeter集群成为了一种提升测试性能的有效途径。接下来,本文将详细介绍如何组建和配置一个JMeter测试集群。 一、准备工作:服…

深入理解直接内存和零拷贝

目录 直接内存深入辨析 堆外内存的优点和缺点 零拷贝 什么是零拷贝? Linux的I/O机制与DMA 传统数据传送机制 Linux支持的零拷贝 mmap内存映射 sendfile splice Java生态圈中的零拷贝 NIO提供的内存映射MappedByteBuffer NIO提供的sendfile Kafka中的零拷贝 直接…

npm ERR! code CERT_HAS_EXPIRED

执行npm i报错: npm ERR! code ETIMEDOUT npm ERR! syscall connect npm ERR! errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.org/react-redux failed, reason: connect ETIMEDOUT 104.16.2.35:443 npm ERR! network This is a problem rel…

LangChain 79 LangGraph 从入门到精通一

LangChain系列文章 LangChain 60 深入理解LangChain 表达式语言23 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 61 深入理解LangChain 表达式语言24 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 62 深入理解Lang…

Python爬虫Scrapyd项目部署详细教程--最完整版本

文章目录 scrapy项目部署1.scrapyd部署工具介绍(1)环境安装 2.scrapy项目部署(1)配置需要部署的项目(2)管理scrapy项目(3)启动项目(4)关闭项目(5&…

【Transformer 】 Hugging Face手册-推理管道 (04/10)

一、说明 这里是Hugging Face手册第四部分,如何使用推理管道;即使您没有特定模式的经验或不熟悉模型背后的底层代码,您仍然可以使用它们通过 pipeline ()进行推理! 二、推理管道 pipeline ()可以轻松使用Hub中的任何模型来推理任…

Go语言的100个错误使用场景(11-20)|项目组织和数据类型

前言 大家好,这里是白泽。 《Go语言的100个错误以及如何避免》 是最近朋友推荐我阅读的书籍,我初步浏览之后,大为惊喜。就像这书中第一章的标题说到的:“Go: Simple to learn but hard to master”,整本书通过分析100…

Channel事件管理类实现(模块三)

目录 类功能 类定义 类实现 类功能 因为涉及到后续一些实现&#xff0c;因此后续可能会进行修改 类定义 class Channel { private:uint32_t _events; // 当前需要监控的事件uint32_t _revents; // 当前连接触发的事件using EventCallback std::function<void()>;E…

自学Java的第58,59天

网络通信 网络通信三要素&#xff1a;ip地址&#xff0c;端口号&#xff0c;协议 ip地址 常用方法 写法 端口号 协议 UDP通信 快速入门 写法&#xff08;客户端&#xff09; &#xff08;服务端&#xff09; UDP通信 多发多收 TCP通信 写法&#xff08;客户端&#xff09; …

Node.js版本管理工具之_Volta

Node.js包管理工具之_Volta 文章目录 Node.js包管理工具之_Volta1. 官网1. 官网介绍2. 特点1. 快( Fast)2. 可靠(Reliable)3. 普遍( Universal) 2. 下载与安装1. 下载2. 安装3. 查看 3. 使用1. 查看已安装的工具包2. 安装指定的node版本3.切换项目中使用的版本 1. 官网 1. 官网…

网络协议梳理

1 引言 在计算机网络中要做到有条不紊地交换数据&#xff0c;就必须遵守一些事先约定好的规则。这些规则明确规定了所交换的数据的格式以及有关的同步问题。这里所说的同步不是狭义的&#xff08;即同频或同频同相&#xff09;而是广义的&#xff0c;即在一定的条件下应当发生什…

大数据本地环境搭建03-Spark搭建

需要提前部署好 Zookeeper/Hadoop/Hive 环境 1 Local模式 1.1 上传压缩包 下载链接 链接&#xff1a;https://pan.baidu.com/s/1rLq39ddxh7np7JKiuRAhDA?pwde20h 提取码&#xff1a;e20h 将spark-3.1.2-bin-hadoop3.2.tar.gz压缩包到node1下的/export/server目录 1.2 解压压…

镜舟科技客户成功团队负责人孟庆欢:湖仓一体将成为数据架构的新范式

大数据产业创新服务媒体 ——聚焦数据 改变商业 随着数字化的概念逐步深入不同领域企业的运营中&#xff0c;业务形态和数字化路径也越来越丰富。这也为企业数据处理、储存的方式提出了更多要求。对于企业&#xff0c;尤其是数据驱动型企业来说&#xff0c;需要强大的解决方案…

LNMP.

一.mysl配置 1.安装mysql yum install mysql-server -y 2.进入mysql配置文件目录 cd /etc/my.cnf.d3.编辑mysql配置文件 vim mysql-server.cnf 在[mysqld]中添加: character-set-serverutf84.启动mysql服务 systemctl start mysqld5.登入mysql mysql 6.创建数据库 cre…

153基于matlab的滚动轴承故障诊断

基于matlab的滚动轴承故障诊断&#xff0c;基于小波包分解&#xff0c;得到数据峭度值&#xff0c;以正常与故障数据峭度差值进行最大尺度重构&#xff0c;对重构信号进行包络谱分析。程序已调通&#xff0c;可直接运行。 153matlab 信号重构 包络谱分析 故障诊断 (xiaohongshu…

Macbook 安装金铲铲之战等 IOS 游戏

前言 Macbook 现在可以玩一下 IOS 系统上的游戏啦&#xff0c;以笔者的 M1 Pro 芯片为例 步骤 一、安装 PlayCover 推荐 Sonama 安装 Nightly 版本 官网地址&#xff1a; https://playcover.io/ Nightly: https://nightly.link/playcover/playcover/workflows/2.nightly_re…