关于人工智能:CLIP多模态领域革命者

71次阅读

共计 9237 个字符,预计需要花费 24 分钟才能阅读完成。

作者:ZOMI 酱

起源:https://zhuanlan.zhihu.com/p/555314976

目前最近在 AI 作画这个畛域 Transformer 火的一塌糊涂,AI 画画成果从 18 年的 DeepDream[1] 噩梦中惊醒过去,开始从 2022 年 OpenAI 的 DALL·E 2[2] 引来插画成果和联想成果都达到惊人成果。尽管不懂,然而这个话题很吸引 ZOMI,于是就着这个畛域内容来看看有什么好玩的技术点。

然而要理解:Transformer 带来 AI+ 艺术,从语言开始遇到多模态,碰撞艺术火花 这个主题,须要引申很多额定的知识点,可能跟 CV、NLP 等畛域鼎力出奇观的形式不同,AI+ 艺术会除了遇到 Transformer 构造以外,还会波及到 VAE、ELBO、Diffusion Model 等一系列跟数学相干的常识。


Transformer + Art 系列中,明天新挖一个 CLIP 的坑,多模态不是一个陈腐的瓜,随着 AI 的倒退,多模态曾经成为一种趋势,而 CLIP 就是在多模态畛域里迈出了重要的一步。其具备十分好的迁徙学习能力,预训练好的模型能够在任意一个视觉分类数据集上获得不错的成果,而且是 Zero-shot(不须要对新数据集从新训练,就能失去很好的后果)。

OpenAI 财大气粗力大砖飞搞出了 CLIP,在 400M 的图像 - 文本对数据上,用最奢侈的比照损失训练双塔网络,利用 text 信息监督视觉工作自训练,对齐了两个模态的特色空间,实质就是将分类工作化成了图文匹配工作,成果可与全监督办法相当。在近 30 个数据集上 zero-shot 达到或超过支流监督学习性能。Let’s dive in!

CLIP:《Learning Transferable Visual Models From Natural Language Supervision》

多模态

模态(modal)是事件经验和产生的形式,咱们生存在一个由多种模态(Multimodal)信息形成的世界,包含视觉信息、听觉信息、文本信息、嗅觉信息等等,当钻研的问题或者数据集蕴含多种这样的模态信息时咱们称之为多模态问题,钻研多模态问题是推动人工智能更好的理解和认知咱们四周世界的要害。

通常次要钻研模态包含 ”3V”:即 Verbal(文本)、Vocal(语音)、Visual(视觉)。

多模态倒退历史

实际上,多模态学习不是近几年才火起来,而是近几年因为深度学习使得多模态成果进一步晋升。上面梳理一下从 1970 年代起步,多模态技术经验的 4 个倒退阶段,在 2012 后迎来 Deep Learning 阶段,在 2016 年后进入目前真正的多模态阶段。

  • 第一阶段为 基于行为 的时代(1970s until late 1980s),这一阶段次要从心理学的角度对多模态这一景象进行分析。
  • 第二阶段 基于计算 的时代(1980 – 2000),这一阶段次要利用一些浅层的模型对多模态问题进行钻研,其中代表性的利用包含视觉语音联结辨认,多模态情感计算等等。
  • 第三阶段 基于交互 的时代,这一阶段次要次要从交互的角度动手,钻研多模态辨认问题,其中次要的代表作品包含苹果的语音助手 Siri 等。
  • 第四阶段 基于深度学习 的时代,促使多模态钻研倒退的要害促成因素有 4 个,1)更大规模的多模态数据集;2)更弱小的算力(NPU/GPU/TPU);3)弱小的视觉特色抽取能力;4)弱小的语言特色抽取能力。

多模态外围工作

多模态机器学习的外围工作次要包含示意学习,模态映射,模态对齐,模态交融,协同学习。

示意学习

示意学习(Representation):次要钻研如何将多个模态数据所蕴含的语义信息,数值化为实值向量,简略来说就是特色化。

单模态的示意学习负责将信息示意为计算机能够解决的数值向量或者进一步形象为更高层的特征向量 Feature;而多模态示意学习通过利用多模态之间的互补性,剔除模态间的冗余性,从而学习到更好的特色 Feature。

