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

本文主要是介绍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,高效提升下游性能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/694579

相关文章

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

使用Python实现高效的端口扫描器

《使用Python实现高效的端口扫描器》在网络安全领域,端口扫描是一项基本而重要的技能,通过端口扫描,可以发现目标主机上开放的服务和端口,这对于安全评估、渗透测试等有着不可忽视的作用,本文将介绍如何使... 目录1. 端口扫描的基本原理2. 使用python实现端口扫描2.1 安装必要的库2.2 编写端口扫

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI