多模态大模型1:Crab
《Crab:A Unified Audio-Visual Scene Understanding Model with Explicit Cooperation》
Github地址:https://github.com/GeWu-Lab/Crab
1 主要贡献
- 背景:目前提出了许多任务来鼓励模型发展特定的理解视听场景的能力,主要分为时间定位、空间定位、时空推理和像素级理解,但并没有一个统一的模型
- 目的:设计出一个具有通用能力的视听模型来统一视听任务
- 难点:视听数据的异质性和任务间关系的复杂性,单纯地对所有任务进行联合训练会造成干扰。
- 创新点:
- 构建了一个带有显式推理过程(AV-UIE)的视听统一指令调优数据集,该数据集澄清了任务之间的合作关系
- 为了促进学习阶段的具体合作,设计了具有多个LoRA头的交互感知LoRA结构,以学习视听数据交互的不同方面
2 数据
构建了AV-UIE(Audio-Visual Unified Instruction-tuning Evaluation dataset)数据集
核心目的:为模型提供大量、高质量、包含详细推理过程的问答样本,教会模型如何协调其内部的各种能力(如时间定位、空间推理等)来完成复杂的视听理解任务
构建过程:各个任务数据集----->多模态大语言模型----->生成一个初步的、包含推理过程的答案----->人工修正[!NOTE]
示例:
- 音频:一段更复杂的、持续的波形(可能代表一段音乐或复杂环境声)。
- 指令:
What is the main event in the video? Please provide the start and end time.
(视频中的主要事件是什么?请提供开始和结束时间。)- 答案:
The main event is a person playing the guitar. It starts at 3.2s and ends at 8.9s.
(主要事件是一个人弹吉他。它从3.2秒开始,到8.9秒结束。)
3 模型
3.1 结构图
3.2 method
Vision Branch
-
步骤一:视觉编码器特征提取
- 核心组件:pre-trained CLIP-ViT-L/14 encoder
- 输入:T帧视频图像V={Ii∈RH×W×C}i=1T\mathcal{V}=\left\{I_{i} \in \mathbb{R}^{H \times W \times C}\right\}_{i=1}^{T}V={Ii∈RH×W×C}i=1T
- 处理过程:每帧图像被送到CLIP的ViT-L/14 的视觉编码器中
- 输出:对于每一帧,编码器输出一个 patch-level 的特征 fvϵ RLv× Dvf_v\epsilon \,\R^{L_v\times \,\,D_v}fvϵRLv×Dv
其中LvL_vLv 代表 图像块的个数,DvD_vDv代表每个图像块的维度,最终整个视频的视觉嵌入可以表示为Fv={fvi}i=1TF_v = \left\{f_{v}^{i} \right\}_{i=1}^{T}Fv={fvi}i=1T
-
步骤二:Q-Former 特征压缩与抽象
Q-Former(Querying Transformer)是BLIP-2模型中引入的一个关键组件。它包含一组可学习的查询词元(Learnable Query Tokens,数量为KvK_vKv)。这些查询词元就像是一组“提问”,它们会与所有的视觉特征(KvK_vKv)进行交互(交叉注意力机制),“询问”图像中哪些信息是最重要的、最相关的。
- 输入:上一步得到的,可能非常冗长的视觉特征FvF_vFv (有T* LvL_vLv 个特征向量)
- 输出:Q-Former最终输出KvK_vKv个视觉词元。无论输入的视频有多长、帧有多少,输出都被压缩成了固定数量(KvK_vKv)的、高度抽象的视觉信息摘要。
-
步骤三:两层MLP-语义空间对
- 输入: Q-Former输出的 KvK_vKv个视觉词元。
- 处理过程: 一个简单的两层多层感知机(MLP)对这些视觉词元进行一个非线性变换。
- 输出: 变换后的视觉词元,其特征空间与LLM的文本词嵌入(Text Embedding)空间对齐。
Audio Branch
- 步骤一:音频编码器特征提取
- 核心组件:BEATs model
- 输入:T个音频片段(和video对齐)
- 输出:对于每个音频片段,编码器输出一个特征faiϵRLa×Daf_{a}^{i} \epsilon R^{L_a\times D_a}faiϵRLa×Da
- 最终整个音频流的特征可以表示为Fa={fai}i=1TF_a = \left\{f_{a}^{i} \right\}_{i=1}^{T}Fa={fai}i=1T
- 步骤二:Q-Former 特征压缩与抽象
- 上一步骤得到的音频特征 FaF_aFa
- 输出:Q-Former最终输出KaK_aKa个可学习查询词元
- 步骤三:两层MLP-语义空间对
- 对Q-Former输出的词元进行一个简单非线性变换
- 输出:KaK_aKa个音频词元,这些词元已经与文本语义空间对齐,可以被LLM直接处理
Interaction-aware LoRA
-
传统的LoRA微调方式有两种:
- 单一共享LoRA:所有任务共用一组LoRA参数。问题:参数会学习所有任务的“平均”特征,难以捕捉特定任务所需的精细特征,导致任务间隐性干扰,协作效果差
- 多个独立LoRA:每个任务有自己的LoRA参数。问题:参数完全隔离,彻底阻碍了任务间的协作。
-
本文LoRA设计方式:
-
**核心思想:**受HydraLoRA(一个多任务LoRA结构)的启发,但目标不同。Crab的目标不是简单地为每个任务分配一个头(Head),而是为了让模型能专注于音频-视觉数据交互的不同方面(aspects),例如时间、空间、像素级等。
-
关键设计:
- 它由一个共享的矩阵 A 和多个独立的矩阵 B(称为LoRA头) 组成。
- 矩阵A: 学习所有任务共有的、通用的多模态表征。
- 每个LoRA头(一个矩阵B): 不再对应一个具体任务,而是负责学习某一类数据交互的特定模式。例如,一个头专门学习“时间关联”,另一个头专门学习“空间关联”。
- LoRA头数量: 不由任务数量决定,而是由期望模型关注的数据交互类型数量决定。
本文设计的精妙之处在于:
- 解耦与协作: 它将需要学习的多模态知识解耦到不同的“专家”(LoRA头)中,每个专家精通一个方面(如时空、空域)。同时,通过共享的矩阵A和动态路由器,这些专家又能协作起来共同处理一个复杂的输入。
- 动态适应性: 路由器是关键。它让模型不再是静态地使用所有头,而是能够动态地、根据输入内容判断哪些交互方面更重要(例如,对于一个关于声音位置的问题,空间交互头会获得更高的权重),从而实现“交互感知”。
- 参数高效: 它仍然保持了LoRA的参数高效性,只训练了很少量的参数(A, B_i, R),但性能远超传统的共享或独立LoRA结构。
-