那在示意学习中次要包含两大钻研方向:

  1. 联结示意(Joint Representations):将多个模态的信息一起映射到一个对立的多模态向量空间。(CLIP 和 DALL·E 应用简略的联结示意,不过成果出奇的赞)。
  2. 协同示意(Coordinated Representations):将多模态中的每个模态别离映射到各自的示意空间,但映射后的向量之间满足肯定的相关性束缚(例如线性相关)。

上游工作

下面讲的是示意学习用于提取多模态的特色,有了个性后在机器学习畛域接着就是上游工作对特色进行了解(学术上也叫做内容了解),典型的上游工作包含视觉问答、视觉推理、视觉联结推理、图像检索、视频检索。

  1. 视觉问答(Visual Question Answering,VQA):依据给定的图片发问,从候选中抉择出正确的答案,VQA2.0 中从 COCO 图片中筛选了超过 100 万的问题,训练模型来预测最常见的 3129 个答复,其本质上能够转化成一个分类问题。
  1. 视觉推理(Visual Reasoning,VR):视觉推理绝对视觉问答更为简单, 其能够合成为两个子工作视觉问答(Q->A)和选出答案的起因(QA->R), 除了答复的问题须要用自然语言表白具备挑战性的视觉问题外, 模型还须要解释为什么作出这样的答复, 其最开始由华盛顿大学提出, 同时公布的 VCR 数据集蕴含 11 万的电影场景和 29 万的多项抉择问题。
  1. 检索工作(Index Task):次要包含文本检索图片或者图片检索文本,检索工作应该不必加以过多的解释了,比拟好了解,就是以文搜图或者以图搜文。上面图中就是 Google 以图搜文的服务,当然包含华为手机外面的截图识字,淘宝拼多多的以文搜图等身边很多诸如此类的服务啦。

CLIP 算法原理

CLIP 不事后定义图像和文本标签类别,间接利用从互联网爬取的 400 million 个 image-text pair 进行图文匹配工作的训练,并将其胜利迁徙利用于 30 个现存的计算机视觉分类。简略的说,CLIP 无需利用 ImageNet 的数据和标签进行训练,就能够达到 ResNet50 在 ImageNet 数据集上有监督训练的后果,所以叫做 Zero-shot。

CLIP(contrastive language-image pre-training)次要的奉献就是 利用无监督的文本信息,作为监督信号来学习视觉特色

CLIP 作者先是回顾了并总结了和上述相干的两条表征学习路线:

  1. 构建 image 和 text 的分割,比方利用已有的 image-text pair 数据集,从 text 中学习 image 的表征;
  2. 获取更多的数据(不要求高质量,也不要求 full labeled)而后做弱监督预训练,就像谷歌应用的 JFT-300M 数据集进行预训练一样(在 JFT 数据集中,类别标签是有噪声的)。具体来说,JFT 中一共有 18291 个类别,这能教模型的概念比 ImageNet 的 1000 类要多得多,但只管曾经有上万类了,其最初的分类器其实还是动态的、无限的,因为你最初还是得固定到 18291 个类别上进行分类,那么这样的类别限度还是限度了模型的 zero-shot 能力。

这两条路线其实都展示了相当的后劲,前者证实 paired image-text 能够用来训练视觉表征,后者证实裁减数据能极大晋升性能,即便数据有 noise。于是 high-level 上,CLIP 作者思考从网上爬取大量的 image-text pair 以裁减数据,同时这样的 pairs 是能够用来训练视觉表征的。作者随即在互联网上采集了 4 亿个 image-text 对,筹备开始训练模型。

数据筹备

那这 4 亿 image-text 数据怎么整?

4 亿训练数据数据用的是图像 - 文本(image-text)对是从网络上获取的。具体的形式是筹备 50k 个 text query,每个 query 抓至少 20k 张图,共 400m 个 pair 对。50k 个 query 的起源是,先筹备一个 base query list,由 Wikipedia 高频词组成,而后做 bi-gram 造成一些高频词组,再补充一些 Wikipedia 高频文章名称和 WordNet 同义词组。每个 query 至少 20k 张图是思考到了类别均衡。

网络模型

