1. CLIP
数据集总共 400M 图片文本对,使用对比学习的方式训练模型。匹配的图片文本对 Ti 和 Ii 记为正样本,不匹配的图片的文本对 Ti 和 Ij 记为负样本。我们要让正样本的余弦相似度接近1,负样本的余弦相似度接近-1。
通过引入额外的 alt-text 信息,使得模型拥有 open-vocabulary 的能力,在预测的过程中没有种类的约束。只需要把要预测的种类带入到 prompt 中(A photo of a {object}),与要预测的图片算余弦相似度,相似度最高的即为预测结果。
- 余弦相似度:$cos\theta=\frac{a·b}{||a||*||b||}$
伪代码
1 | # image_encoder - ResNet or Vision Transformer |
2. FLIP
FLIP 借鉴了 Bert 中 Mask Language Modeling 的思想,对图片的 patch 进行高比率的 mask,而仅仅只编码可见的patch。FLIP并不会对图像进行重建任务!
mask的比率越高,模型训练的时间越短,同时在同等epoch下正确率较原方法也会有一定的提升(此处50%正确率最高)。由此可以看出,大量的负样本可以提升模型的性能(mask比率高,batch_size就可以增大,相应的负样本也就增多了)。
消融实验
3. MAE
和FLIP有些类似,先对原图像进行 mask,然后仅对未 mask 的图像进行编码。不同的是,MAE对编码后的向量按序加入 mask 标记再进行解码。预训练完成后,仅使用 encoder 进行识别任务。
实验结果和FLIP吻合,高 masking ratio 会带来高正确率。
消融实验
4. ALIGN
和CLIP基本差不多,最显著的不同就是,CLIP使用的数据经过较复杂的人为清洗(400M),而ALIGN直接使用符合网络分布的图像文本对(1.8B)。
5. K-LITE
使用外部知识,例如 WordNet 和 Wiktionary 来扩充文本。
1 | "I like eating apple" |
6. LaCLIP
使用 LLM 对图片描述进行重写。
7. VirTex
使用文本监督信号来让 Visual Backbone 更好地提取图像信息。与 CLIP 不同的是,VirTex 使用的是 Captioning Loss。
8. SimVLM
视觉部分参考了 ViT,将图片分割成块。不同的是,这里使用卷积层提取 patch 的特征而非一个简单的线性层,同时文本 embedding 和 图片的 embedding 一起输入到 encoder 中进行 gpt 的自回归预测任务。
9. Coca
伪代码
1 | # image, text.ids, text.labels, text.mask: paired {image, text} data |
10. ALBEF
模型架构和 Coca 的思路类似,但是 Coca 是从头开始预训练,ALBEF 直接使用的预训练模型。