论文阅读-Attention Bottlenecks for Multimodal Fusion(多模态特征融合)

news2024/11/25 4:22:46

一、论文信息

论文题目:Attention Bottlenecks for Multimodal Fusion

paperwithcode:https://paperswithcode.com/paper/attention-bottlenecks-for-multimodal-fusion

Github:https://github.com/google-research/scenic/tree/main/scenic/projects/mbt

会议:NIPS2021 

作者团队:

引用:@article{nagrani2021attention, title={Attention bottlenecks for multimodal fusion}, author={Nagrani, Arsha and Yang, Shan and Arnab, Anurag and Jansen, Aren and Schmid, Cordelia and Sun, Chen}, journal={arXiv preprint arXiv:2107.00135}, year={2021} }

二、动机与创新

2.1 动机

  1. 能够同时进行多模态感知是人类学习的关键能力。但对于模态融合的统一模型是具有挑战性的,因为模态之间的学习是动态变化的;某些模态比其他模态包含更多关于任务的信息;不同模态有专门的输入表示 。由于模态输入的差异,多模态融合的主导范式通常通过集成独立的视觉和听觉网络来融合信息,即后期融合(late-fusion,先分别处理单个模态数据之后fusion为多模态结果)。

  2. Transformer已被证明在图像 (ViT ) 和视频分类 (ViViT ) 以及音频分类 (AST) 等领域具有不错的性能,通过将密集的连续信号分成多个patch并将它们转换为一维的序列,由于这些模型能够处理可变长度的序列,因此常规的扩展是不需要改变Transformer的结构,可以直接将多模态patch的序列送到Transformer中。这种“早期融合”模型允许注意力在图像中的不同时空域之间自由建模,以及在音频频谱图中的频率和时间之间自由建模。但作者认为在模型的所有层完全成对的注意是不必要的,因为音频和视觉输入包含密集的、细粒度的信息,其中大部分是多余的。由于注意力机制具有和token序列长度相关的二次复杂度,这种模型也无法很好地扩展到较长的视频。

2.2 创新

  1. 第一种方法是多模态学习中的一种常见方法,即将跨模态流动限制在网络的后一层 ,前面的层采用单模态学习,这种方法被成为“Mid Fusion(中期融合)”,如下图中的Mid Fusion所示。

  2. 第二种方法,也是本文的主要贡献点, 是限制层内token之间的跨模态注意。模型必须在与其他模态共享之前,对每个模态的信息进行整理和“浓缩”。核心思想是引入一小部分 “注意力瓶颈” 的潜在融合单元(如上图中的Bottleneck Fusion),层中的跨模态相互作用必须通过这些单元执行。作者证明了这种 “瓶颈” 结构优于其不受限制的版本,且计算成本较低。在layer内的不同模态的tokens之间做跨模态的attention。单模态内部仍然是原始的self-attention,但是跨模态的fusion使用每个模态的部分tokens信息来做cross-attention。这样就能降低计算量并且处理部分冗余信息 

三、方法

在本文中,作者提出了一个Multimodal Bottleneck Transformer (MBT)结构来融合多模态数据。

3.1 The ViT and AST architectures

ViT和AST采用了Transformer结构,能够处理序列特征。首先从RGB图像 (或音频频谱图) 中提取N个不重叠的patch ,然后将他们转换成一维的token ,如下所示:

这里,E是一个线性投影,将每个token映射到Rd;Zcls是一个特殊的token,作为分类任务的特征;P是可学习的位置嵌入,用于表示输入特征的位置信息。

然后将token通过由L个Transformer层组成的编码器中。每个Transformer层由多头自注意 (MSA),层归一化 (LN) 和多层感知机 (MLP) 组成,表示如下:

其中MSA操作为dot-product attention;queries, keys和values是同一个tensor的线性投影,表示为: 同理,两个跨模态输入attention操作表示为:

3.2 Multimodal Transformer

3.2.1 Fusion via Vanilla Self-Attention

普通的融合模型仅由应用于多模态输入的常规Transformer组成。对于给定长度为t秒的视频clip,首先统一采样个RGB帧,并将音频波形转换为单个谱图。然后用类似ViT中的方法,将帧和谱图转换成token,并将所有的token拼接在一起,成为一个序列。形式上,如果从F个采样帧里面提出了Nv个RGB patch和Na个谱图patch,则输入的token序列可以表示为:

||表示拼接操作,对于RGB patch和谱图patch,作者采用了不同的投影函数。此外,还为每个模态分配了一个分类token,类别标签Zcls-rgb也是每个模态特有的。然后在这些多模态token上采用原始的Transformer层,以获取跨模态的融合信息,transformer中的self-attention模块能够自由地提取和处理来自不同模态的所有信息(视觉patches和音频patches)。

