CLIP解读

1、引言

在计算机视觉领域,通常需要经过训练模型来实现对预定类别目标预测(如分类、检测等任务),但是这种形式会限制模型的通用性。比如我们训练完了一个猫狗分类模型,如果现在希望识别一只老虎,那么原来训练的模型则不可用。在这样一个背景下,CLIP的提出完美解决了这一问题,通过引入大语言模型,在几乎不需要重新训练模型的基础上,实现对几乎所有类别目标的识别,可谓是对传统CV模型的降维打击!

CLIP模型通过学习互联网上4 亿对的图像与文本数据,来获取大量知识与经验,利用文本作为监督信号来训练可迁移的视觉模型。该模型可以轻松地迁移到大多数任务,并且性能通常可以与完全监督的baseline相媲美,而无需任何数据集特定的训练。例如,CLIP在不使用ImageNet任何一个训练样本的情况下,在分类任务上的准确性能与ResNet-50媲美!

 Github:https://github.com/OpenAI/CLIP

2、核心方法

2.1 自然语言监督

与其他训练方法相比,自然语言监督学习有几个潜在的优势。与用于图像分类任务的标准众包标签相比,扩展自然语言监督要容易得多,因为它的标签不需要采用经典的“机器学习兼容格式”(例如标准的 1-of-N 多数投票“黄金标签”)。相反,可以很方便地从互联网上获取大量的监督数据。与大多数无监督或自监督学习方法相比,从自然语言学习具有重要优势,因为它不仅仅学习表示,而且还将该表示与语言连接起来,从而实现灵活的零样本迁移。

2.2 图文数据集构建

现有工作主要使用三个数据集:MS-COCO、Visual Genome 和 YFCC100M。虽然 MS-COCO 和 Visual Genome 是高质量的人群标记数据集,但按照现代标准来看,它们很小,每个数据集大约有 100,000 张训练照片。相比之下,其他计算机视觉系统需要接受多达 35 亿张 Instagram 照片的训练。YFCC100M(可容纳 1 亿张照片)是一种可能的替代方案,但每张图像的元数据稀疏且质量参差不齐。许多图像使用自动生成的文件名作为“标题”或包含相机曝光设置的“描述”。经过过滤仅保留带有自然语言标题和/或英文描述的图像后,数据集缩小了 6 倍,只剩下 1500 万张照片,这与 ImageNet 的大小大致相同。

自然语言监督的一个主要动机是互联网上公开提供的大量这种形式的数据。由于现有数据集没有充分反映这种可能性,因此仅考虑这些数据集的结果会低估这方面研究的潜力。为了解决这个问题,本文构建了一个包含 4 亿对(图像、文本)的新数据集,这些数据集是从互联网上的各种公开来源收集的。生成的数据集的总字数与用于训练 GPT-2 的 WebText 数据集相似。我们将此数据集称为 WebImageText。

2.3 模型选择与扩展

论文中文本编码器固定选择一个包含63M参数的Text Transformer模型,而图像编码器采用了两种的不同的架构:

  • 一是常用的CNN架构ResNet,其中ResNet包含5个不同大小的模型:ResNet50ResNet101RN50x4RN50x16 和 RNx64(后面三个模型是按照EfficientNet缩放规则对ResNet分别增大4x,16x 和 64x 得到)
  • 二是基于Transformer的ViT,ViT选择3个不同大小的模型:ViT-B/32ViT-B/16 和 ViT-L/14

本文还用注意力池机制取代了全局平均池层,注意力池被实现为单层“transformer-style多头 QKV 注意力,其中查询以全局平均池化的图像表示为条件。对于第二种架构,论文使用最近推出的 Vision Transformer (ViT) 进行实验(Dosovitskiy 等人,2020)。论文只进行了微小的修改,即在Transformer之前向组合patch和位置嵌入添加额外的层归一化,并使用略有不同的初始化方案。

CLIP的文本编码器是一个 Transformer 结构,论文中使用 63M 参数、12 层、512 宽的模型,具有 8 个注意力头。该Transformer对具有 49,152 个词汇大小的文本的小写字节对编码 (BPE) 表示进行运算。为了计算效率,最大序列长度上限为 76。文本序列用 [SOS] 和 [EOS] 标记括起来,Transformer最高层在 [EOS] 标记处的激活被视为特征表示经过层归一化然后线性投影到多模态嵌入空间中的文本。文本编码器中使用了屏蔽自注意力,以保留使用预先训练的语言模型进行初始化或添加语言建模作为辅助目标的能力,尽管对此的探索留待未来的工作。

