大模型微调技术: 从基于Stable Diffusion的绘画谈起

个人博客:Sekyoro的博客小屋
个人网站:Proanimer的个人网站

文生图和图生图应用已经出现一段时间了,目前常用的应用就是根据用户需求修改图片,事实上这就是一种自定义. 因为需要模型重新生成整张图或者部分图,要么通过prompt、reference image,也就是改变输入的方式;要么通过修改模型,也就是微调模型的方式. 因此诞生出了许多微调模型的方式,目前常用的微调库是huggingface/peft: 🤗 PEFT. 针对AI绘图应用的微调技术,倒是可以推出一道清晰的发展线. 这里简单整理一下.

Before LoRA

在大名鼎鼎的LoRA之前,绘画相关的微调技术主要有Textual Inversion2208.01618和DreamBooth2208.12242. 此外还有改变输入以及嵌入向量的Prefix TuningPrefix-Tuning: Optimizing Continuous Prompts for Generation和Prompt TuningThe Power of Scale for Parameter-Efficient Prompt Tuning,由于与AI绘图相关微调联系不大,这里不深入.

Textual Inversion

​ 文本到图像的模型为通过自然语言指导创作提供了前所未有的自由。然而,如何行使这种自由来生成特定独特概念的图像,修改它们的外观,或将它们组成新的角色和新的场景,尚不清楚。

​ 只使用用户提供的一个概念的3 - 5张图像,比如一个对象或一个样式,在一个冻结的文本到图像模型的嵌入空间中,我们学习通过新的"词"来表示它。这些"词"可以组合成自然语言句子,以直观的方式指导个性化创作。作者发现单个词嵌入足以捕获独特和多样的概念。

​ 将新概念引入模型的难点: 将新概念引入大规模模型往往是困难的。为每个新概念重新训练一个具有扩展数据集的模型是非常昂贵的,对少数例子进行微调通常会导致灾难性的遗忘更多的度量方法在面对新概念时冻结模型并训练转换模块以适应其输出。然而,这些方法仍然容易遗忘先验知识,或者与新学习的概念融合时面临困难。

​ 提出通过在预训练的文本到图像模型的文本嵌入空间中寻找新词来克服这些挑战。考虑文本编码过程的第一阶段。在这里输入字符串首先被转换为一组token(词元,理解为词典中的不可再分的词)。然后将每个token替换为自己的嵌入向量,这些向量通过下游模型进行反馈。目标是寻找新的嵌入向量来表示新的、特定的概念

​ 用一个新的词(pseudo-word)表示一个新的嵌入向量,我们用S *表示。然后这个词像其他任何词一样被处理,并且可以用于为生成模型合成新的文本查询。因此,可以要求"一张沙滩上的S *照片"、“一幅挂在墙上的S *油画”,甚至可以组成两个概念,如"一幅S * 1的S * 2的画"。

​ 重要的是,这个过程没有触及生成模型。在这样做的过程中,我们保留了在新任务上微调视觉和语言模型时通常会丢失的丰富的文本理解和泛化能力。

​ 为了找到这些词,将任务定为求逆运算,给出了一个固定的预训练文本-图像模型和一个描述概念的小( 3-5 )图像集。目标是找到一个单词嵌入,这样’ A photo of S * '形式的句子将导致从我们的小集合中重建图像。这种嵌入是通过一个优化过程找到的,我们称之为"文本倒置"。

image-20250102112045813

具体来说,首先选取若干张相关概念的照片,假设pikachu,对应输入的prompt类似An image of pikachu, A photo of pikachu,然后就照着LDM训练的方式在原本的预训练大模型上继续训练即可.

DreamBooth

image-20250102121433867

​ DreamBooth的目的和Textual Inversion类似,扩展模型的语言-视觉词典,使其能够将新词与用户想要生成的特定主题绑定在一起。

​ 给定一个主体的几幅图像,目标是将主体植入模型的输出域,使其能够用唯一的标识符进行合成。为此提出一种技术,用稀有的标记标识符表示给定的主题,并微调一个预训练的、基于扩散的文本到图像框架。

​ 给定一个对象的3 - 5图像,微调一个文本到图像的扩散模型,输入图像与一个包含唯一标识符且对象所属类名为( e.g . , ’ A [ V ] dog ')的文本提示配对,并行地应用一个特定于类的先验保存损失,该损失利用了模型在类上的语义先验,并鼓励它使用文本提示中的类名生成属于该对象类的多样实例。

​ 相比于textual inversion,它对模型而不只是embedding进行了微调,同时增加了新的损失, 对于同类但不同具体实例的图像进行训练.
E x , c , ϵ , ϵ ′ , t [ w t ∥ x ^ θ ( α t x + σ t ϵ , c ) − x ∥ 2 2 + λ w t ′ ∥ x ^ θ ( α t ′ x p r + σ t ′ ϵ ′ , c p r ) − x p r ∥ 2 2 ] \begin{array}{l} \mathbb{E}_{\mathbf{x}, \mathbf{c}, \epsilon, \epsilon^{\prime}, t}\left[w_{t}\left\|\hat{\mathbf{x}}_{\theta}\left(\alpha_{t} \mathbf{x}+\sigma_{t} \boldsymbol{\epsilon}, \mathbf{c}\right)-\mathbf{x}\right\|_{2}^{2}+\right. \\ \left.\lambda w_{t^{\prime}}\left\|\hat{\mathbf{x}}_{\theta}\left(\alpha_{t^{\prime}} \mathbf{x}_{\mathrm{pr}}+\sigma_{t^{\prime}} \epsilon^{\prime}, \mathbf{c}_{\mathrm{pr}}\right)-\mathbf{x}_{\mathrm{pr}}\right\|_{2}^{2}\right] \end{array} Ex,c,ϵ,ϵ,t[wtx^θ(αt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

procoder338

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值