【AIGC】7、CLIP | OpenAI 出品使用 4 亿样本训练的图文匹配模型

news2025/1/20 14:57:10

在这里插入图片描述

文章目录

    • 一、背景
    • 二、方法
      • 2.1 使用自然语言来监督训练
      • 2.2 建立一个超大数据集
      • 2.3 选择预训练模型
      • 2.4 模型缩放和选择
    • 三、效果

论文:Learning Transferable Visual Models From Natural Language Supervision

代码:https://github.com/OpenAI/CLIP

官网:https://openai.com/research/clip

出处:OpenAI

时间:2021.02

贡献:

  • 提出了一个基于图文匹配的多模态模型
  • 通过对图像和文本的模型联合训练,最大化两者编码特征的 cosine 相似度,来实现图和文的匹配
  • 基于图文匹配的模型比直接学习文本内容的模型效率高很多

简介:

  • CLIP 是由 OpenAI 开源的基于对比学习的大规模(4 亿个图文 pairs)图文预训练模型
  • 图像和文本的编码器都使用 Transformer,使用余弦相似度来衡量两者编码特征的距离
  • 文本描述使用的英文

一、背景

从原始文本中直接学习的 pre-training 的方法在过去几年中让 NLP 产生了很大的变革

开发 text-to-text 来实现一个标准的输入输出能够使得 task-agnostic 结构零样本迁移到下游的数据集上,而不需要特定的输出头或特定的数据集。

这也表明,在超大文本数据集上使用预训练方法的效果超过了使用带标注的 NLP 数据集训练的效果。

那么在计算机视觉领域是否也能使用超大规模的预训练数据来达到类似的效果呢

一般的计算机视觉任务都是基于设定好的类别来做的,这会限制模型的泛化性,比如无法识别没有定义过的类别。

NLP 和 CV 的一个巨大的 gap 在于尺度!

本文作者是如何做的:

  • 研究了使用大规模的自然语言处理的数据集来训练图像分类器能达到什么效果
  • 即在互联网上搜集了大概 4 亿的 image-text pairs 数据集,然后从头开始训练 ConvVIRT,本文称为 CLIP(Contrastive Language-Image Pre-training),能够高效的从自然语言中获得监督信号
  • 作者通过训练 8 个模型来研究 CLIP 的可伸缩性
  • 作者发现,CLIP 和 GPT 家族很类似,会在 pre-training 阶段学习很多任务,如 OCR、定位、动作识别等
  • 作者在 30 多个数据集上进行了 zero-shot 迁移能力的测试,发现其能够达到使用监督学习的效果

二、方法

在这里插入图片描述

2.1 使用自然语言来监督训练

本文方法的一个核心点在于从自然语言的监督信息中学习感知能力

从自然语言中学习的好处:

  • 对图像分类来说,和标准的 label 相比,自然语言能够提供更多信息
  • 因为不需要将模型构建成一个 1-of-N 的投票选择模式,而是能够从大量互联网文本中包括的更丰富的监督中学习
  • 从自然语言中学习不仅仅学习一种特征表示,而是还能将特征表示和语言联合起来,从而实现更灵活的零样本迁移

2.2 建立一个超大数据集

作者构建了一个新的数据集 WIT(WebImageText),其中包括 4 亿对(图像,文本)在互联网上公开可获得的来源。

2.3 选择预训练模型

现有的很多计算机视觉模型非常耗费计算资源,所以训练的效率很重要,更何况要使用自然语言作为监督信号,这样会比 ImageNet 中使用 1000 个 label 来训练的难度更大。

作者首先尝试了类似于 VirTex 的方法,从头联合训练图像的 CNN 和文本的 transformer 模型,预测每个图像的准确描述。

但如图 2 所示,文本 transformer 模型需要 6300 万参数,是 ResNet-50 这个 image encoder 计算量的 2 倍,学习识别 Imagenet 的类别比其他基于 bag-of-words 的方法低 3 倍。

在这里插入图片描述

由于每个图像的描述是不同的,同一个图像的描述也可能是多种多样的,所以要完全按照自然语言作为学习的 label (即学习其描述中的每个单词)的话难度非常大

所以就出现了使用对比学习的方法

现有的很多生成模型也能实现高质量的图像描述,但在相同描述水平的前提下,生成模型比对比模型计算量更高

