CLIP——多模态预训练模型介绍

CLIP: Contrastive Language-Image Pre-training

CLIP: 对比语言-图像预训练

CLIP的是由 OpenAI 2021年在 Learning Transferable Visual Models From Natural Language Supervision【利用文本的监督信号训练一个迁移能力强的视觉模型】中提出的一种多模态预训练模型,使用4亿(400M)个图像和文本对数据进行训练,通过对比学习的方式学习图像和文本之间的对齐关系。
在这里插入图片描述



Motivation

简单来说,新增类别还得重新训练标注太麻烦了,能不能一劳永逸?这就是CLIP要解决的问题,预训练模型直接zero-shot。

CLIP模型训练——对比学习

在这里插入图片描述

  • 输入:图像及其配对的文本描述
  • 输出:计算图像和文本描述之间的相似度

对比学习是CLIP模型的核心,它通过比较正样本(匹配的图像-文本对,即图中对角线上N个匹配的图像-文本对)和负样本(不匹配的对,即N^2-N个没有匹配的图像-文本对)来训练模型。这种学习策略使得模型能够学习到图像和文本之间的复杂关系,而不仅仅是简单的特征对应。

CLIP的对比学习框架提高了模型对视觉和语言数据的泛化能力。

CLIP的网络结构

采用双流结构,使用Image Encoder和Text Encoder分别处理图像和文本。

Image EncoderImage Encoder

图像编码器有两种架构,一种是使用 ResNet50 作为基础,并使用ResNetD的改进和抗锯齿rect-2模糊池对原始版本进行了一些修改。此外,还将全局平均池化层替换为注意力池化机制。注意力池化机制是由一个单层的“Transformer”多头QKV注意力实现的,其中Q是基于图像的全局平均池化表示。

第二种是引入Vision Transformer(ViT) 进行实验,仅在transformer之前对 combined patch 和 position embeddings添加了额外的层归一化,并使用略有不同的初始化方案。

【注意】CLIP的Image Encoder学到的不是图像和哪个类别是相关的,而是图像本身的实际信息相关的,即编码出的特征是有实际含义的。

Text Encoder在这里插入图片描述

文本编码器是Transformer架构,并在此基础上根据Radford模型进行了架构修改。作为基础尺寸,使用8个注意头的12层512宽的解码器,参数为63M。对于输入的文本序列,用 [SOS] 和[EOS] 括起来,把 [EOS] 作为整个文本输入的特征代表,将’EOS’的编码后的文本特征进行归一化然后通过线性层映射到多模态空间中。

对比学习 在这里插入图片描述

CLIP模型的损失函数由两部分构成:对比损失和分类损失。

  • 对比损失:通过最大化匹配图像-文本对的相似性,最小化不匹配图像-文本对的相似性来训练模型。
  • 分类损失:用于训练模型对图像和文本进行多任务分类。


CLIP实现——推理

在这里插入图片描述

CLIP模型预训练完成后,CLIP转换为零样本分类器。

zero-shot推理,推理时需要:

  • 一张图像数据
  • 一个训练好的模型
  • 一些提示文本(任意个)

和训练过程类似地,需要图像编码器将给定图像编码为图像特征,文本编码器将待选文本编码为文本特征。推理中使用prompt (提示),使用 “a photo of a {subject}.” 句子模板,将给定的类别分别填入subject作为文本进行编码,并预测CLIP估计的标题类与给定图像的最佳配对。

之所以进行prompt engineering有两个原因
1.一词多义,一个单词可能存在好几种意思,需要上下文信息来猜测这个单词的具体含义。
2.与预训练时的文本输入保持一致。因为在预训练时的输入大多是一句话,为了减小预训练和推理时的输入gap,在预测时输入也是一句话。

句子模板的选择很重要!论文中还对prompt engineering进行了讨论,测试了很多种类的句子模板。

在这里插入图片描述

推理过程中最关键的是,有很高的自由度去设置"多项选择题"。


以往的分类网络
1、类别是固定的。一般最后一层是softmax操作之后的全连接层,如果要更改类别的数量,就需要修改最后一层。
2、预测的内容是固定的,不能超过数据集的类别范围。

CLIP
提供给网络的分类标签可以数量不固定,而且可以是任意内容。如果提供两个标签,就是二分类问题,提供100个标签,就是100分类问题。CLIP摆脱了事先定好的分类标签。


CLIP可以随意进行Zero-Shot推理的一部分原因是因为训练的数据集很大,覆盖了绝大部分的视觉概念,并且文本的冗余信息较少,模型可以较准确的找出与视觉特征相似度较高的文本种类特征从而完成分类。