多模态的网络模型采纳双塔构造,即一个 image encoder 和一个 text encoder。image encoder 是 ResNet 的改进版(增加了多个 stem 层和 attention pooling)或间接应用 Vision Transformer (ViT);text encoder 基于 GPT-2 的 transformer。两个 encoder 的输入雷同维度的向量(假如 n 都为 1024)。

CLIP 流程

答复 CLIP 的流程最好的答案可能就是上面这张图。很直观,有三个阶段:

  1. Contrastive pre-training:比照预训练阶段,应用 image-text 对进行比照学习训练。
  2. Create dataset classifier from label text:提取预测类别文本特色。
  3. Use for zero-shot prediction:进行 Zero-Shot 推理预测。
  1. 阶段一 Contrastive pre-training

在预训练阶段,比照学习非常灵便,只须要定义好 正样本对 和 负样本对 就行了,其中可能配对的 image-text 对即为正样本。具体来说,先别离对图像和文本提特色,这时图像对应生成 I1、I2 … In 的特征向量(Image Feature),文本对应生成 T1、T2 … Tn 的特征向量(Text Feature),两头对角线为正样本,其余均为负样本。

这样的话就造成了 n 个正样本,n^2 – n 个负样本。一旦有了正负样本,模型就能够通过比照学习的形式训练起来了,齐全不须要手工的标注。当然,自监督的训练须要大量的数据,OPENAI 在数据筹备阶段阶段应用的数据对在 4 亿的数量级。

在同一个 batch 外面算比照损失。因为 4 亿对 image-text pairs 训练数据微小,训练是个非常消耗工夫的事件,所以必须对训练策略进行一些改良以晋升训练效率。

采纳比照学习进行训练的一个重要起因也是思考到训练效率。图中最上面的蓝线示意像 GPT2 这种预测型的工作(NLP 预测型的工作是指,当初曾经有一张图片拉,去预测图片对应的形容),能够看到是最慢的。两头黄线是指一种 bag of words 的形式,不须要逐字逐句地去预测文本,文本曾经形象成特色,相应的束缚也放宽了,这样做训练速度进步了 3 倍。接下来进一步放宽束缚,不再去预测单词,而是去判断 image-text pairs 是否一对,也就是绿色线的比照学习办法,效率进一步晋升 4 倍。

  1. 阶段二 Create dataset classifier from label text

CLIP 最牛逼的中央在于,基于 400M 数据上学得的先验,仅用数据集的标签文本,就能够失去很强的图像分类性能。当初训练好了,而后进入前向预测阶段,通过 prompt label text 来创立待分类的文本特征向量。

首先须要对文本类别进行一些解决,ImageNet 数据集的 1000 个类别,原始的类别都是单词,而 CLIP 预训练时候的文本端出入的是个句子,这样一来为了对立就须要把单词结构成句子,怎么做呢?能够应用“A photo of a {object}.”的提醒模板 (prompt template) 进行结构,比方对于 dog,就结构成“A photo of a dog.”,而后再送入 Text Encoder 进行特征提取。

具体地,用模板填空(promot)的形式从类别标签生成文本。将失去的文本输出 Text Encoder。

openai_imagenet_template = [lambda c: f'a bad photo of a {object}.',

  lambda c: f'a photo of many {object}.',

  lambda c: f'a sculpture of a {object}.',

  lambda c: f'a photo of the hard to see {object}.',

  lambda c: f'a low resolution photo of the {object}.',

  ......

  lambda c: f'a toy {object}.',

  lambda c: f'itap of my {object}.',

  lambda c: f'a photo of a cool {object}.',

  lambda c: f'a photo of a small {object}.',

  lambda c: f'a tattoo of the {object}.',

]
  1. 阶段三 Zero-shot prediction

最初就是推理见证成果的时候,对于测试图片,抉择类似度最大的那个类别输入。

在推理阶段,无论来了张什么样的图片,只有扔给 Image Encoder 进行特征提取,会生成一个一维的图片特征向量,而后拿这个图片特色和 N 个文本特色做余弦类似度比照,最类似的即为想要的那个后果,比方这里应该会失去“A photo of a guacamole.”,

