CLIP及其对齐的概念、思想、实现

一、核心思想

CLIP论文的名称是Learning Transferable VIsual Models from Natural Language Supervision,从自然语言监督中学习可迁移的视觉模型,利用文本作为监督信号训练可迁移的视觉模型
CLIP的全称是,Contrastive Language-Image Pre-training,即对比语言-图片预训练。

二、模型结构

模型结构包括一个Text Encoder和一个Image Encoder。其中Text Encoder用来提取文本特征,采用text transformer;Image Encoder用来提取图像特征,采用CNN或Vision Transformer。
CLIP模型的原理

三、训练测试

模型对文本特征和图像特征进行对比学习。对于一个包含N个文本-图像对的训练Batch,计算文本特征和图像特征的余弦相似度。
其中共有N个正样本,即真正属于一对的文本和图像(矩阵中的对角线元素),而剩余的 N 2 − N N^2-N N2N个文本-图像对为负样本
在训练时,训练目标是最大化N个正样本的相似度,同时最小化负样本的相似度。
在测试时,CLIP可以直接实现zero-shot的图像分类,即**不需要任何训练数据,就能在某个具体下游任务上实现分类。**只需两步:

  • 根据分类标签构建每个类别的描述文本:A photo of {label},用Text Encoder得到文本特征。
  • 用Image Encoder得到预测图像的图像特征,与文本特征计算余弦相似度。选择相似度最大的文本对应的类别作为图像分类预测结果。同时可以将这些相似度看成logits,送入softmax得到每个类别的预测概率值。
    核心伪代码

四、核心点

1. 自然语言监督

相比于人工标注的标签,其优势在于

  • 可以从网上大量获取;
  • 不仅学习图像表征,还学习了与语言之间的关系;
  • 利用了语言的强大能力,从而实现灵活的零样本迁移。
2. 图文数据集的构建

构建了一个包含4亿对(图像、文本)的新数据集WebImageText。

3. 模型选择与扩展

Text Encoder固定选择一个包含63M参数的Text Transformer模型,Image Encoder采用了两种架构:

  • CNN架构的ResNet,其中ResNet包含5个不同大小的模型:ResNet50,ResNet101,RN50x4,RN50x16 和 RNx64(后面三个模型是按照EfficientNet缩放规则对ResNet分别增大4x,16x 和 64x 得到)
  • 基于Transformer的ViT,ViT选择3个不同大小的模型:ViT-B/32,ViT-B/16 和 ViT-L/14(B和L表示Base和Large版本,数字表示patch尺寸)。

五、CLIP对齐的概念、思想和实现

CLIP(Contrastive Language-Image Pre-Training)是一种通过对比学习的方法,将视觉和语言模型对齐,使其能够理解和处理图像和文本之间的关系。以下是CLIP对齐的概念、思想和实现的详细介绍:

概念

CLIP的核心思想是通过对比学习同时训练图像编码器和文本编码器,使得图像和其对应的文本描述在相同的嵌入空间中相距更近。这样,一个模型可以在没有明确的监督情况下理解图像和文本之间的关系,并实现跨模态的检索和分类任务。

思想

CLIP的基本思想可以概括如下:

  1. 对比学习(Contrastive Learning):利用对比学习的方法,使得匹配的图像-文本对在嵌入空间中距离更近,而不匹配的对距离更远。
  2. 双模态对齐(Multimodal Alignment):通过同时训练图像编码器和文本编码器,将两种不同模态的数据映射到同一嵌入空间中。
  3. 预训练(Pre-Training):在大规模的图像-文本数据集上进行预训练,使模型具备强大的泛化能力,能够处理各种未见过的图像和文本。

实现

  1. 数据准备

    • 收集大规模的图像和相应的文本描述对,这些文本可以是图像的标签、标题、描述等。
  2. 模型结构

    • 图像编码器(例如ViT)将图像转换为固定尺寸的特征向量。
    • 文本编码器(例如Transformer)将文本转换为固定尺寸的特征向量。
    • 图像和文本的特征向量在相同的嵌入空间中表示。

