【提示学习论文六】MaPLe: Multi-modal Prompt Learning论文原理

news2024/11/16 12:26:48

文章目录

  • MaPLe: Multi-modal Prompt Learning 多模式提示学习
  • 文章介绍
  • 动机
  • MaPLe:Multi-modal Prompt Learning 模型结构
    • 1、Deep Language Prompting 深度语言提示
    • 2、Deep Vision Prompting 深度视觉提示
    • 3、Vision Language Prompt Coupling 视觉语言提示耦合
      • 提示耦合过程
  • 实验
    • 1、通过V-L prompts prompting CLIP
    • 2、基类到新类的泛化
    • 3、跨数据集评估
    • 4、域泛化
    • 5、消融实验
  • 总结

MaPLe: Multi-modal Prompt Learning 多模式提示学习

文章介绍

  • 这篇文章于2023年发表在CVPR(Conference on Computer Vision and Pattern Recognition),作者是Muhammad Uzair Khattak,Hanoona Rasheed,Muhammad Maaz,Salman Khan,Fahad Shahbaz Khan。
  • 研究发现Clip的问题:在单个分支(语言或视觉)中使用prompt来调整表示是次优的,它不能在下游任务上灵活地动态调整两个表示空间。
  • 作者提出了针对视觉和语言分支的多模态提示学习(MaPLe),以改善视觉和语言表征之间的一致性。
  • 与CoCoOp方法相比更好。

动机

在这里插入图片描述

作者认为,Clip中只有文本编码器学习prompt,不足以对图像编码器所需的适应进行建模,因此着手基于多模态提示学习(MaPLe)来充分微调文本和图像编码器表示。

MaPLe:Multi-modal Prompt Learning 模型结构

在这里插入图片描述

  • 这是第一个用于微调CLIP的多模式提示方法。
  • 多模态提示是在视觉和语言分支的多个转换块中学习的,以逐步学习两种模态的协同行为。
  • 提出了耦合函数,将文本和图像编码器中的提示学习联系起来,作为两种模式之间的桥梁,允许梯度的相互传播,以促进协同作用。
  • 在视觉和语言分支的前 J J J 层( J J J < K K K )引入 learnable token。
text encoder文本编码器image encoder图像编码器
W i W_i Wiword embeddings E i E_i Eiimage embeddings
L i L_i Li某层transformer V i V_i Vi某层transformer
P i P_i Pi提示 P i P_i Pi提示
c i c_i ciclass(CLS) tokens

1、Deep Language Prompting 深度语言提示

  • 作者在 text encoder 的 J J J 层各引入了 b b b 个learnable tokens : { P i ∈ R d l {P_i \in \mathbb{R}}^{d_{l}} PiRdl} i = 1 b _{i=1}^b i=1b

  • 输入: [ P 1 , P 2 , … , P b , W 0 ] [P_1, P_2, \ldots , P_b, W_0] [P1,P2,,Pb,W0]

  • J J J:提示tokens被引入到每一层 L i L_i Li,与 W i W_i Wi 进行连接,这里的 [ ⋅ , ⋅ ] [ \cdot, \cdot] [,] 是指连接操作。(包括第 J J J 层)

[ − , W i ] = L i ( [ P i − 1 , W i − 1 ] )   i = 1 , 2 , … , J (1) \left[ -, W_i \right] = L_i \left( \left[P_{i-1}, W_{i-1}\right] \right) \text { } i = 1, 2, \ldots, J \quad \tag{1} [,Wi]=Li([Pi1,Wi1]) i=1,2,,J(1)

  • J J J没有额外的提示输入,而是处理前一层的prompt,通过自注意力机制和前馈神经网络来处理文本数据,计算最后的文本表示 z z z

[ P j , W j ] = L j ( [ P j − 1 , W j − 1 ] )   j = J + 1 , … , K (2) [P_j, W_j] = L_j \left( \left[P_{j-1}, W_{j-1}\right] \right) \text { } j = J + 1, \ldots, K \quad \tag{2} [Pj,Wj]=Lj([Pj1,Wj1]) j=J+1,,K(2)
z = TextProj ( w N K ) (3) z = \text{TextProj} \left(w_{N_K}\right) \quad \tag{3} z=TextProj(wNK)(3)

  • J = 1 J = 1 J=1提示 P P P 只应用于第一个Transformer层的输入,此时深度语言提示技术退化为CoOp

