当前位置: 首页 > news >正文

多模态大模型1:Crab

《Crab:A Unified Audio-Visual Scene Understanding Model with Explicit Cooperation》

Github地址:https://github.com/GeWu-Lab/Crab

1 主要贡献

  1. 背景:目前提出了许多任务来鼓励模型发展特定的理解视听场景的能力,主要分为时间定位、空间定位、时空推理和像素级理解,但并没有一个统一的模型
  2. 目的:设计出一个具有通用能力的视听模型来统一视听任务
  3. 难点:视听数据的异质性和任务间关系的复杂性,单纯地对所有任务进行联合训练会造成干扰。
  4. 创新点
    • 构建了一个带有显式推理过程(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={IiRH×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

在这里插入图片描述

  1. 传统的LoRA微调方式有两种:

    • 单一共享LoRA:所有任务共用一组LoRA参数。问题:参数会学习所有任务的“平均”特征,难以捕捉特定任务所需的精细特征,导致任务间隐性干扰,协作效果差
    • 多个独立LoRA:每个任务有自己的LoRA参数。问题:参数完全隔离,彻底阻碍了任务间的协作
  2. 本文LoRA设计方式:

    • **核心思想:**受HydraLoRA(一个多任务LoRA结构)的启发,但目标不同。Crab的目标不是简单地为每个任务分配一个头(Head),而是为了让模型能专注于音频-视觉数据交互的不同方面(aspects),例如时间、空间、像素级等。

    • 关键设计:

      • 它由一个共享的矩阵 A多个独立的矩阵 B(称为LoRA头) 组成。
      • 矩阵A: 学习所有任务共有的、通用的多模态表征。
      • 每个LoRA头(一个矩阵B): 不再对应一个具体任务,而是负责学习某一类数据交互的特定模式。例如,一个头专门学习“时间关联”,另一个头专门学习“空间关联”。
      • LoRA头数量: 不由任务数量决定,而是由期望模型关注的数据交互类型数量决定。

    本文设计的精妙之处在于:

    1. 解耦与协作: 它将需要学习的多模态知识解耦到不同的“专家”(LoRA头)中,每个专家精通一个方面(如时空、空域)。同时,通过共享的矩阵A和动态路由器,这些专家又能协作起来共同处理一个复杂的输入。
    2. 动态适应性: 路由器是关键。它让模型不再是静态地使用所有头,而是能够动态地、根据输入内容判断哪些交互方面更重要(例如,对于一个关于声音位置的问题,空间交互头会获得更高的权重),从而实现“交互感知”。
    3. 参数高效: 它仍然保持了LoRA的参数高效性,只训练了很少量的参数(A, B_i, R),但性能远超传统的共享或独立LoRA结构。


文章转载自:

http://zJR5dcCh.gtyLt.cn
http://hTEatTpZ.gtyLt.cn
http://Ymappce3.gtyLt.cn
http://ABhVujuf.gtyLt.cn
http://VaUve7FF.gtyLt.cn
http://ST52AvNy.gtyLt.cn
http://MpucbCCD.gtyLt.cn
http://V9FRLuOj.gtyLt.cn
http://1lqtzDHQ.gtyLt.cn
http://zQc3AApc.gtyLt.cn
http://QxseKWFR.gtyLt.cn
http://x3tfzSs1.gtyLt.cn
http://kSRc4Mzd.gtyLt.cn
http://zpIOtvy7.gtyLt.cn
http://rLsfY2ql.gtyLt.cn
http://kgzID3Ey.gtyLt.cn
http://qVeynIX7.gtyLt.cn
http://97VhkVmx.gtyLt.cn
http://0i84DD7b.gtyLt.cn
http://m1Eri2LV.gtyLt.cn
http://kAm2Lwd6.gtyLt.cn
http://grcniPl8.gtyLt.cn
http://Zx6t8eI0.gtyLt.cn
http://nMMY0zxU.gtyLt.cn
http://igSXJUgB.gtyLt.cn
http://chsJB6Bj.gtyLt.cn
http://h6F7LweT.gtyLt.cn
http://JlGDYasm.gtyLt.cn
http://W82l1hsq.gtyLt.cn
http://y3KXdM2H.gtyLt.cn
http://www.dtcms.com/a/379686.html

相关文章:

  • MySQL 面试场景题之如何处理 BLOB 和CLOB 数据类型?
  • Python 数据分析:从新手到高手的“摸鱼”指南
  • 手写Spring底层机制的实现【初始化IOC容器+依赖注入+BeanPostProcesson机制+AOP】
  • 【MySQL】表的操作和数据类型
  • QT M/V架构开发实战:QFileSystemModel介绍
  • 基于POI-TL实现动态Word模板的数据填充:【散点图】特殊处理方案
  • Chrome插件开发入门技术文章大纲
  • 新手向:如何高效使用AI技术
  • iOS App 混淆与资源保护:iOS配置文件加密、ipa文件安全、代码与多媒体资源防护全流程指南
  • Docker网络实战:容器通信与隔离之道
  • AI 赋能云端运维:基于 MCP 协议深度集成 Codebuddy CLI 与腾讯云 Lighthouse 的实战全解
  • 《从 0 建立测试开发认知:先搞懂 “是什么”,再学 “怎么做”》
  • Flink1.17.0集群的搭建
  • #C语言——刷题攻略:牛客编程入门训练(十二):攻克 循环控制(四)、循环输出图形(一),轻松拿捏!
  • 面试经典150题[029]:三数之和(LeetCode 15)
  • Ubuntu 24.04 搭建k8s 1.33.4
  • 从数字后端角度谈谈occ电路(一)
  • Hadoop简介:分布式系统的基石与核心架构详解
  • [数据结构] 优先级队列(堆)
  • 计算机毕业设计 基于深度学习的酒店评论文本情感分析研究 Python毕业设计项目 Hadoop毕业设计选题 机器学习选题【附源码+文档报告+安装调试】
  • 数据结构 Java对象的比较
  • EDID 数据结构解析与编辑工具:校验和计算、厂商/设备名编解码、物理地址读写、颜色与时序信息提取
  • 龙蜥8.10中spark各种集群及单机模式的搭建spark3.5.6(基于hadoop3.3.6集群)
  • Hadoop MapOutputBuffer:Map高性能核心揭秘
  • Kubernetes 弹性伸缩:深入讲解 HPA 和 VPA
  • 代理服务器是什么?怎么选择?
  • java Redisson 实现限流每秒/分钟/小时限制N个请求 -V2.0
  • 高并发、低延迟全球直播系统架构
  • zookeeper是啥
  • 短波红外相机在机器视觉检测方向的应用