以上就是 CLIP 算法流程的总览,能够看到 CLIP 在一次预训练后,能够不便的迁徙到其余视觉分类工作上进行 Zero-shot 的预测。这也是 DALL·E 在最初阶段应用 CLIP 的起因啦。

具体算法与试验

算法局部因为网络模型流程设计比较简单,因而算法伪代码也非常简单。另外 CLIP 这篇论文一共 48 页,从第 6 页开始前面都是试验局部,所以想写好论文试验局部,能够重点看看 CLIP 的试验局部,很有参考价值哦!

算法实现

其中重点是别离计算出图像和文本的 embedding 特色 I_e 和 T_e,通过矩阵乘法 dot 失去余弦类似度。接下来就是对称损失函数(symmetric loss function),而损失函数则采纳比照学习罕用的 InfoNCE。

比照损失函数的分子局部激励正例类似度越高越好,也就是在示意空间内间隔越近越好;而分母局部,则激励任意负例之间的向量类似度越低越好,也就是间隔越远越好。t 是温度系数超参,用来调节数据在单位超球面上的散布平均性。这样,在优化过程中,通过 InfoNCE 损失函数指引,就能训练模型,以达成咱们冀望的指标,将成对的 image-text 映射到空间中靠近的中央,和将非成对的 image-text 在示意空间内尽量推远。

重点试验

上面筛选了一些重点试验局部的论断来看看 CLIP 的成果。

  1. Zero-shot CLIP v.s. Linear Probe on ResNet50

从图中能够看到,在不同的数据集上,CLIP 比照通用的 ResNet50 精度超过的有 16/27,曾经很强了,因为 CLIP 是 zero-shot 的,即没有用上游工作的数据,而 linear probed ResNet50 用了上游数据进行 finetune 逻辑回归分类器的参数。

  1. Prompt engineering and ensembling

作者默认 prompt 模板是:”A photo of a {label}.”,但作者发现这样的模板还是有点毛糙,能够思考加一些 context 比方 “A photo of a {label}, a type of pet.”。对于不同类型工作,作者做了一些手动的、特定的 label prompt 工程。

从另一个角度,一张图的 text 形容其实有很多种的,只有 text 的外围语义和 image 雷同就行,那么咱们还能够做一些 ensemble,比方 ensemble 一下 ”A photo of a big {label}.” 和 ”A photo of a small {label}.”。

能够从试验后果发现,采纳 Prompt engineering + ensembling 的成果比只用没有上下文的类别名好得多。

  1. Few-shot CLIP v.s. SOTA (ImageNet) SSL methods

作者试验剖析应用了 20 个数据集,每个类至多有 16 个示例。后果看到,Zero-shot CLIP 的性能和 4 -shot CLIP 差不多,Few-shot CLIP 的 performance 远高于之前的 SOTA 模型(BiT-M/SimCLRv2/ResNet)。

  1. How many shots is needed for achieving zero-shot performance

Few-shot (linear probing) CLIP(放弃 CLIP encoder 参数 fixed,加一层逻辑回归分类器微调)均匀须要 20.8-shots 能力 match zero-shot CLIP 性能。这里相当于放弃了 the same CLIP feature space 上,察看 few-shot finetuning 和 zero-shot 的性能差别。这里其实阐明通过自然语言学到的视觉概念比大量样本 finetune 学到的好。

  1. Linear probing CLIP performance

这里不再是 few-shot linear probing 了,而是全量数据的 linear probing,咱们来看下其跟 zero-shot 性能的比照,实际上两者的性能是正相干的,此外,大部分状况下 linear probing 的性能要好不少。

  1. Robustness to Natural Distribution Shift

作者在 ImageNet 的 7 个 shift datasets 上察看各模型的均匀性能,迁徙利用于 ImageNet 的分类工作的,能够看到,不仅达到 ResNet101 的成果,且泛化能力远远强于有标签监督学习。

总结

CLIP 能够说是开拓了 CV+NLP 的多模态表征学习新时代。前面谷歌的 ALIGN,微软的 Florence,商汤 DeCLIP,快手 EfficientCLIP 都是钻研相相似的工作。尽管 CLIP 在小局部工作上 zero-shot 精度个别,然而 CLIP 在多模态的 Encoders 能提供简略而又弱小的视觉先验的表征能力。上面离开数据、精度、流程三方面来提出一些疑难和思考,心愿可能帮忙到更多的人去思考进一步值得钻研的问题。

