CLIP 论文的关键内容

CLIP 论文整体架构

该论文总共有 48 页,除去最后的补充材料十页去掉,正文也还有三十多页,其中大部分篇幅都留给了实验和响应的一些分析。

从头开始的话,第一页就是摘要,接下来一页多是引言,接下来的两页就是讲了一下方法,主要说的是怎么做预训练,然后从第六页一直到第十八页全都是说的实验,当然这里面也包括了怎么去做 zeor-shot 的推理,还有包括这种 prompt engineering 、prompt ensemble 等等,算是方法和实验的合体。

讲完了实验作者大概花了一页篇幅去讨论了一下 CLIP 工作的局限性,然后接下来的五页作者主要就是讨论了一下CLIP这篇工作有可能能带来的巨大的影响力,在这个部分首先讨论的是 bias ,即模型的偏见,然后讨论了 CLIP 有可能在监控视频里的一些应用,最后作者展望了一下 CLIP 还有哪些可以做的这个未来工作,然后在讲完了所有的这些方法、实验和分析之后作者用了一页的篇幅就大概说了一下相关工作,最后给出了一个简短的小结论。

CLIP 到底是什么

CLIP 的迁移学习能力非常强,其预训练好的模型能够在任意一个视觉分类的数据集上取得不错的效果。
最重要的是,其是 zero-shot 的:

在这里插入图片描述

预训练的含义:

在这里插入图片描述

作者在这篇文章中做了超级多的实验,在超过三十个数据集上做了测试:

在这里插入图片描述

CLIP 到底是什么?到底是怎么去做到 zero-shot 推理的?

看文章中的图一:

在这里插入图片描述

上图是模型总览图,这是 CLIP 工作的一个大概流程。

CLIP 是如何进行预训练的?从题目中可以窥见一二,通过自然语言处理那边来的一些监督信号,我们可以训练一个迁移效果很好的视觉模型。因此明显这是一个牵扯到文字、图片的一个多模态的工作。

那么是如何利用来自自然语言处理那边的信号的呢?在训练过程中,模型的输入是一个图片和文字的配对。以上图为例,图片是一只狗,配对的文字也是 pepper 是一只小狗。

然后图片会通过一个 Image Encoder 图片编码器,从而得到一些特征(这里的编码器可以是一个 ResNet 也可以是一个Vision Transformer)。对于文本句子来说其也会通过一个文本编码器,从而得到一些文本的特征。

假设现在每个Training Batch(训练批次)里都有 n 个这样的图片文本对,也就是说有 n 个句子,n 张图片,对应的会得到 n 个文本特征以及 n 个图片特征,而 CLIP 就是在这些特征上去做对比学习。

对比学习非常的灵活,只需要一个正样本和一个负样本的定义即可,其他的都是正常套路。

正样本是啥?其实很简单,上面图中的一个配对的 图片-文本对 就是一个正样本。因为其描述的是一个东西。

所以说在上图中的特征矩阵里,沿着对角线方向上的内容都是正样本:

在这里插入图片描述

因为 I1T1 、I2T2 这些本身就都是配对的。

那么剩下矩阵中的不是对角线上的其他元素就都是负样本了。也就是说我们有 n 个正样本,然后又 n 平方减去 n 个负样本。

一旦有了正负样本,模型就可以通过对比学习的方式去训练起来了,完全不需要任何手工的标注。

但是对于这种无监督的预训练方式,也就是对比学习,其是需要大量的数据的,因此 OpenAI 还专门去收集了这么一个数据集。该数据集中有 4 亿个 图片-文本对,数据质量很高,这也是为什么 CLIP 这个预训练模型为什么能这么强大的主要原因之一。

CLIP 如何做推理的

CLIP 如何去做 zeor-shot 的推理的呢?

从上面可以知道,CLIP 这个模型经过预训练之后其实只能得到一些视觉上和文本上的特征,他并没有在任何分类的任务上去做继续的这种训练或者微调,因此他是没有分类头的,没有分类头怎么做推理呢?

分类头:

在这里插入图片描述

本文提出了一个非常巧妙的利用自然语言的一种办法,叫 prompt template。

这里使用 Image Net 数据集做一个例子。

CLIP 就是先将 Image Net 里这 1000 个类,比如飞机啊、汽车啊、狗啊变成一个句子:

在这里插入图片描述

从上图可以看到,也就是用 plane、cat、dog 等去替代花括号包起来的 object 的这个内容,就相当于一个模板(在很多 it 技术领域都有类似概念的存在)。

