当前位置:   article > 正文

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

textual inversion

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的整体损失函数:
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 , Z 2 ]

Ex,c,ϵ,ϵ,t[wtx^θ(αtx+σtϵ,c)x22+λwtx^θ(αtxpr+σtϵ,cpr)xpr22,Z2]
Ex,c,ϵ,ϵ,t[wtx^θ(αtx+σtϵ,c)x22+λwtx^θ(αtxpr+σtϵ,cpr)xpr′22,Z2]
前半部分,是松狮图的损失函数:x 是原图, ( a t x + σ t ϵ ) \left(a_{t} x+\sigma_{t} \epsilon\right) (atx+σtϵ) 是加噪后的图, x θ ^ \hat{x_{\theta}} xθ^ 是扩散模型的去噪方法,它接收噪声图和文字,生成去噪后的图。通过L2像素损失对比 x ( a t x + σ 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步,生成两张噪声图 I n I_{n} In I n − 1 I_{n-1} In1 I n I_{n} In 被输入到扩散模型中,且以文字做为条件引导,通过解码器(VAE)生成一张图片 I g e n I_{gen} Igen I g e n I_{gen} Igen 会与 I n − 1 I_{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

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/429950
推荐阅读
相关标签
  

闽ICP备14008679号