3.2.2 Fusion with Modality-specific Parameters

此外,还可以将上面的模型推广到每个模态拥有各自独立的参数,并利用注意力机制交互不同模态的信息,即将模型改为每种模态各自训练自己的参数(即modality-specific),然后使用cross-attention来做信息交换。因此,作者定义了一个cross-transformer层:

其中Zl是的拼接(论文中没提,但应该是拼接的结果), corss-transformer的输入是不完全一样的两个输入(不同于原始transformer),它的过程与原始transformer的差距在于公式变为下面的公式,用cross-attention替换了原始attention。当参数一样时,本节的方法和3.1节就是一样的,其中交叉Transformer采用交叉注意操作。这层的操作也可以表示为:

注意,交叉Transformer层的参数 ,对于每个模态都是不同的。

3.2.3 Fusion via Attention Bottlenecks

为了降低原始attention的计算复杂性,作者在transformer的输入sequence中引入了B个fusion bottleneck tokens, 输入序列如下所示:

然后,用这些瓶颈token来限制模型中的所有跨模态注意力。对于层layer而言,token计算如下:

视觉和音频的向量(Zrgb和Zspec)更新只能通过bottleneck tokens来进行,作者通过限制bottleneck tokens的数量远小于原始tokens的数量,来降低计算复杂度。并且通过较少的bottleneck传递跨模态信息时,模型迫使每个模态浓缩自己的信息,且仅传递最重要的信息给另一个模态(避免了模态中冗余信息的传递和计算)。该公式中,bottleneck tokens的向量更新了两次,先用visual信息更新一次,再用audio信息更新一次。

3.3 Where to Fuse: Early, Mid and Late

在大多数Transformer(如ViT)中,每一层都由相同的操作组成的。然而,多模态学习中的一个常见范式是让网络的浅层进行模态内进行的增强,网络的深层进行多模态信息的交互。

基于这样的思想,作者首先用个标准的Self-Attention层来对模态内的token信息进行建模,然后再将所有的token进行拼接得到,用剩下的层进行跨模态token信息的融合。

如果,那么就对应“早期融合”;如果,那么就对应“晚期融合”;如果,那么就对应“中期融合”。表示为:

其中,代表上一节中提到的三种融合策略。

3.4 Classification

对于上述的所有模型,为了能够执行分类任务,需要将最后一层的CLS token和输入到线性层,然后将Softmax之后的结果进行平均得到分类结果。

四、实验

  • 实验任务:视频分类;

  • 数据集:AudioSet, Epic-Kitchens-100 and VGGSound(附录中还有数据集Moments in

Time and Kinetics上的结果);

  • 本文使用ViT-Base作为backbone,bottleneck tokens的数目设置为B=4。

4.1 Fusion实验

本文对三种fusion方式分别进行了实验:

(1)最直接的self-attention:层内的attention可以不受限制地访问所有隐式单元(也就是视觉和音频的单模态表示拼接之后直接输入后面原始的transformer层做fusion);

(2)使用不同参数的简单cross-attention:不同模态的transformer层参数不同,每种模态的表示的更新都会访问到所有模态的信息,也就是attention依然是面向所有模态信息的;

(3)bottleneck fusion:此方式下的每种模态的表示的更新只能通过访问bottleneck tokens进行,也就是attention只在单模态信息和bottleneck tokens之间进行。

上面的(2)(3)的fusion方式只是单layer内的,为了测试early,mid,late fusion方式对模型的影响,本文还对Lf的值进行实验。

不同模态share weights:

本文还对不同模态(策略(1)和(2)中)之间是否share weights的影响进行了实验。结果在附录的图7中,如下图所示。当fusion的层数较早时,使用separate的参数效果更好。当late fusion时,是否share weights差距不大。(这是否说明模型的前面层所捕获的信息更modal-specfic,后面的更multimodal了)

融合层Lf的选择:

本文对(2)(3)和两种fusion方法做了不同融合层选择的实验,

从下图左可以看出,mid fusion比early fusion(Lf=0)和late fusion(Lf=12)这意味着将融合层放在later的位置,前面的层用来提取模态各自的特征,是有效果的。

attention bottlenecks:

在上图左中可以看出,使用attention bottleneck的模型在所有fusion层数选择下结果都比简单的cross-attention模型好。本文还对模型的计算量进行了实验,使用GFLOPs指标,如上图右。从中可以看出只用很少的bottleneck tokens数目(B=4),本文的模型计算量(红色线条)就比cross-attention(蓝色线条)低很多,且不随着Lf的变化而变化。本文还对B=4,36,64,256,1024进行了实验。发现实验结果差距不大(少于0.5mPA),所以本文后续实验均设置B=4。只用4个bottleneck tokens就可以实现多模态融合的性能提升,以及大大降低模型计算量。

