Abstract
将大量模态和图像模态对齐,再将图像和文本对齐,使模型获得大量模态zero-shot泛化能力。学习出一个能容纳大量模态的语义空间,并使用了实验证明。各个模态的encoder可以使用已有的pretrain encoder,降低使用门槛。训练数据多依赖于co-occur的模态数据,因此降低了收集数据的成本。
Introduction
图像可以和大量体验关联(e.g. 沙滩图像和海浪声/微风/沙子的触感对齐)
→
\rightarrow
→ 可以将视觉feature和这些体验数据相对齐。但是搜集这些数据非常困难。
→
\rightarrow
→ 近期工作:对齐一对模态,这些学出的特征最终只能适用于用以训练的模态场景,切换模态场景后无法使用。导致这个局限性的原因是缺乏所有模态都有的大量多模态数据。
→
\rightarrow
→ 文章通过将各个模态和图像对齐,推出一种不需要所有模态同时共存的方法,去学习一个所有模态适用的公共子空间。
→
\rightarrow
→ 具体落实:使用CLIP的image-text zero-shot能力,辅佐上一些天然共存的数据集(e.g. 视频/音频),从而将zero-shot能力通过image带给更多的模态。同时,学出的模态公共子空间可以用于大量不同的downstream任务。
Method
使用nature co-occur的成对数据,学习各个模态的潜在对齐关系,获得公有特征空间。
→
\rightarrow
→ 使用大规模text-image dataset,将image和text模态绑定。
其余模态使用图像和图像对应co-occur的模态信息进行对齐。
使用对比学习将各个模态归一化后的embedding做对齐
→
\rightarrow
→ 发现通过将各个模态和图像对齐,最终embedding空间里各个模态也是对齐的。
→
\rightarrow
→ 因为这些模态能够在空间里对齐,因此他们同样具备text带来的zero-shot能力。
Encoder全部使用了transformer架构,根据不同模态数据特性定制了transformer类型。各个模态各自拥有独立encoder,在每个encoder的尾部加入线性层,将各模态的embedding映射为相同长度。对映射后的embedding归一化,然后进行对比学习对齐。
- 为减轻学习量,一些模态使用了pretrain的encoder(e.g. text和image模态使用CLIP)
Experiment
- zero-shot/few-shot评估:
判断language和其他模态之间的对齐程度 - 不同模态embedding对齐的分析实验:
1 将两模态的embedding相加减,然后拿加减后embedding去搜索对应图像模态的图片,看一下是否把语义信息叠加起来了。
2 将text模态外的其他模态的embedding输入到text-based的下游downstream model中,观察效果是否正常。 - 图像encoder性能对于其他模态对齐性能的影响:
因为其他模态都和图像对齐,所以要研究图像encoder的性能对其他模态embedding质量影响。采用的指标是zero-shot指标。为保证公平性,其他模态的encoder超参保持一致,只改变图像encoder的超参。
Code
提供的api进行inference时输出为embedding