当前位置: 首页 > news >正文

AAAI 2024 | Adobe提出全新上下文提示学习框架CoPL,高效提升下游性能

4371db3d3c4840ec870827d18c37aa3c.png

 

论文题目:CoPL: Contextual Prompt Learning for Vision-Language Understanding
论文链接:https://arxiv.org/abs/2307.00910

提示学习(Prompt Learning)在近几年的快速发展,激活了以Transformer为基础的大型语言模型(LLM)的性能涌现。这一技术范式迅速在多模态学习等领域进行迁移,例如在CLIP跨模态对齐模型中加入可学习的Prompt,就可以在多种下游任务展现出通用性能,且具有一定的泛化能力。但这种简单的提示方法仍具有局限性,主要分为两个方面,其一是使用全局视觉特征作为提示输入可能会导致模型缺乏关注图像中前景对象的注意力能力。此外,在将提示送入到下游模块时,现有的方法对所有提示设置的权重完全相同,直观上思考,应该根据不同输入图像的内容来重新调整这一权重。

基于这两方面的局限,本文介绍一篇发表在人工智能顶级会议AAAI 2024上的文章,本文提出了一种称为上下文提示学习(Contextual Prompt Learning)的框架CoPL,CoPL可以更精确的实现提示信息与图像局部特征的对齐,为了使学习到的提示能够更好的适应到不同的下游任务中,作者设计了一种动态提示机制,从提取图像上下文特征的角度来对提示进行加权处理。本文的实验在包含few-shot和out-of-distribution等多种任务设置上进行,实验结果表明,CoPL在多模态提示学习领域已达SOTA性能。

01. 引言

传统的视觉分类任务通常需要在包含大规模类别的数据集上进行训练,例如ImageNet和OpenImages等。但是当模型在遇到一些训练分布之外的特殊图像时,就无法做出合理的预测,这种方法因为缺乏泛化性一直被学术界所诟病。研究人员开始探索如何将特定领域的知识注入到已有的模型中,使其具有一定的扩展能力。CoOp[1]方法是这一领域的先行工作,其通过引入NLP领域中提示学习的思想,通过训练可学习的提示向量来保留句子和标签之间的语义关系。但后来的一些工作指出,基于CoOp的方法具有灾难性知识遗忘的特点,同时仅采用模型的全局特征来生成提示,提示无法很好的适应到特定的下游任务中。

0f45b6bad60e4a9499f61b239c1a1a78.png

 

本文首先分析了现有框架的缺陷,相应的提出了一种上下文提示学习的改进框架CoPL,CoPL的关键思想是将提示与局部图像上下文进行对齐,如果仅使用全局特征,模型在很多few-shot和分布外的测试样本上很容易受到噪声的影响。如上图所示,CoPL首先确定图像局部上下文与哪些提示在语义上更相关,然后计算得到更合适的提示权重,通过拟合上下文信息到提示中,CoPL产生的特征会具有更强的鲁棒性和通用性

02. 本文方法

2.1 原始CLIP模型

2.2 CoOp和CoCoOp

2.3 上下文提示学习CoPL

虽然CoCoOp相比CoOp在性能方面已经获得了较大的提升,但其仍有很大的改进空间,由于 CoCoOp 使用全局特征向量来更新提示向量,因此其很难关注到图像中的局部感兴趣区域。此外,在将meta-net生成的条件向量附加到提示向量上时,CoCoOp没有体现不同区域的提示重要性。为了解决这些问题,本文提出了一种CoPL方法,CoPL方法的整体框架如下图所示。

2726049a9c624daeb41a3c85a78a027e.png

03. 实验效果

本文的实验在11个不同复杂度的图像分类数据集上进行,这些数据集主要包含通用分类数据集,例如ImageNet和Caltech-101,以及细粒度类别数据集:OxfordPets、StanfordCars、Flowers102、Food101和 FGVCAircraft。还有一些特殊领域中的标准数据集,例如场景识别、动作分类、纹理和卫星图像识别数据集。作者也选取了一些常见的CoOp变体方法作为baseline对比方法,包括CoCoOp、KgCoOp和ProGrad等。

7a6ea19c04dd4c25ab1acea89088f72a.png

 

上表展示了本文方法在上述几种数据集上的性能表现,本文作者提到,CoOp方法的主要缺点之一是其在训练分布之外的样本上表现不佳,无法很好的泛化到一些unseeen的类别上。本文的方法对这一方面进行了改进,如上表所示,CoPL在绝大多数数据集上的unseen子集上均获得了更好的分类精度。此外,我们还可以观察到,CoOp方法相比原始的CLIP方法性能有所下降,这也证明了其具有灾难性遗忘的问题