4.2 输入采样和数据集大小

本节探讨了不同模态上采样策略的影响,同时和单模态模型baselines--仅作用于RGB图像上的纯视觉的transformer和仅作用于音频上的纯音频的transformer进行了对比。

采样窗口大小t:本文transformer模型的一个优势就是可以处理变长的输入长度(没太懂。。transformer的输入tokens数目是固定的吧,不足长的补全)。本文对视频的不同采样窗口t值2,4,6,8进行了实验,结果如下图左所示。在推理时,作者统一采样多个窗口以便能覆盖整个视频。当音频的频谱图 patches数目随着t变化时,作者保持RGB patches的数目不变而改变采样帧的步长(避免内存溢出)。从下图左中可以看出,随着输入的增多,audio-only和audio-visual的模型性能跟着增加,但是纯视觉的模型visual-only性能却在降低(作者猜测,可能是增大的步长导致采样出的帧数目减少,训练数据少了)。后文实验中设置t=8s。

同步与异步采样:因为视频中音频和视频(图像)并不一定是完全对齐的,这里实验了不同模态中异步采样带来的影响。结果与分析详见附录。作者发现采样方式对结果影响不大,所以最终选择了同步采样。

模态混合:在将 Mixup rerularization 应用于训练时,有两种不同的方法可以将其应用于多模态输入——标准方法是使用概率参数 α 对一组混合权重进行采样,并使用它来生成所有虚拟模态 -标签对。 此外,本文还探索了一个称之为模态混合的修改版本,它为每个模态采样一个独立的权重。 模态混合比标准混合施加更强的增强,带来 AudioSet 上的性能略有提高。

数据集规模的影响:上图右中体现了训练样本规模不同的差距。

4.3 性能提升

与单模态和sota对比:

attention maps的可视化:

五、总结

本文任务是视频分类,方法是多模态视觉(图像)和音频融合。