虽然之前的计算机视觉研究通常通过单独增加宽度或深度来缩放模型,但对于 ResNet 图像编码器,论文采用 Tan & Le(2019)的方法,该方法发现在所有宽度、深度和分辨率上分配额外的计算效果优于仅将其分配到模型的一个维度。虽然 Tan & Le (2019) 调整了分配给 EfficientNet 架构每个维度的计算比率,但论文使用了一个简单的基线,即平均分配额外计算以增加模型的宽度、深度和分辨率。对于文本编码器,论文仅将模型的宽度缩放为与计算出的 ResNet 宽度增加成正比,而根本不缩放深度,因为论文发现 CLIP 的性能对文本编码器的容量不太敏感

2.4 模型训练

本文训练了一系列 5 个 ResNet 和 3 个 Vision Transformer。对于 ResNet,本文训练一个 ResNet-50、一个 ResNet-101,然后再训练 3 个,它们遵循 EfficientNet 风格的模型缩放,并使用 ResNet-50 的大约 4 倍、16 倍和 64 倍的计算量。它们分别表示为 RN50x4、RN50x16 和 RN50x64。对于 Vision Transformers,本文训练了 ViT-B/32、ViT-B/16 和 ViT-L/14。

所有的模型都训练32个epoch,采用AdamW优化器,而且训练过程采用了一个较大的batch size:32768。由于数据量较大,最大的ResNet模型RN50x64需要在592个V100卡上训练18天,而最大ViT模型ViT-L/14需要在256张V100卡上训练12天,可见要训练CLIP需要耗费多大的资源。对于ViT-L/14,还在336的分辨率下额外finetune了一个epoch来增强性能,论文发现这个模型效果最好,记为ViT-L/14@336,论文中进行对比实验的CLIP模型也采用这个。

3、模型与原理

3.1 基本原理

CLIP的英文全称是Contrastive Language-Image Pre-training,即一种基于对比文本-图像对的预训练方法或者模型。CLIP是一种基于对比学习的多模态模型,与CV中的一些对比学习方法如moco和simclr不同的是,CLIP的训练数据是文本-图像对:一张图像和它对应的文本描述,这里希望通过对比学习,模型能够学习到文本-图像对的匹配关系。

3.2 模型架构

如下图所示,CLIP包括两个模型:Text Encoder 和 Image Encoder,其中Text Encoder用来提取文本的特征,可以采用NLP中常用的Text Transformer;而 Image Encoder 用来提取图像的特征,可以采用常用 CNN 模型或者 Vision Transformer。

本文对提取的文本特征和图像特征进行对比学习。对于一个包含N个文本-图像对的训练Batch,将N个文本特征和N个图像特征两两组合,CLIP模型会预测出N^2个可能的文本-图像对的相似度,这里的相似度直接计算文本特征和图像特征的余弦相似性(cosine similarity),即上图所示的矩阵。这里共有N个正样本,即真正属于一对的文本和图像(矩阵中的对角线元素),而剩余的N^2-N个文本-图像对为负样本,那么CLIP的训练目标就是最大N个正样本的相似度,同时最小化N^2-N个负样本的相似度。

3.2 zero-shot分类

在计算机视觉中,以图像分类任务为例,zero-shot学习通常指的是去识别未见过类别的研究。虽然无监督学习领域的许多研究都集中在机器学习系统的表征学习能力上,但论文主张zero-shot迁移是衡量机器学习系统任务学习能力的一种方式。

与CV中常用的先预训练然后微调不同,CLIP可以直接实现zero-shot的图像分类,即不需要任何训练数据,就能在某个具体下游任务上实现分类,这也是CLIP亮点和强大之处。用CLIP实现zero-shot分类很简单,只需要简单的两步:

  • 根据任务的分类标签构建每个类别的描述文本:A photo of {label},然后将这些文本送入Text Encoder得到对应的文本特征,如果类别数目为NN,那么将得到NN个文本特征;
  • 将要预测的图像送入Image Encoder得到图像特征,然后与NN个文本特征计算缩放的余弦相似度(和训练过程一致),然后选择相似度最大的文本对应的类别作为图像分类预测结果,进一步地,可以将这些相似度看成logits,送入softmax后可以到每个类别的预测概率值。

