CLIP论文精度

CLIP论文精度

  1. Zero-shot

  2. CLIP多模态模型
    在这里插入图片描述

  3. Image Endecoder是一个图片编码器,既可以是ResNet,也可以是Vision Transformer.

  4. Text Encoder和Image Encoder产生的两组特征进行对比学习(无监督训练)

  5. 分类头?“分类头” 是指网络结构中用于执行具体分类任务的一组层,将网络提取的特征转化为分类或检测结果。

  6. CLIP训练好后,没有使用微调,所以也就没有分类头,而利用它做推理的过程是借用了自然语言处理(NLP)的方法,也就是prompt template.

  7. 把每个分类类别变成相应的句子,句子通过之前训练好的文本编码器Text Encoder后就会得到对应数量文本的特征。做这一步的原因是因为在训练过程中,输入到Text Encoder中的是一个句子,为了保证模型输出的效果,所以采用输入形式的一致。

  8. 关于如何将分类的每个标签变成一个句子,OpenAI也提出了prompt engineering和prompt ensemble这两种方式来提高模型的准确率。

  9. 在推理的过程中,对于输入的图片,经过ImageEncoder后,得到图片特征,然后跟所有的文本特征去计算一个cosine similarity(相似性),将与图片最相近的一个文本挑出来,完成分类任务。

  10. categorical label限制。需要在训练或者推理时,提前准备一个标签的列表,以编写分类头。而CLIP则是摆脱了这种限制。

  11. CLIP迁移性非常强,因为他学习到的语义性强。

  12. CLIP的应用:图像生成、物体检测和分割、视频检索clifs

> Abstract

  1. CLIP出来前,先进的视觉系统训练都需要一个提前定义好的标签集合,但采用这样有限制性的监督学习很可能会模型的泛化性。
  2. 所以CLIP从NLP中得到监督信息,因为本文描述的监督信号非常广。
  3. CLIP使用4亿个文本-图像训练集去进行了大模型的训练。生成的模型可以直接用于下游的Zero-shot推理。
  4. OpenAI公开了CLIP的预训练模型和推理代码,但没公开预训练代码。

> Introduction

  1. 从原始的文本里去预训练一个模型在NLP领域取得了成功。(如GPT,它的模型架构同样也是与下游任务无关的,所以直接应用在下游应用时,无需去设计分类头等特殊处理。)
  2. 所以CLIP将NLP里面的这套框架应用到了视觉里面。
  3. 自监督学习:transformer、对比学习、掩码填空、自回归。
  4. CLIP主打泛化性。

> Approach

  1. 利用自然语言的监督信号来训练一个比较好的视觉模型。好处:

    • 不需要标注数据,只需要文本-图片配对集。
    • 训练时,图片和文字绑定,所以学习到的是一个多模态特征。
  2. Transformer出现后,为NLP带来革命性的改变,开始使用具有上下文语义环境的学习方式去替代传统且复杂的Topic model和n-gram等。让其可以比较方便地进行跨模态训练。

  3. 大数据集:WebImageText:WIT

  4. 由于数据集巨大,训练成本高时间长,所以训练效率对多模态的训练效果有直接影响。所以CLIP由于训练效率的原因,使用了对比学习的方法,而非预测性的方法。

  5. 仅仅把预测型的目标函数改为对比型的目标函数,训练效率就提升了4倍。
    在这里插入图片描述

  6. 模型预训练伪代码:与其他对比学习没有太大区别,主要是将单模态正样本替换成了多模态正样本。
    在这里插入图片描述

    • CLIP数据集较大,不太会产生过拟合的情况。
    • 它在最后的投射中(表示和对比学习层之间)仅使用了线性的投射层。
    • 同时由于数据集太大,也不需要做过多的数据增强(?),唯一使用的是随机的剪裁。
    • 由于模型太耗时,不好做微调,所以将对比学习中的超参数temperature在模型中重新设置为可学习的参数。
  7. 训练过程:
    视觉方面:训练了8种模型,ResNet-50,ResNet-101,和三个基于EfficientNet-style model改进的ResNet变体。同时还使用了3个Vision Transformers,包括ViT-B/32,ViT-B/16,ViT-L/14。

    • 32 epochs。

    • 使用Adam optimizer优化器

    • 对超参数进行了grid searches,random search或者manual tuning。

    • bitch size = 32768

    • 使用了混精度训练

    • 工程上的问题:在这里插入图片描述

    • 训练Vision transformer比训练残差网络高效。

