CLIP论文总结

news2024/12/23 19:02:40

文章目录

  • NLP的积淀
  • Method
    • 1. 预训练的方法:放宽约束:对比学习
    • 2. 模型训练
      • 训练时间
  • Experiments
    • Motivation
    • Prompt:提示:也就是文本的引导作用
      • Prompt enginnering
      • Prompt ensembling
    • 对比实验

NLP的积淀

取之不尽用之不竭的自监督信号 = transformer + 自监督学习
训练出来的模型又大又好,而且又简单,泛化性又好,为多模态的训练铺平了道路。

只需要图片文本对,不需要标注, 数据的规模就很容易大起来了。

现在的监督信号是一个文本,而不是n选1的这种标签了,所以模型的输入输出啊,自由度就大很多。

  • 用文本监督信号,来帮助训练一个视觉模型 是非常有潜力的。

Method

1. 预训练的方法:放宽约束:对比学习

对比学习的目标函数 比 预测型的目标函数 训练效率提升了4倍

线性投射层,非线性投射层 对clip这种多模态没什么影响

数据增强:随机裁剪

把对比学习中的temperature这个超参数,设计为可学习的标量了,直接在模型训练过程中就被优化了,不需要当成一个超参数去调参

2. 模型训练

  • 5种ResNet + 3中Vision Transformer(ViT-B/32, ViT-B/16, ViT-L/14)
  • 32 epoch
  • Adam optimizer with decoupled weight decay regularization
  • Decay the learning rate using a cosine schedule
  • Initial hyperparameters: combination of grid searches, random search, and manual tuning on the basline ResNet50 model when trained for 1 epoch. 为了调参调的快一点,做超参搜索的时候都是用最小的resnet50做的,都只训练了一个epoch。
  • 超参数were then adapted heuristically for larger models due to computational constraints。对于更大的模型,这里就没有去调参了/
  • 训练的时候batch-size是32768
  • 混精度训练:加速训练,而且省内存
  • 为了进一步节省内存,还尝试了gradient checkpointing, half-precision Adam statistics, half-precision stochastically rounded text encoder weights
  • 计算相似度也是分配到不同的gpu去做的/
    经过这么多工程上的优化,CLIP才能训练起来
    OpenAI成员撰写:How to Train Really Large Models on Many GPUs?

训练时间

RN50x64: 18day 592 V100
Largest ViT: 12day 256 V100
就像vit论文中提到的:训练一个vit要比训练一个残差网络要高效
Trick: 在更大尺寸图片上finetune,从而获得性能提升

Experiments

Motivation

之前的自监督或者无监督的方法,主要研究的是特征学习的能力,他们的目标是学习一个泛化比较好的特征。
即使你学习到了很好的特征,当你运用到下游任务的时候,你还是需要有标签的数据去做微调。比如下游任务不好去收集数据,有distribution shift的问题。
如何能够训练一个模型,接下来就不再训练或者不再微调了呢?这就是作者研究zero-shot 迁移的动机
用文本做引导,去很灵活的做这种zero-shot的迁移学习。
在这里插入图片描述

  • 一个图的特征与N个文本特征做cosine similarity,再计算softmax概率分布
  • 文本端的编码不是按照顺序进行的,是批量进行的,所以clip的推理还是非常高效的,它并不会慢。

Prompt:提示:也就是文本的引导作用

  • 为什么要做prompt engineering和prompt ensembling呢?
    1. polysemy(多义性):一个单词可以有很多含义。只用一个单词做特征抽取,就会有歧义性出现了。
    2. 预训练的时候使用的是句子和图片,所以推理的时候如果输入单个单词,会出现distribution gap

Prompt enginnering

  1. 提供模板 A photo of a {label}
  2. 如果你知道先验信息,你可以加上一些解释。A photo of a {label}, a type of pet
    如果你想找ocr里面内容:把你想找的文字或数字加上双引号,他就会更明白你的意思了。他可能就知道,你就是想找双引号里面的内容了。

Prompt ensembling

