CLIP——多模态预训练模型介绍

news2024/10/11 17:08:23

CLIP: Contrastive Language-Image Pre-training

CLIP: 对比语言-图像预训练

CLIP的是由 OpenAI 2021年在 Learning Transferable Visual Models From Natural Language Supervision【利用文本的监督信号训练一个迁移能力强的视觉模型】中提出的一种多模态预训练模型,使用4亿(400M)个图像和文本对数据进行训练,通过对比学习的方式学习图像和文本之间的对齐关系。
在这里插入图片描述



Motivation

简单来说,新增类别还得重新训练标注太麻烦了,能不能一劳永逸?这就是CLIP要解决的问题,预训练模型直接zero-shot。

CLIP模型训练——对比学习

在这里插入图片描述

  • 输入:图像及其配对的文本描述
  • 输出:计算图像和文本描述之间的相似度

对比学习是CLIP模型的核心,它通过比较正样本(匹配的图像-文本对,即图中对角线上N个匹配的图像-文本对)和负样本(不匹配的对,即N^2-N个没有匹配的图像-文本对)来训练模型。这种学习策略使得模型能够学习到图像和文本之间的复杂关系,而不仅仅是简单的特征对应。

CLIP的对比学习框架提高了模型对视觉和语言数据的泛化能力。

CLIP的网络结构

采用双流结构,使用Image Encoder和Text Encoder分别处理图像和文本。

Image EncoderImage Encoder

图像编码器有两种架构,一种是使用 ResNet50 作为基础,并使用ResNetD的改进和抗锯齿rect-2模糊池对原始版本进行了一些修改。此外,还将全局平均池化层替换为注意力池化机制。注意力池化机制是由一个单层的“Transformer”多头QKV注意力实现的,其中Q是基于图像的全局平均池化表示。

第二种是引入Vision Transformer(ViT) 进行实验,仅在transformer之前对 combined patch 和 position embeddings添加了额外的层归一化,并使用略有不同的初始化方案。

【注意】CLIP的Image Encoder学到的不是图像和哪个类别是相关的,而是图像本身的实际信息相关的,即编码出的特征是有实际含义的。

Text Encoder在这里插入图片描述

文本编码器是Transformer架构,并在此基础上根据Radford模型进行了架构修改。作为基础尺寸,使用8个注意头的12层512宽的解码器,参数为63M。对于输入的文本序列,用 [SOS] 和[EOS] 括起来,把 [EOS] 作为整个文本输入的特征代表,将’EOS’的编码后的文本特征进行归一化然后通过线性层映射到多模态空间中。

对比学习 在这里插入图片描述

CLIP模型的损失函数由两部分构成:对比损失和分类损失。

  • 对比损失:通过最大化匹配图像-文本对的相似性,最小化不匹配图像-文本对的相似性来训练模型。
  • 分类损失:用于训练模型对图像和文本进行多任务分类。


CLIP实现——推理

在这里插入图片描述

CLIP模型预训练完成后,CLIP转换为零样本分类器。

zero-shot推理,推理时需要:

  • 一张图像数据
  • 一个训练好的模型
  • 一些提示文本(任意个)

和训练过程类似地,需要图像编码器将给定图像编码为图像特征,文本编码器将待选文本编码为文本特征。推理中使用prompt (提示),使用 “a photo of a {subject}.” 句子模板,将给定的类别分别填入subject作为文本进行编码,并预测CLIP估计的标题类与给定图像的最佳配对。

之所以进行prompt engineering有两个原因
1.一词多义,一个单词可能存在好几种意思,需要上下文信息来猜测这个单词的具体含义。
2.与预训练时的文本输入保持一致。因为在预训练时的输入大多是一句话,为了减小预训练和推理时的输入gap,在预测时输入也是一句话。

句子模板的选择很重要!论文中还对prompt engineering进行了讨论,测试了很多种类的句子模板。

在这里插入图片描述

推理过程中最关键的是,有很高的自由度去设置"多项选择题"。


以往的分类网络
1、类别是固定的。一般最后一层是softmax操作之后的全连接层,如果要更改类别的数量,就需要修改最后一层。
2、预测的内容是固定的,不能超过数据集的类别范围。

CLIP
提供给网络的分类标签可以数量不固定,而且可以是任意内容。如果提供两个标签,就是二分类问题,提供100个标签,就是100分类问题。CLIP摆脱了事先定好的分类标签。