aec3492aeeb24d179fe1df1b72698e39.png

 

此外,作者在上图中进一步分析了本文提出的CoPL相比CoOp和CoCoOp方法在unseeen类别上的性能提升效果。可以看到,在行为识别数据集UCF101上,CoPL实现了将近20.6%的性能增益,而在其他语义信息较少的数据集,例如纹理数据集等,CoPL也可以得到一定的性能增益,这表明本文方法的出发点是正确的,通过对图像局部区域的注意力特征进行上下文建模,可以使得到的动态提示向量包含更多与下游任务相关的语义信息

b00edea5a49a46eabbf8f1be7967ad69.png

 

除了常规分类任务之外,本文作者还重点探索了本文方法在零样本(zero-shot)分类任务上的性能,如上表所示,首先将实验方法在简单的Caltech101数据集上进行训练,随后测试其在其他数据集上的性能,以评估方法的零样本迁移能力。从上表中可以看出,CoPL方法在大多数数据集上的表现都优于CoCoOp。虽然Caltech101是通用对象分类数据集,但是CoPL仍然能够将知识迁移到DTD数据集上来执行纹理识别任务

04. 总结

本文作者首先对现有基于提示的图像分类方法的缺陷进行了分析,即这些方法无法很好的关注到图像的局部关键信息。本文提出另一种全新的多模态提示学习方法CoPL,CoPL通过动态学习提示权重并将生成的提示向量与局部图像进行特征对齐来解决上述问题。作者通过在包含11个不同的数据集和场景中进行了完整的视觉分类实验,包括zero-shot、few-shot等不同的实验设置。实验结果表明,经过CoPL方法处理后的多模态对齐特征,具有良好的下游任务适应能力。

参考

[1] Zhou, K.; Yang, J.; Loy, C. C.; and Liu, Z. 2022b. Learning to Prompt for Vision-Language Models. Int. J. Comput. Vis., 130(9): 2337–2348.

[2] Zhou, K.; Yang, J.; Loy, C. C.; and Liu, Z. 2022a. Conditional Prompt Learning for Vision-Language Models. In CVPR.


关于TechBeat人工智能社区

TechBeat(www.techbeat.net)隶属于将门创投,是一个荟聚全球华人AI精英的成长社区。

我们希望为AI人才打造更专业的服务和体验,加速并陪伴其学习成长。

期待这里可以成为你学习AI前沿知识的高地,分享自己最新工作的沃土,在AI进阶之路上的升级打怪的根据地!

更多详细介绍>>TechBeat,一个荟聚全球华人AI精英的学习成长社区 

相关文章:

AAAI 2024 | Adobe提出全新上下文提示学习框架CoPL,高效提升下游性能

论文题目:CoPL: Contextual Prompt Learning for Vision-Language Understanding 论文链接:https://arxiv.org/abs/2307.00910 提示学习(Prompt Learning)在近几年的快速发展,激活了以Transformer为基础的大型语言模型…...

Arcgis使用过程中常见问题解决方法

Arcgis无法连接数据库/数据库连接或创建失败解决方法 最近在使用arcgis过程中出现无法连接数据库或者是无法创建数据库。连接到数据库失败;无法创建新的数据库,权限被拒绝(如下图)。 出现这个原因是你所用的电脑系统文件dao360.…...

office文件转pdf在线预览

一、工具类 package com.sby.utils;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.math.RoundingMode; import java.text.DecimalFormat; import java.util.Locale;import com.aspose.cel…...

设计模式2-对象池模式

对象池模式,Object Pool Pattern,当你的应用程序需要频繁创建和销毁某种资源(比如数据库连接、线程、socket连接等)时,Object Pool 设计模式就变得很有用。它通过预先创建一组对象并将它们保存在池中,以便在…...

Oracle笔记-为表空间新增磁盘(ORA-01691)

如下报错: 原因是Oracle表空间满了,最好是新增一个存储盘。 #查XXX命名空间目前占用了多大的空间 select FILE_NAME,BYTES/1024/1024 from dba_data_files where tablespace_name XXXX #这里的FILE_NAME能查到DBF的存储位置#将对应的datafile设置为30g…...

【专业技术】高效并行分布式深度学习策略,助力模型训练与量化

尊敬的客户,您好!我们是一家专注于提供高效深度学习解决方案的专业团队,为您提供并行分布式策略、高效精调策略、大模型无损量化和高性能推理服务。 我们的服务包括: 并行分布式策略:我们的Trainer封装支持多种并行配…...

