当今影像的生成方法最常用的是diffusion model,今年爆火的sora就是使用它来生成。
目前有几种经典的影像生成方法,包括VAE,Flow-based Method 、diffusion method 以及GAN,今天先来介绍VAE
首先我们要了解文字生成影像跟文字生成的文字的 不同,看生成影像难点在哪里
文字生成影像的难点
描述文字来生成影像,但是通常同样的文字可以画不同的图片:
比如你说画一只猫:
那这只猫可以是黄色的橘猫,也可以是一只灰色的猫
可以在田野里,也可以在家里。
这明明输入的描述是一样的,但是期望生成的图片却是两张大不相同的图片。如果直接按照生成文字式的训练,模型最后根本不知道要怎么样生成一直猫,因为你一会让它黄色,一会灰色。
那该怎么处理呢?
加入必要的额外资讯
之所以出现上面的情况是因为模型不知道额外的信息,比如背景,比如具体品种等,所以我们想到的解决办法就是模型生成的时候,加入这些额外的信息。
比如输入是生成一只狗,但是我们可以额外告诉模型,这一只是哈士奇在草原,另外一次生成告诉模型这是柴犬在城市
所以问题就在于我们如何抽取这些额外的资讯,当然还是熟悉的配方,训练一个抽取额外咨询的模型
生成额外资讯的架构Auto Encoder
我们引入咨询抽取的一个模型,专门用于抽取咨询,这种模型j架构就叫做Auto Encoder
训练模型的整体流程
- 把训练集中的图片和描述拿到,图片和描述输入咨询抽取模块,生成额外的咨询。
这个额外的咨询可能是人类无法理解的向量。向量的每一维度代表不同的意义,代表背景、品种、颜色等等 - 额外的咨询和描述输入到图片生成模型,生成最终的图片
也就是说训练过程中,要生成的图片即作为输入,又作为输出的基准
测试模型的流程
在使用的时候,我们是不知道最终要生成的图片是什么样子的,这时候无法输入图片,解决办法就是随机输入一个向量,作为额外的信息,图片生成就依据它生成。
这就是VAE的实现方法,上文就是一个易于易理解的说明