CLIP 对比预训练 + 文字图像相似度:离奇调查,如何训练视觉大模型?

CLIP:如何训练视觉大模型?

    • 对比预训练
    • 图像编码器
    • 文本编码器
    • 最大的亮点:zero-shot图像分类

 


CLIP论文地址:https://arxiv.org/pdf/2103.00020.pdf

CLIP = 对比学习 + 预训练 + 文字图像相似度。

对比预训练

传统方法训练视觉模型的方式通常是使用有监督学习方法,需要收集大量图像和对应标签:

CLIP 采用了一种不需要人工大量标记数据的自监督学习方法。

CLIP 模型是一种基于对比学习的模型,可以将图像和文本进行联合编码,从而实现图像和文本之间的交叉检索。

  • 传统方法:要构建一个图像-文本匹配数据集,需要收集大量的图像和与之相关联的文本描述,并对它们进行人工标注。比如,我们收集了10000张图像和与之对应的10000个文本描述,然后需要手动将每张图像与对应的文本进行匹配标注。

  • CLIP方法:相比之下,CLIP可以利用自监督学习和互联网上的数据进行训练,无需显式的人工标注。例如,我们可以利用互联网上的图像和相关联的文本数据,比如从社交媒体、图像搜索引擎或图像描述数据集中获取图像-文本对,不用人工标注。

  • openai 使用了 WebImage Text 上 4亿 对图像文本对训练 CLIP

CLIP会将图像和文本分别编码为特征向量,并通过比较这些特征向量的相似性来学习图像和文本之间的匹配关系。

比如图像和文本的匹配任务中,模型需要区分正样本(真实的图像-文本匹配对)和负样本(随机的图像-文本对)。

模型会通过最大化正样本的相似性,同时最小化负样本的相似性来学习。

