多模态论文笔记——CLIP

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍这几年AIGC火爆的隐藏功臣,多模态模型:CLIP。

在这里插入图片描述

文章目录

  • CLIP(Contrastive Language-Image Pre-training)
    • 1. CLIP 的核心思想
    • 2. CLIP 的模型架构
      • 2.1 图像编码器
      • 2.2 文本编码器
      • 2.3 对比学习机制
      • 2.4 对比损失(Contrastive Loss)
        • InfoNCE
        • 图像编码器损失函数
        • 文本编码器损失函数
        • 总损失函数
      • 2.5 共享嵌入空间
    • 3. CLIP 的训练方式
    • 4. CLIP 的推理过程
      • 4.1 图像分类
      • 4.2 跨模态检索
    • 5. CLIP 的优势
    • 6. CLIP 的应用场景
      • 6.1 零样本学习
      • 6.2 跨模态检索
      • 6.3 多模态理解任务
    • 7. CLIP 的局限性

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 的架构包括图像编码器文本编码器,它们分别将图像和文本输入嵌入到同一个向量空间。图像和文本分别经过编码后,计算它们在向量空间中的相似度来进行对比学习
在这里插入图片描述

2.1 图像编码器

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

  • ResNetViT 接受图像作为输入,并输出包含了图像的高层语义信息的向量

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=logj=1Nexp(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∥∥tjvitj
其中 ( 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=N1i=1Nlogj=1Nexp(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=N1i=1Nlogj=1Nexp(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 可以通过以下步骤进行推理:

  1. 给定一个输入图像,将其通过图像编码器生成一个向量表示。
  2. 使用一组标签(例如“猫”、“狗”、“汽车”等)的文本描述,将这些描述通过文本编码器生成一组向量表示。
  3. 计算图像向量与每个文本向量的相似度,并选择相似度最高的标签作为分类结果。
    这种方式使 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 的预训练需要大量的图像-文本配对数据和计算资源,这对于小型项目或研究可能是一个挑战。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/1224.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ArcGIS微课1000例】0137:色彩映射表转为RGB全彩模式

本文讲述ArcGIS中,将tif格式的影像数据从色彩映射表转为RGB全彩模式。 参考阅读:【GlobalMapper精品教程】093:将tif影像色彩映射表(调色板)转为RGB全彩模式 文章目录 一、色彩映射表预览二、色彩映射表转为RGB全彩模式一、色彩映射表预览 加载配套数据包中的0137.rar中的…

计算机网络(四)——网络层

目录 一、功能 二、IP数据报分片 三、DHCP动态主机配置协议 四、网络地址转换(NAT)技术 五、无分类编址CIDR 六、ARP地址解析协议 七、ICMP网际控制报文协议 八、IPv4和IPv6的区别 九、IPv4向IPv6的两种过渡技术——双栈协议和隧道技术 十、路由…

【大数据】机器学习 -----关于data.csv数据集分析案例

打开表 import pandas as pd df2 pd.read_csv("data.csv",encoding"gbk") df2.head()查看数据属性(列标题,表形状,类型,行标题,值) print("列标题:",df2.columns)Data…

在 Linux 下Ubuntu创建同权限用户

我是因为不小心把最开始创建的用户的文件夹颜色搞没了,再后来全白用习惯了,就不想卸载了,像创建一个和最开始创建的用户有一样的权限可以执行sudo -i进入root一样的用户 如图这是最原始的样子 第一步 创建新用户,我这里是因为之前…

toRef 和 toRefs 详解及应用

在 Vue 3 中,toRef 和 toRefs 是两个用于创建响应式引用的工具,主要用于组合式 API(Composition API)的场景中 1. toRef 定义 toRef 将某个对象的某个属性包装成一个响应式引用。这样可以直接对该引用进行操作,而不需…

【大模型入门指南 07】量化技术浅析

【大模型入门指南】系列文章: 【大模型入门指南 01】深度学习入门【大模型入门指南 02】LLM大模型基础知识【大模型入门指南 03】提示词工程【大模型入门指南 04】Transformer结构【大模型入门指南 05】LLM技术选型【大模型入门指南 06】LLM数据预处理【大模型入门…

Nginx配置VTS模块-对接Promethues监控

一、背景 Nginx有一个stub_status模块,可以获取到Nginx的一些相关指标。stub_status 模块用于提供基本的 Nginx 性能统计数据。这个模块不是默认编译进 Nginx 的,所以如果需要使用它,确保 Nginx 是带有 --with-http_stub_status_module 选项编…

python 寻找数据拐点

import numpy as np import cv2 from scipy.signal import find_peaks# 示例数据 y_data [365.63258786, 318.34824281, 258.28434505, 228.8913738, 190.87220447, 158.28434505, 129.53035144, 111.95846645, 111.95846645, 120.26517572, 140.71246006, 161.79872204, 180.…

【Leetcode 热题 100】84. 柱状图中最大的矩形

问题背景 给定 n n n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 1 1。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 输入: h e i g h t s [ 2 , 1 , 5 , 6 , 2 , 3 ] heights [2,1…

网络原理(三)—— 传输层 之 UDP 和 TCP协议

传输层 在传输层两大关键的协议就是UDP和TCP协议了,除此之外,还有别的传输层协议,本文章将介绍UDP和TCP协议,重点介绍TCP协议。 首先回顾TCP和UDP 的特点: UDP:不可靠传输,面向数据包&#xf…

MySQL素材怎么导入Navicat???

不管用什么方法都要先关掉MySQL服务,并且提前备份数据! 1.有sql文件时候。 打开navicat,运行sql文件 然后点击后面三个点,选中要运行的sql文件,开始。 鼠标右键刷新一下,就能看到sql文件中的表了 2.没有s…

Windows安装ES单机版设置密码

下载ES ES下载链接 我用的是7.17.26 启动前配置 解压之后打开D:\software\elasticsearch-7.17.26\bin\elasticsearch-env.bat 在elasticsearch-env.bat文件中修改jdk的路径 修改前 修改内容 if defined ES_JAVA_HOME (set JAVA"D:\software\elasticsearch-7.17.26\…

mac intel芯片下载安卓模拟器

一、调研 目前主流两个模拟器: 雷神模拟器 不支持macosmumu模拟器pro版 不支持macos intel芯片 搜索到mumu的Q&A中有 “Intel芯片Mac如何安装MuMu?” q&a🔗:https://mumu.163.com/mac/faq/install-on-intel-mac.html 提…

系统看门狗配置--以ubuntu为例

linux系统配置看门狗 以 ubuntu 系统配置看门狗为例 配置看门狗使用的脚本文件,需要使用管理员权限来执行: 配置是:系统每 30S 喂一次狗,超过 60S 不进行投喂,就会自动重启。 1. 系统脚本内容: #!/bin/b…

每天五分钟深度学习框架pytorch:快速搭建VGG网络的基础模块VGG块

本文重点 前面我们介绍了VGG神经网络,我们知道VGG是由许多的VGG块构成,那么本文我们将使用pytorch搭建VGG块 代码实现: import torch from torch import nn def vgg_block(num_convs,in_channels,out_channels): net=[nn.Conv2d(in_channels,out_channels,kernel_size=3,p…

RocketMQ 知识速览

文章目录 一、消息队列对比二、RocketMQ 基础1. 消息模型2. 技术架构3. 消息类型4. 消费者类型5. 消费者分组和生产者分组 三、RocketMQ 高级1. 如何解决顺序消费和重复消费2. 如何实现分布式事务3. 如何解决消息堆积问题4. 如何保证高性能读写5. 刷盘机制 (topic 模…

2_CSS3 背景 --[CSS3 进阶之路]

CSS3 中的背景属性提供了许多强大的功能来增强网页设计,包括但不限于多背景图像、渐变、背景大小控制等。以下是一些关键的 CSS3 背景属性及其用法示例。 1. 多重背景图像 CSS3 允许你为一个元素设置多个背景图像。这些图像按照它们在 background-image 属性中定义…

Kutools for Excel 简体中文版 - 官方正版授权

Kutools for Excel 是一款超棒的 Excel 插件,就像给你的 Excel 加了个超能助手。它有 300 多种实用功能,现在还有 AI 帮忙,能把复杂的任务变简单,重复的事儿也能自动搞定,不管是新手还是老手都能用得顺手。有了它&…

腾讯云AI代码助手编程挑战赛-智能聊天助手

作品简介 本作品开发于腾讯云 AI 代码助手编程挑战赛,旨在体验腾讯云 AI 代码助手在项目开发中的助力。通过这一开发过程,体验到了 AI 辅助编程的高效性。 技术架构 前端: 使用 VUE3、TypeScript、TDesign 和 ElementUI 实现。 后端: 基于 Python 开发…

Spring Data Elasticsearch简介

一、Spring Data Elasticsearch简介 1 SpringData ElasticSearch简介 Elasticsearch是一个实时的分布式搜索和分析引擎。它底层封装了Lucene框架,可以提供分布式多用户的全文搜索服务。 Spring Data ElasticSearch是SpringData技术对ElasticSearch原生API封装之后的产物,它通…