【prompt五】CoCoOP:Conditional Prompt Learning for Vision-Language Models

motivation

随着像CLIP这样强大的预训练视觉语言模型的兴起,研究如何使这些模型适应下游数据集变得至关重要。最近提出的一种名为上下文优化(CoOp)的方法将提示学习(nlp的最新趋势)的概念引入视觉领域,以适应预训练的视觉语言模型。具体来说,CoOp将提示中的上下文单词转换为一组可学习的向量,并且仅使用少量标记的图像进行学习,可以实现比密集调整的手动提示的巨大改进。在我们的研究中发现了CoOp的一个关键问题:学习到的上下文不能推广到同一数据集中更广泛的未见类,这表明CoOp过拟合了训练期间观察到的基本类。为了解决这个问题,我们提出了条件上下文优化(CoCoOp),它通过进一步学习一个轻量级神经网络来为每个图像生成一个输入条件令牌(向量)来扩展CoOp。与CoOp的静态提示相比,我们的动态提示适应每个实例,因此对类转移不那么敏感。大量实验表明,CoOp对未见类的泛化效果比CoOp好得多,甚至显示出超越单个数据集的有希望的可转移性;并且产生了更强的领域泛化性能。

1.introduce

最近在大规模视觉语言预训练方面的研究在zero-shot图像识别方面取得了惊人的成绩,表明了这种范式在学习开放世界视觉概念方面的潜力。设计的关键在于如何对视觉概念进行建模。

在传统的监督学习中,标签是离散化的,每个类别都与一个随机初始化的权重向量相关联,该权重向量被学习以最小化与包含相同类别的图像的距离。这种学习方法侧重于闭集视觉概念,将模型限制在预定义的类别列表中,并且在训练过程中看不到的新类别时无法扩展。

相比之下,对于CLIP[40]和ALIGN[24]等视觉语言模型,分类权值是由参数化文本编码器(例如Transformer)通过提示直接生成的。例如,为了区分包含不同品种的狗和猫的宠物图像,可以采用“a photo of a {class}, a type of pet”这样的提示模板作为文本编码器的输入,通过用真实的类名填充“{class}”标记,就可以合成分类的类特定权重。与离散标签相比,视觉语言模型的监督来源来自自然语言,这允许对开放集视觉概念进行广泛的探索,并已被证明在学习可转移表征方面是有效的。

上下文优化(CoOp),利用神经网络的可微特性,将提示中的上下文词转化为一组可学习的向量。

CoOp仅使用少量标记图像进行学习,在广泛的图像识别数据集上实现了比密集调整的手动提示的巨大改进。

在我们的研究中发现了CoOp的一个关键问题:学习的上下文不能推广到同一任务中更广泛的未见类。图1说明了这个问题:CoOp学习的上下文在区分“到达门”和“大教堂”等基本类方面工作得很好,但是当它被转移到新的(看不见的)类(如“风力发电场”和“火车铁路”)时,准确性会显著下降——即使任务的性质保持不变,即识别场景。结果表明,学习到的上下文过度拟合基类,因此未能捕获对更广泛的场景识别至关重要的更一般化的元素。我们认为这样的问题是由CoOp的静态设计引起的:上下文,一旦学习就固定了,只针对一组特定的(training)类进行优化。相反,zero-shot法采用的手动设计提示符具有相对的通用性。