对比预训练:

  • 一个文本编码器,得到 n 个文本特征向量( T 1 . . . T n T_{1}...T_{n} T1...Tn
  • 一个图像编码器,得到 n 个图像特征向量( l 1 . . . l n l_{1}...l_{n} l1...ln
  • 将文本、图像映射到同一个特征空间
  • 计算这对组合的相似度
  • 最大化正样本相似度(对角线 l 1 T 1 、 l 2 T 2 、 l 3 T 3 、 . . . 、 l n T n l_{1}T_{1}、l_{2}T_{2}、l_{3}T_{3}、...、l_{n}T_{n} l1T1l2T2l3T3...lnTn 是正样本)
  • 最小化负样本相似度(其他是负样本)

完整版(参考知乎大佬):

动态过程:

图像编码器

使用 ResNet 作为初始的图像特征提取器,然后将 ResNet 的输出,传递给 ViT 模型。

利用 ResNet 在低层级特征提取方面的优势,同时使用 ViT 模型的自注意力机制来捕捉图像中的全局关系。

图像编码器 = ResNet + ViT。

ResNet 部分:

  • 引入模糊池化,在下采样前加入一个高斯低通滤波。以减少特征图中的高频细节信息,从而实现更加鲁棒的下采样。
  • 将全局平均池化,替换成注意力池化。对特征图的每个通道进行加权平均,从而将更多的注意力放在重要的特征上。
  • 5 个模型的放缩:ResNet - 50、ResNet - 100、ResNet - 50x4、ResNet - 50x16、ResNet - 50x64

ViT 部分:

  • 在 patch embedding 和 position embedding 后,添加一个额外的线性/全连接层,以增加模型的非线性表达能力。
  • 更换了初始化方法,提升模型性能。
  • 4 个模型的缩放:ViT-B/32、ViT-B/16、ViT-B/14、ViT-B/14-336px

文本编码器

没啥特殊的,就是 Transformer :

  • 6 个编码器
  • 6 个解码器
  • 使用了 63M 个参数
  • 有 8 个注意力头

最大的亮点:zero-shot图像分类

传统大模型预训练后,还需要微调,才能处理下游任务。

CLIP 出来后,不需要任何训练数据,就可以直接做图像分类。

分类过程:

  • 将所有类别(汽车、狗、鸟等),转换为一个句子 A photo of a {object}
  • 输入到文本编码器,得到 N 个特征向量
  • 输入图像到图像编码器,得到 1 个特征向量
  • 俩个特征向量相似度最高的,就是图像的类别

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

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

相关文章

活动 | Mint Blockchain 赞助支持清迈 WAMOTOPIA 线下活动

在 2023 年的末尾,南洋清迈的土地上,瓦猫 2.0 正在从 Builders, Creators, Thinkers, Dreamers 的集体梦想中走来。新年到来之际,瓦猫社区即将在泰国清迈创造通往新世界的即兴 - 突现部落 Spontaneous pop-up Tribe:瓦猫托邦 Wamo…

JVM-11-运行时栈帧结构

“栈帧”(Stack Frame)则是用于支持虚拟机进行方法调用和方法执行背后的数据结构,它也是虚拟机运行时数据区中的虚拟机栈(Virtual MachineStack)的栈元素。 栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回…

【深度学习】序列生成模型(二):束搜索

文章目录 序列生成束搜索理论基础算法步骤python实现 序列生成 在进行最大似然估计训练后的模型 p θ ( x ∣ x 1 : ( t − 1 ) ) p_\theta(x | \mathbf{x}_{1:(t-1)}) pθ​(x∣x1:(t−1)​),我们可以使用该模型进行序列生成。生成的过程是按照时间顺序逐步生成序…

掌动智能浅谈云网络流量分析的主要过程

在云计算时代,网络流量分析成为确保网络安全和性能的重要环节。随着企业和组织将应用和服务迁移到云平台,对云网络流量进行深入的分析变得至关重要。本文将介绍云网络流量分析的主要过程,以帮助读者更好地理解如何有效地监控和管理云环境中的…

C++笔记之system()用于在Qt中执行系统命令的习惯

C笔记之system()用于在Qt中执行系统命令的习惯 参考博文:qt-C笔记之std::tostring()、.toStdString()、.toLocal8Bit().constData()的使用场景 code review! 文章目录 C笔记之system()用于在Qt中执行系统命令的习惯一.一般我用的int system( const char *command…

Mybatis的插件运⾏原理,如何编写⼀个插件?

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

优化问题笔记(2)

目录 3. 约束优化问题的全局解3.1 凸优化问题3.2 二次优化问题3.3 无约束二次优化问题3.4 一个典型的二次等式约束二次优化问题 Reference 3. 约束优化问题的全局解 3.1 凸优化问题 局部解成为全局解的一类重要的优化问题是所谓凸优化问题. 我们称优化问题 ( f , D ) (f,\ma…

Apache Flume(4):日志文件监控

1 案例说明 企业中应用程序部署后会将日志写入到文件中,可以使用Flume从各个日志文件将日志收集到日志中心以便于查找和分析。 2 使用Exec Soucre Exec Source Exec Source通过指定命令监控文件的变化,加粗属性为必须设置的。 属性名默认值说明chan…

模型部署之模型转换

一、模型转换的意义 模型部署是为了模型能在不同框架间流转。 在实际应用时,模型转换几户都用于工业部署,负责模型从训练框架到部署侧推理框架的连接,这是因为随着深度学习随着深度学习应用和技术的演进,训练框架和推理框架的职…

02什么是CPU上下文切换

上⼀节, 讲了要怎么理解平均负载( Load Average) , 并⽤三个案例展示了不同场景下平均负载升⾼的分析⽅法。 这其中, 多个进程竞争 CPU 就是⼀个经常被我们忽视的问题。 1、CPU上下文切换的概念 我想你⼀定很好奇&am…

LabVIEW在燃气轮机发电机组励磁控制系统测试中的应用

LabVIEW在燃气轮机发电机组励磁控制系统测试中的应用 燃气轮机发电机组作为一种高效可靠的常备应急电源,在保障发电品质稳定性和可靠性方面发挥着关键作用。其中,励磁控制系统是保证供电质量的重要环节,对发电机组的稳定运行至关重要。为了有…

docker在线安装nginx

1、查看所有镜像 1、不带容器卷常规启动nginx,命令如下 docker run --name nginx-test -p 8089:80 -d a6bd71f48f68 2、在宿主机创建/usr/local/data/nginxdocker/目录,在此目录下创建html和logs文件夹,然后将容器内的 nginx.conf 和 html 下…