乌市泽哥 发表于 4 天前

多模态论文笔记——CLIP

各人好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细先容这几年AIGC火爆的隐藏功臣,多模态模子:CLIP。
https://i-blog.csdnimg.cn/direct/c56e537d75df41eeb1287fd51d821d31.png#pic_center
   
   
CLIP(Contrastive Language-Image Pre-training)

CLIP 是由 OpenAI 提出的一个用于多模态学习的模子,通过对比学习(contrastive learning)进行图像-文本团结学习的创新模子。CLIP 训练图像和文本的团结表示。
论文:Learning Transferable Visual Models From Natural Language Supervision
1. CLIP 的焦点思想

CLIP 的焦点思想是将图像和文本映射到一个共享的嵌入空间中,并通过对比学习来最大化匹配图像-文本对之间的相似度,最小化不匹配图像-文本对的相似度。模子通过大量数据上进行预训练,具备强大的通用化本领,即零样本学习(zero-shot learning),这意味着它可以处理没有见过的任务或类目而无需重新训练。
2. CLIP 的模子架构

CLIP 的架构包罗图像编码器和文本编码器,它们分别将图像和文本输入嵌入到同一个向量空间。图像和文天职别颠末编码后,盘算它们在向量空间中的相似度来进行对比学习。
https://i-blog.csdnimg.cn/direct/bb04d8d676304ab2819e0cc2b8e2691d.png
2.1 图像编码器

CNN(如 ResNet)或 Vision Transformer (ViT) 作为图像编码器


[*]ResNet 或 ViT 继承图像作为输入,并输出包含了图像的高层语义信息的向量。
2.2 文本编码器

Transformer 作为文本编码器。这个编码器会将输入的文本形貌(天然语言)转化为一个向量表示。


[*]文本编码器会将每个文本通过多层 Transformer 的处理,生成包含了文本的语义信息向量。
2.3 对比学习机制

CLIP 的训练目标:通过对比学习(contrastive learning) 的损失函数 让准确的图像-文本对的表示在向量空间中尽大概接近,而错误的图像-文本对在向量空间中尽大概阔别。
2.4 对比损失(Contrastive Loss)

对比损失(Contrastive Loss):CLIP 使用了一种基于InfoNCE的对比损失函数。对于每一对图像-文本,模子管帐算图像和全部文本对(以及文本和全部图像对)的相似度。通过最大化匹配对的相似度,同时最小化不匹配对的相似度,CLIP 可以学到更强的多模态表示。
InfoNCE

损失函数的目标是让图像                                              x                            i                                       x_i                  xi​;与准确文本形貌                                              t                            i                                       t_i                  ti​的相似度最大化,同时与全部其他不相干文本                                              t                            j                                       t_j                  tj​ 的相似度最小化,公式为:
                                       L                            =                            −                            log                            ⁡                                                   exp                                  ⁡                                  (                                  sim                                  (                                             x                                     i                                              ,                                             t                                     i                                              )                                  /                                  τ                                  )                                                                   ∑                                                   j                                        =                                        1                                                N                                              exp                                  ⁡                                  (                                  sim                                  (                                             x                                     i                                              ,                                             t                                     j                                              )                                  /                                  τ                                  )                                                       \mathcal{L} = - \log\frac{\exp(\text{sim}(x_i,t_i)/\tau)}{\sum_{j = 1}^{N}\exp(\text{sim}(x_i,t_j)/\tau)}                     L=−log∑j=1N​exp(sim(xi​,tj​)/τ)exp(sim(xi​,ti​)/τ)​


