当前位置:网站首页>多模态——Deep Multi-Modal Sets
多模态——Deep Multi-Modal Sets
2022-07-25 23:08:00 【只会git clone的程序员】
前言
论文:arxiv
现在很多视觉任务都会融合利用多种模态的特征,来训练鲁棒性比较高并且表征能力比较强的特征,以往的方法主要是利用特征Concat以及MLP层来挖掘并训练融合表征的特征。这样的话在更多的模态被加入使用的时候,Concat的特征纬度会越来越大。
贡献
- 本文为多模态融合提供了一种灵活处理特征数量以及模态数量的结构。
- 这种结构可以方便我们在推理的时候分析哪一种模态给模型带来的贡献最大/
方法
多模态任务可以理解为在训练任务中使用了不止一种模态的数据,目标是训练得到一个可以表征多个模态信息的embedding,这个特征会被用来完成下游任务比如说召回排序等。
传统方法,把各个模态的特征Concat起来,用下面公式表示:
X1-I对应了I个模态的特征,这样的话XC的维度就是I个特征的维度和,然后接MLP层就可以用来完成下游任务的预测了。这样的方法存在以下缺点:
- 如果某种模态缺失,需要用占位特征来暂替,比如说补0,但是全0的特征对于一些任务来说可能是一种非常不自然的特征被人为的强加到训练任务中。
- 然后对于序列特征,举个例子比如说用户历史的点击行为,出现的次数不定这样的特征如果用concat来处理的话需要都Padding到最大长度这样会造成很大程度计算量的浪费并且增加了很多无效特征。
- 另外,有些模态特征的维度比较低,像性别特征可以用2维的向量来表征,对于图像特征用resnet50提取的话一般是2048维度的特征,这样会存在模态特征纬度不平衡的问题,这样可能会导致那些高纬度的特征主要影响了模型的性能。当然这种问题可以通过对模态特征先进行encoder处理到一定维度。下图公式就表示把I中第i个模态从Mi纬度编码成D纬度。

- 最后对于模态比较多的情况以及某个模态的序列长度不定长的情况,用concat以及concat技术对他们的处理会非常不灵活。
Deepset,论文对deepset中对序列特征的融合主要研究了sum pool、max pool以及min pool等方法,感觉有点落后呀…attention is all you need…现在主流的方法还是基于transformer来实现的,论文的实验就没啥好讲的了,主要介绍下我自己的一些理解。
在业务上实验了几种结构的对比,并且听了些同事的技术分享,我理解的deepset应该是对序列特征先做融合再把整体模态特征融合。这样的好处就是可以节省参数量以及节省计算量。举例一个我实验的deepset结构:
f1-f5对应五种序列特征,经过transformer的输出后形状是不变的,比如(bs, n, d)的输入给transformer输出还是(bs, n, d)这时候的特征已经学习过序列间的相互关系了,对n的维度做一个mean pool即可得到对应模态的表征特征(bs, 1, d),然后再把每个模态的特征concat起来最后送到一个所有模态融合的transformer模块后就可以得到全局表征的embdding了。
对比另一种结构:
这种方法实验的结论是参数量计算量大并且模型效果略差于deepset形式的模型。然后可以看到我在图中concat后多绘制了一个渐变色的特征,因为这样把所有的特征先做汇总会丢失了某个模态他自己输入哪种模态的信息,有些方法会给每个特征在数值上加上一个模态的编码以及一个序列的编码,序列的编码是为了一些序列依赖的特征比如视频的图像特征。还有些方法会把这个模态的融合特征也concat进去,融合特征可以用maxpool或者sumpool来得到,像ECCV MMT。这种结构实现略繁琐,需要加上序列位置编码和模态编码,然后参数量还大。
其他代码
看到facebook也开源了一些模态融合的代码,基于deepset结构的transformer代码:
https://github.com/facebookresearch/multimodal/blob/main/torchmultimodal/modules/fusions/deepset_fusion.py
边栏推荐
- Understanding English (speech understanding)
- Circle detection and line detection of PCL
- 向下扎根,向上生长,探寻华为云AI的“根”力量
- The difference between "= =" and equals
- Summary of common methods of string:
- Deep recursion, deep search DFS, backtracking, paper cutting learning.
- Anaconda installation tutorial environment variables (how to configure environment variables)
- Mongodb features, differences with MySQL, and application scenarios
- Expression of directional signal -- complex exponential signal
- Basic knowledge of radar
猜你喜欢
![[paper notes] robot dynamic tracking and grasping method based on online prediction and planning](/img/0f/ca7f3cd3332069185a2dad397766b4.png)
[paper notes] robot dynamic tracking and grasping method based on online prediction and planning

自定义mvc原理

General paging function

技术美术百人计划学习笔记(2)--向量

How to obtain the cash flow data of advertising services to help analyze the advertising effect?

Network Security Learning (XIII) data link layer
![[文献阅读] - HRL -[HRL with Universal Policies for Multi-Step Robotic Manipulation]](/img/34/06d5ba3af4e6e775a335324c020161.png)
[文献阅读] - HRL -[HRL with Universal Policies for Multi-Step Robotic Manipulation]

The third experiment OSPF

Week 2: convolutional neural network

Wamp MySQL empty password
随机推荐
Why is Google's internal tools not suitable for you?
Tips for using (1)
第二周学习:卷积神经网络
r语言绘图参数(R语言plot画图)
Explain in detail the addition (+) operation in JS, basic data type addition, reference data type addition, and the underlying operation rules, [] + {}, {} + []
The difference between abstract classes and interface interfaces
[literature reading] - HRL -[hrl with universal policies for multi step robotic control]
ffmpeg初次学习(仅针对编码)
The difference between abstract classes and interfaces
四旋翼飞行器的飞控实现「建议收藏」
The fourth experiment nat
Network Security Learning (XIII) data link layer
Rental experience post
Recyclerview computehorizontalscrollextend computehorizontalscrollrange computehorizontalscroll for calculating the sliding distance
Deep recursion, deep search DFS, backtracking, paper cutting learning.
Expression of directional signal -- complex exponential signal
General paging function
单模型常识推理首超人类!HFL登顶OpenBookQA挑战赛
Network Security Learning (XV) ARP
Experience of machine learning with Google Lab