> Experiments

  1. Zero-shot Transfer:

    • 动机:一旦借助文本训练好了这个又大又好的模型之后,就可以使用文本做引导,去灵活地做zero shot的迁移学习。而不必再进行微调。
    • 推理过程:
  2. Prompt engineering and ensembling:

    • Prompt是在微调或者直接推理时用的一种方法。
    • 需要使用Prompt,是因为1.单个单词具有歧义性。2.预训练的时候输入是文本信息,而非单词,为了防止出现分布偏移(distribution gap)问题。
    • 所以作者使用Prompt template A photo of a {label}来描述推理时的输入,可以使模型准确率得到提升。
    • 如果你已经提前知道类别,那么可以添加更多的提示词来使模型的输出更加准确。
    • Prompt ensemble就是利用多段提示词,最后将结果聚合起来。在这里插入图片描述
  3. few-shot transfer(每个类别拿出少量图片来做微调):将CLIP里面的图片编码器拿出来“冻住”,去做linear probe(对最后的分类头进行训练)。

  4. 如果下游任务用全部的数据而不是zero/few shot:

    • 方法1:linear probe
    • 方法2:fine-tune ,把整个网络都放开,直接去做端对端的学习。比linear probe更灵活、数据集大的时候效果更好。
  5. 而在CLIP中,作者专门使用了linear probe,是因为(1)CLIP本来就是用来研究跟数据集无关的预训练方式的,能能好地反映出预训练模型的好坏(2)linear probe不用调参来适应各个数据集。

Limitations

  1. CLIP在大多数模型平均下来来看,只是与比较简单的机械模型打成平手,而无法与state of the art(SOTA,最前沿)的结果媲美。
    扩大训练数据集是一个不太可能的方案(要达到SOTA的效果,需要再训练当前的1000X+),所以需要有新的方法在计算和数据上更加高效。
  2. CLIP在细分类任务和抽象概念的处理上表现得较差。
  3. CLIP的泛化性较好,但推理数据集不能out-of-distribution。
  4. 虽然CLIP可以用zero-shot去做推理,但仍然是从给定的类别里去做的选择。所以OpenAI还是想将其作为生成式的模型。
  5. 数据利用率不高效。(预训练)
  6. 数据没有经过清洗,可能会带着社会的偏见。

Conclusion

  1. CLIP的宗旨就是想把NLP领域当中与下游任务无关的训练方式带到其他领域中去。
  2. CLIP方法总结:在预训练阶段使用对比学习,利用文本的提示去做zero shot的迁移学习。在大数据和大模型的双向加持下,CLIP的效果能和之前精心设计的且是有监督训练出来的基线模型打成平手。

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

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

相关文章

matlab使用教程(13)—稀疏矩阵创建和使用

使用稀疏矩阵存储包含众多零值元素的数据,可以节省大量内存并加快该数据的处理速度。sparse 是一种属性,可以将该属性分配给由 double 或 logical 元素组成的任何二维 MATLAB 矩阵。通过 sparse 属性,MATLAB 可以: • 仅存储矩…

openGauss学习笔记-37 openGauss 高级数据管理-事务

文章目录 openGauss学习笔记-37 openGauss 高级数据管理-事务37.1 语法格式37.2 参数说明37.3 示例 openGauss学习笔记-37 openGauss 高级数据管理-事务 事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。ope…

SpringBoot案例-部门管理-删除

目录 查看页面原型,明确需求 页面原型 需求 阅读接口文档 思路分析 功能接口开发 控制层(Controllre类) 业务层(Service类) 持久层(Mapper类) 接口测试 前后端联调 查看页面原型&a…

全面讲解|DCMM数据管理能力成熟度及各地政策汇总

信息技术与经济社会的交汇融合引发了数据爆发式增长。数据蕴含着重要的价值,已成为国家基础性战略资源,正日益对全球生产、流通、分配、消费活动以及经济运行机制、社会生活方式和国家治理能力产生重要影响。数据价值发挥的前提是管理好数据,…

设计模式(5)代理模式

一、介绍: 【Subject/抽象角色】定义了RealSubject和Proxy的共用接口,这样就可以在任何使用RealSubject的地方都可以使用Proxy 【RealSubject/真实角色】定义Proxy所代表的真实实体 【Proxy/代理角色】保存一个引用使得代理可以访问实体,并…

LVGL学习笔记 28 - 键盘keyboard