有 1000 个类,那么就生成了这样的 1000 个句子。然后这 1000 个句子通过我们之前预训练好的这个文本编码器 Text Encoder 就会得到一千个这个文本的特征。

但其实直接使用原生的那些单词去做文本特征的提取也是可以的,但是因为在模型预训练的时候我们的图片每次看到的基本都是一个句子,如果在推理的时候突然把所有的这个文本都变成了一个单词,那这样就跟在训练的时候看到的这个文本就不太一样了,效果就会稍有下降。

另外一个单词如何变成一个句子也是很有讲究的。因此 CLIP 这篇论文在后面还提出了 prompt engineering 和 prompt ensemble 这两种方式去进一步的提高这个模型的准确率。而不需要重新训练这个模型。

然后在推理的时候,不论此时来到的什么图片,我们只要将这个图片扔给这个图片的编码器,得到了这个图片特征之后就让这个图片特征去跟所有的这些文本特征去做这个 cosine similarity(余弦相似度):

在这里插入图片描述

计算相似性,最后这个图像特征和这里的哪个文本特征最相似,那么就把这个文本特征和所对应的那个句子挑出来,从而完成了分类这个任务:

在这里插入图片描述

也就是这张图片里有狗这个物体。

并且在 CLIP 真正使用的时候,这里的标签还是可以改的(比如不是飞机,而是坦克),不光是 Image Net 这 1000 个类,可以换成任意的单词,同样图片也可以是任何的图片,然后依旧可以使用这种通过算余弦相似度的方式去判断这张图片里到底还有哪些物体。

这个性质就是CLIP的强大之处,因为它彻底摆脱了 categorical label 的这个限制,也就是说不论是在训练的时候还是在推理的时候,其都不需要有一个这么提前定好的这么一个标签列表了。任意给我一张照片,我都可以通过给模型去喂这种不同的文本句子从而知道这张图片里到底有没有我所感兴趣的物体。

而且 CLIP 不光是能识别新的物体,由于它真的把这个视觉的语义和文字的语义联系到了一起,所以它学到的这个特征的语义性非常强,迁移效果也非常的好。

基于CLIP的应用

基于CLIP 的图像生成,用文本去指导图像的生成。

基于CLIP 的物体检测和分割。

基于CLIP 的用来做视频检索的,意思是给定一段视频,然后想去搜索这个视频里到底有没有出现过某个物体或者是场景,那么就可以通过直接输入文本的这种形式去做检索。

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

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

相关文章

python文件IO基础知识

目录 1.open函数打开文件 2.文件对象读写数据和关闭 3.文本文件和二进制文件的区别 4.编码和解码 读写文本文件时 读写二进制文件时 5.文件指针位置 6.文件缓存区与flush()方法 1.open函数打开文件 使用 open 函数创建一个文件对象,read 方法来读取数据&…

电子技术学习路线

在小破站上看到大佬李皆宁的技术路线分析,再结合自己这几年的工作。发现的确是这样,跟着大佬的技术路线去学习是会轻松很多,现在想想,这路线其实跟大学四年的学习顺序是很像的。 本期记录学习路线,方便日后查看。 传统…

京东Java社招面试题真题,最新面试题

Java中接口与抽象类的区别是什么? 1、定义方式: 接口是完全抽象的,只能定义抽象方法和常量,不能有实现;而抽象类可以有抽象方法和具体实现的方法,也可以定义成员变量。 2、实现与继承: 一个类…

FPGA之tcp/udp

在调试以太网的过程中,考虑了vivado IP配置(管脚、reset等),SDK中PHY芯片的配置(芯片地址、自适应速率配置等),但是,唯独忽略了tcp/udp协议,所以在ping通之后仍无法连接。 所以现在来学习一下tcp与udp的区别 ---- 为什…

浪潮信息IPF24:AI+时代,创新驱动未来,携手共创智慧新纪元

如今,数字化时代的浪潮席卷全球,人工智能已经成为推动社会进步的重要引擎。浪潮信息IPF24作为行业领先的AI技术盛会,不仅为业界提供了交流合作的平台,更在激发创新活力、拓展发展路径、加速AI技术落地等方面发挥了重要作用。 升级…

OS复习笔记ch6-2

死锁的解决 死锁的预防(打疫苗)死锁的避免(戴口罩)死锁的检测(做核酸) 死锁的预防 前面我们提到了死锁的四个必要条件 防止前三个必要条件,就是间接预防防止最后一个必要条件–循环等待&…

软测刷题-错题1

提高测试效率的方法: 1、不要做无效的测试 2.不要做重复的测试 3.不同测试版本的测试侧重点 4.优化测试顺序 LoadRunner是对服务器进行施压。 在数据库中存在的用户数是指注册用户数。 input标签可以直接使用send_keys实现上传,而非input标签是无法直…