4、实验

4.1 Compare Visual N-Grams to CLIP

论文在3个分类数据集上进行了zero-shot效果对比,如下表所示,可以看到CLIP模型在效果上远远超过之前的模型,其中在ImageNet数据集可以达到76.2,这和全监督的ResNet50效果相当,不用任何训练数据就能达到这个效果是相当惊艳的。

4.2 Prompt engineering and Ensembling

简单来说,prompt learning的核心是通过构建合适prompt(提示)来使预训练模型能够直接应用到下游任务,这和之前的预训练+微调属于不同的范式。论文中也提到,如果直接采用类别标签作为文本描述,那么很多文本就是一个单词,缺少具体的上下文,而且也和CLIP的训练数据不太一致,效果上会不如采用A photo of {label}(ImageNet数据集上可以提升1.3%)。论文也实验了采用80个不同的prompt来进行集成,发现在ImageNet数据集上能带来3.5%的提升,具体见CLIP公开的notebook。下图对比了基于ResNet的CLIP模型直接采用类别名与进行prompt engineering和ensembling的效果对比:


5、局限性

论文的最后也对CLIP的局限性做了讨论,这里简单总结其中比较重要的几点:

  • CLIP的zero-shot性能虽然和有监督的ResNet50相当,但是还不是SOTA,作者估计要达到SOTA的效果,CLIP还需要增加1000x的计算量,这是难以想象的;
  • CLIP的zero-shot在某些数据集上表现较差,如细粒度分类,抽象任务等;
  • CLIP在自然分布漂移上表现鲁棒,但是依然存在域外泛化问题,即如果测试数据集的分布和训练集相差较大,CLIP会表现较差
  • CLIP并没有解决深度学习的数据效率低下难题,训练CLIP需要大量的数据

6、总结

论文研究了是否有可能将 NLP 中与任务无关的网络规模预训练的成功转移到另一个领域。为了优化其训练目标,CLIP 模型在预训练期间学习执行各种任务。然后可以通过自然语言提示来利用这种任务学习,以实现向许多现有数据集的零样本迁移。在足够的规模下,这种方法的性能可以与特定任务的监督模型相媲美,尽管仍有很大的改进空间。不管怎么说,CLIP的提出为解决计算机视觉任务提供了另一种思路,与ViT一样同为重量级的工作!                                                               

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于mybatis-plus分页查询total=0问题解决

今天复习分布式架构,一步一步从新架构模块,写道mybatis-plus的时候,突然发现分页查询居然total一直等于0。 在项目上的时候,都是架构师吧这个弄好了的,我一直以为直接分页查询,就会有值,原来还…

如何使用 ArcGIS Pro 分析爆炸波及建筑

创建三维图层 在工具箱中点击“3D Analyst 工具\3D要素\转换\依据属性实现要素转3D”,调用依据属性实现要素转3D工具,如下图所示。 调用依据属性实现要素转3D工具 在显示的依据属性实现要素转3D对话框内,输入要素为爆炸点图层,选择高度字段,如下图所示。 依据属性实现…

2024年个人小型渲染农场搭建是否值得?

个人小型渲染农场的搭建是否值得是一个需要综合考虑的问题。对于那些追求高效渲染和成本控制的创作者来说,个人渲染农场提供了自主控制进度的优势。然而,同时也必须面对技术挑战和初期投资的压力。要决定是否投资个人渲染农场,关键在于权衡技…

结构体中的内存对齐是什么?一起搞懂它

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行&am…

9成省份“鸿蒙化”,它真起来了?

自去年9月华为宣布鸿蒙原生应用全面启动以来,鸿蒙正以不可阻挡之势,快速在全国千行百业的移动应用领域推进。不仅有支付宝、快手、淘宝、京东等超200家头部互联网企业加入鸿蒙生态;2024年以来,上海、浙江、广西等多省市政务民生、…

QGIS中天地图插件的安装与使用

概述 在QGIS中可添加xyz类型的切片为数据源,一般作为底图加载到地图上。在QGIS中添加xyz类型的切片的操作可参考QGIS CookBook。天地图提供的服务也是xyz类型的切片,但是为提高其加载速度,一般采用了t0-t7多个节点,在QGIS中添加x…

世界第一个AI软件工程师问世!