2、Deep Vision Prompting 深度视觉提示

  • 类似于深度语言提示,在 text encoder 的 J J J 层各引入了 b b b 个learnable tokens : { P i ~ ∈ R d v {\tilde{P_i} \in \mathbb{R}}^{d_{v}} Pi~Rdv} i = 1 b _{i=1}^b i=1b
  • J J J
    [ c i , E i ] = V i ( [ c i − 1 , E i − 1 , P ~ i − 1 ] )   i = 1 , 2 , … , J [c_i, E_i] = V_i([c_{i-1}, E_{i-1}, \tilde{P}_{i-1}]) \quad \text { } i = 1, 2, \ldots, J [ci,Ei]=Vi([ci1,Ei1,P~i1]) i=1,2,,J
  • J J J
    [ c j , E j , P ~ j ] = V j ( [ c j − 1 , E j − 1 , P ~ j − 1 ] )   j = J + 1 , … , K [c_j, E_j, \tilde{P}_j] = V_j([c_{j-1}, E_{j-1}, \tilde{P}_{j-1}]) \quad \text{ } j = J + 1, \ldots, K [cj,Ej,P~j]=Vj([cj1,Ej1,P~j1]) j=J+1,,K
    x = ImageProj ( c K ) x = \text{ImageProj}(c_K) x=ImageProj(cK)

3、Vision Language Prompt Coupling 视觉语言提示耦合

共享提示在两种模态之间建立联系,语言提示被引入到语言分支中的J层Transformer块中,而视觉提示通过视觉到语言的投影函数从语言提示中获得

在这里插入图片描述

  • independent V-L Prompting:独立V-L提示
  • 通过投影函数 F ( ⋅ ) F(\cdot) F()将语言提示 P i P_i Pi 映射到视觉提示 P i ~ \tilde{P_i} Pi~
  • F i F_i Fi是一个线性层,这个映射操作是一个从 d l dl dl 维到 d v dv dv 维的线性变换

提示耦合过程

  • 提示过程使用投影函数 F ( ⋅ ) F(\cdot) F() 在前 J J J 个transformer块中进行
  • 语言分支:通过 F i F_i Fi P i P_i Pi 进行映射,得到了 P i ~ \tilde{P_i} Pi~
  • 视觉分支:通过引入了调整后的视觉提示 P i ~ \tilde{P_i} Pi~,保持了分支之间的协同作用。

实验

1、通过V-L prompts prompting CLIP

在这里插入图片描述

  • shallow MaPLe(第1行)在泛化方面提供了对CoOp和Co-CoOp的持续改进。
  • 深度语言提示(第3行)比深度视觉提示(第2行)有所改善,表明在语言分支学习的提示能更好地适应CLIP。
  • 虽然单独结合上述两种方法(第4行)进一步提高了性能,但它很难从语言和视觉分支中获得综合效益。
  • MaPLe与深度提示(第4行)结合了提示在两个分支中的好处,通过在语言提示上执行视觉提示的显式条件反射来强制交互。它提供了新类和基类准确度的改进,导致最佳HM为78.55%。

2、基类到新类的泛化

在这里插入图片描述

  • 给出了MaPLe在11个识别数据集上从基类到新类的泛化设置下的性能。
  • 与最先进的Co-CoOp相比,MaPLe在所有11个数据集上的基本类和新类性能都有所提高,只有Caltech101的基本类性能略有下降。
  • 与CLIP相比,Co-CoOp仅在4/11数据集上有所提高,平均新分类准确率从74.22%降至71.69%。
  • MaPLe是一个强大的竞争对手,它在6/11数据集上的新类别上提高了CLIP的准确性,平均增益从74.22%提高到75.14%。

3、跨数据集评估

在这里插入图片描述

我们通过在所有1000个ImageNet类上学习多模态提示,然后直接将其转移到剩余的10个数据集上,来测试MaPLe的跨数据集泛化能力。MaPLe表现出有竞争力的性能,平均准确率最高,为66.30%。

4、域泛化

在这里插入图片描述
评估了ImageNet训练模型对各种域外数据集的直接可移植性,并观察到,与表5所示的所有现有方法相比,它持续提升。

5、消融实验

在这里插入图片描述

  • Prompt Depth(左):深度J对语言和视觉分支深度的影响
    MaPLe在深度为 9 时实现了最大性能
  • Prompt Length(右):提示符长度对MaPLe的影响
    随着提示符长度的增加,基类上的性能一般保持不变,而新类的准确率则下降。这表明过拟合本质上损害了对新类别的泛化。
    在这里插入图片描述
  • Effectiveness of Multi-modal Prompting:多模式提示的有效性