所以,本文提出的训练系统将 image-to-text 构建成了一个更简单的任务,将自然语言描述的 text 看成一个整体,去学习和哪个 image 来匹配,而非学习 text 中的每个 word。这样的思路将在 Imagenet 上的零样本迁移学习速度提升了 4x

CLIP 的思路:

  • 给定一个 batch,包含 N 对儿(image,text)
  • CLIP 的训练目标是预测一个 NxN 的可能配对的矩阵
  • 所以 CLIP 是要学习多模态的 embedding,同时训练 image encoder 和 text encoder,来最大化一个 batch 内真实的 N N N 个(image,text)pairs 的 cosine 相似度,最小化一个 batch 内其他 N 2 − N N^2-N N2N 个非真实匹配的(image,text)pairs 的 cosine 相似度
  • 以对称性的 cross entropy loss 来优化这些相似性得分

如图 3 展示了 CLIP 的伪代码:

在这里插入图片描述

2.4 模型缩放和选择

在 image encoder 模型的选择上,作者考虑了两个结构:

  • ResNet-50
  • ViT

text encoder 使用的就是 transformer 结构,base size 是 63M-parameter,12 层,8 个 attention head

之前的 CV 研究中通常使用缩放模型的 width 和 depth 来实现对模型大小的缩放,本文也类似。

对 text encoder,作者只缩放模型的 width

三、效果

零样本迁移的能力

表 1 对比了 Visual N-Grams 和 CLIP 在 3 个不同数据集上的效果

Visual N-Grams 在 ImageNet 上的效果为 11.5% ,而 CLIP 达到了 76.2%,和经过监督训练的 ResNet50 都差不多了

CLIP 的 top-5 acc 达到了 95%,和 Inception-v4 差不多

这表明了 CLIP 在分类任务上有很好的零样本迁移能力

在这里插入图片描述

下图是官网上展示的在 ImageNet 数据集上使用 ResNet101 和 CLIP ViT-L 的对比效果:

在这里插入图片描述

CLIP 在一些数据集上的效果:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Å

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

DJ3-5 死锁概述

目录 3.5 死锁概述 3.5.2 计算机系统中的死锁 1. 竞争资源 2. 进程推进顺序不当 3.5.3 死锁的必要条件和处理方法 1. 死锁的必要条件 2. 处理死锁的方法 3.6 预防死锁 3.6.1 摒弃 “请求和保持” 条件 3.6.2 摒弃 “不剥夺” 条件 3.6.3 摒弃 “环路等待” 条…

企业在数字化建设中,BI 处于什么位置?

对市场异常敏感的商业世界自然不会放过获取数字经济的机会,在众多企业开始进行数字化转型,通过信息化建设,部署BI来完成转型工作。 很多人都听说过BI, 但是并不太清楚BI 在IT信息化中到底处于一个什么位置?有很多的疑…

APIs --- DOM基础事件

1. 事件 事件是编程时系统内发生的动作或者发生的事情,它是用来描述程序的行为或状态的,一旦行为或状态发生改变,便立即调用一个函数。 例如:用户使用【鼠标点击】网页中的一个按钮、用户使用【鼠标拖拽】网页中的一张图片 事件…

【MySQL】外键约束和外键策略

一、什么是外键约束? 外键约束(FOREIGN KEY,缩写FK)是用来实现数据库表的参照完整性的。外键约束可以使两张表紧密的结合起来,特别是针对修改或者删除的级联操作时,会保证数据的完整性。 外键是指表…

ElasticSearch——详细看看ES集群的启动流程

参考:一起看看ES集群的启动流程 本文主要从流程上介绍整个集群是如何启动的,集群状态如何从Red变成Green,然后分析其他模块的流程。 这里的集群启动过程指集群完全重启时的启动过程,期间要经历选举主节点、主分片、数据恢复等重…

java中的SPI机制

文章目录SPI 介绍何谓 SPI?SPI 和 API 有什么区别?实战演示Service Provider InterfaceService Provider效果展示ServiceLoaderServiceLoader 具体实现自己实现一个 ServiceLoader总结在面向对象的设计原则中,一般推荐模块之间基于接口编程,…

测试开发备战秋招面试3

努力了那么多年,回头一望,几乎全是漫长的挫折和煎熬。对于大多数人的一生来说,顺风顺水只是偶尔,挫折、不堪、焦虑和迷茫才是主旋律。我们登上并非我们所选择的舞台,演出并非我们所选择的剧本。继续加油吧! 目录 1.讲一下redis和mySQL的区别? 2.讲一下…

ChatGPT让现在的软件都土掉渣了

我们家有两个娃,每次我们想要出去时订个酒店时都好麻烦。我在某程上找,我先看有没有家庭房,但家庭房很少,而且有些家庭房实际上只能睡得下两大一小。普通房间能不能睡得下四个人,那可是得查看很多信息,如床…

Redis队列Stream、Redis多线程详解(一)

Redis队列与Stream Redis5.0 最大的新特性就是多出了一个数据结构 Stream,它是一个新的强大的支持多播的可持久化的消息队列,作者声明Redis Stream地借鉴了 Kafka 的设计。 Redis Stream 的结构如上图所示,每一个Stream都有一个消息链表,将所…

Pandas 学习手册中文第二版:1~5

原文:Learning pandas 协议:CC BY-NC-SA 4.0 译者:飞龙 一、Pandas 与数据分析 欢迎来到《Pandas 学习手册》! 在本书中,我们将进行一次探索我们学习 Pandas 的旅程,这是一种用于 Python 编程语言的开源数…

Android:启动流程

Android启动流程 第一步:启动电源以及系统启动 当电源按下,引导芯片代码开始从预定义的地方(固化在ROM)开始执行。加载引导程序到RAM,然后 执行 第二步:引导程序 引导程序是在Android操作系统开始运行前的一个小程序。引导程序…

如何防止设备被重复控制

1. 引言 在一个物联网的系统中,主要有三部分组成:云端、WiFi、电控。当用户在APP上控制设备时,其控制下发链路是:云端>>WIFI>> 电控。当电控收到控制指令后,执行设备控制,控制成功后&#xff…

如何使用Midjourney辅助建筑平面设计,常用的建筑平面效果图提示和使用效果展示(内附Midjourney提示词网站)

文章目录一、室内建筑平面设计1.AutoCAD图纸(别墅首层图)2.平面效果图3.三维平面透视图二、建筑室内设计1.现代简约2.波西米亚风格3.工业风格4.沿海风格5.法国风格6.现代风格7.提示增加颜色倾向8.提示中增加设计师9.其它一些尝试三、好用的Midjourney提示…

Redis 6.x哨兵模式部署(五)

目录 一、主从复架构搭建 二、哨兵模式搭建 2.1背景 2.2哨兵模式介绍 2.3 Sentinel三大工作任务 1监控(Monitoring) 2提醒(Notification) 3自动故障迁移(Automatic failover) 4核心流程 2.4 安装…

企业如何实现数字化转型?

企业如何实现数字化转型? 首先,我需要先跟各位明确,企业数字化转型中很重要的3个“先行”条件: 第一、企业一把手的眼光和格局 一把手的视野、格局、定力是最重要的因素,没有之一。能不能放下自己过去的执念与经验&a…

信息与计算科学有哪些SCI期刊推荐? - 易智编译EaseEditing

以下是信息与计算科学领域的一些知名SCI期刊推荐: Information Sciences: 该期刊是信息科学领域的重要期刊,涵盖了信息科学、计算科学、人工智能、数据挖掘、模式识别、多媒体技术、网络通信、智能系统等方面的研究。 IEEE Transactions on…

电子文件的线上存储工具,你了解多少?

信息化时代的来临,企业也纷纷跟随时代步伐进入现代化办公。信息时代最显著的特征就是纸质文件到电子文件的转变。企业一天的办公中,可能就会产出无数的电子文件,其中很多文件都是珍贵的业务经验,因此线上存储是企业需要考虑的问题…

网页解析--bs4--01

python爬虫之bs4模块(超详细) Beautiful Soup 4.4.0 文档 — Beautiful Soup 4.2.0 documentation (crummy.com) 可以看到bs4库将网页文件变成了一个soup的类型, 事实上,bs4库 是解析、遍历、维护、“标签树“的功能库。 通俗一点…

redis基础总结-常用命令

redis常用指令3. 常用指令3.1 key 操作分析3.1.1 key应该设计哪些操作?3.1.2 key 基本操作3.1.3 key 扩展操作(时效性控制)3.1.4 key 扩展操作(查询模式)3.2 数据库指令3.2.1 key 的重复问题3.2.2 解决方案3.2.3 数据库…

001:Mapbox GL加载基础的地图

第001个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载最基础的 Mapbox GL地图 。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共59行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置…