CLIP伪代码

在这里插入图片描述


CLIP总结

  • CLIP的zero-shot性能虽然和有监督的ResNet50相当,但是还不是SOTA,作者估计要达到SOTA的效果,CLIP还需要增加1000x的计算量,这个硬件条件很难满足。
  • zero-shot CLIP 在某些数据集上表现也并不好,在一些细分类任务上,CLIP 的性能低于 ResNet50。同时 CLIP 也无法处理抽象的概念,也无法做一些更难的任务(如统计某个物体的个数)。作者认为还有很多很多任务,CLIP 的 zero-shot 表现接近于瞎猜。
  • CLIP 虽然泛化能力强,在许多自然图像上还是很稳健的,但是如果在做推理时,这个数据与训练的数据差别非常大,即 out-of-distribution,那么 CLIP 的泛化能力也很差
  • 虽然 CLIP 可以做 zero-shot 的分类任务,但它还是在你给定的这些类别中去做选择。这是一个很大的限制,与一个真正灵活的方法,如 image captioning,直接生成图像的标题,这样的话一切都是模型在处理。 不幸的是,作者发现 image captioning 的 baseline 的计算效率比 CLIP 低得多。一个值得尝试的简单想法是将对比目标函数和生成目标函数联合训练,希望将 CLIP 的高效性和 caption 模型的灵活性结合起来。
  • CLIP 并没有直接优化 few-shot 的性能,有时在下游任务的推理时Few-Shot效果比Zero-Shot效果还要差。在作者的工作中,回到在CLIP特征上拟合线性分类器。 当从 zero-shot 转换到设置 few-shot 时,当 one-shot、two-shot、four-shot 时反而不如 zero-shot,不提供训练样本时反而比提供少量训练样本时差了。

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

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

相关文章

PN8036非隔离DIP7直插12V500MA开关电源芯片

PN8036宽输出范围非隔离交直流转换芯片 ,集成PFM控制器及650V高雪崩能力智能功率MOSFET,用于外围元器件极精简的小功率非隔离开关电源。PN8036内置650V高压启动模块,实现系统快速启动、超低待机功能。该芯片提供了完整的智能化保护功能&#…

提升邮件营销设计精准度秘诀,效率与效果实践

邮件营销通过确定目标群体、数据分析、邮件设计、测试优化、保持频率时效性及结合其他渠道实现精准营销,提高市场效益。ZohoCampaigns集成CRM、自动化功能和客户细分提升效果。 1、确定目标群体 精准营销的第一步是了解并确定你的目标群体。标定目标群体包括年龄、…

前端必知必会-Bootstrap 5 工具提示Tooltip

文章目录 Bootstrap 5 工具提示如何创建工具提示定位工具提示 总结 Bootstrap 5 工具提示 工具提示组件是一个小的弹出框,当用户将鼠标指针移到元素上时会出现: 如何创建工具提示 要创建工具提示,请将 data-bs-toggle“tooltip” 属性添加…

