出处: https://youtu.be/GYyP7Ova8KA?si=IJxrU3HO2hPv6gut
大家好,在这个视频中,你将学习到关于文本生成图像工具的一切,比如Imagen DALL-E 2 和 Parti。左边的图像是一只泰迪熊的真实照片。右边的图像是通过文本生成图像系统使用下面蓝色文字提示生成的。这真的很酷。我们将展示带有照片风格边框的真实图像和没有边框的生成图像。
这些图像生成工具基于大型语言模型,这些大型神经网络学习预测句子中的下一个词。如果你看过关于大语言模型的视频,你会记得它们可以做一些非常神奇的事情,比如翻译语言,写诗,创建食谱,甚至生成计算机代码。
但它们能画画吗?让我们试试看。我们将把这个作为输入给GPT-3,这是OpenAI的一个大型语言模型。让我们提供图片的第一行,告诉它用点和线来制作。嘿,成功了。这是一颗星星。让我们试试另一个形状,一个看起来像垂直线的字符图案。或者三角形。这很酷。语言模型知道如何绘制基本形状,但更复杂的图像呢?你不能只用点和线来表示这样的图像。
所以让我们将像素添加到语言模型的词汇中。我们将从低分辨率开始,这样你可以看到像素。让我们用颜色的名称替换每个像素。现在它看起来更像语言了。你甚至可以想象这印在书的页面上,语言模型。从左到右、从上到下读取这些词。如果“红色”、“绿色”、“棕色”、“白色”这些词不够表达,我们可以将任何颜色表示为指定其RGB值的词。
好的,现在,我们可以在语言模型中表示图像,但模型并不真正理解图像或它与英语单词和短语的关系。我们可以通过提供一些训练数据来教授这些知识。例如,很多覆盆子图像,日落,煎饼以及几乎所有其他东西的图像。事实上,我们将用从互联网上获取的十亿张带标题的图像来训练它。我们现在可以使用大型语言模型生成图像。我们只需要给它一个提示,比如:一张覆盆子的图像,然后它会逐个生成像素。
但这种方法有一个问题。图像有数百万个像素,但大型语言模型一次只能处理几千个单词。这意味着我们需要更聪明一些,让这些图像适应模型。
因此,与其用单词表示每个像素,不如将图像分解为32x32的方形网格,然后根据每个网格中的像素模式给每个网格分配一个数字。非常相似的网格会得到相同的数字。例如,所有白色的网格都会得到数字零。在这个例子中,我们称这些数字为“视觉词”。
这是使用 Parti 的方法,一个领先的文本到图像系统。他们说,一张图片胜过千言万语。好吧,Parti 确实用一千个词来表示一张图片,准确来说是1024个词。每个词的范围是0到9,以便在现实中更容易可视化。实际上,Parti 为每个词使用了大约8000个不同的值。
好的,现在让我们生成一些新图像。我们从“松鼠伸手拿坚果”这个提示开始。这是我们给语言模型的输入。然后它会开始逐个输出视觉词,从左到右,从上到下。每个视觉词都依赖于前面的词。以这个为例。如果我们只看最近的词,我们会预测一个1,但如果扩大范围,包括前一行,你会注意到在那个位置它变成了6。语言模型会考虑所有之前的视觉词以及我们的文本提示(蓝色部分)。如果我们继续下去,我们会得到一个32x32的视觉词网格。
接下来,Parti 将这些视觉词解码为8x8的图像块。如果你把它们连接起来,你会看到一只松鼠伸手拿坚果。非常酷。
它有点低分辨率。所以 Parti 添加了一个上采样器,将其转换为高分辨率图像。
语言模型的一个很好的特点是,如果你用相同的输入多次运行它,可以得到不同的结果。这是一个很棒的功能。
这里还有更多的例子。现在让我们尝试一些更有趣的提示。松鼠会游泳吗?让我们问问 Parti 。我猜它们会。史前松鼠喜欢坚果吗?当然喜欢。这玩起来非常有趣。Parti 甚至能做出松鼠形状的房子。
现在互联网上有很多艺术图片。如果你用足够多的这些数据进行训练,模型可以通过将标题、文本、视觉词汇关联起来,学习艺术风格。这是由达·芬奇绘制或梵高绘画的松鼠。教堂门上精美的木雕松鼠。我认为这些作品非常美丽且富有创意。
Parti 几乎可以学习任何形式的艺术,包括拿铁艺术。我喜欢左边拿铁艺术中的松鼠,它正伸手去抓杯子外的一颗真正的坚果。
希望你喜欢这段关于文本图像生成的视频。敬请关注图像扩散技术,它为Imagen 和 DALL-E 2提供了强大的支持。