力扣-137. 只出现一次的数字 II

文章目录 力扣题目代码 力扣题目 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 示例 1:…...

Rust 格式化输出

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、format! 宏二、fmt::Debug三、fmt::Display四、? 操作符 循环打印 前言 Rust学习系列-本文根据教程学习Rust的格式化输出,包括fmt::Debug&…...

c#进程(Process)常用方法

在C#中,Process类提供了一系列用于操作进程的常用方法,以下是其中一些常用的方法: Start():启动一个新的进程。 Process.Start("notepad.exe");Kill():终止进程。 Process.GetProcessesByName("note…...

Vue源码系列讲解——虚拟DOM篇【三】(更新子节点)

1. 前言 在上一篇文章中,我们了解了Vue中的patch过程,即DOM-Diff算法。并且知道了在patch过程中基本会干三件事,分别是:创建节点,删除节点和更新节点。创建节点和删除节点都比较简单,而更新节点因为要处理…...

一个设备内存2M,一个1G大小的文件,这个文件有若干行,输出其中的带有hello的行以及行数

第一种 linux上的awk命令: awk {if($1 "113.111.211.224"){print $0}} temp.log 第二种:PHP程序yield ,和awk这个命令用的时间差不多一样,效率是很高的 $file __DIR__."/temp.log";foreach(readfilecong…...

json模块(高维数据的存储与读取)

json模块是 Python 标准库中的一个模块,用于处理 JSON(JavaScript Object Notation)格式的数据。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。模块提供了在 Python 中进行 JSON 编码&…...

ONLYOFFICE文档8.0新功能浅探

ONLYOFFICE文档8.0新功能浅探 上个月末这个月初的几天,ONLYOFFICE版本更新了!更新到了一个比较整的大的版本号,8.0版本,看来这个生产力工具的升级速度基本上能保持每年两个版本号的速度,还是很快的,一般来…...

在vscode 中配置 pyside6 环境

在vscode中编写pyside环境配置 start 记录一下在 vscode 中编写 pyside6 程序,环境如何配置。 前提 请自行安装好 python。请自行安装好 vscode。安装 vscode 插件 Python,PYQT Integration。 配置环境 1.借助 pip 安装我们的pyside6 pip install…...

C语言:月份缩写

题目描述 从一月份到十二月的英文全称依次是:“January”,“February”,“March”,“April”,“May”,“June”,“July”,“August”,“September”,“October”,“November”,“December” 对应的缩写依次是:“Jan.”,“Feb.”,“Mar.”,“Apr.”,“Ma…...

线阵相机系列-- 1. 什么是线阵相机

线阵相机的概念 根据工业相机像素排列方式的不同,分为面阵相机和线阵相机。面阵相机的像素排列为一个完整的面,一次获取整幅二维图像,而线阵相机的像素以一条线排列,每次得到的图像呈现出一条线,通过设置扫描频率以及…...

CISCRISC? CPU架构有哪些? x86 ARM?

编者按:鉴于笔者水平有限,文中难免有不当之处,还请各位读者海涵。 是为序 我猜,常年混迹CSDN的同学应该不会没听说过CPU吧? 但你真的了解CPU吗?那笔者问你CPU有哪些架构呢? 如果你对你的答案…...

【C语言】(15)指针进阶

1. 指针与const 在C语言中,const关键字和指针一起使用时,可以创建对常量的引用,或者创建指向常量的指针。这对于保护重要数据不被意外修改以及提高程序的可读性和运行时的安全性非常有用。 1.1 const的基本用法 const关键字用于声明一个变…...

力扣精选算法100道—— 连续数组(前缀和专题)

连续数组&#xff08;前缀和专题&#xff09; 目录 &#x1f6a9;了解题意 &#x1f6a9;算法原理 ❗为什么hash设置成<0,-1>键值对 ❗与和为K的子数组比较hash的键值对 &#x1f6a9;代码实现 &#x1f6a9;了解题意 我们看到给定数组里面只有0和1&#xff0c;我们…...

flutter 国内源

Flutter 在中国由于网络原因&#xff0c;从官方默认的国外源下载Dart包和Flutter SDK可能会比较慢或者不稳定。为了加速依赖包的获取与Flutter SDK的安装&#xff0c;可以使用国内镜像源。以下是一些国内常用的Flutter和Dart包镜像源&#xff1a; 清华大学开源软件镜像站 Flu…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...