AI大模型教程
一起来学习

AIGC-Stable Diffusion进阶2-CLIP

CLIP(Contrastive Language–Image Pretraining)OpenAI 提出的一个多模态模型,能够将文本和图像联合表示在一个共享的潜在空间中。它在多模态任务(如图像分类、图像-文本检索等)中表现出了强大的泛化能力。


CLIP 的核心思想

  • 对比学习(Contrastive Learning)
    CLIP 通过对比学习的方式,让模型学会将配对的文本和图像映射到共享的潜在空间中。其目标是:

    • 相似对靠近:将描述相同语义的文本和图像的向量表示尽量靠近。
    • 不相似对分离:将语义不相关的文本和图像表示尽量分开。
  • 模态对齐
    CLIP 通过一个文本编码器和一个图像编码器,将两种模态的数据对齐,确保文本和图像可以在同一个空间中被比较。

对比学习(Contrastive Learning):是一种无监督学习方式,通过比较样本之间的相似性和差异性来学习有效的特征表示。这也会牵扯正样本和负样本,正样本:语义相关的样本对,例如:一张狗的图片及其对应的描述“a dog in the park”。负样本:语义无关的样本对,例如,狗的图片与描述”a car on the street”。而学习的目标就是最大化正样本相似性,最小化负样本的相似性。

这里给出简单的案例来进一步说明对比学习图片和文本对齐:

假设有以下图像和文本:

·图像1:一张猫的图片

·图像2:一张狗的图片

·文本1:“a cute cat sitting on a chair”

·文本2:“a playful dog in the yard”

对比学习的过程:

编码表示

  • 图像1和图像2分别通过图像编码器得到图像特征向量 V1V2
  • 文本1和文本2分别通过文本编码器得到文本特征向量 T1T2

计算相似性

  • 对所有可能的图像-文本组合计算相似性分数,例如通过点积
  • S(V1, T1), S(V1, T2), S(V2, T1), S(V2, T2)

对比损失(Contrastive Loss)

  • 正样本对:S(V1, T1)S(V2, T2)
  • 负样本对:S(V1, T2)S(V2, T1)
  • 损失的目标是:
    • 提高正样本对(V1-T1V2-T2)的相似性分数。
    • 降低负样本对(V1-T2V2-T1)的相似性分数。

CLIP 的架构

  • 文本编码器

    • CLIP 使用一个基于 Transformer 的文本编码器(如 GPT 或类似架构)。
    • 输入:一段自然语言文本。
    • 输出:文本的向量表示。

            输入格式:文本首先被转为离散的单词或标记(Tokens),这个在我之前的文章中其实也简单的介绍过:AIGC-Stable Diffusion_aigc和stable diffusion-CSDN博客

 什么叫标记化呢?举个例子:

输入为:”I love natural language processing.”

在标记化的过程中,这个句子可能会被分解成以下单词标记

  1. “I”
  2. “love”
  3. “natural”
  4. “language”
  5. “processing”

每个单词可能会被映射到一个唯一的数字或向量表示。例如我此时输入为:a girl, beautiful

通过对我输入prompt标记化后,得到的token ID如下:(很多的49407是padding后的结果)

tensor([[49406,   320,  1611,   267,  1215, 49407, 49407, 49407, 49407, 49407,
         49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407,
         49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407,
         49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407,
         49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407,
         49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407,
         49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407, 49407,
         49407, 49407, 49407, 49407, 49407, 49407, 49407]])

这些token ID都是提前设置好的49406表示text的开始,49407是text结束,其他token如下:

 “a“: 320

girl“: 1611

,“: 267

beautiful“: 1215

>”: 49407

 

然后再把这些标记好的token ID送入嵌入层(得到词嵌入,或者说词的特征)。 这个文本特征将会与图像特征对比学习。

  • 图像编码器

    • CLIP 使用一个视觉编码器(如 ResNet 或 Vision Transformer)。
    • 输入:一张图像。
    • 输出:图像的向量表示
  • 共享潜在空间

    • 文本和图像的向量都被投影到同一个潜在空间中。
    • 通过对比学习,模型确保相似的文本和图像向量在空间中接近,不相似的向量分离。
  • 对比损失

    • CLIP 使用一种对比损失函数(Contrastive Loss),通过最大化匹配对(图像-文本)的相似性和最小化非匹配对的相似性来训练模型。

CLIP 的训练

  1. 大规模跨模态数据集

    • CLIP 使用了一个包含 4 亿对图像和文本描述的大规模数据集进行训练。这些数据通常是从互联网上获取的,覆盖了广泛的语义内容。
  2. 自监督学习

    • CLIP 不依赖于特定任务的标注数据,而是通过自监督对比学习的方式从海量未标注数据中学习。

CLIP 的特点

  1. 强泛化能力

    • CLIP 不需要针对特定任务进行微调,能够直接在许多下游任务(如零样本图像分类、图像-文本检索等)中表现优异。
  2. 跨模态能力

    • CLIP 能够理解文本和图像之间的语义关系,适用于跨模态检索任务。
  3. 多任务能力

    • CLIP 通过一个统一的架构,能够在许多不同的任务中表现良好。

CLIP 的应用

  1. 零样本图像分类

    • CLIP 可以通过文本提示(如 “a photo of a dog”)直接对图像进行分类,而无需为特定类别训练。
  2. 跨模态检索

    • 在图像和文本之间进行搜索。例如,通过一段文字找到相关的图片,或通过一张图片找到相关的文字描述。
  3. 图像生成的辅助

    • CLIP 可以作为生成模型(如 Stable Diffusion)的一部分,用于指导图像生成,使其与输入文本语义更一致。

总结

CLIP 是一种强大的多模态模型,能够在统一的潜在空间中高效对齐和对比文本与图像。这使得它在跨模态任务中表现卓越,尤其是在需要泛化能力的场景下,如零样本学习和跨模态检索。

文章来源于互联网:AIGC-Stable Diffusion进阶2-CLIP

赞(0)
未经允许不得转载:5bei.cn大模型教程网 » AIGC-Stable Diffusion进阶2-CLIP
分享到: 更多 (0)

AI大模型,我们的未来

小欢软考联系我们