CLIP(Contrastive Language-Image Pre-Training)简介

2023-10-30

CLIP(Contrastive Language-Image Pre-Training):

利用文本的监督信号训练一个迁移能力强的视觉预训练模型

通过对比学习,训练得到图片和文本的相似度,传闻使用4亿个配对的数据和文本来进行训练,不标注直接爬取的

注意: 由于训练数据基本都是英文,对英文支持的比较好

用途:

CLIP主要是用来做图片分类(计算图片和文本的相似度(关联度)), 也可以辅助做GAN,检测,分割,检索等等

以往我们训练一个猫狗分类模型,换一个线条猫,点云猫,油画猫,穿着奇装异服的猫,分类网络很难还认识,但是现在只要加上一个 CLIP,模型马上就被扩展了.

CLIP是如何训练的:

CLIP是如何进行推理的:

可用模型介绍和说明:

`clip.available_models()`可列出CLIP可用模型列表:

'RN50',
'RN101',
'RN50x4',
'RN50x16',
'RN50x64',
'ViT-B/32',
'ViT-B/16',
'ViT-L/14',
'ViT-L/14@336px'

CLIP 是一组模型。有 9 个图像编码器: 5 个卷积编码器和 4 个 transformer 编码器。卷积编码器是 ResNet-50、ResNet-101 和类似 EfficientNet 的模型,称为 RN50x4、RN50x16、RN50x64(数字越大,模型越好)。transformer 编码器是视觉 Transformer(或称之为 ViT(Visual Transformer)):ViT-B/32、ViT-B/16、ViT-L/14 和 ViT-L/14@336。最后一个在分辨率为 336×336 像素的图像上进行微调,其他的则在 224×224 像素上进行训练。

ViT-B/16中:

        + ViT: Visual Transformer

        + B: Base(Base(基础)/ Large(大的)/ Huge(极大的))

        + 16: Patch Size(块大小), 16×16

三个模型(Base(基础)/ Large(大的)/ Huge(极大的))的参数,在源码中除了有Patch Size为16*16的外还有32*32的。

Model

Patch Size

Layers

Hidden Size D

MLP Size

Heads

Params

ViT-Base

16×16

12

768

3072

12

86M

ViT-Large

16×16

24

1024

4096

16

307M

ViT-Huge

14×14

32

1280

5120

16

632M

Layers 就是Transformer Encoder中重复堆叠Encoder Block的次数L

Hidden Size 就是对应通过Embedding层(Patch Embedding + Class Embedding + Position Embedding)后每个token的dim(向量的长度)不用那么复杂,其实就是Patch Embedding后向量的长度

MLP Size 是Transformer Encoder中MLP Block第一个全连接的节点个数(是token长度的4倍) MLP中第一个全连接层升维数

Heads 代表Transformer中Multi-Head Attention的heads数。

Params 参数量

Patch Size 为32 x 32,即一张图片可以被划分为224/32 x 224/32 = 7x 7 个patch,每个patch的shape为: [32, 32,3] ,共7x7= 49个,我们可以对每个patch进行线性映射得到所需要的token [32 x 32 x 3] = [3072] ,即

 即一张图片被切分为49个patch,对每个patch进行变换后得到shape为[3072]的token,即tokens的shape为 [49, 3072] 。

基准测试:

具体使用方法和代码:

github仓库: GitHub - openai/CLIP: Contrastive Language-Image Pretraining

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

CLIP(Contrastive Language-Image Pre-Training)简介 的相关文章