[*]                                        (                                       x                               i                                    )                                  (x_i)                     (xi​):第                                        (                            i                            )                                  (i)                     (i)个图像样本。
[*]                                        (                                       t                               i                                    )                                  (t_i)                     (ti​):第                                        (                            i                            )                                  (i)                     (i)个图像样本的准确文本形貌。
[*]                                        (                                       t                               j                                    )                                  (t_j)                     (tj​):其他文本形貌(包罗                                        (                                       t                               i                                    )                                  (t_i)                     (ti​)和其他与                                        (                                       x                               i                                    )                                  (x_i)                     (xi​)不匹配的文本形貌)。
[*]                                        sim                            (                                       x                               i                                    ,                                       t                               j                                    )                                  \text{sim}(x_i,t_j)                     sim(xi​,tj​):图像                                        (                                       x                               i                                    )                                  (x_i)                     (xi​)和文本                                        (                                       t                               j                                    )                                  (t_j)                     (tj​)或者                                        (                                       t                               i                                    )                                  (t_i)                     (ti​)的相似度,一样寻常使用余弦相似度来盘算。
[*]                                        (                            τ                            )                                  (\tau)                     (τ):温度参数,用于控制相似度分布的平滑程度。
                                           sim                            (                                       x                               i                                    ,                                       t                               j                                    )                                  \text{sim}(x_i, t_j)                     sim(xi​,tj​) 可以使用余弦相似度:
                                              sim                               (                                           v                                  i                                          ,                                           t                                  j                                          )                               =                                                                      v                                        i                                                ⋅                                                   t                                        j                                                                        ∥                                                   v                                        i                                                ∥                                     ∥                                                   t                                        j                                                ∥                                                             \text{sim}(v_i,t_j)=\frac{v_i\cdot t_j}{\|v_i\|\|t_j\|}                        sim(vi​,tj​)=∥vi​∥∥tj​∥vi​⋅tj​​
其中 (                                                    v                               i                                          v_i                     vi​ ) 是图像 (                                                    x                               i                                          x_i                     xi​ ) 的嵌入向量,(                                                    t                               j                                          t_j                     tj​ ) 是文本 (                                                    t                               j                                          t_j                     tj​ ) 的嵌入向量。这样盘算得到一个 相似度矩阵,矩阵中的每个元素表示批次中恣意一对图像和文本的相似度。
由于CLIP 包含两个重要的编码器部门:图像编码器、文本编码器,所以,损失函数必要分为两部门,针对之后图像编码器的损失函数 和 文本编码器的损失函数。之后根据各自的损失函数优化两部门构件的权重。
   

[*]实在损失函数都是一样的,只不外因为CLIP组成构件是两部门,所以必要分两部门,方便优化各自的权重参数,当单独使用图像编码器或者文本编码器时候(SD模子单独使用Text Encoder),也会有很好的效果。
[*]确保图像和文本的嵌入可以或许在共享的嵌入空间中彼此对齐(无论是从图像到文本,照旧从文本到图像,匹配的对之间的相似度都被最大化,不匹配的对之间的相似度都被最小化。),从而在跨模态任务中实现一致性和相互匹配的本领。
图像编码器损失函数

作用于图像检索文本:给定一个图像,可以找到与之最匹配的文本形貌。
图像损失部门:对于每一个图像 (                                              x                            i                                       x_i                  xi​ ),该部门的损失最大化它与准确文本 (                                              t                            i                                       t_i                  ti​ ) 的相似度,同时最小化它与其他错误文本 (                                              t                            j                                       t_j                  tj​ ) 的相似度。这一部门确保了图像可以或许找到准确的文本,也就是说图像编码器可以或许将图像嵌入到一个空间中,使得匹配的文本形貌与它更接近。
                                                    L                               image                                    =                            −                                       1                               N                                                 ∑                                           i                                  =                                  1                                          N                                    log                            ⁡                                                   exp                                  ⁡                                  (                                  sim                                  (                                             v                                     i                                              ,                                             t                                     i                                              )                                  /                                  τ                                  )                                                                   ∑                                                   j                                        =                                        1                                                N                                              exp                                  ⁡                                  (                                  sim                                  (                                             v                                     i                                              ,                                             t                                     j                                              )                                  /                                  τ                                  )                                                       \mathcal{L}_{\text{image}} = - \frac{1}{N}\sum_{i = 1}^{N}\log\frac{\exp(\text{sim}(v_i,t_i)/\tau)}{\sum_{j = 1}^{N}\exp(\text{sim}(v_i,t_j)/\tau)}                     Limage​=−N1​i=1∑N​log∑j=1N​exp(sim(vi​,tj​)/τ)exp(sim(vi​,ti​)/τ)​
文本编码器损失函数

作用于文本检索图像:给定一个文本形貌,可以找到与之最匹配的图像。