CLIP可以随意进行Zero-Shot推理的一部分原因是因为训练的数据集很大,覆盖了绝大部分的视觉概念,并且文本的冗余信息较少,模型可以较准确的找出与视觉特征相似度较高的文本种类特征从而完成分类。



CLIP伪代码

在这里插入图片描述


CLIP总结

  • CLIP的zero-shot性能虽然和有监督的ResNet50相当,但是还不是SOTA,作者估计要达到SOTA的效果,CLIP还需要增加1000x的计算量,这个硬件条件很难满足。
  • zero-shot CLIP 在某些数据集上表现也并不好,在一些细分类任务上,CLIP 的性能低于 ResNet50。同时 CLIP 也无法处理抽象的概念,也无法做一些更难的任务(如统计某个物体的个数)。作者认为还有很多很多任务,CLIP 的 zero-shot 表现接近于瞎猜。
  • CLIP 虽然泛化能力强,在许多自然图像上还是很稳健的,但是如果在做推理时,这个数据与训练的数据差别非常大,即 out-of-distribution,那么 CLIP 的泛化能力也很差
  • 虽然 CLIP 可以做 zero-shot 的分类任务,但它还是在你给定的这些类别中去做选择。这是一个很大的限制,与一个真正灵活的方法,如 image captioning,直接生成图像的标题,这样的话一切都是模型在处理。 不幸的是,作者发现 image captioning 的 baseline 的计算效率比 CLIP 低得多。一个值得尝试的简单想法是将对比目标函数和生成目标函数联合训练,希望将 CLIP 的高效性和 caption 模型的灵活性结合起来。
  • CLIP 并没有直接优化 few-shot 的性能,有时在下游任务的推理时Few-Shot效果比Zero-Shot效果还要差。在作者的工作中,回到在CLIP特征上拟合线性分类器。 当从 zero-shot 转换到设置 few-shot 时,当 one-shot、two-shot、four-shot 时反而不如 zero-shot,不提供训练样本时反而比提供少量训练样本时差了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI荣耀时刻!2024诺贝尔物理奖、化学奖双双归属AI界

全球科学界迎来了2024最为瞩目的时刻——诺贝尔奖揭晓!当诺贝尔物理奖和化学奖这两大科学殿堂的最高荣誉同时聚焦在人工智能(AI)领域时,AI技术无疑再次被推向了神坛,成为全球瞩目的焦点!这一历史性的时刻&a…

2024年【焊工(初级)】最新解析及焊工(初级)模拟试题

题库来源:安全生产模拟考试一点通公众号小程序 焊工(初级)最新解析根据新焊工(初级)考试大纲要求,安全生产模拟考试一点通将焊工(初级)模拟考试试题进行汇编,组成一套焊…

来势汹汹,Eva Gamaiun超现实版权画时隔一年连发两案再次维权

案件基本情况起诉时间:2024-9-23、2024-9-24案件号:2024-cv-08763、2024-cv-08804原告:Eva Gamaiun原告律所:keith起诉地:伊利诺伊州北部法院品牌介绍Eva Gamayun,1990年出生,是一位自学成才的混…

vue项目 子组件在打开时调用父组件传过来的props里的数据

1 分析: 父组件在加载时就会加载子组件,所以此时调不到数据, 我们可以利用父组件内子组件的ref属性,获取子组件的方法, 在父组件的触发方法中调用直接传值 例: 父组件: //父组件事件AttributesRelations(row){this.dialogForm rowthis.$refs.AttributesRelationsRef.Attribu…

华为 HCIP-Datacom H12-821 题库 (35)

🐣博客最下方微信公众号回复题库,领取题库和教学资源 🐤诚挚欢迎IT交流有兴趣的公众号回复交流群 🦘公众号会持续更新网络小知识😼 1.一个 Route-Policy 下可以有多个节点,设备在调用Route-Policy时按顺序开始匹配 …

