Contrastive Language-Image Pre-training

Yuze-L

Contrastive Language-Image Pre-training (CLIP)

参考链接

概述

什么是CLIP? 一种基于对比文本-图像对的预训练方法或者模型。

任务:通过对比学习的方式,实现一张图像和他对应的文本描述的匹配

训练:有监督对比学习

包括两个模型:

  • Text Encoder
    • 用来提取文本的特征,可以采用NLP中常用的text transformer模型
  • Image Encoder
    • 来提取图像的特征,可以采用常用CNN模型或者vision transformer

主要流程

流程

步骤

Contrastive pre-training

对于一个包含个文本-图像对的训练batch,将个文本特征和个图像特征两两组合,CLIP模型会预测出个可能的文本-图像对的相似度

对角线上的个是正样本,剩余的则是负样本。计算其Cosine Similarity,训练目标就是最大化对角线上的,最小化其余的。

Cosine Similarity

通常用于衡量两个高维向量之间的相似性,如文本挖掘和数据挖掘等。

模型选择

  • Image Encoding

考虑了2个模型: ResNetVision Transformer(ViT)

ResNet

ResNet: 残差网络

是一种经典的CNN神经网络
(注意区别RNN, Recurrent Neural Network)

Reference: https://zh.d2l.ai/chapter_convolutional-modern/resnet.html

首先,假设有一类特定的神经网络架构 ,它包括学习速率和其他超参数设置。
对于所有 ,存在一些参数集(例如权重和偏置),这些参数可以通过在合适的数据集上进行训练而获得。
现在假设 是我们真正想要找到的函数,如果是 ,那我们可以轻而易举的训练得到它,但通常我们不会那么幸运。
相反,我们将尝试找到一个函数 ,这是我们在 中的最佳选择。
例如,给定一个具有 特性和 标签的数据集,我们可以尝试通过解决以下优化问题来找到它:

那么,怎样得到更近似真正 的函数呢?
唯一合理的可能性是,我们需要设计一个更强大的架构
换句话说,我们预计 “更近似”。
然而,如果 ,则无法保证新的体系“更近似”。
事实上, 可能更糟: 如
对于非嵌套函数(non-nested
function)类,较复杂的函数类并不总是向“真”函数 靠拢(复杂度由 递增)。
左边,虽然 更接近 ,但 却离的更远了。
相反, 对于右侧的嵌套函数(nested function)类 ,我们可以避免上述问题。

因此,只有当较复杂的函数类包含较小的函数类时,我们才能确保提高它们的性能。 对于深度神经网络,如果我们能将新添加的层训练成恒等映射(identity function) ,新模型和原模型将同样有效。 同时,由于新模型可能得出更优的解来拟合训练数据集,因此添加层似乎更容易降低训练误差。

所以,ResNet设计出了一个残差块(右),相比正常块,残差块需要拟合出残差映射

Vision Transformer

Vision Transformer (ViT)

Reference: https://blog.csdn.net/fulva/article/details/121045938

https://arxiv.org/abs/2010.11929

目标:把词结构转化为图结构

把图片分割成一个一个Patch,每个Patch相当于句子中的一个词。Patch Embedding就是再把Patch再经过一个全连接网络压缩成一个具有一定维度的向量。

接下来,需要在embedding中添加位置信息。通过固定算法/训练获得的信息产生的位置向量直接加上patch embedding.

Attention

  • Text Encoder

经典的transformer结构

Zero-shot

Prompt Engineering

  • 输入:一张图片 + 所有类别转换的文本(100个类别就是100个文本描述)。
  • 计算图像的特征嵌入和由它们各自的编码器对可能的文本集的特征嵌入。
  • 计算这些嵌入的cosine similarity,用温度参数进行缩放,并通过softmax归一化为概率分布。

根据任务的分类标签构建每个类别的描述文本:A photo of {label},然后将这些文本送入Text Encoder得到对应的文本特征,如果类别数目为,那么将得到个文本特征;将要预测的图像送入Image Encoder得到图像特征,然后与个文本特征计算缩放的余弦相似度(和训练过程一致),然后选择相似度最大的文本对应的类别作为图像分类预测结果,进一步地,可以将这些相似度看成logits,送入softmax后可以到每个类别的预测概率。

  • Title: Contrastive Language-Image Pre-training
  • Author: Yuze-L
  • Created at : 2024-07-31 21:23:10
  • Updated at : 2024-08-01 15:55:27
  • Link: https://yuze-l.github.io/2024/07/31/CLIP/
  • License: This work is licensed under CC BY-NC-SA 4.0.
On this page
Contrastive Language-Image Pre-training