出处:https://youtu.be/lyodbLwb2lY?si=dZ6ZkrS4PUpHQVfx
欢迎回到我们关于文本生成图像视频的第二部分。我们将讨论一种叫做扩散的技术,它驱动着像 Imagen 和 DALL-E 2 这样的系统。
上次我们讨论了如何将图像表示为视觉词汇,然后使用大型语言模型生成新图像。这是谷歌的Parti系统背后的想法。另一种方法是创建一个生成图像的程序,并修改该程序以使用语言。这就是 Imagine 所做的,它是另一个文本生成图像系统。
图像生成器是如何工作的呢?好吧,假设我让你生成100张新图像。你会怎么做?最简单的方法是为每个像素随机选择一个值,这样会产生像这样的噪声图案。就像你调错频道时在电视上看到的那样。
现在,假设我让你创建100张覆盆子的图像。这就难多了。从概念上讲,你可以想到两个分布,随机图像和覆盆子图像。这里的每个点代表一张图像。随机图像很容易生成。覆盆子图像很难生成。
但假设我们有一种神奇的方法,可以将随机图像变成覆盆子图像。这就是扩散技术的作用。它是一种将一种分布转换为另一种分布的方法。
这是如何工作的呢?好吧,将随机图像变成覆盆子图像非常困难,但反过来却相对容易。我们只需要不断增加噪声,直到像素变得完全随机。你可以把我刚才展示的动画看作是图像空间中的一条路径,其中每一帧都是朝着更多随机性迈出的一步。现在,如果我们把这个动画倒放会怎样?这就定义了一条从随机图像到覆盆子图像的路径。如果我们用另一张覆盆子图像重复这个过程,我们会得到另一条路径,我们可以用同样的方式将其倒放。所以,有了很多覆盆子图像,我们就能得到许多这样的路径,我们可以用它们来训练神经网络,预测所有这些步骤。
现在我们可以使用这个训练好的网络来生成新的覆盆子图像。方法如下。让我们从这个点代表的随机图像开始。如果我们把它输入到扩散神经网络中,它会输出一个箭头。如果我们沿着这个箭头迈出一步,并将新的点再次输入网络,我们会得到第二步,以此类推。太棒了。现在我们有了一个可以帮助我们生成覆盆子图像的神经网络。
但如果我们想要苹果、桃子或芒果呢?我们可以为每一种水果训练一个不同的扩散网络。但有一个更好的解决方案。让我们训练一个单一的扩散网络,并将水果的名称作为输入。所以如果我们指定“苹果”,它会给我们这个向量。但“芒果”会输出一个不同的向量。这被称为对网络进行条件化。我们真正想要的是对短语或句子进行条件化。
例如,这听起来有点像一道水果味的菜肴,但实际上它是一种帽子。在这里,“覆盆子”这个词指的是帽子的颜色。为了捕捉这种微妙之处,我们需要一个语言模型。现在,当我们输入“覆盆子贝雷帽”时,语言模型会将这些词转换为一种知识表示,从而指导扩散模型。这样,简而言之,这就是 Imagine 的工作原理。让我们来尝试一些例子。这里是一些由 Imagine 生成的覆盆子浆果。
为了好玩,让我们试试这个。覆盆子贝雷帽。现在这是一顶用真正的覆盆子制成的帽子。这是另一个例子。我很喜欢它如何将覆盆子植物的叶子融入右边帽子的设计中。
这里是一些巧克力鳄梨松饼。它们看起来和我之前在大语言模型视频中制作的实物有些不同。
这是我们在第一部分提到的小松鼠。在一个坚果壳里。
你可能也听说过 Dall-E 2。这是OpenAI推出的一个流行的文本生成图像系统。Dall-E 2 在 Parti Imagen 之前发布,但你可以把它看作是这两个系统的结合体。Dall-E 2 增强了语言模型对视觉词汇的理解,与 Parti 类似。和 Imagen 一样,它也具有类似的功能。它使用扩散模型将生成的视觉词汇解码成图像,而不是用网格块来表示图像。Dall-E 2 将图像编码为一长串数字向量,这被称为“ CLIP embeddings”。这种更抽象的视觉词汇表示方式赋予了一些很酷的功能。
例如,Dall-E 2 可以像这样处理一张图像,将其编码为视觉词汇的向量,然后利用这些词汇来引导扩散模型生成具有相似风格的新图像。非常酷。
这是另一个例子。在 Dall-E 2 的版本中,如果你仔细观察,你会发现一些奇怪的现象。这些方法在这里确实犯了一些相当有趣的错误。比如,把一只活松鼠放进了拿铁咖啡里。在这个例子中,想象一下把牛油果放在了熊的鼻子上,而不是煎饼里。
它们的表现并不理想。这种结果是相当典型的,它们确实遇到了困难。空间关系部分在处理这个提示时,Parti 经常会把左右顺序搞混。这些系统也容易受到偏见的影响,在某些查询中会产生不恰当的结果。这对于这些以及其他最先进的 AI 系统来说仍然是一个挑战。希望你喜欢这段关于文本生成图像系统的视频。