Learning Transferable Visual Models From Natural Language Supervision

2023-10-26

目前开始了解多模态相关的知识,欢迎大家批评指正!

这篇论文来自2021年的International Conference on Machine Learning,整理改论文的主要内容,参考【论文阅读】CLIP:Learning Transferable Visual Models From Natural Language Supervision ------ 多模态,视觉,预训练模型_me_yundou的博客-CSDN博客Learning Transferable Visual Models From Natural Language Supervision - John_Ran - 博客园两篇文章。

论文题目:从自然语言监督中学习可转移的视觉模型

研究问题:将文本数据和图像数据相结合,提出了CLIP,用对比学习的方法对语言-图像预训练,这是一种高效、可扩展的自然语言监督学习方法。

研究思路:利用互联网上的图片,训练CLIP。在训练结束后,自然语言用来参照学习到的视觉概念,然后进行zero-shot transfer learning。

(1)首先是构建CLIP,CLIP实际上是一个预训练模型,包括文本编辑和图像编辑器两部分,分别计算文本向量和图像向量的相似度,以预测它们是否为一对,如图1所示。CLIP将图像和文本先分别输入一个图像编码器image_encoder和一个文本编码器text_encoder,得到图像和文本的向量表示 I-f 和 T_f 。然后将图像和文本的向量表示映射到一个联合多通道空间,得到新的可直接进行比较的图像和文本的向量表示 I_e 和T_e 。然后计算图像向量和文本向量之间的cosine相似度。最后,对比学习的目标函数就是让正样本对的相似度较高,负样本对的相似度较低。

 图 1

 CLIP联合训练图像编码器和文本编码器来预测一批(图像,文本)训练示例的正确配对。在测试时,学习的文本编码器通过嵌入目标数据集类的名称或描述,合成一个零镜头线性分类器。CLIP代码如图2所示:

 图 2 

(2)进行zero-shot transfer learning

研究过程:1.构建一个足够大的数据集-----》WebImageText(4亿个文本-图像对)

                  2.选择一个有效的预训练模型-----》CLIP

                  3.选择和缩放模型------》作者选择了两种模型,一个是ResNet-D,平滑了rect-2 blur  pooling。将global average pooling用一个attention pooling来改进。其中这个transformer类型的层,是以global average-pooled representation作为query。第二 vision的结构是ViT,改动比较少:在patch embbeding和position embedding结合之后,加了一个layer normalization。然后实现的时候,使用了一点不一样的初始化策略。

                   4.预训练------》训练的scale策略,5个ResNet,3个vit。ResNet-50,  ResNet-101,  RN50x4, RN50x16, and RN50x64。 ViT-B/32, a ViT-B/16, and a ViT-L/14。最后使用的 32,768的batch size。使用了gradient checkpoint。半精度。The largest  ResNet model, RN50x64, took 18 days to train on 592 V100 GPUs while the  largest Vision . Transformer took 12 days on 256 V100 GPUs。还有一个vit使用336的pixel resolution。

                    5.利用CLIP------》对于每个数据集,使用数据集中所有类的名称作为潜在文本对的集 合,并根据CLIP预测最可能的(图像、文本)对。此外,还尝试为CLIP提供文本提示以帮助指定任务,以及集成多个这些模板以提高性能。

       数据集及实验结果:对于模型的表现,作者在27个数据集上进行了实验,发现在16个数据集上表现的更好:

主要创新:CLIP是一个预训练模型,就像BERT、GPT、ViT等预训练模型一样。首先使用大量无标签数据训练这些模型,然后训练好的模型就能实现,输入一段文本(或者一张图像),输出文本(图像)的向量表示。CLIP和BERT、GPT、ViT的区别在于,CLIP是多模态的,包含图像处理以及文本处理两个方面内容,而BERT、GPT是单文本模态的,ViT是单图像模态的。

总结:

关于CLIP的一些局限性:

  1. 作者认为,仅仅与baseline打平不是最终目标。因为与这些数据集完全监督的SOTA比起来,CLIP还打不过他们。需要将当前的计算量放大到1000x才能达到现在的SOTA,这在当前的硬件条件下是做不到的。

  2. 作者认为,CLIP在某些专用型特别强的task上不太work。比如,在一些细粒度的数据集上,或者一些比较抽象、对称的task。这些task的图片,在CLIP的pre-train的数据集上出现的比较少。作者认为,还有很多task上,CLIP是在瞎猜。

  3. CLIP在很多自然的图片分布上效果不错,但是在一些真的out-of-distributiob的数据集上还是不太行,比如在OCR上。在rendered text上表现相当不错,因为这在CLIP的pre-training上十分常见。但是在手写数字体识别上就拉垮了,只有88%的准确率。因为从semantic和near-duplicate nearest-neighbor retrieval上没找到。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Learning Transferable Visual Models From Natural Language Supervision 的相关文章

