【文章系列解读】AI绘图必读模型:Derambooth和Textual Inversion

文章介绍了DreamBooth方法,通过微调文本到图像扩散模型,使用保留损失防止过拟合,实现特定主题的图像生成。同时提到了TextualInversion技术,它通过学习新概念的latent空间来控制生成结果,提供精细的图像控制。这两种方法都允许从少量样本中创建个性化的图像生成模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Dreambooth

DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation (2022.8)

总体而言,文章想要实现的效果是输入3~5张图片(目前看是单物体的),通过文本“a [v] [class]”把输入的图片和prompt绑定起来,对模型进行finetune(例如图片上坐上,输入是若干张同一只狗的图片,以及a [v] [dog])。

为了避免模型过拟合在输入的狗上,文章引入了保留损失。保留损失意指,先通过预训练模型生成若干张狗这一类的图片。在训练的时候既指定了输入的狗,又能保留其他狗,这个域内其他品种的特征。

1682564738586

3.1 Dream Booth微调过程

image-20230427111144125

图1的上半部分,做了以下几件事:

1、准备描述的句子(“一只松狮狗”)和对应句子的3-5张图片(3-5张松狮犬.jpg)

2、句子(Text)和图片(加噪声后的松狮.jpg)输入到SD模型中的编码器中进行编码,最后由解码器解码成图片

3、生成的图片和原图进行比较,通过损失函数对生成器进行奖惩,更新权值。

图1的下半部分和上半部分几乎一致,只是去除句子中的目标特征(松狮)变成(一只狗),并提供对应图片(狗.jpg)进行训练。这部分的训练在论文中表示为扩散模型的先验知识的保留,假设我们只提供3-5张松狮图去进行微调,很容易造成生成结果的过拟合,导致失去原本基底模型的多样性能力。简单来说,微调成松狮模型后,模型生成其他狗狗的能力就弱化了(当然这可能也是我们需要的)。

下面是DreamBooth的整体损失函数:
Ex,c,ϵ,ϵ′,t[wt∥x^θ(αtx+σtϵ,c)−x∥22+λwt′∥x^θ(αt′xpr+σt′ϵ′,cpr)−xpr′22,Z2] \begin{array}{l} \mathbb{E}_{\mathbf{x}, \mathbf{c}, \boldsymbol{\epsilon}, \boldsymbol{\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}} \| \hat{\mathbf{x}}_{\theta}\left(\alpha_{t^{\prime}} \mathbf{x}_{\mathrm{pr}}+\sigma_{t^{\prime}} \boldsymbol{\epsilon}^{\prime}, \mathbf{c}_{\mathrm{pr}}\right)-\mathbf{x}_{\mathrm{pr}}{ }^{\prime 2}{ }^{2}, \mathrm{Z}^{2}\right] \end{array} Ex,c,ϵ,ϵ,t[wtx^θ(αtx+σtϵ,c)x22+λwtx^θ(αtxpr+σtϵ,cpr)xpr′22,Z2]
前半部分,是松狮图的损失函数:x 是原图, (atx+σtϵ)\left(a_{t} x+\sigma_{t} \epsilon\right)(atx+σtϵ) 是加噪后的图,xθ^\hat{x_{\theta}}xθ^ 是扩散模型的去噪方法,它接收噪声图和文字,生成去噪后的图。通过L2像素损失对比 x(atx+σtϵ)\left(a_{t} x+\sigma_{t} \epsilon\right)(atx+σtϵ) 的差异。

后半部分,是狗图的损失函数:结构和前者一致,通过加入 λ\lambdaλ 来控制影响权重,论文中表示,当 λ=1\lambda=1λ=1 时,3-5张图片在1000次的训练后,仍旧获得不错的泛化结果。

image-20230427112058611

3.2 细节展示

输入**(Text+Image),输出(Image)的过程,直接利用了扩散模型的能力去实现。**

下面仔细讲讲这里发生了什么?这里也可以进一步了解一下扩散模型。

油管大佬关于DreamBooth微调过程示意图 https://www.youtube.com/watch?v=dVjMiJsuR5o

1、对于句子来说,每一个字会被拆分,压扁(flaten)到一个数组里。

2、对于图片来说,它分别被加噪n步n-1步,生成两张噪声图 InI_{n}InIn−1I_{n-1}In1InI_{n}In 被输入到扩散模型中,且以文字做为条件引导,通过解码器(VAE)生成一张图片 IgenI_{gen}IgenIgenI_{gen}Igen 会与 In−1I_{n-1}In1 通过L2损失函数作比较,以两者下一次生成的结果更相似作为目标,进行权重的调整。

3、这个过程不断重复,损失函数的值会不断震荡变小,最终生成的图片就很像原图了。同时,用于条件引导的句子也被模型学习了(这种方式和Condition GAN很像,Text即Condition),下次当这些词与一张面目全非的噪声图一起输入时,就能一层一层’去噪’成关键词背后指代的图片了

最后,我们看一下对应sd-webuidreambooth的训练设定。这下就明白dataset和classification指的数据到底时什么了吧。

但实操中,仍旧需要我们自己去实验,到底要不要加入分类数据。结合原理与消融实验能更好理解输入输出的前因后果。毕竟机器学习很玄学。

(这么说来,我这篇文章也没啥意义,还得自己试)

1682566132304

2. Textual Inversion

An Image is Worth One Word: Personalizing Text-to-Image Generation using Textual Inversion (2022.8)

AI画画:Textual Inversion, Hypernetwork, Dreambooth

Textual Inversion:它根据模型引用给定的图像并选择最匹配的图像。做的迭代越多越好。通过寻找一个 latent 空间来描述一个近似训练图的复杂概念,并将该空间分配给关键字。Textual Inversion 作为扩展当前模型的迷你“模型”。解析 prompt 时,关键字会利用嵌入来确定要从中提取哪些标记及其相关权重。训练只是找出代表源材料所需的正确标记

Hypernetwork:它会改变图像的整个输出,而无需在提示中调用它来浪费您宝贵的token,它可以在您的设置选项卡中进行设置,该选项卡将自动应用于您的所有图像。

Dreambooth:它将给定内容插入到输出中,缺点是如果你用 Dereambooth,它会用训练图替换所有相似的对象。模型通过N步学习,学会给定图像与新关键字之间的关系;此关键字在标记化后,将类似于 latent 空间。

Textual Inversion是一种从少量示例图像中捕获新概念的技术,是一种用于控制文本到图像的管线。它通过在embedding space管线的文本编码器中学习新的“单词”来实现此目的。然后可以在text prompts中使用这些特殊单词,以实现对结果图像的非常精细的控制。(最新研究发现,只要给AI喂3-5张图片,AI就能抽象出图片里的物体或风格,再随机生成个性化的新图片。)

image-20230427165750972

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值