多用一些这些推理的模板,然后把结果综合起来,ensemble一般都会给你更好的结果。
by the way, 作者用了80个ensembe的模板
Prompt_Engineering_for_ImageNet.ipynb

imagenet_templates = [
    'a bad photo of a {}.',
    'a photo of many {}.', 图中有许多...
    'a sculpture of a {}.',
    'a photo of the hard to see {}.', 比较小的物体
    'a low resolution photo of the {}.',
    'a rendering of a {}.',
    'graffiti of a {}.',
    'a bad photo of the {}.',
    'a cropped photo of the {}.',
    'a tattoo of a {}.',
    'the embroidered {}.',
    'a photo of a hard to see {}.',
    'a bright photo of a {}.',
    'a photo of a clean {}.',
    'a photo of a dirty {}.',
    	.
    	.
    	.

数据集 -> 怎么选择模型 -> 怎么去做预训练 -> 怎么去做zero-shot推理

对比实验

作者在27个数据集上做了对比实验:
比较的双方:zero-shot clip; Linear Probe on ResNet50(是图片里面的基线)
clip 高于基线的就是绿色,反之蓝色的。
给物体进行分类的时候,clip一般表现都比较好
需要特定领域的知识来做分类的任务,可以用few-shot。
在这里插入图片描述

  • 难的任务用few-shot来做
    • BiT-M是一个很好的baseline
      在这里插入图片描述

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

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

相关文章

常孝元宇宙《神由都城》发布会成功召开

2024年1月9日,2024常孝元宇宙《神由都城》发布会在北京市中国科技会堂举办,由中国移动通信联合会元宇宙产业工作委员会主办,常州神由之星数字信息产业发展有限公司、常州孝道文化产业股份有限公司共同承办。 本次发布会以“创新引领、协同发展”为主题,邀请第十二届全国政协副主…

海淘注意事项科普

关税和税费: 在海淘过程中,您可能需要支付关税和其他税费。了解目标国家的相关规定,预先了解可能的费用,并确保考虑到这些额外成本。 货币汇率: 注意货币汇率的波动,以避免因兑换率变化导致支付更多费用。…

Unity | Shader基础知识(第九集:shader常用单词基础知识速成)

目录 一、顶点(Vertex)和法线(Normal) 二、UV信息 三、 基础数据种类 1 基础数据种类 2 基础数据数组 3 基础数据数组的赋值 4 对数据数组的调用 四、 基础矩阵 1 基础矩阵种类 2 对矩阵数组的调用 2.1对一个数据的调用 2.2对多个数据的调用 2…

【华为】IPsec VPN 实验配置(动态地址接入)

【华为】IPsec VPN 实验配置(动态地址接入) 注意实验需求配置思路配置命令拓扑R1基础配置配置第一阶段 IKE SA配置第二阶段 IPsec SA ISP_R2基础配置 R3基础配置配置第一阶段 IKE SA配置第二阶段 IPsec SA PCPC1PC2 检查建立成功查看命令清除IKE / IPsec…

视频号小店和抖音小店相比,新手做哪个比较好?

我是电商珠珠 抖音小店在19年被抖音所发展,在这过程中,抖音小店通过自身的不断完善,从兴趣电商到全域兴趣电商模式,从直播电商到商城的出现,凭借着门槛低流量高的优势,让很多商家尝到了红利。 尤其是在20…

CVE-2023-51385 OpenSSH ProxyCommand命令注入漏洞

一、背景介绍 ProxyCommand 是 OpenSSH ssh_config 文件中的一个配置选项,它允许通过代理服务器建立 SSH 连接,从而在没有直接网络访问权限的情况下访问目标服务器。这对于需要经过跳板机、堡垒机或代理服务器才能访问的目标主机非常有用。 二、漏洞简…

解码 Elasticsearch 查询 DSL:利用 Elasticsearch 中的 has_child 和 has_parent 查询进行父子文档搜索

今天,让我们深入研究 has_child 查询和 has_parent 查询,这将帮助我们将 2 个不同的文档组合到一个索引中,从而使我们能够将它们与关系关联起来。 这样做会对我们搜索相关文档时有很大帮助。 在使用 has_child 及 has_parent 这种关系时&…

计算机网络 —— 物理层

物理层 2.1 物理层的基本概念 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流。 物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么 2.2 物理层下…

Maven 工程 java -jar 时提示 xxx-SNAPSHOT.jar 中没有主清单属性

Maven 工程 java -jar 时提示 xxx-SNAPSHOT.jar 中没有主清单属性 将skip属性注释掉或者改为false 如果为true,则工程找不到主启动类

git安装教程 Windows 附安装包链接

Git是一款分布式源代码管理工具(版本控制工具) 。 git的作用 当你需要做一个大工程的时候,文件的管理无疑是非常庞大的工作,因为你需要不断的修改更新文件内容,同时可能还要保留旧版本保证可以复原,这样就需要备份多个版本的文件…

在wsl中安装miniconda

下载安装包 打卡miniconda的官网https://docs.conda.io/projects/miniconda/en/latest/,下载下来安装包,或者直接在乌班图中运行命令wget https://repo.anaconda.com/miniconda/Miniconda3-py38_23.5.2-0-Linux-x86_64.sh,等待下载完毕 安装 到下载目录下执行命令…

【WinRAR】右键压缩文件功能没了怎么办?

我们安装了WinRAR之后想要压缩文件,但是右键点击文件之后发现并没有WinRAR压缩选项,这应该如何设置才能出现右键带有压缩选项呢?方法如下: 首先打开WinRAR,在上面功能中点击选项 – 设置 然后我们在设置界面中切换到集…

C++学习笔记(二十九):c++ 创建与使用库

c自己创建库并使用库。当项目较大时,创建库有助于帮助代码模块化,同时提高代码重用。同时使用库允许程序中混合使用编程语言。首先创建一个空项目名为Game,接着在visiualstudio的解决方案上右击->添加->新建项目,添加一个空…

TS 36.213 V12.0.0-PUSCH相关过程(1)-传输PUSCH的UE过程

​本文的内容主要涉及TS 36.213,版本是C00,也就是V12.0.0。

全新链动2+1模式,提升用户粘性度,增加产品复购率!

在互联网电商行业中,消费增值模式已经成为一种强大的营销工具。通过将消费者所消费的金额转化为积分,再利用平台的销售业绩作为托底,使得积分的价值不断增长,从而增加了消费者的忠诚度和黏性。然而,在实际操作中&#…

MySQL批量插入技巧

关于MySQL批量插入的一些问题 MySQL一直是我们互联网行业比较常用的数据,当我们使用半ORM框架进行MySQL大批量插入操作时,你是否考虑过这些问题: 进行大数据量插入时,是否需要进行分批次插入,一次插入多少合适?有什么…

npm run dev,vite 配置 ip 访问

启动项目通过本地 ip 的方式访问 方式一.通过修改 package.json "scripts": {"dev": "vite --host 0.0.0.0",}, 方式二.通过修改 vite.config.ts export default defineConfig({plugins: [vue(), vueJsx()],server: { // 配置 host 与 port 方…

使用串口 DMA 模式接收不定长数据

一、简介 曾经遇到客户有一个需求,需要用串口 DMA 的方式接收不定长度的数据,DMA 有个缺点就是在每次传输前需要设定好传输的字节长度,这种方式显然对于接收不定长度的数据来说没有那么灵活。但 DMA 也有着显著的优点,如可直接访…

AI模型部署基础知识(一):模型权重与参数精度

一般情况来说,我们通过收集数据,训练深度学习模型,通过反向传播求导更新模型的参数,得到一个契合数据和任务的模型。这一阶段,通常使用python&pytorch进行模型的训练得到pth等类型文件。AI模型部署就是将在python环…

华为mux vlan+DHCP+单臂路由用法配置案例

最终效果: vlan 2模拟局域网服务器,手动配置地址,也能上公网 vlan 3、4用dhcp分配地址 vlan 4的用户之间不能互通,但可以和其它vlan通,也能上公网 vlan 3的用户不受任何限制可以和任何vlan通,也能上公网 交…