【最新华为OD机试E卷-支持在线评测】智能成绩表(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

如何才能使绩效管理和薪酬管理完美结合?

如何才能使绩效管理和薪酬管理完美结合? 企业内部管理中,绩效考核与薪酬设计是人力资源管理的两大核心支柱。薪酬设计不仅是工资分配的基石,更是激发员工潜能的关键工具;绩效考核则作为评估标尺,衡量如销售额、服务满…

temu自养号测评采购系统搭建技巧与技术要求

TEMU自养号测评采购系统的搭建是一个细致且需关注多个环节的过程,以下是一些关键的搭建技巧: 一、基础环境搭建 1. 硬件参数隔离: 2. 利用国外服务器在云端设立安全终端,确保每个账号拥有独立的硬件底层参数,如安全…

MySQL C/C++ 的 API

MySQL 提供了一个用于 C/C 的 API,称为 MySQL Connector/C。该 API 允许通过 C/C 程序与 MySQL 数据库进行交互。 函数名称参数返回值描述mysql_initMYSQL *mysqlMYSQL *初始化一个 MySQL 对象,用于连接 MySQL 服务器。mysql_real_connectMYSQL *mysql,…

视频里的声音怎么单独提取出来?简单又实用的10种提取声音方法!

视频里的声音怎么单独提取出来?在当今这个数字化飞速发展的时代,视频已经成为信息传播的中流砥柱,而音频元素则是这个过程中一个举足轻重的组成部分,音频不仅扮演着声音背景的角色,更通过多种形式如旁白解说、背景音乐…

设备树pinctrl子系统

1.pinctrl子系统 大多数 SOC 的 pin 都是支持复用的,比如 IMX6ULL 的 GPIO1_IO03 既可以作为普通的GPIO 使用,也可以作为 I2C1 的 SDA 等等。此外我们还需要配置 pin 的电气特性,比如上/下拉、速度、驱动能力等等。传统的配置 pin 的方式就是…

一个月学会Java 第9天 构造器与访问修饰符

Day9 构造器与访问修饰符 本来其实是想在Day8里面把这个构造器给讲掉的,但是发现篇幅有点长的,后面的内容也是稍微有一点点超纲了,所以就先把这个留着,现在再讲。 第一章 构造器 构造器,我们之前在讲类的时候其实是说过…

CANoe_调用C#控件的方法_DEMO方法演示

1、DEMO存放位置 D:\Users\Public\Documents\Vector\CANoe\Sample Configurations 11.0.96\CAN\MoreExamples\ActiveX_DotNET_Panels 每个人的电脑因为有区别存放位置不一样 2、控件制作--使用C#控件可以直接制作 3、控件代码 using System; using System.Collections; usi…

探索血糖人工智能预测可穿戴设备

导言 论文地址:https://arxiv.org/abs/2404.12605 数字生物标志物是一种新型医疗指标,其数据来源于可穿戴设备和智能手机等数字设备收集的数据。与从传统生物样本中提取的病理标志物不同,数字生物标志物能提供行为模式、生理节奏和环境因素的…

DBeaver的安装与使用

文章目录 前言一、DBeaver 的安装二、DBeaver 的基本使用三、DBeaver 的高级功能四、使用小技巧五、总结 前言 DBeaver 是一款广泛应用的数据库管理工具,支持多种数据库系统。以下是它的安装与使用方法。 一、DBeaver 的安装 下载 DBeaver: 前往 DBeaver 官方网站…

Vue工程化结构环境安装及搭建教程 : 之nvm

vue需要的环境: node.js : Node.js和Vue.js通常会一起使用。Node.js作为后端服务器,处理服务器端的逻辑和数据访问,而Vue.js则负责前端用户界面的构建和交互。通过Ajax通信,Vue.js应用程序向Node.js服务器发送请求,并…

Collection 集合框架

Collection 集合框架 各类集合 Set TreeSet 基于红黑树实现,支持有序性操作,例如根据一个范围查找元素的操作。但是查找效率不如 HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet 则为 O(logN)。 HashSet 基于哈希表实现&…

Python入门笔记(四)

文章目录 第九章 集合set9.1 创建集合:set()、集合生成式9.2 集合性质9.3 一些函数:issubset()、issuperset()、isdisjoint()9.4 集合增加元素:add()、update()9.5 集合删除元素:remove()、discard()、pop()、clear()9.6 创建不能…

ELM分类预测 | MATLAB实现ELM极限学习机多特征分类预测(二分类)

分类预测 | MATLAB实现ELM极限学习机多特征分类预测(二分类) 目录 分类预测 | MATLAB实现ELM极限学习机多特征分类预测(二分类)效果一览基本介绍程序设计学习总结参考资料效果一览 训练集正确率Accuracy = 89%(445/500) 测试集正确率Accuracy = 86.9565%(60/69) 基本介绍 MATLA…

《RabbitMQ篇》消费者轮询消费消息

当有多个消费者都在同一个队列中拿取消息时,会轮询从队列中拿取消息消费。 RabbitMQUtil类为工具类,获取Channel。 import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory;public…