Rust后台管理系统Salvo-admin源码编译

1.克隆salvo-admin后台管理系统源码: https://github.com/lyqgit/salvo-admin.git 2.编译 编译成功 3.创建mysql数据库与执行sql脚本 输入名称ry-vue 执行sql脚本 全部执行上面3个sql 修改数据库用户名与密码: 清理及重新编译 cargo clean cargo build 4.运行并测试 cargo…

使用vue,mybatis,mysql,tomcat,axios实现简单的登录注册功能

目录 第一步环境搭建 后端: 前端: 第二步画流程图 web: service: dao层: 第三步前端代码的实现 这是开始的页面,接下来我们要到router路由下书写#login的路径 路由中的component在我们自己创建的views书写vue文件…

单日收益1000+看了就会的项目,最新灵异短视频项目,简单好上手可放大操作

各位好友,佳哥在此与大伙儿聊聊一项神秘莫测的短视频项目。你或许会想,“又是一个视频创作项目?” 但别急,这个项目与众不同,日入千元不再是梦,而且它的易用性让人惊喜,无论你是初学者还是资深玩…

春秋云境CVE-2018-7422

简介 WordPress Plugin Site Editor LFI 正文 1.进入靶场 2.漏洞利用 /wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path/../../../../../../flag看别人wp做的。不懂怎么弄的,有没有大佬讲一下的

没有电商经验的人去操作抖音小店,难度大不大?好操作吗?

大家好,我是电商小V 很多新手小伙伴想去操作抖音小店项目,咨询的最多的问题就是我没有电商运营的经验可以去操作吗? 当然是可以操作的,抖音小店项目对于新手来说是一个非常友好的项目,很多小伙伴都是感觉没有电商经验去…

数据库攻防之MySQL

MySQL 是最流行的关系型数据库,与此同时也是 web 应用中最好的关系型数据库管理应用软件。我们在渗透过程中碰到的 PHP 站点大部分都会搭配 MySQL 数据库,因此它是红队攻防中最常遇到的数据库。 0x01 MySQL简介 MySQL 是典型的关系型数据库,…

YOLOv10 | 无NMS的YOLO | 实时端到端目标检测的新突破

过去几年里,YOLOs因在计算成本和检测性能之间实现有效平衡而成为实时目标检测领域的主流范式。研究人员针对YOLOs的结构设计、优化目标、数据增强策略等进行了深入探索,并取得了显著进展。然而,对非极大值抑制(NMS)的后…

redis--消息队列

分类 生产者消费模式 发布者订阅模式 生产者消费模式 在生产者消费者(Producer/Consumer)模式下,上层应用接收到的外部请求后开始处理其当前步骤的操作,在执行完成后将已经完成的操作发送至指定的频道(channel)当中,并由其下层的应用监听…

【Chrono Engine学习总结】6-创建自定义场景-6.2-chrono中的光线设置

由于Chrono的官方教程在一些细节方面解释的并不清楚,自己做了一些尝试,做学习总结。 上一篇文章中,自己【用sketchup重建了三维场景】,但导入chrono中颜色很不正确,几乎都是白色的,但也不是完全白色。经过…

IDE上传本地仓库到GitHub

IDE上传本地仓库到GitHub 1、选择远程仓库平台2、下载安装Git3、IDE集成Git4、本地项目上传GitHub 1、选择远程仓库平台 1.1、注册远程仓库平台 常见的远程仓库托管平台有: 1)GitHub 域名:https://github.com 介绍:GitHub是全球最…

Java订餐系统源码 springboot点菜系统源码

Java订餐系统源码 springboot点菜系统源码 源码下载地址:https://download.csdn.net/download/xiaohua1992/89341358 功能介绍: 前台登录:前台登录: ①首页:菜品信息推荐、菜品信息展示、查看更多 ②菜品信息&…

地理信息系统(GIS)软件开发

地理信息系统(GIS)软件开发是一项复杂且系统性很强的工程,涉及空间数据的采集、管理、分析和展示。以下是一个典型的GIS软件开发流程,包括各个步骤的详细说明。北京木奇移动技术有限公司,专业的软件外包开发公司&#…

面向对象------多态

1.多态的定义 通俗来说,当同一种行为或者事情发生在不同的对象上,这些行为或者事情最终得到的结果不同。 注意:多态要发生在继承的基础上。 例如:彩色打印机和黑白打印机。 彩色打印机和黑白打印机是不同的对象,但…