CLIP-MMA: Multi-Modal Adapter for Vision-Language Models

news/2024/12/2 8:18:24/

当前的问题

CLIP-Adapter仅单独调整图像和文本嵌入,忽略了不同模态之间的交互作用。此外,适应性参数容易过拟合训练数据,导致新任务泛化能力的损失。

动机

图1所示。多模态适配器说明。

通过一种基于注意力的 Adapter ,作者称之为多模态 Adapter (图1),通过整合它们的信息,共同调整文本和图像特征,导致更全面的适配。此外,适配是针对特定任务的,有效地利用每个任务的视觉和文本信息。这使得模型能够更有效地避免在训练任务上过拟合,从而在未见过的任务上获得更好的泛化能力。

方法

多模态 Adapter 包括三个不同的部分:一个嵌入降采样器、一个 Mask 多头注意力网络以及两个带有非线性激活函数的线性层。

维度下采样

在 Adapter 中使用了多头注意力层来聚合多模态信息。然而,多头注意力层可能会给网络引入参数昂贵的操作,尤其是当嵌入维度较大时,例如,原始CLIP的嵌入维度 ( C Emb ) = 512 (\text{C}_{\text{Emb}})=512 (CEmb)=512。为了降低可训练参数的数量,作者在注意力层之前在CLIP嵌入上引入了一个维度下采样器。下采样器由一个线性层 D ( ⋅ ) D(\cdot) D()组成,该层降低嵌入维度。最后,多头注意力层的输入通过 D ( ⋅ ) D(\cdot) D()传递,其中 W D ∈ R C Emb × C Emb / 4 W_D\in \mathbb{R}^{\text{C}_{\text{Emb}}\times \text{C}_{\text{Emb}}/4} WDRCEmb×CEmb/4

每个图像样本创建多头注意 ( MHA ( ⋅ ) ) (\text{MHA}(\cdot)) (MHA())输入。提示符 Emb text \text{Emb}_{\text{text}} Embtext的文本嵌入和视觉输入 Emb image \text{Emb}_{\text{image}} Embimage的图像嵌入被连接成一个序列:

其中 Input MHA ∈ R ( N c l a s s e s + 1 ) × N B a t c h × E N \text{Input}_{\text{MHA}}\in \mathbb{R}^{(N^{classes}+1)\times N^{Batch}\times E_N} InputMHAR(Nclasses+1)×NBatch×EN。其中, N c l a s s e s + 1 N^{classes}+1 Nclasses+1表示类(文本嵌入)和一个图像嵌入的数量之和(图2), E N E_N EN表示嵌入的维数。

图2所示。 Input MHA \text{Input}_{\text{MHA}} InputMHA的插图。文本表示与视觉表示串联成一个序列,通过掩模多头注意网络传递。

Mask 多头注意力

在维度下采样后,通过多头注意力层聚合潜在表示。为了区分多头注意力层的文本和图像输入,使用注意力 Mask 来调整每个模态内的信息交互。**使用“0”表示正向交互,“-∞”表示负向交互。**因此,**每个文本嵌入仅由相应的图像信息调整,而部分忽略其他文本嵌入中的信息。图像嵌入也是如此。**给定 P P P个 Prompt 和 I I I个图像, T = P + I T=P+I T=P+I总元素数。

me:图示如下

其中, i i i表示行(取值范围为 0 ∼ T − 1 0\sim T-1 0T1), j j j表示列(取值范围为 0 ∼ T − 1 0\sim T-1 0T1)。

掩码计算完成后,通过求和运算将掩码应用到多头注意力网络中:

多模态 Adapter