在这里插入图片描述

  • Prompting complexity:提示复杂度
    MaPLe提供了更好的推理和训练速度,MaPLe†的参数比MaPLe小约9倍,MaPLe†对所有层prompt使用统一的V-L耦合函数,比MaPLe少约9倍的参数,但性能差异不大。

总结

大规模V-L模型(例如CLIP)对下游任务的适应是一个具有挑战性的问题,因为大量的可调参数和有限的下游数据集大小。提示学习是一种高效且可扩展的技术,可以根据新的下游任务定制V-L模型。为此,目前的提示学习方法要么只考虑视觉方面的提示,要么只考虑语言方面的提示。我们的工作表明,对视觉和语言分支进行提示是至关重要的,以使V-L模型适当地适应下游任务。此外,我们提出了一种策略,通过在不同的transformer阶段将视觉提示明确地限制在文本提示上,来确保视觉语言模式之间的协同作用。我们的方法提高了对新类别、跨数据集迁移和具有域迁移的数据集的泛化能力。

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

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

相关文章

xtu oj 1520 方程组

题目描述 求 &#xff0c;其中x≤y 的整数解。 输入格式 第一行是一个整数T (1≤T≤1000)&#xff0c;表示样例的个数。 第二行是两个整数n, n∈[−109,109]和m, m∈[0,109]。 输出格式 依次输出一个样例的结果。 输出一行&#xff0c;为两个整数,之间用一个空格隔开;如果…

Word·VBA实现邮件合并

目录 制作邮件合并模板VBA实现邮件合并举例 之前写过的一篇使用《python实现word邮件合并》&#xff0c;本文为vba实现方法 制作邮件合并模板 域名可以使用中文&#xff0c;最终完成的word模板&#xff0c;wps操作步骤类似 VBA实现邮件合并 在Excel启用宏的工作表运行以下代…

Delete `␍`eslint(prettier/prettier)

一、问题&#xff1a; 今天下午配置eslint和prettier 时&#xff0c;频频报错&#xff1a;Delete ␍eslint(prettier/prettier)&#xff0c;vscode全页面爆红。 经过多次尝试与试验后&#xff0c;最终多种方式结合解决了这个问题。 二、报错原因是&#xff1a; 安装了prett…

德思特方案 | 德思特大电流注入测试方案,为电子设备打造电磁干扰“防火墙”

来源&#xff1a;德思特测试测量 德思特方案 | 德思特大电流注入测试方案&#xff0c;为电子设备打造电磁干扰“防火墙” 原文链接&#xff1a;https://mp.weixin.qq.com/s/xyAnXRThBnwa1L3FOuDkDA 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 简介 在当前电子技…

计算机毕业设计----Springboot农业物资管理系统

项目介绍 农业物资管理系统&#xff0c;管理员可以对角色进行配置&#xff0c;分配用户角色&#xff1b; 主要功能包含&#xff1a;登录、注册、修改密码、零售出库、零售退货、采购订单管理、采购入库管理、采购退货管理、销售管理、财务管理、报表管理、物资管理、基本资料管…

容器扫描Trivy及Trivy-db数据库研究

trivy介绍 Trivy是一个镜像容器扫描工具&#xff0c;用于扫描漏洞和配置错误。 它是一款相当全面且多功能的安全扫描器&#xff0c;支持多种扫描目标&#xff0c;能够弥补市面上常见Web 漏洞扫描工具的不足。 Trivy 可以轻松地通过安装并将二进制文件添加到项目中&#xff0c;…

【qt】opencv导入pro

我的sdk0文件夹在opencv003项目下&#xff0c;使用opencv451 INCLUDEPATH $$PWD/sdk0/opencv/includeCONFIG(release, debug|release) {LIBS -L$$PWD/sdk0/opencv/lib/ -lopencv_world451opencv.files $$PWD/sdk0/opencv/bin/opencv_world451.dllopencv.path $$OUT_PWD/Re…

基于SpringBoot的医护人员排班系统(代码+数据库+文档)

&#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目 希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;一、研究背景 1.1 研究背景 随…

【Linux进程】查看进程fork创建进程

目录 前言 1. 查看进程 2. 通过系统调用创建进程-fork初识 总结 前言 你有没有想过在使用Linux操作系统时&#xff0c;后台运行的程序是如何管理的&#xff1f;在Linux中&#xff0c;进程是一个非常重要的概念。本文将介绍如何查看当前运行的进程&#xff0c;并且讨论如何使用…

概率论与数理统计-第7章 假设检验