主要思路是:原始transformer里面的attention层能够自由地接触和处理每个token之间的关系,这样模态内的冗余信息会造成计算量浪费。所以本文将原始transformer中attention层修改为模态内attention(保持self-attention结构不变)+ 模态间attention(设计cross-attention只在每个模态的部分token之间做attention,避免过度计算冗余信息,降低计算量。并且选择了mid fusion,探讨了fusion层在模型early,mid,late部分的影响。

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

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

相关文章

产品故事:语雀两度生死局

语雀是一款文档和知识库产品,2016 年从一个技术团队支付宝体验技术部生长出来,2021 年蚂蚁成立了智能协同事业部,重点产品即为语雀,以独立 BU 运作,算是完成了“成人礼”。我们和玉伯聊了聊语雀的成长故事。 极客时间&…

C++基础知识【3】控制语句

目录 前言 一、条件语句 1.1、if 语句 1.2、if-else 语句 1.3、switch 语句 二、循环语句 2.1、while 循环 2.2、do-while 循环 2.3、for 循环 三、跳转语句 3.1、break语句 3.2、continue语句 3.3、goto语句 四、一些新特性 4.1、if 语句和 switch 语句…

【数据结构与算法】图遍历算法 ( 深度优先搜索代码示例 )

文章目录一、深度优先搜索算法二、完整代码示例完整代码示例执行结果一、深度优先搜索算法 深度优先搜索算法步骤 : 将 深度优先搜索 算法步骤 转为代码 ; ① 访问初始结点 : 访问 初始结点 v , 并将该 初始结点 v 标记为 " 已访问 " ; 设置一个 访问标记 数组 , 数…

《C++ Primer》 第九章 顺序容器

《C Primer》 第九章 顺序容器 9.1 顺序容器概述 容器:特定类型对象的集合 顺序容器类型 vector 可变大小数组,支持快速随机访问,在尾部之外的位置插入或删除元素可能很慢deque 双端队列。支持快速随机访问。在头尾位置插入/删除速度很快…

【2022-09-14】米哈游秋招笔试三道编程题

第一题:最短子串 题目描述 米小游拿到了一个字符串,她想截取一个连续子串,使得该子串中包含至少k个连续的“mihoyo”。 你可以帮米小游求出最短的子串长度,以及对应的子串位置吗? 输入描述 第一行输入两个正整数n…

产品父子流程技术方案设计

产品父子流程技术方案设计 一、整体设计 根据业务需求分析,产品涉及法人代表及实控人风控决策流程调用,旨在降低风险,提高行内线上贷款业务风险决策的能力。 二、业务流程 1.业务流程图 2.交易流程 在授信交易切面入口处对法人代表及实控…

Spark性能优化三 checkpoint

(一)checkpoint介绍 checkpoint,是Spark提供的一个比较高级的功能。有时候,我们的Spark任务,比较复杂,从初始化RDD开始,到最后整个任务完成,有比较多的步骤,比如超过10个…

关于flex盒子padding-right/margin-right不生效

错误代码实例&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"width…

论文投稿指南——中文核心期刊推荐(科学、科学研究)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

element input 输入框校验

element input 输入框校验 很久之前有写过一篇&#xff1a;element 输入框只可以输入正整数 在这里对它进行补充 校验input输入框是否符合 以下是常用的一些&#xff1a; 限制输入中文&#xff1a;/^[\u4e00-\u9fa5]$/ const checkName (rule, value, callback) > {if…

逆约瑟夫问题

约瑟夫问题可以说十分经典&#xff0c;其没有公式解也是广为人知的~ 目录 前言 一、约瑟夫问题与逆约瑟夫问题 1.约瑟夫问题 2.逆约瑟夫问题 二、思考与尝试&#xff08;显然有很多失败&#xff09; 问题分析 尝试一&#xff1a;递归/递推的尝试 尝试二&#xff1a;条件…

Doris入门篇-分区分桶实验

简介 测试分区分桶效果。 分区的基本操作 添加分区 ALTER TABLE v2x_olap_database.government_car ADD PARTITION p20221203 VALUES LESS THAN ("2022-12-04");动态分区表不能添加分区&#xff0c;需要转为手动分区表。 查看分区 show partitions from <表…

【深度估计】单目深度估计

文章目录什么是深度估计&#xff1f;什么是视差深度估计与三维重建单目深度估计研究历程单目深度估计方法传统方法基于线索线性透视聚焦/散焦度天气散射阴影纹理遮挡高度运动线索基于物体自身运动基于摄像机的运动基于机器学习参数学习方法开创性工作改进加入语义信息条件随机场…

《工业机器视觉检测123》(1.1) 目标检测样本类别不平衡的问题(持续更新...)

部分内容转载自&#xff1a;https://www.cnblogs.com/inchbyinch/p/12642760.html 参考分类任务中解决类别不平衡的办法&#xff1a; 1 什么是类别不平衡问题&#xff1f; 类别不平衡&#xff08;class-imbalance&#xff09;&#xff0c;也叫数据倾斜&#xff0c;数据不平衡…

Tomcat面试问题总结

1.Tomcat是什么&#xff1f;Tomcat 服务器Apache软件基金会项目中的一个核心项目&#xff0c;是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP 程序的首…

EasyCVR视频融合平台的视频处理与AI智能分析流程实操案例介绍

EasyCVR基于云边端一体化架构&#xff0c;能支持海量视频的轻量化接入与汇聚管理。在视频能力上&#xff0c;可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联等。 除了视频能力之外&#xff0c;将…

浅谈设备防漏扫

场景描述 随着社会的信息化&#xff0c;互联网安全被国家越来越重视&#xff0c;漏洞扫描&#xff08;简称漏扫&#xff09;业务也在被规范列入企事业单位的信息安全的标准中。 从安全角度来看&#xff0c;漏扫本身是为用户的用网安全做保障&#xff0c;避免木马、病毒等通过…

vue中点击空白处改变dom状态实现显隐,监听dom(addEventListener)

需求来源&#xff1a;点击铃铛之后弹出右侧抽屉&#xff0c;实现文件下载 现在是点击小铃铛出现弹框没问题&#xff0c;点击关闭图标关闭弹框也没问题&#xff0c;但是点击空白区域消失不了&#xff0c;这个时候需要dom监听属性document.addEventListener来实现需求了 主要是用…

c++学习笔记之基础

目录前言零碎知识点C核心内存分区引用函数类和对象对象的初始化和清理构造函数和析构函数构造函数的分类和调用拷贝构造函数的调用时机深拷贝与浅拷贝初始化列表类对象作为类的成员静态成员C对象模型和this指针成员变量和成员函数分开存储this指针空指针访问成员函数const修饰成…

IDEA2022 配置spark开发环境

本人强烈建议在 linux环境下 学习 spark&#xff01;&#xff01;&#xff01; Introduction Apache Spark是一个快速且通用的分布式计算引擎&#xff0c;可以在大规模数据集上进行高效的数据处理&#xff0c;包括数据转换、数据清洗、机器学习等。在本文中&#xff0c;我们将…