随机推荐

  • 1124:成语接龙 dfs+一维数组保存结果

    题目描述 小明在玩成语接龙的游戏 成语接龙的规则是 如果成语A的最后一个汉字与成语B的第一个汉字相同 那么成语B就可以接到成语A的后面 小明现在手上有一本成语词典 每次他都得花费一定时间来从当前的成语查到下一个可以接在后面的成语 现在给你一
  • transformer系列2---transformer架构详细解析

    transformer详细解析 Encoder 1 输入 1 1 Embedding 词嵌入 1 1 1 Embedding 定义 1 1 2 几种编码方式对比 1 1 3 实现代码 1 2 位置编码 1 2 1 使用位置编码原因 1 2
  • System、Math、BigInteger和BigDecimal

    一 System System类代表系统 系统级的很多属性和控制方法都放置在该类的内部 该类位于java lang包 由于该类的构造器是private的 所以无法创建该类的对象 也就是无法实例化该类 其内部的成员变量和成员方法都是stati
  • Python学习心得记录

    文章目录 MongoChef工具的使用 查询记录 删除记录 获取当前日期 地板除 去掉空格 for循环 文件清空 split函数 明确需求 py中执行py os system execfile import PhantomJS过时问题 打印
  • 【数组】- 如何在C++中把元素插入有序数组?

    数组逆序 数组是C 语言重要的数据结构 对它的一些基本操作要熟练掌握 今天 我们就来讨论 怎么把元素的插入有序数组的问题 案例 题目描述 给你一个整数n和一个数列 数列个数不超过1000 这个数列保证从小到大排列 现要求将这个整数n插入到数
  • 【爬虫】Python使用动态IP,多线程,爬取uncomtrade的数据

    联合国贸易统计数据库UNCOMTRADE是国际海关组织汇总所有成员上报的各自进出口贸易情况的综合信息数据库 是进行国际贸易分析的必不可少的数据来源 联合国贸易统计数据库中提供国际海关组织的多种商品分类标准数据查询 包括HS2002 HS19
  • 最近爆火的超级可爱的猫猫回收站设置教程

    这个回收站图标真的好可爱啊 图标地址 https emlog lanzouj com ixoSF05jp4gf
  • EF 数据库的字段类型为float,C#类型为float时异常,Unable to cast object of type 'System.Double' to type 'System.Single

    数据库的字段 类型 float 代表从 1 79E 308 到 1 79E 308 之间的浮点数字数据 占用8字节 类型 real 代表从 3 40E 38 到 3 40E 38 之间的浮点数字数据 占用4字节 而C 中 类型 double
  • 《C++11标准库》5.1.1Pair

    class pair 可将两个 value视为一个单元 C 标准库内多处用到了这个 class 尤其是容器 map multimap unordered map和 unordered multimap就是使用 pair 来管理其以 key
  • Windows下Nginx的启动、停止等命令

    注意不要直接双击nginx exe 这样会导致修改配置后重启 停止nginx无效 需要手动关闭任务管理器内的所有nginx进程 在nginx exe目录 打开命令行工具 用命令 启动 关闭 重启nginx start nginx 启动ngi
  • 分布式系统SDK端重试策略

    分布式系统SDK端重试策略 1 API 的属性 成功率优先 强调成功率 所以重试的时候 sleep 时间较长 按照指数退避的方式sleep latency优先 强调latency 所以重试的时候 sleep的时间较短 2 重试次数 retr
  • node.js -- koa

    node js koa koa 1 koa介绍 2 koa使用 2 1 Application对象 2 2 上下文content对象常用属性及方法 2 3 中间件 2 4 koa常用中间件 koa router koa static koa
  • LeetCode 0096. Unique Binary Search Trees

    问题简析 给定整数n 有多少个不同的储存1 n的二叉搜索树 二叉搜索树 BST 要求左子树结点都比当前结点小 右子树结点都比当前结点大 思路 动态规划 设f n 为有n个数字时可以构建多少种不同的树 则起始状态为 f 0 1 f 1 1 f
  • apt-get命令详解(超详细)

    原文链接 apt get命令详解 超详细 迎面暖风的博客 CSDN博客 apt get 参数 h 帮助文件 q 输出到日志 无进展指示 qq 不输出信息 错误除外 d 仅下载 不安装或解压归档文件 s 不实际安装 模拟执行命令 y 在需要确
  • odoo16数据导出报错

    最近做项目 下载了odoo16的最新版 SELECT latest version FROM ir module module WHERE name base 16 0 1 3 导出数据的时候报错 连续装了两台机器都是报这个错误 很明显 这
  • 绿洲显示服务器,最后的绿洲登录不上怎么办 最后的绿洲登录失败解决方法推荐-游侠网...

    最后的绿洲登录不上怎么办 最后的绿洲是一款主打pvp的开放世界生存游戏 下面小编给大家带来了最后的绿洲登录失败解决方法推荐 还不了解的玩家不妨进来看看 最后的绿洲登录失败解决方法推荐 1 服务器并没有关闭 无论显示Oasis offline
  • 【中国电工技术学会主办】2022年能源,电力与电气工程国际研讨会(CoEEPE 2022)

    中国电工技术学会主办 2022年能源 电力与电气工程国际研讨会 CoEEPE 2022 重要信息 会议网址 www coeepe org 会议时间 2022年11月11 13日 召开地点 安徽合肥 合肥滨湖国际会展中心 截稿时间 2022年
  • tab动画 vue_【Vue】关于vue动画,实现tab切换页面时左右滑动效果

    今天要想做一个类似于app切换效果的demo 既点击 这个时 获取相应数据 动画已经加上了 但是不知道怎么才能进行切换 像进入详情页那个 已经有办法解决了 但是tab切换这个却发现无从下手 哪位大神能给提供一下思路吗 或者提供一个方案 de
  • 爬取天眼查数据 附代码

    摘要 一 常规抓包分析 比如要爬取企业注册信息查询 企业工商信息查询 企业信用信息查询平台 发现人与企业关系的平台 天眼查该页面的基础信息 通过火狐浏览器抓包 可以发现 所要数据都在下图的json文件里 查看其请求 伪装成浏览器爬取该文件
  • Learning Transferable Visual Models From Natural Language Supervision

    目前开始了解多模态相关的知识 欢迎大家批评指正 这篇论文来自2021年的International Conference on Machine Learning 整理改论文的主要内容 参考 论文阅读 CLIP Learning Transf