随后,MHA的输出经过两个线性上采样层 U 1 ( ⋅ ) , U 2 ( ⋅ ) U_1(\cdot),U_2(\cdot) U1(),U2(),其间使用GELU,其中 W U 1 ∈ R C Emb / 4 × C Emb / 16 , W U 2 ∈ R C Emb / 16 × C Emb W_{U1}\in \mathbb{R}^{\text{C}_{\text{Emb}/4}\times \text{C}_{\text{Emb}}/16},W_{U2}\in \mathbb{R}^{\text{C}_{\text{Emb}}/16 \times \text{C}_{\text{Emb}}} WU1RCEmb/4×CEmb/16,WU2RCEmb/16×CEmb

总之,我们完成了多模态适配器

实验结果

参考资料

论文下载(arxiv,3 Sep 2024)

https://www.arxiv.org/abs/2409.02958

代码地址

https://github.com/dqmis/clip-mma

参考文章

https://mp.weixin.qq.com/s/VP4R9-ZYSohwxdY9W3xJQg


http://www.ppmy.cn/news/1551700.html

相关文章

elementUI el-image的使用

elementUI组件 el-image 慎用lazy属性 <el-image :src"item.picture" alt"" lazy :title"item.title"></el-image> lazy懒加载属性会导致有些图片无法显示

一万台服务器用saltstack还是ansible?

一万台服务器用saltstack还是ansible? 选择使用 SaltStack 还是 Ansible 来管理一万台服务器&#xff0c;取决于几个关键因素&#xff0c;如性能、扩展性、易用性、配置管理需求和团队的熟悉度。以下是两者的对比分析&#xff0c;帮助你做出决策&#xff1a; SaltStack&…

位运算在嵌入式系统开发中的应用

目录 一、数据存储与节省 “绝技” 1.1. 传感器数据存储挑战 1.2. 位运算解决方案 1.2.1. 数据整合 1.2.2. 数据提取 1.3. 收益分析 二、硬件控制 “精准操纵术” 2.1. 位运算操控硬件寄存器的实例 2.2. 位运算在硬件控制中的优势 2.3. 电机驱动芯片寄存器控制示例 …

MySQL —— MySQL 程序

目录 前言 一、MySQL 程序简介 二、mysqld -- MySQL 服务器 三、mysql -- MySQL 客户端 1. mysql 客户端简介 2. mysql 客户端选项 &#xff08;1&#xff09;指定选项的方式 &#xff08;2&#xff09;mysql 客户端命令常用选项 &#xff08;3&#xff09;在命令行中使…

用Python做数据分析环境搭建及工具使用(Jupyter)

目录 一、Anaconda下载、安装 二、Jupyter 打开 三、Jupyter 常用快捷键 3.1 创建控制台 3.2 命令行模式下的快捷键 3.3 运行模式下快捷键 3.4 代码模式和笔记模式 3.5 编写Python代码 一、Anaconda下载、安装 【最新最全】Anaconda安装python环境_anaconda配置python…

[golang][MAC]Go环境搭建+VsCode配置

一、go环境搭建 1.1 安装SDK 1、下载go官方SDK 官方&#xff1a;go 官方地址 中文&#xff1a;go 中文社区 根据你的设备下载对应的安装包&#xff1a; 2、打开压缩包&#xff0c;根据引导一路下一步安装。 3、检测安装是否完成打开终端&#xff0c;输入&#xff1a; go ve…

【汇编语言】call 和 ret 指令(三) —— 深度解析汇编语言中的批量数据传递与寄存器冲突

文章目录 前言1. 批量数据的传递1.1 存在的问题1.2 如何解决这个问题1.3 示例演示1.3.1 问题说明1.3.2 程序实现 2. 寄存器冲突问题的引入2.1 问题引入2.2 分析与解决问题2.2.1 字符串定义方式2.2.2 分析子程序功能2.2.3 得到子程序代码 2.3 子程序的应用2.3.1 示例12.3.2 示例…

【ETCD】基于client v3对etcd的基本操作示例

前置操作&#xff1a; 需要先下载按照client/v3的bao go get go.etcd.io/etcd/client/v31、初始化客户端 package mainimport ("context""log"clientv3 "go.etcd.io/etcd/client/v3""time" )var cli *clientv3.Client func init() …