[*]文本损失部门:对于每一个文本 (                                                    t                               i                                          t_i                     ti​ ),该部门的损失最大化它与准确图像 (                                                    x                               i                                          x_i                     xi​ ) 的相似度,同时最小化它与其他错误图像 (                                                    x                               j                                          x_j                     xj​ ) 的相似度。这一部门确保了文本可以或许找到准确的图像,也就是说文本编码器可以或许将文本嵌入到一个空间中,使得匹配的图像与它更接近。
                                                          L                                  text                                          =                               −                                           1                                  N                                                      ∑                                             i                                     =                                     1                                              N                                          log                               ⁡                                                      exp                                     ⁡                                     (                                     sim                                     (                                                   v                                        i                                                ,                                                   t                                        i                                                )                                     /                                     τ                                     )                                                                         ∑                                                       j                                           =                                           1                                                      N                                                exp                                     ⁡                                     (                                     sim                                     (                                                   v                                        j                                                ,                                                   t                                        i                                                )                                     /                                     τ                                     )                                                             \mathcal{L}_{\text{text}} = - \frac{1}{N}\sum_{i = 1}^{N}\log\frac{\exp(\text{sim}(v_i,t_i)/\tau)}{\sum_{j = 1}^{N}\exp(\text{sim}(v_j,t_i)/\tau)}                        Ltext​=−N1​i=1∑N​log∑j=1N​exp(sim(vj​,ti​)/τ)exp(sim(vi​,ti​)/τ)​
总损失函数

最大化图像和其准确文本形貌之间的相似度,同时最小化图像和其他不匹配文本形貌之间的相似度。
                                                    L                               CLIP                                    =                                       1                               2                                    (                                       L                               image                                    +                                       L                               text                                    )                                  \mathcal{L}_{\text{CLIP}}=\frac{1}{2}(\mathcal{L}_{\text{image}}+\mathcal{L}_{\text{text}})                     LCLIP​=21​(Limage​+Ltext​)


[*](                                                          L                                  image                                                 \mathcal{L}_{\text{image}}                        Limage​ ):文本编码器损失函数
[*](                                                          L                                  image                                                 \mathcal{L}_{\text{image}}                        Limage​ ):图像编码器损失函数
2.5 共享嵌入空间

CLIP 将图像和文本映射到相同的嵌入空间的向量,可以直接进行相似度盘算。
3. CLIP 的训练方式

CLIP 的训练使用了大量的图像-文本配对数据进行对比学习。这些数据通常来自网络,比方图像和它们的天然语言形貌(如社交媒体图片和它们的形貌文本)。OpenAI从互联网网络了共4个亿的文本-图像对。
4. CLIP 的推理过程

在推理过程中,CLIP 通过盘算图像和文本形貌的相似度来实行分类或检索任务
4.1 图像分类

在图像分类任务中,CLIP 可以通过以下步骤进行推理:

[*]给定一个输入图像,将其通过图像编码器生成一个向量表示。
[*]使用一组标签(比方“猫”、“狗”、“汽车”等)的文本形貌,将这些形貌通过文本编码器生成一组向量表示。
[*]盘算图像向量与每个文本向量的相似度,并选择相似度最高的标签作为分类结果。
这种方式使 CLIP 可以或许在没有特定类别标签的环境下进行零样天职类(zero-shot classification)。
4.2 跨模态检索

在跨模态检索任务中,CLIP 可以使用文本编码器实行文本检索图像或使用图像编码器实行图像检索文本。比方:


[*]输入一个文本形貌,检索与之相干的图像。
[*]输入一个图像,检索与之语义相干的文本形貌。
5. CLIP 的上风

1 零样本学习
CLIP 最具创新的特性之一是它在许多任务中可以实行零样本学习。可以通过它的预训练模子处理从未见过的新任务。比方,CLIP 可以在未见过的分类标签下进行分类。
2 跨模态本领
CLIP 的跨模态本领使得它在图像和文本的任务中都体现精彩。进行跨模态检索。
5.3 灵活性和通用性
CLIP 可以或许在广泛的应用场景中工作,涵盖图像分类、检索、零样本推理等任务,而不必要为每个任务单独设计和训练模子。
6. CLIP 的应用场景

6.1 零样本学习

CLIP 不依赖于特定类别标签,而是通过天然语言形貌进行分类。因此,它可以在开放范畴的任务中对图像进行分类,不必要专门的任务训练。
6.2 跨模态检索

CLIP 的跨模态本领使它可以或许通过文本查询图像,或者通过图像查询相干的文本。这种灵活性使 CLIP 在图像搜刮和检索任务中体现突出。
6.3 多模态明白任务

CLIP 可以应用于图像-文本匹配、视觉问答等任务,模子可以或许明白图像和文本的团结语义,进而实行多模态的复杂任务。
7. CLIP 的范围性



[*]依赖大规模数据,盘算资源需求高:CLIP 的预训练必要大量的图像-文本配对数据和盘算资源,这对于小型项目或研究大概是一个挑战。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 多模态论文笔记——CLIP