目录 1. 设置关联文本框 2. 设置模式 2.1 LV_KEYBOARD_MODE_TEXT_LOWER 2.2 LV_KEYBOARD_MODE_TEXT_UPPER 2.3 LV_KEYBOARD_MODE_SPECIAL 2.4 LV_KEYBOARD_MODE_NUMBER 2.5 LV_KEYBOARD_MODE_USER_1 ~ LV_KEYBOARD_MODE_USER_4 3. 使能弹窗模式 4. 更改按键布局 5. 事…

后台管理系统

1.1 项目概述 简易后台管理系统是一个基于Vue3ElemrntPlus的后台管理系统,提供了用户登录、记住密码、数据的增删改查、分页、错误信息提示等功能,旨在协助管理员对特定数据进行管理和操作。 没有后台对接,数据源为假数据。 全部代码已上传G…

4.3、Flink任务怎样读取Kafka中的数据

目录 1、添加pom依赖 2、API使用说明 3、这是一个完整的入门案例 4、Kafka消息应该如何解析 4.1、只获取Kafka消息的value部分 ​4.2、获取完整Kafka消息(key、value、Metadata) 4.3、自定义Kafka消息解析器 5、起始消费位点应该如何设置 ​5.1、earliest() 5.2、lat…

nginx编译以及通过自定义生成证书配置https

1. 环境准备 1.1 软件安装 nginx安装编译安装以及配置https,需要gcc-c pcre-devel openssl openssl-devel软件。因此需要先安装相关软件。 yum -y install gcc-c pcre-devel openssl openssl-devel wgetopenssl/openssl-devel:主要用于nginx编译的htt…

Redis心跳检测

在命令传播阶段&#xff0c;从服务器默认会以每秒一次的频率&#xff0c;向主服务器发送命令&#xff1a; REPLCON FACK <rep1 ication_ offset>其中replication_offset是从服务器当前的复制偏移量。 发送REPLCONF ACK命令对于主从服务器有三个作用&#xff1a; 检测主…

【C++】const_cast基本用法(详细讲解)

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

【图像去噪的滤波器】非局部均值滤波器的实现,用于鲁棒的图像去噪研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

flutter开发实战-实现marquee根据文本长度显示文本跑马灯效果

flutter开发实战-实现marquee文本跑马灯效果 最近开发过程中需要marquee文本跑马灯效果&#xff0c;这里使用到了flutter的插件marquee 效果图如下 一、marquee 1.1 引入marquee 在pubspec.yaml中引入marquee # 跑马灯效果marquee: ^2.2.31.2 marquee使用 marquee使用也是…

想要延长Macbook寿命?这六个保养技巧你必须get!

Mac作为我们工作生活的伙伴&#xff0c;重要性不需要多说。但在使用的过程中&#xff0c;我们总会因不当操作导致Mac出现各种问题。 要想它长久的陪伴&#xff0c;平时的维护与保养自然不能少&#xff0c;Mac的保养很重要的两点就是硬件保养和电脑系统保养&#xff0c;硬件保养…

使用 POI 在 Word 中重新开始编号、自定义标题格式

效果图 引入依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><!-- https…

SpringCloud整体架构概览

什么是SpringCloud 目标 协调任何服务&#xff0c;简化分布式系统开发。 简介 构建分布式系统不应该是复杂的&#xff0c;SpringCloud对常见的分布式系统模式提供了简单易用的编程模型&#xff0c;帮助开发者构建弹性、可靠、协调的应用程序。SpringCloud是在SpringBoot的基…

Unity游戏源码分享-儿童益智数学大脑训练游戏

Unity游戏源码分享-儿童益智数学大脑训练游戏 5秒内选择答案 项目下载地址&#xff1a;https://download.csdn.net/download/Highning0007/88198773

整理mongodb文档:改

个人博客 整理mongodb文档:改 求关注&#xff0c;求批评&#xff0c;求进步 文章概叙 本文主要讲的是mongodb的updateOne以及updateMany&#xff0c;主要还是在shell下进行操作&#xff0c;也讲解下主要的参数upsert以及更新的参数。 数据准备 本次需要准备的数据不是很多…

电脑连接安卓设备显示offline

The Android is offline. This can be resolved by physically disconnecting and...用USB线连接手机和电脑&#xff0c;打开cmd&#xff0c;输入adb devices -l, adb devices -l结果显示可以识别手机&#xff0c;但是状态为offline 打开另外一个终端&#xff0c;输入 adb k…