2024年3月13日,科技公司Cognition推出了世界上第一位人工智能软件工程师Devin AI。这项创新有望利用人工智能编码和机器学习的力量加快发展。Devin AI不仅仅是帮助;它是一个成熟的队友,发挥智能编码自动化和自主人工智能编码的魔力&#xff0…

ElasticSearch 用法

首先讲下 ES的倒排序索引 入门-倒排索引 正排索引(传统) idcontent1001my name is zhang san1002my name is li si 倒排索引 keywordidname1001, 1002zhang1001 正排索引:我想查name,这时候是模糊的查询,会循环遍历…

【鸿蒙HarmonyOS开发笔记】动画过渡效果之组件内转场动画,内含ForEach动画

概述 我们在开发中难免设计组件的插入、删除过程。通过组件内转场动画,可定义组件出现、消失的效果。 组件内转场动画的接口为: transition(value: TransitionOptions)transition函数的入参为组件内转场的效果,可以定义平移、透明度、旋转…

AI论文速读 | UniTS:构建统一的时间序列模型

题目:UniTS: Building a Unified Time Series Model 作者:Shanghua Gao(高尚华), Teddy Koker, Owen Queen, Thomas Hartvigsen, Theodoros Tsiligkaridis, Marinka Zitnik 机构:哈佛大学(Harvard&#x…

如何监听抖音、快手、哔哩哔哩弹幕实现弹幕游戏制作?直播互动助手开放 API 帮你快速构建详细教程

弹幕直播概述 如何监听抖音、快手、哔哩哔哩弹幕实现弹幕游戏制作?随着中短视频平台直播热度的攀升,基于弹幕监听的直播模式也逐渐让大家熟知。如何去进行弹幕直播,去实现基于弹幕和礼物的直播新模式。边缘骇客直播互动助手是一款兼容大部分…

第四百一十回

文章目录 1. 概念介绍2. 方法与细节2.1 获取方法2.2 使用细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取当前系统语言"相关的内容,本章回中将介绍如何获取时间戳.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

U盘变本地磁盘?数据恢复有妙招!

一、U盘异变本地磁盘现象 在日常工作和生活中,U盘作为便携式的存储设备,广受大家喜爱。然而,有时我们会遇到一个奇怪的现象:原本应该显示为可移动磁盘的U盘,在插入电脑后却变成了“本地磁盘”。这种情况不仅让人困惑&…

解决:visio导出公式为pdf图片乱码问题

今天需要将Visio编辑好的以后的图输出pdf,但是点击保存后公式部分一直乱码,如下图所示 保存为pdf后会变成: 解决方案:保存时点击文件下方的快速打印,存到桌面,不要直接点击保存

【C++】三大特性之多态

1 定义及实现 1.1 概念 多态是C三大特性之一。通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如学…

代码资源集合

代码资源 通信QPSKOQPSKMSK信道编码GMSK 雷达LFM及干扰技术LFM射频噪声干扰噪声调幅干扰噪声调频干扰噪声调相干扰固定移频干扰间歇采样干扰 SAR成像RD算法CS算法wk算法 SAR干扰技术射频噪声干扰调幅噪声干扰调频噪声干扰调相噪声干扰噪声卷积干扰乘积干扰移频干扰 DOA估计功率…

雷龙科技Nand flash芯片试用体验

一、项目背景 最近自己开始准备了一个智能家居控制系统项目,需要包含室内的温湿度、空气质量、烟雾浓度以及气体含量,能够存储相应的数据,并进行显示。 Nand-flash存储器是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案…

微信视频号小店营业执照怎么办理?办理流程是什么?详细教程分享

大家好,我是电商花花。 现在视频号小店发展的这么好,越来越多的朋友都想加入到视频号小店电商行列。 而做视频号小店第一步就是要有企业营业执照,做视频号小店需要企业执照,因为个体户营业执照开的店铺,不能加入优选…

【Java】高级篇1:异常处理

异常:程序在执行过程中出现的非正常情况,如果不处理最终会导致JVM的非正常停止。 Java的异常抛出机制 Java异常体系 1、Throwable 2、Error和Exception 异常处理方式 1、try-catch-finally(捕获异常) 基本结构: 使用…

linux学习之Socket

目录 编写socket-udp 第一步,编写套接字 第二步,绑定端口号 第三步,启动服务器,读取数据 第四步,接收消息并发回信息给对方 编写socket-Tcp 第一步,编写套接字 第二步,绑定端口号 第三步…