一、论文信息
论文题目: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 动机
-
能够同时进行多模态感知是人类学习的关键能力。但对于模态融合的统一模型是具有挑战性的,因为模态之间的学习是动态变化的;某些模态比其他模态包含更多关于任务的信息;不同模态有专门的输入表示 。由于模态输入的差异,多模态融合的主导范式通常通过集成独立的视觉和听觉网络来融合信息,即后期融合(late-fusion,先分别处理单个模态数据之后fusion为多模态结果)。
-
Transformer已被证明在图像 (ViT ) 和视频分类 (ViViT ) 以及音频分类 (AST) 等领域具有不错的性能,通过将密集的连续信号分成多个patch并将它们转换为一维的序列,由于这些模型能够处理可变长度的序列,因此常规的扩展是不需要改变Transformer的结构,可以直接将多模态patch的序列送到Transformer中。这种“早期融合”模型允许注意力在图像中的不同时空域之间自由建模,以及在音频频谱图中的频率和时间之间自由建模。但作者认为在模型的所有层完全成对的注意是不必要的,因为音频和视觉输入包含密集的、细粒度的信息,其中大部分是多余的。由于注意力机制具有和token序列长度相关的二次复杂度,这种模型也无法很好地扩展到较长的视频。
2.2 创新
-
第一种方法是多模态学习中的一种常见方法,即将跨模态流动限制在网络的后一层 ,前面的层采用单模态学习,这种方法被成为“Mid Fusion(中期融合)”,如下图中的Mid Fusion所示。
-
第二种方法,也是本文的主要贡献点, 是限制层内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部分的影响。