随机推荐

  • JDBC(数据库连接)

    JDBC 简介 什么是 JDBC JDBC 指 Java 数据库连接 是一种标准Java应用编程接口 JAVA API 用来连接 Java 编程语言和广泛的数据库 JDBC API 库包含下面提到的每个任务 都是与数据库相关的常用用法 制作
  • 学习开源项目NewBeeMall新蜂商城(1) - 初步了解与运行NewBeeMall

    文章目录 0 前言 1 NewBeeMall 新蜂商城简介 2 NewBeeMall项目配置与运行 2 1 配置MySQL数据库 2 2 配置图片资源 2 3 运行NewBeeMAll 3 NewBeeMall相关技术栈 3 1 项目原版技
  • 关于++与+=

    今天在模仿别人做购物车网页 本想用jquey的text 获取一件物品的数量 如 1 由于忽略了text 获取的是字符串 于是用了 1运算符 发现字符串也能用 输出为 11 看了模仿的网站发现他并不需要用到parseInt 函数来将字符串变为
  • 454. 4Sum II 解题记录

    题目描述 Given four lists A B C D of integer values compute how many tuples i j k l there are such that A i B j C k D l is z
  • MOSFET 导通条件

    MOSFET管是FET的一种 可以被制造为增强型或者耗尽型 P沟道或N沟道共四种类型 但实际应用的只有增强型的N沟道MOS管和增强型的P沟道MOS管 实际应用中 NMOS居多 如何分辨三个极 D极单独位于一边 而G极是第4PIN 剩下的3个
  • 支持IDE最新版!新一代报表工具FastReport VCL v6.7更新详情

    FastReport VCL是用于Delphi C Builder RAD Studio和Lazarus的报告和文档创建VCL库 它提供了可视化模板设计器 可以访问最受欢迎的数据源 报告引擎 预览 将过滤器导出为30多种格式 并可以部署到云
  • 激光条纹中心线提取算法总结和复现

    滤波 分割等预处理过程省略 输入图像为灰度图 激光条纹水平走向 目录 几何中心法 极值法 细化法 灰度重心法 法向质心法 Steger算法 几何中心法 检测出光条边界 l h 后 把两边界的中间线 l h 2作为激光条纹的中心线 inclu
  • Unity访问 FTP-SSL、FTP服务器(记录)

    1 ftps是基于ftp做了层加密 只记录ftps的访问 2 使用的工具 FluentFTP 由于直接导入unity访问文件会报安全句柄错误 因此需要以下操作 3 流程 下载FluentFTP 修改 cs文件 重新编译 dll 原因 Saf
  • 入门级详细USB移植教程——致正在为USB烦恼的朋友

    同上一篇MPU6050一样 我还是写一篇关于USB的帖子 在圈圈等玩USB的大神面前 我掌握的USB知识实在是九牛一毛 所以这篇帖子加上了入门级的修饰语 写这篇帖子主要是为了那些想快速开发USB的人 至于想深入了解USB协议 可以先学完我这
  • Access数据库注入详解

    一个人再冷酷无情 他曾经都单纯过 能有这样的结果 都是被逼的 渗透入坑学废集 前言 注入漏洞分析 网站分类 常见数据库 网站访问模型 漏洞成因 注入漏洞是怎么样形成的 常见的注入流程 注入危害 ACCESS数据库注入详解 ACCESS数据库
  • 【BZOJ】【P1816】【Cqoi2010】【扑克牌】【题解】【水题】

    传送门 http www lydsy com JudgeOnline problem php id 1816 一张图表示我wa了三次的心情 Code include
  • SpringBoot01--运行原理和自动装配原理

    SpringBoot01 一 是什么 二 SpringBoot优点 三 运行原理 四 Springboot注解 五 自动装配原理 三步 是什么 怎么做 为什么 一 是什么 1 Spring Boot是由Pivotal团队提供的全新框架 其设
  • Pycharm缓存文件太大,转移C盘中Pycharm缓存文件

    转移C盘中Pycharm缓存文件 问题 将C盘用户目录下的 Pycharm转移到E盘文件夹下 解决 找到PyCharm的D software pycharm 2019 PyCharm 2019 1 bin 添加4个 在四处红框位置处添加四行
  • Unity3D -- 自动生成动画(AnimationClip)

    我们一个Prefab有很多个子物体 而且当前prefab使用了大量的动画状态 假如想将该Prefab动画更改过的属性在Idle中重新更改过来 一种比较暴力方法就是直接将需要更改的属性在Idle动画中K出来 但如果动画有更改的话 我们就需要更
  • window下配置hosts文件,使虚拟机主机名与IP地址映射

    目录 1 点击此路径 C Windows System32 drivers etc 2 找到hosts并修改 3 然后将写好的hosts文件复制到原先的路径下 替换原文件 4 尝试ping虚拟机的主机名 成功 1 点击此路径 C Windo
  • 图解通信原理与案例分析-5:计算机中央处理器CPU与内存芯片之间的二进制数字信号通信

    引言 我们知道 计算机是一个二进制的世界 相应的硬件电路 我们称为数字电路 与之对应的是模拟电路 相应的可执行的指令 我们称为二进制指令 从计算机的角度来看 只需要关注0和1 不需要关注数字信号的特征 幅度 极性等 也不需要关注如何通过数字
  • for input string:原因及其解决方案

    javascript view plain copy 首先我这里遇到的错误 for input String if 类型 money Double parseDouble 数据库中获取的内容 else if 类型 number Intege
  • StyleGAN新升级

    点击上方 机器学习与生成对抗网络 关注星标 获取有趣 好玩的前沿干货 文章来源 机器之心 编辑部 来自以色列特拉维夫大学的研究者在生成图像方面又有了新的升级 所用方法在保留源图像身份的同时 在细节编辑上实现了更精细的效果 英伟达提出的风格迁
  • 使用动态优先权的进程调度算法 C语言模拟实现 含详细源代码和实验结果

    使用动态优先权的进程调度算法 C语言模拟实现 含详细源代码和实验结果 题目描述 实现对N个进程采用某种进程调度算法 如动态优先权调度 的调度 每个用来标识进程的进程控制块PCB可用结构来描述 包括以下字段 进程标识数ID 进程优先数 PRI
  • CLIP(Contrastive Language-Image Pre-Training)简介

    CLIP Contrastive Language Image Pre Training 利用文本的监督信号训练一个迁移能力强的视觉预训练模型 通过对比学习 训练得到图片和文本的相似度 传闻使用4亿个配对的数据和文本来进行训练 不标注直接爬