数据方面

论文中对于 400Million 的宏大数据集并没有提及太多(我其实很想看到他的数据集,毕竟 AI 是个数据驱动的时代)。如何在较小数据集上(例如 Conceptual Caption,或者实验室的 MEP-3M)保障学习后果值得摸索。

CLIP 的训练数据是从网上采集的,这些 image-text pairs 不确定做了哪些 data clear 和 de-bias,因为训练集的限度,可能会呈现很多社会性偏见(social biases)问题,比方对不同种族性别年龄的偏向。

精度方面

CLIP 的 zero-shot 精度尽管总体上比 supervised baseline ResNet-50 要好,但其实在很多工作上比不过 SOTA methods,因而 CLIP 的 transfer learning 有待开掘。

CLIP 在 fine-grained 分类(花 / 车的分类)、形象的工作(如计算图中 object 的个数)以及预训练时没见过的 task(如分出相邻车辆的间隔等工作 zero-shot 的精度有待晋升。

Zero-shot CLIP 在真正意义上的 out-of-distribution data 上精度不好,比方在 OCR 中。只管 CLIP zero-shot classifier 能在很宽泛的工作上 work,但究其实质 CLIP 还是在无限的类别中进行比照、推理,而不能像 image caption 那样齐全的 flexible 地生成新的概念(如:词),这是 CLIP 性能上的缺点,CLIP 究竟不是生成模型。

流程办法

CLIP 的方法论上也存在几个缺点:在训练和筛选 CLIP 模型时,作者采纳在几个数据的 validation performance 来做领导,这其实是不精确的,因为它不能齐全代表 CLIP 的 zero-shot 性能。如果,设计一套框架来 evaluate zero-shot performance 对于之后的钻研是很重要的。

很多视觉工作很难用文原本进行示意,如何用更高效的 few-shot learning 办法优化 CLIP 也很重要。BTW,CLIP 依然没有解决深度学习 poor data efficiency 的问题,联合 CLIP 和 self-training 可能是一个能进步 data efficiency 的方向。

尽管说 CLIP 是多模态时代的一个引领者,但究其实质依然是 Image-level 的,如果是 Image-level 的能不能将这个范式拓展成 dense prediction(object detection, semantic segmentation)的预训练能力呢?如果不是,那么更多模态的引入如何实现多模态数据的表征?

因为 image encoder 的监督信息来自且仅来自 text encoder,它对文字的理解能力也就束缚了图像特色的学习。晋升 text encoder 能不能带来 image encoder 的晋升?CLIP 的 text encoder 能不能学到一些单模态 Bert 无奈学到的货色?

援用

[1] 多模态定义与历史

[2] 极智 AI | 多模态畛域先行者 详解 CLIP 算法实现

[3] 2021.02【CLIP】Learning Transferable Visual Models From Natural Language Supervision

[4]【多模态】CLIP 模型

[5] CLIP 论文 | Learning Transferable Visual Models From Natural Language Supervision

[6] CLIP:Learning Transferable Visual Models From Natural Language Supervision

[7]【CLIP 系列 Paper 解读】CLIP: Learning Transferable Visual Models From Natural Language Supervision

[8] Radford, Alec, et al. “Learning transferable visual models from natural language supervision.” International Conference on Machine Learning. PMLR, 2021.

[9] Suzuki, Keisuke, et al. “A deep-dream virtual reality platform for studying altered perceptual phenomenology.” Scientific reports 7.1 (2017): 1-11.

【技术交换】

已建设深度学习公众号——FightingCV,关注于最新论文解读、基础知识坚固、学术科研交换,欢送大家关注!!!

FightingCV 交换群里每日会发送论文解析,进行学术交流,加群请增加小助手 wx:FightngCV666,备注:地区 - 学校(公司)- 名称

面向小白的顶会论文外围代码库:https://github.com/xmu-xiaoma…

面向科研小白的 YOLO 指标检测库:https://github.com/iscyy/yoloair

本文由 mdnice 多平台公布

正文完
 0