CLIP 基础模型:从自然语言监督中学习可转移的视觉模型
一、说明
图片来源:
论文:从自然语言监督中学习可转移的视觉模型
代码:https://github.com/OpenAI/CLIP
首次发布时间:26 年 2021 月 <> 日
作者:亚历克·拉德福德、金钟旭、克里斯·哈拉西、阿迪亚·拉梅什、加布里埃尔·吴、桑迪尼·阿加瓦尔、吉里什·萨斯特里、阿曼达·阿斯克尔、帕梅拉·米什金、杰克·克拉克、格雷琴·克鲁格、伊利亚·苏茨克弗
类别: 多模态深度学习, 计算机视觉, 自然语言处理, 基础模型, 表示学习
二、背景简述
CLIP(Contrastive Language-I mage Pre-Training)是一个多模态模型,用于学习自然语言和图像之间的对应关系。它根据从互联网收集的 400 亿个文本图像对进行训练。正如我们将在本文后面发现的那样,CLIP 具有强大的零镜头性能,这意味着它在与训练不同的下游任务中表现良好,无需执行任何微调。
CLIP旨在:
- 将自然语言处理中已知的大规模预训练技术(例如GPT家族,T5和BERT)的成功应用于计算机视觉。
- 通过使用自然语言而不是固定的集合类标签,实现灵活的零镜头功能。
为什么你可能会问自己这是一件大事?首先,许多计算机视觉模型都是在众包标记数据集上训练的。这些数据集通常包含数十万个样本。一些例外情况是在百万个或两位数样本的范围内。可以想象,这是一个非常耗时且昂贵的过程。另一方面,自然语言模型的数据集通常要大几个数量级,并且是从互联网上抓取的。其次,如果对象检测模型已在某些类上训练,并且您想要添加额外的类,则需要在数据中标记此新类并重新训练模型。
CLIP将自然语言和图像特征相结合的能力与其零镜头性能相结合,导致许多其他流行的基础模型的广泛采用,例如UnCLIP,EVA,SAM,Stable Diffusion,GLIDE或VQGAN-CLIP,仅举几例。
三、CLIP的方法
现在让我们深入了解 CLIP 的方法。图 1 中描绘的波纹管显示了 CLIP 的架构及其训练过程
模型体系结构由两个编码器模型组成,每个模型对应一个模态。对于文本编码器,使用转换器,而图像编码器使用ResNet或ViT(视觉转换器)的版本。学习的线性变换(每种模态一个)将特征转换为大小匹配的嵌入。最后,计算相反模态的每个嵌入之间的余弦相似性,并通过学习的温度标量进行缩放。在训练过程中,匹配对之间的余弦相似性最大化,而不正确的对之间的余弦相似性最小化,因此框架名称中的术语“对比”。
当然,除了大型数据集之外,还有一些微妙之处对成功至关重要。首先,对比学习方法在很大程度上取决于批量大小 N。沿着正确的样本提供的负样本越多,学习信号就越强。CLIP 的批量大小为 32,768,这是相当大的。其次,CLIP不会学习确切措辞的匹配,而是一种更简单的代理任务,只学习整个文本,也称为单词袋(BoW)。
有趣的事实:使用 ResNet50x64 作为图像编码器的 CLIP 版本在 18 V592 GPU 上训练了 100 天,而使用 ViT 模型的版本在 12 V256 GPU 上训练了 100 天。换句话说,分别在单个 GPU 上超过 29 年和超过 8 年(忽略将使用不同的批量大小的事实)。
训练模型后,它可用于对图像执行对象分类。问题是:如何使用尚未训练对图像进行分类的模型进行分类,也没有输入类标签但文本提示?图2.演示如何:
类标签可以看作是由单个单词组成的文本提示。为了告诉模型哪些类可用于分类任务,将一组 N 个类输入到模型中。与在一组固定标签上训练的分类模型相比,这是一个巨大的优势。我们现在可以输入 3 个类或 100 个类;这是我们的选择。正如我们稍后将看到的,为了提高 CLIP 的性能,类标签被转换为提示,以便为模型提供进一步的上下文。然后将每个提示馈送到文本编码器,然后转换为嵌入向量。
输入图像被馈送到图像编码器以获得嵌入向量。
然后计算每对文本和图像嵌入的余弦相似性。对获得的相似性值应用 Softmax 以形成概率分布。最后,选择概率最高的值作为最终预测。
四、实验和消融
CLIP论文介绍了大量的实验和消融。在这里,我们将介绍五个,我认为从中理解CLIP的成功很重要。先介绍一下要点(由 CLIP 的作者制定),然后我们将深入了解细节:
- 培训效率:CLIP在零镜头传输时比我们的图像标题基线更有效
- 文本输入格式:快速工程和集成可提高零射性能
- 零镜头性能:零镜头剪辑具有完全监督基线的竞争力
- 少镜头性能:零射程 CLIP 优于少射程线性探头
- 分配班次:零镜头 CLIP 比标准 ImageNet 型号更能抵抗分布偏移
4.1 培训效率
在训练期间,图像编码器和文本编码器是联合训练的,这意味着同时使用单个训练目标。CLIP不仅执行对比学习方案,而且将文本提示作为一个整体与给定的图像进行比较,因此单词的顺序无关紧要。它只是一个“文字袋”。短语“我的名字是萨沙”与“萨沙的名字是我的”产生相同的嵌入。
预测一袋单词而不是正确的单词及其在短语中的位置是一个更容易的代理目标。图3.波纹管显示了 ImageNet 上针对训练用于预测精确单词的初始转换器模型、训练用于预测单词袋的初始转换器模型以及使用单词袋执行对比学习的 CLIP 模型的训练样本数的零镜头精度。
“CLIP 在零镜头传输方面比我们的图像标题基线效率高得多” — CLIP 作者
4.2 文本输入格式
正如我们在图 2 中看到的,为了执行对象分类,类标签已转换为文本提示。当然,这不是偶然的,因为CLIP完全可以用一个词。这样做是为了利用语言的描述性,并提供上下文来解决可能的歧义。让我们以“拳击手”这个词为例。它可能是一种狗或一种运动员。CLIP的作者已经表明,文本提示的格式非常重要,可以提高性能并提高效率。
“快速工程和集成提高了零镜头性能” — CLIP 作者
4.3 零镜头性能
在另一个实验中,作者将CLIP的零镜头图像分类性能与专门在比较数据集上训练的模型进行了比较。
“零镜头 CLIP 与完全监督的基线具有竞争力” — CLIP 作者
4.4 少镜头性能
虽然零镜头预测器没有对下游任务进行微调,但很少有镜头检测器可以。作者对多个公开可用的预训练模型进行了实验,并将其在20个不同数据集上的少数镜头性能与零镜头和少镜头CLIP进行了比较。少数镜头模型在每个班级的 1、2、4、8 和 16 个样本上进行了微调。
有趣的是,零镜头 CLIP 的表现大致与 4 镜头 CLIP 一样好。
如果将CLIP与其他模型进行比较,则必须考虑所比较的公开可用模型(即BiT,SimCLR和ResNet)已经在不同且较小的数据集上预先训练为CLIP模型。
“零镜头 CLIP 优于少镜头线性探头” — CLIP 作者
4.5 分布转移
一般来说,模型对分布偏移的鲁棒性是指它能够在不同数据分布的数据上表现得与在训练数据的数据分布上一样好。理想情况下,它的性能同样好。实际上,它的性能会下降。
零镜头CLIP的鲁棒性已与ResNet101 ImageNet模型进行了比较。两种模型都在 ImageNet 的自然分布偏移上进行评估,如图 7 所示。
“零镜头 CLIP 比标准 ImageNet 模型更能适应分布偏移” — CLIP 作者
五、更多阅读和资源
萨沙·基尔希
正如本文开头提到的,CLIP已被大量项目广泛采用。以下是使用 CLIP 的论文列表:
- [解剪辑]使用 CLIP 潜伏生成分层文本条件图像
- [伊娃]探索大规模遮罩视觉表示学习的局限性
- [山姆]细分任何内容
- [稳定扩散]基于潜在扩散模型的高分辨率图像合成
- [滑翔]使用文本引导扩散模型实现逼真的图像生成和编辑
- [VQGAN-CLIP]使用自然语言指导生成和编辑开放域图像
如果您想深入了解实现并自己测试,则提供存储库列表:
- OpenAI 的官方回购
- Python Notebook 可以玩 CLIP
- OpenCLIP:CLIP的开源实现
相关文章:
CLIP 基础模型:从自然语言监督中学习可转移的视觉模型
一、说明 在本文中,我们将介绍CLIP背后的论文(Contrastive Language-I mage Pre-Training)。我们将提取关键概念并分解它们以使其易于理解。此外,还对图像和数据图表进行了注释以澄清疑问。 图片来源: 论文:…...
解读性能指标TP50、TP90、TP99、TP999
TP指标说明 TP指标: 指在一个时间段内,统计该方法每次调用所消耗的时间,并将这些时间按从小到大的顺序进行排序, 并取出结果为:总次数*指标数对应TP指标的值,再取出排序好的时间。 TPTop Percentile,Top百分数&#…...
【无标题】mysql 截取两个,之间字符串
截取两个,之间字符串 select area,SUBSTRING_INDEX(et.area,,,1) as XZQH1,if(length(et.area)-length(replace(et.area,,,))>1,SUBSTRING_INDEX(SUBSTRING_INDEX(et.area,,,2),,,-1),NULL) AS XZQH2,if(length(et.area)-length(replace(et.area,,,))>2,SUBS…...
全局的键盘监听事件
一、设定全局键盘监听事件 放在vue 的created()或者mounted ()中,可对整个文档进行键盘事件监听。 new Vue({ created() { window.addEventListener(keydown, this.handleKeydown); }, beforeDestroy() { window.removeEventListener(keydown, this.handleK…...
Qt自定义QSlider(支持水平垂直)
实现背景: Qt本身有自己的QSlider,为什么我们还要自定义实现呢,因为Qt自带的QSlider存在一个问题,当首尾为圆角时,滑动滚动条到首尾时会出现圆角变成矩形的问题。当然如果QSS之间的margin和滑动条的圆角控制的好的话是…...
会话控制学习
文章目录 介绍cookieexpress中使用cookie获取cookie session配置区别 介绍 cookie express中使用cookie 退出登录就是删除cookie 获取cookie 添加中间键后,直接获取 session 配置 区别...
dweb-browser阅读
dweb-browser阅读 核心模块js.browser.dwebjmm.browser.dwebmwebview.browser.dwebnativeui.browser.dweb.sys.dweb plaoc插件 核心模块 js.browser.dweb 它是一个 javascript-runtime,使用的是 WebWorker 作为底层实现。它可以让您在 dweb-browser 中运行 javasc…...
ChatGPT:使用fastjson读取JSON数据问题——如何使用com.alibaba.fastjson库读取JSON数据的特定字段
ChatGPT:使用fastjson读取JSON数据问题——如何使用com.alibaba.fastjson库读取JSON数据的特定字段 有一段Json字符串: {"code": 200,"message": "success","data": {"total": "1","l…...
2、ARM处理器概论
一、ARM处理器概述 1、ARM的含义 ARM(Advanced RISC Machines)有三种含义,一个公司的名称、一类处理器的通称、一种技术 ARM公司: 成立于1990年11月,前身为Acorn计算机公司主要设计ARM系列RISC处理器内核授权ARM内…...
【Python】福利彩票复式模拟选号程序
【效果】 【注意】 逻辑是用Random模拟10000次复试彩票选号,然后给出最大可能性一组。但是模拟终究是模拟,和现实彩票结果没有任何联系,下载下来玩就是了,没人能保证模拟出中奖号码,不要投机,不要投机! 【修改】 代码很简单,如果想改成不是复式的,自行修改即可。 如…...
Pytorch 机器学习专业基础知识+神经网络搭建相关知识
文章目录 一、三种学习方式二、机器学习的一些专业术语三、模型相关知识四、常用的保留策略五、数据处理六、解决过拟合与欠拟合七、成功的衡量标准 一、三种学习方式 有监督学习: 1、分类问题 2、回归问题 3、图像分割 4、语音识别 5、语言翻译 无监督学习 1、聚类…...
torch 和paddle 的GPU版本可以放在同一个conda环境下吗
新建conda 虚拟环境,python 版本3.8.17 虚拟机,系统centos 7,内核版本Linux fastknow 3.10.0-1160.92.1.el7.x86_64 ,显卡T4,nvidia-smi ,460.32.03,对应cuda 11.2,安装cuda 11.2和cudnn,conda…...
MYBATIS-PLUS入门使用、踩坑记录
转载: mybatis-plus入门使用、踩坑记录 - 灰信网(软件开发博客聚合) 首先引入MYBATIS-PLUS依赖: SPRING BOOT项目: <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus…...
C# 静态类和sealed类(密封类)的区别
网上看到很多文章写静态类,和密封类,但是鲜有它们的对比总结,在此简单总结一下: 静态类(Static Class): 静态类不能被实例化,其成员都是静态的,可以通过类名直接访问。静…...
el-table如何实现自动缩放,提示隐藏内容
前提问题:大屏展示中某一个区域是表格内容,当放大或缩小网页大小时,表格宽度随之缩放,但表格内容未进行缩放,需要表格内容与网页大小同时进行缩放,且表头和表格内容宽度不够未显示全时,需要进行…...
CRM客户管理软件对出海企业的帮助与好处
2023我们走出了疫情的阴霾,经济下行压力大,面对内需的不足,国内企业纷纷选择出海,拓展海外业务增加企业营收。企业出海不是一件易事,有了CRM系统可以让公司事半功倍,下面就来说一说CRM客户管理软件能为出海…...
【QT--使用百度地图API显示地图并绘制路线】
QT--使用百度地图API显示地图并绘制路线 前言准备工作申请百度地图密钥(AK)安装开发环境 开发过程新建项目ui界面GPSManager类主窗口Map 效果展示 前言 先吐槽一下下,本身qt学的就不咋滴,谁想到第一件事就是让写一个上位机工具,根据CAN总线传…...
C数据结构二.练习题
一.求级数和 2.求最大子序列问题:设给定一个整数序列 ai.az..,a,(可能有负数).设计一个穷举算法,求a 的最大值。例如,对于序列 A {1,-1,1,-1,-1,1,1,1,1.1,-1,-1.1,-1,1,-1},子序列 A[5..9](1,1,1,1,1)具有最大值5 3.设有两个正整数 m 和n,编写一个算法 gcd(m,n),求它们的最大公…...
猫头虎博主第5️⃣期赠书活动:《Java官方编程手册(第12版·Java 17)套装上下册》
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
(1)数据库 MSQ 数据库 安装 使用 以及增删改查
下载官网:MySQL :: Download MySQL Shell 常见的数据库分为: 关系型数据库, Oracle、MySQL、SQLServer、Access非关系型数据库, MongoDB、Redis、Solr、ElasticSearch、Hive、HBase 安装过程 使用过程...
什么测试自动化测试?
什么测试自动化测试? 做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。 首先理清自动化测试的概念,广义上来讲&a…...
【踩坑篇】代码中使用 Long 作为 Map的Key存在的问题
本周的工作结束,详述一些在项目代码中实际遇到的一些坑。 代码中遇到这样一个场景: 有个业务接口,接口返回的值是一个JSON格式的字符串,通过JSON解析的方式,解析为格式为: Map<Long, Map<String, O…...
微服务保护-授权规则/规则持久化
授权规则 基本规则 授权规则可以对调用方的来源做控制,有白名单和黑名单两种方式。 白名单:来源(origin)在白名单内的调用者允许访问 黑名单:来源(origin)在黑名单内的调用者不允许访问 点…...
练习敲代码速度
2023年9月18日,周一晚上 今晚不想学习,但又不想玩游戏,于是找了一些练习敲代码的网站来玩玩,顺便练习一下敲代码的速度 目录 参考资料个人推荐第一个 第二个第三个 参考资料 电脑打字慢,有哪些比较好的练打字软件&a…...
uni-app:实现条件判断展示图片(函数判定+三目运算)
一、多条件判断(通过函数进行图片展示) 效果 代码 在data中定义图片信息和要传递的数据信息,在src中写入函数并携带要传递的数据,通过传递的数据在函数中进行判断,并返回对应的图片信息 <template><view&…...
http概念
概念:HTTP,hyper text transfer protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 特点: 1.基于TCP协议:面向连接,安全。 2.基于请求-响应模型的:一次请求对应一…...
Postman应用——Variable变量使用(Global、Environment和Collection)
文章目录 变量的使用同名变量优先级Postman内置变量 Global、Environment和Collection变量设置,点击查看。 变量的使用 语法: {{变量名}}使用{{}}包裹变量名,引用设置好的变量。 注意:Environment变量引用前需要先选择已有的环…...
php高级 TP+Redis实现发布订阅和消息推送案例实战
Redis 的发布-订阅模型是一种消息通信模式,它允许客户端之间通过特定的频道进行通信。在这种模型中,有些客户端负责发布消息(发布者),而其他客户端则订阅它们感兴趣的频道并接收这些消息(订阅者)…...
Python 基础入门
给我家憨憨写的python教程 ——雁丘 Python解释器Pycharm的安装部署 关于本专栏一 Python简介1.1 Python优点1.2 支持的编程方式1.3 版本兼容问题1.4 Python的开发环境1.4.1 常用的 Python 编辑器1.4.2 常用的 Python IDE1.4.3 Python IDLE1.4.4 第三方库安装 1.5 Python 的运…...
【跟小嘉学 Rust 编程】二十九、Rust 中的零拷贝序列化解决方案(rkyv)
系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…...
做网站建设/买卖平台
眼下,HR们最大的痛苦和麻烦之一,便是企业优秀人才频繁跳槽的问题:从一线业务精英到总部技术骨干,从行政人事主管到财务审计专员,从封疆大吏到总监诸候们……似乎都在导演一场跳槽和转行风暴。而且,这股风似…...
在线做爰a视频网站/东莞seo
//树控件操作 void Mysql_seek::listCloct_1(std::vector<std::vector<std::string>>& data) { //m_list_MySql表控件变量 // 为列表视图控件添加全行选中和栅格风格 m_list_MySql.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); // 整行选择…...
国际网站怎么注册免费的/谷歌浏览器安卓版
接着上一篇在同一台服务器上配置app1.domain.com和app2.domain.com多个web应用,这里记录下在nginx下给express web app配置静态代理和文件压缩。目的 为了减少node.js对静态文件的处理和加快前端下载静态资源的速度,决定使用nginx做静态代理,…...
提供网站哪家好/互联网平台推广
源代码下载地址:https://download.csdn.net/download/weixin_44893902/12839539 码云仓库地址: https://gitee.com/ynavc/WJX 演示地址:http://ynavc.gitee.io/wjx 演示连接:https://www.wulihub.com.cn/go/QowRNQ/index.html …...
网站开发+职位描述/seo入门到精通
命令提示符打开资源管理器Searching for a file in Windows Explorer takes forever, but there’s a faster way if you’re willing to use the command prompt. 在Windows资源管理器中搜索文件需要花费很多时间,但是如果您愿意使用命令提示符,则可以采…...
政府网站建设工作计划/东莞营销网站建设直播
Linux系统管理员试卷样题(中级)一,选择题:1,linux操作系统内核创始人是( )A. Bill GatesB. Richard StallmanC. Linus TorvaldsD. Dennis M Ritchie,Ken Thompson2,在linux中有关IDE设备命名编号正确的有( )A. sda 第一个 IDE 控制器,主设备B. sdb 第二个 IDE 控制器,次设备hdb…...