xss-labs靶场第六关测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、注入点寻找 2、使用hackbar进行payload测试 3、绕过结果 四、源代码分析 五、结论 一、测试环境 1、系统环境 渗透机:本机(127.0.0.1) 靶 机:本机(127.0.0.…

jupyterlab的安装与使用攻略/包括汉化方法

官网链接 Project Jupyter | Home 1.第一步安装 打开控制台 使用pip工具安装 pip install jupyterlab 如图 2.安装成功后启动 jupyter lab 会自动启动它的web页面 然后就可以正常使用咯!! 如果需要更换浏览器访问 新开控制台执行下面命令 jupy…

C++面向对象多态篇

目录 1. 什么是多态? 2. 多态的概念 3. 函数覆盖 4. 虚函数的定义 5. 多态实现 6. 多态的原理 7. 虚析构函数(掌握) 8. 类型转换 8.1 static_cast 8.2 dynamic_cast 8.3 const_cast(了解) 8.4 reinterpret…

3D打印矫形器市场报告:未来几年年复合增长率CAGR为10.8%

3D 打印矫形器是指使用 3D 打印技术制作的定制外部支撑装置。它们有助于稳定、引导、缓解或纠正肌肉骨骼状况,并根据个体患者的解剖结构进行设计,通常使用 3D 扫描和建模技术。3D 打印在矫形器方面的主要优势是能够生产精确适合患者解剖结构的定制装置&a…

sherpa-ncnn 语言模型简单对比

在昨天把系统搞崩溃前,对sherpa-ncnn的中文模型做了一个简单的对比。这次使用的分别是sherpa-ncnn-streaming-zipformer-bilingual-zh-en-2023-02-13(以下简称bilingual-zh-en-2023-02-13)和sherpa-ncnn-streaming-zipformer-small-bilingual…

STM32学习--5-1 对射式红外传感器计次

接线图 原理图: CountSensor.c #include "stm32f10x.h" // Device headeruint16_t CountSensor_Count;void CountSensor_Init(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); // 开启APB2Periph外设GPIOB时钟RCC_APB2Pe…

生产报工信息化全流程大讲解

在企业的生产管理中,生产报工是一个关键环节,但传统的生产报工方式存在诸多痛点,制约了企业的发展。随着数字化技术的发展,多个平台为企业提供了有效的解决方案。基于生产报工信息化方案报告》白皮书,本文深入探讨生产…

复位电路的亚稳态

复位导致亚稳态的概念: 同步电路中,输入数据需要与时钟满足setup time和hold time才能进行数据的正常传输(数据在这个时间段内必须保持不变:1不能变为0,0也不能变为1),防止亚稳态; …

ZStack ZROP首个商用版本发布,打造云的可持续发展框架

经过长时间的研发和测试,ZStack ZROP IT服务中台V4.2.0版本正式发布。ZROP 是针对ZStack全系列产品运营、运维、一体化的自研平台。作为第一个商用版本,ZROP V4.2.0支持包含ZStack Cloud、ZStack Cube、ZStack ZStone、ZStack Zaku、ZStack Edge、ZStack…

【隐私计算篇】使用GPU加速计算联邦学习XGBOOST算法以及对NVIDIA FLARE(NVIDIA 联邦学习应用运行环境)的介绍

1. 背景介绍 借着最近在搞GPU相关的项目契机,来介绍一下英伟达Nvidia FLARE项目【1】,并且利用GPU硬件来加速联邦学习XGBOOST算法。感觉开源的机器学习、深度学习已经开始出现拥抱隐私计算的趋势,比如近期我正在关注Andrew Ng的联邦学习用…

C语言 | 第十六章 | 共用体 家庭收支软件-1

P 151 结构体定义三种形式 2023/3/15 一、创建结构体和结构体变量 方式1-先定义结构体,然后再创建结构体变量。 struct Stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在学习小组 float score; //成绩 }; struct Stu stu1, stu2; //…

STM32学习--5-2 旋转编码器计次

接线图 按键按下,旋转编码器输出低电平 Encoder.c #include "stm32f10x.h" // Device headerint16_t Encoder_Count; void Encoder_init(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); // 开启APB2Periph外设GPIOB时钟…

【寻找one piece的算法之路】前缀和(一)

💐个人主页:初晴~ 📚相关专栏:寻找one piece的刷题之路 什么是前缀和? 主要是通过预先计算数组或矩阵的前缀和,来快速查询子数组或子矩阵的和。这种算法可以用空间换时间,提高查询效率。 概念…

leetcode 3217 从链表中移除在数组中的结点

1.题目要求: 给你一个整数数组 nums 和一个链表的头节点 head。从链表中移除所有存在于 nums 中的节点后,返回修改后的链表的头节点。 示例 1: 输入: nums [1,2,3], head [1,2,3,4,5] 输出: [4,5] 解释: 移除数值…

PCL点云处理之求法向量

求法向量干什么?将点渲染成面 1、一个点垂直于一个曲线的切线叫法线 2、在点云中取一块区域,用最小二乘将区域中的点云拟合成一个面(贴合在曲面上的一个切面)在相近的区域计算出n个这样的面,用这个面求出法向量&#…

最新开源:智源BGE登顶Hugging Face月度榜!北大快手开源Pyramid Flow!Rhymes AI发布首款开源多模态AI模型Aria!

文章目录 1. 国产AI模型登顶全球TOP 1!智源BGE下载破亿成Hugging Face月榜冠军2. 北大&快手开源视频生成模型Pyramid Flow,1分钟生成5秒视频3. Rhymes AI发布首款开源多模态AI模型Aria,性能超越GPT-4o mini4. Mistral AI发布 Pixtral-12B…

华为 静态路由和bfd 侦测的实验

实验要求 sw1 上业务地址192.168.1.1/24 SW3 业务地址192.168.2.1/24 正常情况下走主链路,不正常的情况下走备份链路 2 配置 这是基本地址配置 开启了bfd 本端地址为 10.1.1.1 对端地址是10.1.1.2 关键是discrimination 分辨参数 …