欢迎光临散文网 会员登陆 & 注册

AIGC: Textual Inversion 笔记

2023-08-01 10:34 作者:刹那-Ksana-  | 我要投稿

Inversion

假设我们手里有一个生成模型 G(比如说,一个无条件的 GAN),这个生成模型可以将 latent z 转化为一幅图像 x%3DG(z). 那么,上述过程的逆操作(Inversion)就是,给出一幅图像 x', 找到这幅图像所对应的 z'. 换句话说就是——找到最佳的 z' , 使 G(z') 和 x' 两者之间的距离最小。

Inversion 的一种应用是,在保持图像的构图不变的情况下,(通过操作 latent z)对原图像进行操作——比如说,将白天改成晚上,改变面部表情,等等。

Textual Inversion

接下来进入到 "Textual Inversion" (以下简称 TI)。

TI 所做的事情,简单地说就是——我们想要生成某个物体X的图像(比如,某个网红),但是物体X不在我们的训练集里面,我们也不知道如何描述这个物体。我们不希望针对这个物体X重新训练一遍模型,而是希望在一个预训练好的模型上面,找到这么一个"单词" S_* 去代表这个物体。然后,我们将这个"单词"放到我们的"句子"里面,就可以生成和这个物体X有关的图像。

一个简单的示意图,S* 就是上面所谓的单词,用户可以将 S* 放入自己定义的句子里面,然后生成对应风格的图片,例如:"一个 S* 的背包". (S* 所代表的未必是要一个物体,也可以是一种风格)

本文所用原材料是一个 Latent Diffusion Model(2112.10752),比如 Stable Diffusion;一个文字编码模型,负责将输入文字转化为向量;最后是一些目标对象的图片。我们的目标是找到最优的 embedding v_*, 使得 %5Cmathbb%7BE%7D_%7Bz%5Csim%20%5Cvarepsilon(x)%2Cy%5Csim%20%5Cmathcal%7BN%7D(0%2C1)%2Ct%7D%20%5Cleft%5B%20%7C%7C%5Cepsilon-%5Cepsilon_%5Ctheta(z_t%2Ct%2Cc_%5Ctheta(y))%7C%7C_2%5E2%20%5Cright%5D 最小化。

流程的示意图,输入 Sample 图像和一句句子,句子里面的前三个单词对应了 codebook 里面的 508, 71, 73,而最后一个 S* 待定。目标是找到最合适的 v* (中间的绿色方框),注意这里的 text encoder 和 generator 都是固定不变的

代码可参考 Github 上面 chenxwh 的 replicate-sd-textual-inversion.

估计是目前AIGC几篇文章里面最短的一篇了😂。

AIGC: Textual Inversion 笔记的评论 (共 条)

分享到微博请遵守国家法律