首页 / 资料库 / 微软 · AI 入门

资料库10 分钟读完MIT多模态图文模型

多模态网络

译自《Multimodal Networks》 · 查看英文原文

原文出处Multimodal Networks 原作者:Microsoft · 许可证:MIT License 中文译本由诸葛AI学院整理,仅供学习参考,版权归原作者与微软所有。

Transformer 模型在自然语言处理(NLP)任务上做出成绩之后,同样的或相近的架构也被搬到了计算机视觉任务上。想把视觉能力和语言能力合在一起的模型,最近受关注的程度越来越高。OpenAI 做了两个这类尝试:CLIP 和 DALL·E。

对比式图像预训练(CLIP)

CLIP 的核心想法:把一段文本提示(prompt)和一张图片放在一起比较,算出这张图与这段提示匹配到什么程度。

原文此处有一张图,画的是 CLIP 的架构:图片和文本分别经编码器变成向量,再比对两者的匹配度(图来自 OpenAI 的这篇博客)。

训练数据是从互联网上收集的图片及其说明文字。每个批次取 N 对(图片,文本),把它们转换成向量表示 I1,…, IN / T1, …, TN,再把这些向量两两配对。损失函数的目标是:让同一对的向量(如 Ii 和 Ti)之间余弦相似度最大,让其他所有对的余弦相似度最小。这种方法因此被称为对比式(contrastive)。

CLIP 的模型和代码库放在 OpenAI GitHub 上。这套做法在这篇博客里有介绍,这篇论文写得更详细。

模型预训练完成后,喂给它一批图片和一批文本提示,它会返回一个概率张量。CLIP 可以做好几类任务:

图像分类

假设要把图片分成猫、狗、人三类。做法是给模型一张图片,再给一串文本提示:"a picture of a cat"、"a picture of a dog"、"a picture of a human",在得到的 3 个概率里挑数值最高的那一项即可。

原文此处有一张图,画的是用 CLIP 做图像分类的流程:一张图片分别与三条类别提示比对,按概率选出类别。

基于文本的图片搜索

反过来做也行。手头有一批图片时,把整个图片库喂给模型,再给一条文本提示,模型会告诉你哪张图与提示最相似。

示例:用 CLIP 做图像分类与图片搜索

打开 Clip.ipynb 这个 notebook,可以看到 CLIP 的实际运行效果。

用 VQGAN+CLIP 生成图像

CLIP 还能配合文本提示来生成图像。这需要一台生成器模型,能根据向量输入产出图片。其中一个叫 VQGAN(向量量化 GAN,Vector-Quantized GAN)。

VQGAN 区别于普通 GAN 的主要思路有两条:

  • 用自回归 Transformer 架构生成一连串富含上下文的视觉部件,由这些部件拼成整幅图像;这些视觉部件本身由 CNN(卷积神经网络)学习得到。
  • 使用子图像判别器,判断图像的局部片段是"真"还是"假",而不是传统 GAN 那种对整幅图一锤定音的"全有或全无"做法。

想进一步了解 VQGAN,可以访问 Taming Transformers 网站。

VQGAN 与传统 GAN 的一个重要差别是:传统 GAN 随便给一个输入向量都能生成说得过去的图像,VQGAN 却很可能生成前后不连贯的图像。因此需要给造图过程更多引导,这一步正是 CLIP 来做的。

原文此处有一张图,画的是 VQGAN+CLIP 的组合架构:文本提示经 CLIP 编码,与 VQGAN 生成的图像比对,用差异反过来调整输入向量。

生成一张与文本提示对应的图像时,我们从一个随机的编码向量出发,把它送进 VQGAN 产出一张图片;再用 CLIP 构造损失函数,衡量这张图与文本提示的匹配程度。目标是最小化这个损失,通过反向传播(back propagation)调整输入向量的参数。

实现 VQGAN+CLIP 的一个出色库是 Pixray

原文此处有三张并排的生成图片,配文说明它们分别由以下提示词生成:a closeup watercolor portrait of young male teacher of literature with a booka closeup oil portrait of young female teacher of computer science with a computera closeup oil portrait of old male teacher of mathematics in front of blackboard。图片来自 Dmitry SoshnikovArtificial Teachers(人造教师)合集。

DALL·E

DALL·E 1

DALL·E 是一个经过训练的 GPT-3 版本,专门根据提示生成图像,训练参数规模为 120 亿。

与 CLIP 不同,DALL·E 把文本和图像统一编码成一条令牌(token,模型处理文本时的最小切分单位)流,图片和文字共用同一个序列。因此从文本提示出发,就能生成对应的图像。

DALL·E 2

DALL·E 1 和 2 的主要差别是:DALL·E 2 生成的图像和艺术作品更写实。

原文此处有三张并排的 DALL·E 生成图片,沿用了上面 Pixray 示例的同样三条提示词,用来对照展示 DALL·E 的输出效果。

参考资料

这篇在讲什么,跟咱们的课怎么对?

资料库是大厂公开教材的中文译本,偏原理和工程做法。想看面向中小企业的白话版本,去入门课场景课