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

文章目录

  • 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阶段将视觉提示明确地限制在文本提示上,来确保视觉语言模式之间的协同作用。我们的方法提高了对新类别、跨数据集迁移和具有域迁移的数据集的泛化能力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用MistNet在COCO128数据集上协作训练Yolo-v5

本案例介绍如何在MNIST手写数字分类场景中&#xff0c;使用名为MistNet的聚合算法训练联邦学习作业。数据分散在不同的地方&#xff08;如边缘节点、摄像头等&#xff09;&#xff0c;由于数据隐私和带宽的原因&#xff0c;无法在服务器上聚合。因此&#xff0c;我们不能将所有…

linux手动安装 vscode-server

适用场景 很多时候&#xff0c;我们需要在本机&#xff08;比如windows&#xff09;通过remote ssh访问远程服务器&#xff08;一般是ubuntu&#xff09;&#xff0c;但经常出现 vscode 一直连不上远程服务器的情况&#xff0c;看一下 log&#xff1a; 这个log表示远程服务器…

长尾分布定义,举个物种长尾分布和词频长尾分布的例子。

问题描述&#xff1a;长尾分布定义&#xff0c;举个物种长尾分布和词频长尾分布的例子。 问题解答&#xff1a; 长尾分布是一种概率分布的类型&#xff0c;它描述的是一种极端事件或者稀有事件的发生概率。具体来说&#xff0c;长尾分布描述的是少量的类别占据了大部分的样本…

uniapp 设置底部导航栏

uniapp 设置原生 tabBar 底部导航栏。 设置底部导航栏 一、创建页面&#xff0c;一定要在 pages.json 文件中注册。 二、在 pages.json 文件中&#xff0c;设置 tabBar 配置项。 pages.json 页面 {"pages": [...],"globalStyle": {...},"uniIdRout…

获取ffmpeg转码的实时进度

文章目录 前言一、需求二、实现获取 ffmpeg 转码的实时进度1、思路梳理2、源码修改 三、运行结果 前言 本文记录查看 ffmpeg 进行转码时的实时进度。所用的工程基于上个博客编译成功的工程&#xff1a;使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c 一、需求 使用 ffmepg 对音…

二叉树题目:完全二叉树插入器

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;完全二叉树插入器 出处&#xff1a;919. 完全二叉树插入器 难度 6 级 题目描述 要求 完全二叉树是每一层&#xff08;除最后一层外&#xff09;都…

Word·VBA实现邮件合并

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

攒机到底能省多少钱?

昨天弄好了攒机配置&#xff0c;今天要求配置一些更为实用的配置&#xff0c;只是作为一般办公&#xff0c;单位买进来的计算机都是联想&#xff0c;价格普遍在7000元以上&#xff0c;出于省钱和实用目的&#xff0c;今天搭配了一个组机方案。 上面的配置对付一般办公足够&…

查看进程对应的路径查看端口号对应的进程ubuntu 安装ssh共享WiFi设置MyBatis 使用map类型作为参数,复杂查询(导出数据)

Linux 查询当前进程所在的路径 top 命令查询相应的进程号pid ps -ef |grep 进程名 lsof -I:端口号 netstat -anp|grep 端口号 cd /proc/进程id cwd 进程运行目录 exe 执行程序的绝对路径 cmdline 程序运行时输入的命令行命令 environ 记录了进程运行时的环境变量 fd 目录下是进…

[HCTF 2018]Warmup

[HCTF 2018]Warmup wp 进入页面&#xff1a; 查看源码&#xff1a; 发现提示&#xff1a;source.php &#xff0c;直接访问&#xff0c;得到源代码&#xff1a; <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist [&qu…

ROS-urdf集成gazebo

文章目录 一、URDF与Gazebo基本集成流程二、URDF集成Gazebo相关设置三、URDF集成Gazebo实操四、Gazebo仿真环境搭建 一、URDF与Gazebo基本集成流程 1.创建功能包 创建新功能包&#xff0c;导入依赖包: urdf、xacro、gazebo_ros、gazebo_ros_control、gazebo_plugins 2.编写URD…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷⑨

2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷9 目录 需要竞赛软件包环境以及备赛资源可私信博主&#xff01;&#xff01;&#xff01; 2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷9 模块一 …

阿里云服务器的tcp端口无法访问(云服务厂家问题?)

问题->无法访问 阿里云服务器的tcp端口 最近一台阿里云服务器的一个端口61616无法访问&#xff0c;在服务器内用外网地ip发现无法访问&#xff0c;用内网ip访问是正常的&#xff0c;通过技术排查&#xff1a; 解决->无法访问 阿里云服务器的tcp端口 1 配置官网的安全组…

ArkTS - 数据持久化

一、概述 应用数据持久化&#xff0c;是指应用将内存中的数据通过文件或数据库的形式保存到设备上。内存中的数据形态通常是任意的数据结构或数据对象&#xff0c;存储介质上的数据形态可能是文本、数据库、二进制文件等。 持久&#xff08;Persistence&#xff09;&#xff0…

Unity编辑器扩展(外挂)

每日一句:未来的样子藏在现在的努力里 目录 什么是编译器开发 C#特性[System.Serializable] 特殊目录 命名空间 /*检视器属性控制*/ //添加变量悬浮提示文字 //给数值设定范围&#xff08;最小0&#xff0c;最大150&#xff09; //指定输入框&#xff0c;拥有5行 //默认…

机器学习激活函数

激活函数 激活函数是人工神经网络中的一个重要组成部分。它们用于向神经网络中添加非线性因素&#xff0c;使得网络能够解决复杂问题&#xff0c;如图像识别、语言处理等。激活函数的作用是决定一个神经元是否应该被激活&#xff0c;也就是说&#xff0c;它帮助决定神经元的输…

jupyter notebook 配置conda 虚拟环境python

conda创建python环境 conda create -n openvoice python3.9 激活环境 source activate openvoice 在虚拟环境中安装ipykernel pip install ipykernel 添加虚拟环境进到 jupyter notebook python -m ipykernel install --user --name openvoice --display-name openvoice …

计算机网络必考大题

TCP / IP 五层协议或OSI七层参考模型 CRC校验码&#xff08;也称为循环冗余码&#xff09; 1、根据生成多项式P(x)确定除数&#xff1b; 2、给生成多项式的P(x)的最高阶补0&#xff1b; 3、给信息位(补0后)与除数做异或运算&#xff0c;得到余数。 不相同为1 ^ 4、得到的余数补…

免费申请eu.org域名,开启个人网站之旅

介绍 eu.org的免费域名注册服务是由OpenTLD B.V.提供的。相比于其他免费域名注册服务&#xff0c;eu.org的域名后缀更加独特。同时&#xff0c;eu.org的域名注册也比较简单&#xff0c;只需要填写一些基本信息&#xff0c;就可以获得自己的免费域名。 注册账号 点击进入登…

如何在Github上快速下载代码

由于网络环境问题&#xff0c;有时候比较难从Github上下载代码&#xff0c;我归纳了以下三种从Github上下载代码的方法&#xff0c;如何选择使用&#xff0c;可根据你的实际情况&#xff1a; 目录 方法一&#xff1a;使用 “Download ZIP” 按钮 方法二&#xff1a;使用 Git…