假设检验的基本概念 二、假设检验的基本思想 假设检验的基本思想实质上是带有某种概率性质的反证法&#xff0c;为了检验一个假设H0,是否正确&#xff0c;首先假定该假设H0正确&#xff0c;然后根据抽取到的样本对假设H0作出接受或拒绝的决策&#xff0c;如果样本观察值导致了…

【深入挖掘Java技术】「源码原理体系」盲点问题解析之HashMap工作原理全揭秘(上)

HashMap工作原理全揭秘 — 核心源码解析 知识盲点概念介绍数据结构数组链表数组VS链表哈希表不同JVM版本HashMap的展现形式 HashMap VS HashTable特性区别对比 hashcodehashCode的作用equals方法和hashcode的关系key为null怎么办执行步骤 核心参数容量探讨负载因子探讨加载因子…

基于pytorch的循环神经网络情感分析系统

任务目标 基于给定数据集&#xff0c;进行数据预处理&#xff0c;搭建以LSTM为基本单元的模型&#xff0c;以Adam优化器对模型进行训练&#xff0c;使用训练后的模型进行预测并计算预测分类的准确率。 数据简介 IMDB数据集是一个对电影评论标注为正向评论与负向评论的数据集…

【Android开发】不同Activity之间的数据回传实例(一)摘桃子游戏

一、功能介绍 该项目实现的功能主要有&#xff1a; 在首页显示一个按钮点击该按钮跳转到桃园页面在桃园页面&#xff0c;点击桃子会弹窗显示摘到几个桃子&#xff0c;同时被点击桃子消失&#xff0c;总桃子数1点击退出桃园会返回首页&#xff0c;首页桃子数会根据点击的桃子数…

伐木工 - 华为OD统一考试

OD统一考试 题解: Java / Python / C++ 题目描述 一根X米长的树木,伐木工切割成不同长度的木材后进行交易,交易价格为每根木头长度的乘积。规定切割后的每根木头长度都为正整数,也可以不切割,直接拿整根树木进行交易。请问伐木工如何尽量少的切割,才能使收益最大化? 输…

一、docker的安装与踩坑

目录 一、安装docker&#xff08;centos7安装docker&#xff09;1.安装环境前期准备2.参考官网安装前准备3.参考官网安装步骤开始安装docker4.运行首个容器 二、安装一些软件的踩坑1.启动docker踩坑2.安装mysql踩坑3.罕见问题 三、关于我的虚拟机 一、安装docker&#xff08;ce…

销售团队如何实现业绩增长?CRM系统的线索管理功能有什么用?

随着“以客户为中心”观念的逐渐普及&#xff0c;销售团队的客户比过去更复杂&#xff0c;交易周期更久&#xff0c;竞争也更激烈。假如没有明确的销售计划&#xff0c;团队可能陷入混乱&#xff0c;最后导致客户&公司之间的负面结果。在这种情况下&#xff0c;人工智能驱动…

FineBI实战项目一(21):不同支付方式订单总额分析开发

点击新建组件&#xff0c;创建不同支付方式订单总额组件。 选择饼图&#xff0c;拖拽total_money到角度&#xff0c;拖拽pay_type到颜色&#xff0c;调节内径。 修改颜色的标识文字。 将组件拖拽到仪表板。 结果如下&#xff1a;

时至今日,编制与大厂到底怎么选?

我觉得这可能是一个辩论三天三夜也不会有结论的话题。 说实话&#xff0c;2023年已经过去&#xff0c;真的没有感觉赚钱更容易&#xff0c;反而是周边失业的同事不少。 现在感觉&#xff0c;是不是选择早点进入编制可能更加稳定&#xff1f;你们又怎么看&#xff1f;

Java中的多线程

进程和线程的概念 进程是应用程序的执行实例有独立的内存空间和系统资源。 线程是进程中执行运算的最小单位&#xff0c;可完成一个独立的顺序控制流程 一。一个进程可以包含多个线程&#xff0c;每个线程都独立执行特定的任务&#xff0c; 是CPU调度和分派的基本单位。 多线…

【AT 指令开发】软件框架与接口

目录 1 软件逻辑2.代码2.1 at_command.h2.2 at_command.c本文主要用于记录纯MCU无OS下,AT 指令开发软件框架 1 软件逻辑 2.代码 2.1 at_command.h #ifndef AT_COMMAND_H #define AT_COMMAND_Hvoid AT_CMD_Process(uint8_t *uartBuffer, uint8_t dataLen);/*描述AT指令返回值…