不同模态的数据表示之间可能存在gap,无法进行直接的比较,因此先将不同模态的数据映射到同一个多模态空间,有利于后续的相似度计算等操作。
visual_embedding [N, embedding_size]
text_embedding [N, embedding_size]

  1. 训练过程
    • 正样本对(Positive Pair):匹配的图像和文本对。
    • 负样本对(Negative Pair):不匹配的图像和文本对。
    • 通过对比损失函数(Contrastive Loss)训练模型,使得正样本对在嵌入空间中距离更近,负样本对距离更远。

具体来说,CLIP使用的对比损失函数是:
L = − 1 N ∑ i = 1 N log ⁡ exp ⁡ ( sim ( z i I , z i T ) / τ ) ∑ j = 1 N exp ⁡ ( sim ( z i I , z j T ) / τ ) \mathcal{L} = -\frac{1}{N} \sum_{i=1}^{N} \log \frac{\exp(\text{sim}(z_i^I, z_i^T) / \tau)}{\sum_{j=1}^{N} \exp(\text{sim}(z_i^I, z_j^T) / \tau)} L=N1i=1Nlogj=1Nexp(sim(ziI,zjT)/τ)exp(sim(ziI,ziT)/τ)
其中:

  • N N N 是批次大小。
  • z i I z_i^I ziI z i T z_i^T ziT分别是第 i i i 个图像和文本的嵌入向量。
  • sim ( ⋅ , ⋅ ) \text{sim}(\cdot, \cdot) sim(,) 表示相似度度量(通常为余弦相似度)。
  • τ \tau τ 是温度超参数,用于调整对比损失的敏感性。
  1. 推理过程
    • 在推理阶段,给定一个图像,通过图像编码器生成图像的特征向量;给定一个文本,通过文本编码器生成文本的特征向量。
    • 计算图像和文本特征向量之间的相似度,用于图像-文本匹配、图像搜索、文本描述生成等任务。

应用场景

  • 图像分类:通过匹配图像和预定义的类描述文本,进行零样本分类。
  • 图像检索:通过文本查询,从数据库中检索相关的图像。
  • 图像描述生成:生成与给定图像相匹配的自然语言描述。

CLIP的对齐思想和实现,展示了跨模态学习的强大能力,能够有效地结合视觉和语言信息,为多种人工智能应用提供基础。

参考资料:
https://blog.csdn.net/wjinjie/article/details/136592697
https://blog.csdn.net/zyw2002/article/details/137756591

相关推荐

  1. 分层风格软件架构设计概念及其实际应用

    2024-07-16 07:10:01       33 阅读
  2. C#-并行编程概念及其运用

    2024-07-16 07:10:01       64 阅读
  3. 软件测试基本概念及其分类

    2024-07-16 07:10:01       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 07:10:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 07:10:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 07:10:01       58 阅读
  4. Python语言-面向对象

    2024-07-16 07:10:01       69 阅读

热门阅读

  1. 扫地机器人的工作原理

    2024-07-16 07:10:01       21 阅读
  2. C++ 有用的资源

    2024-07-16 07:10:01       18 阅读
  3. Hello,World!(C++)

    2024-07-16 07:10:01       20 阅读
  4. Eclipse 创建 XML 文件

    2024-07-16 07:10:01       22 阅读
  5. Electron 为什么采用多进程,而不是单进程

    2024-07-16 07:10:01       19 阅读
  6. live555 rtsp服务器实战之createNewStreamSource

    2024-07-16 07:10:01       27 阅读
  7. MATLAB的mat文件转换成json文件

    2024-07-16 07:10:01       31 阅读
  8. 统计学随笔

    2024-07-16 07:10:01       23 阅读
  9. 暂停cPanel / WHM帐户的方法

    2024-07-16 07:10:01       20 阅读