为了解决弱泛化问题,引入了一个新的概念:条件提示学习。关键思想是使提示取决于每个输入实例(图像

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

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

相关文章

【数据库-黑马笔记】基础-SQL

本文参考b站黑马数据库视频,总结详细全面的笔记 ,可结合视频观看1~23集 MYSQL 的基础知识框架如下 一、MYSQL概述 1、数据库相关概念 2、MYSQL的安装及启动 下载过程请自行观看黑马视频进行下载 下面说明启动和停止方式: ①、win+r 然后输入services.msc 然后在打开…

vue实现xml,sql,JSON自动格式化高亮

实现xml&#xff0c;json&#xff0c;sql代码组件格式化高亮&#xff1a; 需要下载的依赖&#xff1a; <template><div class"box"><div class"top" v-if"flag"><span class"text">Theme:</span><…

Vue 3的Composition API和vue2的不同之处

Vue 3的Composition API是Vue.js框架的一个重要更新&#xff0c;它提供了一种新的组件逻辑组织和复用方式。在Vue 2中&#xff0c;我们通常使用Options API&#xff08;data、methods、computed等&#xff09;来组织组件的逻辑&#xff0c;但这种组织方式在处理复杂组件时可能会…

springboot-异步、定时、邮件任务

一、异步任务 1、创建项目 2、创建一个service包 3、创建一个类AsyncService 异步处理还是非常常用的&#xff0c;比如我们在网站上发送邮件&#xff0c;后台会去发送邮件&#xff0c;此时前台会造成响应不动&#xff0c;直到邮件发送完毕&#xff0c;响应才会成功&#xff…

Arduino串口控制舵机机械臂

Arduino nano作为主控板&#xff0c;控制由四个SG90舵机组成的机械臂&#xff0c;原先想着用四个电位计控制舵机转动&#xff0c;结果舵机一直抖动&#xff0c;索性就使用串口类似at指令控制舵机转动。使用的串口中断&#xff0c;通信的数据也是 字母数字 的格式&#xff0c;字…

AI大模型的预训练、迁移和中间件编程

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

Docker部署前后端服务示例

使用Docker部署js前端 1.创建Dockerfile 在项目跟目录下创建Dockerfile文件&#xff1a; # 使用nginx作为基础镜像 FROM nginx:1.19.1# 指定工作空间 WORKDIR /data/web# 将 yarn build 打包后的build文件夹添加到工作空间 ADD build build# 将项目必要文件添加到工作空间&a…

Linux中汇编语言的学习(加法、乘法、除法、左移、右移、按位与等多种命令操作实例以及ARM的 N、Z、C、V 标志位的解释)

汇编概述 汇编需要学习的大致框架如下&#xff1a; 汇编中的符号 1.指令&#xff1b;能够北嘁肷梢惶?2bit机器码&#xff0c;并且能够被cpui识别和执行 2.伪指令&#xff1a;本身不是指令&#xff0c;编译器可以将其替换成若干条指令 3.伪操作&#xff1a;不会生成指令…

JAVA如何利用接口实现多继承问题

hello&#xff0c;上文带大家学习了java中类的继承&#xff0c;我们可以创建一个父类&#xff0c;将类中的共性抽取出来&#xff0c;通过子类继承的方式来实现代码的复用。今天带大家学习不同类之间的另外几种关系&#xff0c;即多态抽象类和接口。 多态的概念 多态&#xff0c…

TinyEMU编译与使用(一)

TinyEMU编译与使用&#xff08;一&#xff09; 1 介绍2 准备工作3 编译TinyEMU3.1 安装依赖库3.2 编译 4 运行TinyEMU4.1 在线运行4.2 离线运行 5 共享目录5.1 修改root_9p-riscv64.cfg5.2 启动TinyEMU5.3 执行挂载命令 6 TinyEMU命令帮助 1 介绍 原名为riscvemu&#xff0c;于…

可持久化数据结构

可持久化数据结构必须满足在操作过程中数据结构本身的拓扑结构不变&#xff0c;可以用来存下数据结构的所有历史版本。 核心思想&#xff1a;只记录每一个版本与前一个版本不一样的地方。 这里我们讨论两种数据结构的可持久化——trie和线段树。 Trie的可持久化 由于之前没…

02. Nginx入门-Nginx安装

Nginx安装 yum安装 编辑yum环境 cat > /etc/yum.repos.d/nginx.repo << EOF [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://nginx.org/keys/nginx_signing.key module_…