精华内容
下载资源
问答
  • 什么是多模态机器学习?

    万次阅读 多人点赞 2018-12-20 21:54:07
    首先,什么叫做模态(Modality)呢? 每一种信息的来源或者形式,都可以称为一种模态。例如,人有触觉,听觉,视觉,嗅觉;信息的媒介,有语音、视频、文字等;多种多样的传感器,如雷达、红外、加速度计等。以上的...

    首先,什么叫做模态(Modality)呢?

    每一种信息的来源或者形式,都可以称为一种模态。例如,人有触觉,听觉,视觉,嗅觉;信息的媒介,有语音、视频、文字等;多种多样的传感器,如雷达、红外、加速度计等。以上的每一种都可以称为一种模态。

    同时,模态也可以有非常广泛的定义,比如我们可以把两种不同的语言当做是两种模态,甚至在两种不同情况下采集到的数据集,亦可认为是两种模态。

    因此,多模态机器学习,英文全称 MultiModal Machine Learning (MMML),旨在通过机器学习的方法实现处理和理解多源模态信息的能力。目前比较热门的研究方向是图像、视频、音频、语义之间的多模态学习。

    多模态学习从1970年代起步,经历了几个发展阶段,在2010后全面步入Deep Learning阶段。

    人其实是一个多模态学习的总和,所以也有”砖家“说了,多模态学习才是真正的人工智能发展方向。

    本文将针对多模态学习在深度学习发面的研究方向和应用做相关介绍,主要参考了来自ACL 2017的《Tutorial on Multimodal Machine Learning》。

    多模态学习的分类

    多模态学习可以划分为以下五个研究方向:

    1. 多模态表示学习 Multimodal Representation
    2. 模态转化 Translation
    3. 对齐 Alignment
    4. 多模态融合 Multimodal Fusion
    5. 协同学习 Co-learning

    下面将针对这五大研究方向,逐一进行介绍。

    多模态表示学习 Multimodal Representation

    单模态的表示学习负责将信息表示为计算机可以处理的数值向量或者进一步抽象为更高层的特征向量,而多模态表示学习是指通过利用多模态之间的互补性,剔除模态间的冗余性,从而学习到更好的特征表示。主要包括两大研究方向:联合表示(Joint Representations)协同表示(Coordinated Representations)

    • 联合表示将多个模态的信息一起映射到一个统一的多模态向量空间;
    • 协同表示负责将多模态中的每个模态分别映射到各自的表示空间,但映射后的向量之间满足一定的相关性约束(例如线性相关)。

    联合表示和协同表示对比图

    利用多模态表示学习到的特征可以用来做信息检索,也可以用于的分类/回归任务。下面列举几个经典的应用。

    在来自 NIPS 2012 的 《Multimodal learning with deep boltzmann machines》一文中提出将 deep boltzmann machines(DBM) 结构扩充到多模态领域,通过 Multimodal DBM,可以学习到多模态的联合概率分布。

    单模态和多模态DBM对比图

    论文中的实验通过 Bimodal DBM,学习图片和文本的联合概率分布 P(图片,文本)。在应用阶段,输入图片,利用条件概率 P(文本|图片),生成文本特征,可以得到图片相应的文本描述;而输入文本,利用条件概率 P(图片|文本),可以生成图片特征,通过检索出最靠近该特征向量的两个图片实例,可以得到符合文本描述的图片。如下图所示:

    协同表示学习一个比较经典且有趣的应用是来自于《Unifying Visual-Semantic Embeddings with Multimodal Neural Language Models 》这篇文章。利用协同学习到的特征向量之间满足加减算数运算这一特性,可以搜索出与给定图片满足“指定的转换语义”的图片。例如:

    狗的图片特征向量 - 狗的文本特征向量 + 猫的文本特征向量 = 猫的图片特征向量 -> 在特征向量空间,根据最近邻距离,检索得到猫的图片

    转化 Translation / 映射 Mapping

    转化也称为映射,负责将一个模态的信息转换为另一个模态的信息。常见的应用包括:

    机器翻译(Machine Translation):将输入的语言A(即时)翻译为另一种语言B。类似的还有唇读(Lip Reading)语音翻译 (Speech Translation),分别将唇部视觉和语音信息转换为文本信息。

    图片描述(Image captioning) 或者视频描述(Video captioning): 对给定的图片/视频形成一段文字描述,以表达图片/视频的内容。

    语音合成(Speech Synthesis):根据输入的文本信息,自动合成一段语音信号。

    模态间的转换主要有两个难点,一个是open-ended,即未知结束位,例如实时翻译中,在还未得到句尾的情况下,必须实时的对句子进行翻译;另一个是subjective,即主观评判性,是指很多模态转换问题的效果没有一个比较客观的评判标准,也就是说目标函数的确定是非常主观的。例如,在图片描述中,形成怎样的一段话才算是对图片好的诠释?也许一千个人心中有一千个哈姆雷特吧。

    对齐 Alignment

    多模态的对齐负责对来自同一个实例的不同模态信息的子分支/元素寻找对应关系。这个对应关系可以是时间维度的,比如下图所示的 Temporal sequence alignment,将一组动作对应的视频流同骨骼图片对齐。类似的还有电影画面-语音-字幕的自动对齐。

    对齐又可以是空间维度的,比如图片语义分割 (Image Semantic Segmentation):尝试将图片的每个像素对应到某一种类型标签,实现视觉-词汇对齐。

    多模态融合 Multimodal Fusion

    多模态融合(Multimodal Fusion )负责联合多个模态的信息,进行目标预测(分类或者回归),属于 MMML 最早的研究方向之一,也是目前应用最广的方向,它还存在其他常见的别名,例如多源信息融合(Multi-source Information Fusion)、多传感器融合(Multi-sensor Fusion)。

    按照融合的层次,可以将多模态融合分为 pixel level,feature level 和 decision level 三类,分别对应对原始数据进行融合、对抽象的特征进行融合和对决策结果进行融合。而 feature level 又可以分为 early 和 late 两个大类,代表了融合发生在特征抽取的早期和晚期。当然还有将多种融合层次混合的 hybrid 方法。

    融合层次示意图

    常见的机器学习方法都可以应用于多模态融合,下面列举几个比较热门的研究方向。

    视觉-音频识别(Visual-Audio Recognition): 综合源自同一个实例的视频信息和音频信息,进行识别工作。

    多模态情感分析(Multimodal sentiment analysis): 综合利用多个模态的数据(例如下图中的文字、面部表情、声音),通过互补,消除歧义和不确定性,得到更加准确的情感类型判断结果。

    手机身份认证(Mobile Identity Authentication): 综合利用手机的多传感器信息,认证手机使用者是否是注册用户。

    多模态融合研究的难点主要包括如何判断每个模态的置信水平、如何判断模态间的相关性、如何对多模态的特征信息进行降维以及如何对非同步采集的多模态数据进行配准等。

    若想了解传统的机器学习方法在此领域的应用,推荐学习清华大学出版的《多源信息融合》(韩崇昭等著)一书。

    协同学习 Co-learning

    协同学习是指使用一个资源丰富的模态信息来辅助另一个资源相对贫瘠的模态进行学习。

    比如迁移学习(Transfer Learning)就是属于这个范畴,绝大多数迈入深度学习的初学者尝试做的一项工作就是将 ImageNet 数据集上学习到的权重,在自己的目标数据集上进行微调。

    迁移学习比较常探讨的方面目前集中在领域适应性(Domain Adaptation)问题上,即如何将train domain上学习到的模型应用到 application domain。

    迁移学习领域著名的还有零样本学习(Zero-Shot Learning)一样本学习(One-Shot Learning),很多相关的方法也会用到领域适应性的相关知识。

    Co-learning 中还有一类工作叫做协同训练(Co-training ),它负责研究如何在多模态数据中将少量的标注进行扩充,得到更多的标注信息。

    通过以上应用我们可以发现,协同学习是与需要解决的任务无关的,因此它可以用于辅助多模态映射、融合及对齐等问题的研究。

    结束语

    到此为止,我们对多模态机器学习领域的研究方向和应用进行了一个大致的梳理,受限于篇幅,还有许多未涉及的研究问题。

    有什么读后感吗?

    也许你以前没有听过多模态学习(MMML)这个概念,读了此文发现原来自己做的正是 MMML 一个分支;

    也许你以前觉得 CV / NLP / SSP 才是人工智能的正统,读了此文发现多学科交叉的 MMML 一样可以玩 DL 溜得飞起;

    也许你目前正苦于找不到研究的方向,读了此文发现 MMML 打开了新的大门,原来有这么多的事情可以做。

    多模态学习是一个目前热度逐年递增的研究领域,如果大家感兴趣,欢迎留言反馈,后续我们会考虑推出几个热门 MMML 方向的经典or前沿论文、模型解析。

    推荐几篇入门综述文献

    如果想入门 MMML 或者希望对该领域有初步了解,可以从以下几篇综述入手

    【1】Atrey P K, Hossain M A, El Saddik A, et al. Multimodal fusion for multimedia analysis: a survey[J]. Multimedia systems, 2010, 16(6): 345-379.

    【2】Ramachandram D, Taylor G W. Deep multimodal learning: A survey on recent advances and trends[J]. IEEE Signal Processing Magazine, 2017, 34(6): 96-108.

    【3】Baltrušaitis T, Ahuja C, Morency L P. Multimodal machine learning: A survey and taxonomy[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2018.

    展开全文
  • MFC模态对话框和非模态对话框

    万次阅读 多人点赞 2011-08-31 15:54:21
    MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box)。 一、模态对话框(model dialog box) 在程序运行的过程中,若出现了模态对话框,那么主窗口将无法...

    MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box)。

     一、模态对话框(model dialog box)

            在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送。

           点击模态对话框中的OK按钮,模态对话框会被销毁。

            创建一个模态对话框的代码:

    	//创建一个模态对话框
    	CTestDialog td;
    	td.DoModal(); 

            其中CTestDialog为我自己所新建和一个对话框资源相关联的对话框类。

            可以创建一个布局模态对话框类变量,不用担心它会随着所在函数返回而被销毁。因为DoModal()函数的一个功能是,当前只能运行此模态对话框,且停止主窗口的运行,直到模态对话框退出,才允许主窗口运行。

            DoModal()函数也有显示对话框的功能,所以也无需调用其他函数来显示对话框。

    二、非模态对话框(modaless dialog box)

            在程序运行的过程中,若出现了非模态对话框,主窗口还可以发送消息。

            点击非模态对话框中的OK按钮,非模态对话框没有销毁,只是隐藏了。若想点击OK按钮时,非模态对话框也销毁,那么CTestDialog类必须重载其基类CDialog的虚函数OnOK(),在此函数里调用DestroyWindow()来销毁此对话框。

            若和上面一样的方式创建一个非模态对话框:

               CTestDialog td;
    	td.Create(IDD_DIALOG1); //创建一个非模态对话框
    	td.ShowWindow(SW_SHOWNORMAL); //显示非模态对话框

            那么,在运行时,你会发现此对话框无法显示。这是因为你声明的对话框变量td是局部变量,但这个函数返回时,td也被析构了,所以无法显示此对话框。

            创建非模态对话框,必须声明一个指向CTestDialog类的指针变量,且需要显示的调用ShowWindow()才能将对话框显示出来。有两种创建方法:

    (1)采用局部变量创建一个非模态对话框

    	//采用局部变量创建一个非模态对话框
    	CTestDialog *pTD = new CTestDialog();
    	pTD->Create(IDD_DIALOG1); //创建一个非模态对话框
    	pTD->ShowWindow(SW_SHOWNORMAL); //显示非模态对话框

           因为指针在声明的时候是被放在堆栈中,只有整个应用程序关闭后才会被销毁,所以可以正常显示对话框。

            这种方法虽然不影响程序的运行,可是指针pTD所指向的内存却导致不可用,这样的编程很不好。

    (2)采用成员变量创建一个非模态对话框

            首先在你所要编写的类的头文件中声明一个指针变量:

    private:
    	CTestDialog *pTD;

            然后再在相应的CPP文件,在你要创建对话框的位置添加如下代码:

    	//采用成员变量创建一个非模态对话框
    	pTD = new CTestDialog(); //给指针分配内存
    	pTD->Create(IDD_DIALOG1); //创建一个非模态对话框
    	pTD->ShowWindow(SW_SHOWNORMAL); //显示非模态对话框

            最后在所在类的析构函数中收回pTD所指向的内存:

    	delete pTD;

     

    展开全文
  • Multimodal Fusion(多模态融合)

    万次阅读 多人点赞 2020-03-28 19:44:15
    Jeff Dean:我认为,2020年在多任务学习和多模态学习方面会有很大进展,解决更多的问题。我觉得那会很有趣。 多模态融合 (Multimodal Fusion) 一般来说,每一种信息的来源或者形式,都可以称为一种模态(Modality...

    在这里插入图片描述
    Jeff Dean:我认为,2020年在多任务学习和多模态学习方面会有很大进展,解决更多的问题。我觉得那会很有趣。

    多模态学习
    为了使人工智能进一步加强对我们周边事物的理解,它需要具备解释多模态信号的能力。一般多模态需要处理的任务主要如上图有:

    • 表征(Representation)。找到某种对多模态信息的统一表示,分Coordinated representations(每个模态各自映射然后用用相关度距离来约束表示),Joint representations(多个模态一起映射)。
    • 翻译(Translation)。一个模态映射到另一个模态,分example-based(有候选集,如检索任务),generative(Decoder-Encoder)。
    • 对齐(Alignment)。找模态子成份之间的关系,如某词对应某区域。分显式对齐和隐式对齐,Attention首当其冲。
    • 融合(Fusion)。整合信息。分model-agnostic(早晚融合),model-based(融合更深入),也是本篇要整理的内容。
    • 联合学习(Co-learning)。通过利用丰富的模态的知识来辅助稀缺的模态,分parallel(如迁移学习),non-parallel(迁移学习,zero shot),hybrid。

    上图来自多模态综述:Multimodal Machine Learning:A Survey and Taxonomy

    接下来重点介绍一些多模态融合方法。

    多模态融合 (Multimodal Fusion)
    一般来说,模态是指事物发生或存在的方式,多模态是指两个或者两个以上的模态的各种形式的组合。对每一种信息的来源或者形式,都可以称为一种模态(Modality),目前研究领域中主要是对图像,文本,语音三种模态的处理。之所以要对模态进行融合,是因为不同模态的表现方式不一样,看待事物的角度也会不一样,所以存在一些交叉(所以存在信息冗余),互补(所以比单特征更优秀)的现象,甚至模态间可能还存在多种不同的信息交互,如果能合理的处理多模态信息,就能得到丰富特征信息。即概括来说多模态的显著特点是: 冗余性 和 互补性
    在这里插入图片描述

    传统特征融合算法主要可以分为三类:1.基于贝叶斯决策理论的算法 2.基于稀疏表示理论的算法 3.基于深度学习理论算法。传统方法不做整理,其中的深度学习方法按照融合的层次从下到上每一层都可以fusion:

    • pixel level。对原始数据最小粒度进行融合。
    • feature level 。对抽象的特征进行融合,这也是用的最多的。包括early 和 late fusion,代表融合发生在特征抽取的早期和晚期,如上图。early是指先将特征融合后(concat、add)再输出模型,缺点是无法充分利用多个模态数据间的互补性,且存在信息冗余问题(可由PCA,AE等方法缓解)。late分融合和不融合两种形式,不融合有点像集成学习,不同模态各自得到的结果了之后再统一打分进行融合,好处是模型独立鲁棒性强。融合的方式即在特征生成过程中(如多层神经网络的中间)进行自由的融合,灵活性比较高,如金字塔融合。
    • decision level 对决策结果进行融合,这就和集成学习很像了。
    • hybrid。混合融合多种融合方法。
      在这里插入图片描述

    就一些详细方法上,这篇文章主要整理部分博主自己看过的paper:

    • 基于矩阵;
    • 基于普通神经网络;
    • 基于生成模型;
    • 基于注意力;
    • 其他。如NAS,GAN,Graph等。
    • 融合矩阵和特征。
    • shuffle和shift等不需要额外参数的方法。

    TFN(Multimodal Tensor Fusion Network)
    首先是基于矩阵的TFN,TFN属于early fusion,是一个典型通过矩阵运算进行融合特征融合的多模态网络,即直接对三种模态的数据(如Text,Image,Audio)的三个特征向量X,Y,Z,进行:hm=[hx1][hy1][hz1]{h}_{m}=\begin{bmatrix}{{{h}_x}}\\{1}\end{bmatrix}\otimes\begin{bmatrix}{{{h}_y}}\\{1}\end{bmatrix}\otimes\begin{bmatrix}{{{h}_z}}\\{1}\end{bmatrix}

    便得到了融合后的结果m,如下图:
    在这里插入图片描述

    缺点:TFN通过模态之间的张量外积(Outer product)计算不同模态的元素之间的相关性,但会极大的增加特征向量的维度,造成模型过大,难以训练。

    LMF(Low-rank Multimodal Fusion)
    出自论文 Efficient Low-rank Multimodal Fusion with Modality-Specific Factors,ACL2018。是TFN的等价升级版,就具体模型如图。LMF利用对权重进行低秩矩阵分解,将TFN先张量外积再FC的过程变为每个模态先单独线性变换之后再多维度点积,可以看作是多个低秩向量的结果的和,从而减少了模型中的参数数量。
    在这里插入图片描述

    缺点:虽然是TFN的升级,但一旦特征过长,仍然容易参数爆炸。

    PTP (polynomialtensor pooling)
    出自论文,Deep Multimodal Multilinear Fusion with High-order Polynomial Pooling,NIPS 2019.
    以往的双线性或三线性池融合的能力有限,不能释放多线性融合的完全表现力和受限的交互顺序。 更重要的是,简单地同时融合特征忽略了复杂的局部相互关系。所以升级为一个多项式张量池(PTP)块,通过考虑高阶矩来集成多模态特征。即将concat的模型x N之后再做一个低秩分解。
    在这里插入图片描述
    关于对矩阵的操作还有一种处理方法,就是如下图这种两两组合的方式。图出自NEURAL TENSOR NETWORK(NTN),本来是做实体关系检测的,同样也是博主觉得觉得这种方法也挺有意思的。这个小模块的大致的思路就是,让我们把APO都各自看成三个模态吧,然后两两组合得到矩阵T1,T2,再继续组合最后得到U这个融合/预测的结果。
    在这里插入图片描述
    深度学习浪潮来袭后,可以在一定程度上缓解矩阵方法的缺点。

    DSSM(Deep Structured Semantic Models)
    DSSM是搜索领域的模型,属于late fusion。它通过用 DNN 把 Query 和 Title(换成不同的模态数据就行) 表达为低维语义向量,并通过 cosine 距离来计算两个语义向量的距离,最终训练出语义相似度模型。该模型既可以用来预测语义相似度,又可以获得某模态的低维语义向量表达。(可以将两个模态约束至统一表示空间,多模态协同表示。与之对应的多模态联合表示是先concat再FC)在这里插入图片描述
    其他玩法:可以在DNN的过程中,用recurrent residual fusion (RRF) ,多个残差,然后将3次recurrent的结果与最开始的输入concat起来,最后将concat得到的结果做融合。

    Dynamic Fusion for Multimodal Data
    以上的融合方法都太过“生硬”,能否有更好更自然的融合方法呢?AE(autoencoder)首当其冲,如图左图,先把所有模态fc即encoder,再用decode还原特征,最后计算特征之间的损失。

    有了AE,GAN的出现不会太迟。如图右图,将不采用固定的模态融合方法,而是自动学习“how”融合。先对video和speech转换完成后,和text进行对抗(video往往和speech是搭配的,所以先融合)。
    在这里插入图片描述
    另外在CVPR2019,有一篇–MFAS:Multimodal Fusion Architecture Search,首次用神经架构搜索做how融合。

    MFN(Memory Fusion Network)
    出自Memory Fusion Network for Multi-View Sequential Learning,AAAI 2018。
    17,18年是注意力机制开始统治学术界的一年,很多工作都做了这方面的工作。MFN就是一种使用“Delta-memory attention”和“Multi-View Gated Memory”来同时捕捉时序上和模态间的交互,以得到更好的多视图融合。模型图如下,用memory的目的是能保存上一时刻的多模态交互信息,gated过滤,Attention分配权重。
    在这里插入图片描述

    淘宝视频多模态应用
    淘宝视频的多模态信息也是十分丰富,而用LMF和TFN参数量往往会爆炸,就不得已要先将每个模态特征降维,然而降维本身是有损的,导致降维后的模态特征再外积不如直接利用不同模态间特征拼接。

    不过不要紧,淘宝也就提出了基于Modal Attention的多模态特征融合方法。Modal Attention是用法是,预测基于concat后的多模态联合特征对不同模态的重要性分布概率,再将分布概率与多模态融合特征做点积,得到对于不同模态特征重要性重新加权过后的新的多模态融合特征。
    在这里插入图片描述
    最后还想提一下的是一般的分类任务都只有单一的目标,而淘宝的标签体系是结构化分层的,所以他们在后面做了HMC(分层多标签分类器)用基于类别不匹配的多目标损失函数,即损失函数由一级类别,二级类别,一二级类别不匹配损失三个部分组成。

    Multi-Interactive MemoryNetwork
    这篇文章同样是用了Attention,使用Aspect-guided attention机制来指导模型生成文本和图像的Attention向量。使用的是和Attention很类似的记忆网络技术,具体如下图分为Textual和Visual Memory Network,然后通过GRU+Attention的多跳融合优化特征表达。

    其中的重点在于,为了捕获多模态间和单模态内的交互信息,模型又使用了Multi-interactive attention机制。即Textual和Visual在多跳的时候会相互通过Attention来融合信息(感觉很像Co-Attention的处理方法)。
    在这里插入图片描述
    其他玩法:不止是Co-Attention咯,就把Attention的其他各种变体一直到Transformer,BERT系列,各种预训练模型再应用一遍。。。不过这个属于专门的多模态预训练了在另一篇文章有整理:传送门

    Neural Machine Translation with Universal Visual Representation
    补上ICLR2020的文章,这一篇是对Transformer的变形咯,不过变的比较有趣。这篇文章做的是多模态机器翻译任务,即在原来的机器翻译上融入图片信息来辅助翻译,毕竟人类的语言各异,但是认知水平是一样的,对于同一副图像描述出的语义会是一致的。
    在这里插入图片描述
    做法比较干脆利落,在Transformer的Dncoder端把图片的表示也输入进去(即上图中中间那个部分),意思应该是以句子编码为Q(图中的表示是H),然后图像的特征为K和V,即在图像中找语义相似的部分做Attention的fusion,最后一起送到Decoder端做翻译。

    Adversarial Multimodal Representation Learning for Click-Through Rate Prediction
    继续补上一篇WWW20’的阿里论文,虽然是做点击率预估,这里的融合方法非常有意思。

    以往的多模态融合要么将多个模态特征串联起来,相当于给每个模态赋予固定的重要性权重;要么学习不同模态的动态权重,用于不同的项如用Attention融合比较好,但是不同模态本身会有冗余性和互补性(相同的东西和不同的东西),即需要考虑不同的模态特性和模态不变特性。使用冗余信息计算的不同模式的动态权重可能不能正确地反映每种模式的不同重要性。

    为了解决这一问题,作者通过不同的考虑模态特异性和模态不变特征来考虑模态的非定性和冗余性。
    在这里插入图片描述
    所以在多模态融合(普通的Attention融合,即图中的MAF)旁边加上一个双判别器对抗网络(即图中的DDMA),即分别捕捉动态共性,和不变性。DDMA如下图:
    在这里插入图片描述
    双判别器是为了挖掘:

    • 各种模式共同特征的潜在模式(第一个D 识别可能来自共同潜在子空间的模态不变特征,跨越多种模式并强调已识别的模态不变特征,以进一步混淆第二个鉴别器)
    • 并推动各种模式之间的知识转让(第二个D 在模式之间学习跨多个模式的共同潜在子空间)。

    Cross-modality Person re-identification with Shared-Specific Feature Transfer
    继续继续补一篇新鲜的CVPR2020的文章,同样这篇文章是做行人重识别的,但是融合方法很有趣。

    还是沿着上一篇博文的思路,现有的研究主要集中在通过将不同的模态嵌入到同一个特征空间中来学习共同的表达。然而,只学习共同特征意味着巨大的信息损失,降低了特征的差异性。

    所以如何找不同模态间的 共性 和 个性?一方面不同模态之间的信息有互补作用,另一方面模态自己的特异性又有很强的标识功能。但是怎么把两者分开呢?即如何找到这两种表示。作者提出了一种新的跨模态共享特征转移算法(cm-SSFT):
    在这里插入图片描述
    (注:RGB图和红外IR图是两种模态)

    • Two-stream。特征提取器得到两个模态的特征。绿线是RGB,黄线是IR,这两部分是特性,然后蓝色部分是两者共享的modality-shared 共性。
    • Shared-Specific。对提取到的特征进行统一的特征表示。然后这里有个概念是Affinity modeling(博主的理解是相似度),使用共性common feature和特性specific feature建立成对亲和模型,目的是使得模态内及模态间的每个样本向关联。会拼接出一个统一的大方形(两个对角是特性,两个对角共性),和一个由RGB+共性+0和IR+共性+0拼接得到的Z。
    • shared-specific transfer network (SSTN)。确定模态内和模态间的相似性,并且在不同的模态间传播共享和特定特征,以弥补缺乏的特定信息并增强共享特征。这一部分借鉴了GAN进行消息传播,直观的理解是根据共享特征对不同模态样本的亲缘关系进行建模。
    • 在特征提取器上模块上又增加了两个项目对抗重建块(project adversarial and reconstruction blocks)和一个模式适应模块(modality- adaptation module),以获得区别性、互补性的共享特征和特定特征。1 模态鉴别器对每个共享特征的模态进行分类 2 特有特征投射到相同样本的共享特征上 3 将共享的和特定的特征拼起来。

    在这里插入图片描述
    Feature Projection for Improved Text Classification.
    共性和个性的文章还有这一篇,ACL 2020。基础思路是用特征投影来改善文本分类。直接看模型有两个网络,分别是projection network (P-net)和common feature learning network (C-net)。

    • C-net:提取common features,即抽取共性。fp表示初试特征向量,fc表示公共特征向量,这里将两者进行投影:fp=proj(fp,fc)f_p^*=proj(f_p,f_c)
    • P-net:计算净化的向量特征,即得到个性。这里是实现是通过将学习到的输入文本的信息向量投影到更具区分性的语义空间中来消除共同特征的影响。fp=proj(fp,(fpfp))f_p'=proj(f_p,(f_p-f_p^*))

    这里所谓的正交投影的做法是,将输入的特征向量fp投影到公共特征向量fc来限制公共特征向量的模,从而使新的公共特征向量fp*的语义信息仅包含xi的公共语义信息。然后相减两者再投影,就让最后的结果不是与公共特征向量fc正交的任何平面中的任何向量了。

    • code:https://github.com/Qqinmaster/FP-Net/

    MCF(Multi-modal Circulant Fusion for Video-to-Language and Backward)
    之前整理的工作要么是针对矩阵,要么是针对特征。这篇IJCAI的文章尝试同时使用vector和matrix的融合方式。
    在这里插入图片描述这篇文章最关键的点在于circulant matrix,具体的操作方式其实就是vector的每一行都平移一个元素得到matrix,这样以探索不同模态向量的所有可能交互。简单来说以V和C为视觉和文本特征,则有:A=circ(V)A=circ(V)B=circ(C)B=circ(C)得到矩阵之后再结合原特征做交互即可G=1di=1daiCG=\frac{1}{d}\sum^d_{i=1}a_i\cdot CF=1di=1dbiVF=\frac{1}{d}\sum^d_{i=1}b_i\cdot V

    Learning Deep Multimodal Feature Representation with Asymmetric Multi-layer Fusion
    补MM20的文章,这篇文章没有增加额外参数,而且仅在单网络下就完成了融合。首先作者指出现有多模态表示学习的两个问题:

    • 1 现有的多模态训练方法遵循一种常见的设计实践,即单个编码器分支专门针对某个模态(即一般都是双流的操作,这样往往参数会更多,而且两者的异质性没有统一),能否单流就能解决?
    • 2 多模态融合的关键要素包括如何设计融合函数和在哪里实现融合,但不管怎么设计,现有融合方法只适用于对称特征(博主 认为这同样也是从双流的视角得到的观点)。

    所以作者提出的解决方案为:

    • 私有化BN即可统一多模态的表示。由于BN层会在batch里面先激活,再与channel方向仿射参数进行转换得到偏置和方差,从这个角度来说,BN提供了可以把特征转换到任何尺度的可能性。 所以那么为什么不贡献网络参数,只私有化BN呢?这样就可以在单网络中完成多模态的表示。具体如下图,粉色的conv都是共享的,而不同模态的BN是私有的。
      在这里插入图片描述

    • 双向不对称fusion。用shuffle+shift的方式,以不增加参数的方式完成模态间的交互。channel shuffle操作加强了channel间的多模态特征交互,提高了整体特征表示能力,如下图a。而shift像素移位操作作为每个通道内空间方向的融合(这个其实就与上篇文章里面的circulant matrix很像了),倾向于增强空间特征识别,所以能在对象边缘捕获细粒度信息,特别是对于小目标,结构如下图b。同时,这两者都是无参数的!具体的融合方法如下图的c,在两个模态间做shuffle,同时完成不对称的shift。
      在这里插入图片描述

    Adaptive Multimodal Fusion for Facial Action Units Recognition
    继续补文章。来自MM2020的文章,同样的我们也只看融合部分的做法。文章题目中 自适应 的意思是模型可以自动从模态中选取最合适的模态特征,这样可以使模型具有鲁棒性和自适应性,而这一步骤是通过采样来完成的!

    • 即同时从三个模态的特征中进行采样。具体见图的后半段,单个模态得到特征后橫着拼接成矩阵,然后通过采样在每维上自动选取最合适的特征,并且可以通过多次采样得到更丰富的表示。
    • 不过值得注意的是,此时采样之后变成离散的了,无法进行梯度传播,所以作者借用了VAE里面重参数技巧,用Gumbel Softmax来解决了。
      在这里插入图片描述

    这篇博文好像越补越多了…不过如果您有其他有关多模态融合有意思的论文,欢迎在文章后面留言。

    另外,下一篇博文整理了在多模态领域中也很常见的应用领域:

    展开全文
  • 在已知模态质量和模态刚度的情况下,求模态矩阵,并满足质量矩阵乘模态矩阵得到模态质量单位矩阵,刚度矩阵乘模态矩阵得到模态刚度对角矩阵(不知质量和刚度)
  • 经验模态分解、集合经验模态分解、集合互补经验模态分解合集适合初学者学习
  • 从结构模态识别中获得的模态振型具有复杂的形式。 该函数可用于将这些复模态振型转换为实模态振型。 参考:土木工程结构的运行模态分析第 182 页和第 183 页。 以下命令可用于运行此代码。 请注意,复模态振型存储在...
  • 对此, 基于高斯混合模型的监测方法, 结合定性知识和定量知识, 解决了多模态过程监测中离线数据模态划分、稳定模态和过渡模态的监测模型建立以及在线数据的模态识别等关键问题, 最终实现了对多模态过程的监测.</p>
  • Qt模态和非模态窗口

    2021-05-28 18:49:19
    Qt半模态窗口 Qt如何让模态窗口不影响其他响应

    Qt窗口分类:
    1、模态:启动模态界面时,只有该窗口可操作
    2、半模态:介于模态和非模态之间,窗口冻结、但是可以继续执行响应
    3、非模态:与模态相反,可以随意切换窗口
    使用方法:
    Qt中的QWidget对象自带setWindowModality(type)方法,用以设置窗口模态类型
    参数type可选为一下三种:
    Qt::NonModal 非模态:正常模式
    Qt::WindowModal 半模态:窗口级模态对话框,阻塞父窗口、父窗口的父窗口及兄弟窗口
    Qt::ApplicationModal 模态:应用程序级模态对话框,阻塞整个应用程序的所有窗口

    展开全文
  • MFC中的模态对话框与非模态对话框模态对话框模态对话框创建模态对话框的关闭顺序非模态对话框模态对话框创建非模态对话框关闭顺序注意: 模态对话框 模态对话框创建 MyDialog mydlg; mydlg.DoModal() 当前只能运行...
  • 模态对话框(Modal)2. 非模态对话框(Modeless)3. 半模态对话框 1. 模态对话框(Modal) 模态对话框 是指在同一个应用程序中,阻塞其他可见窗口输入的对话框。一般用于用户输入文件名或用于应用程序的配置选项...
  • 今天小编就为大家分享一篇bootstrap模态框关闭后清除模态框的数据方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Qt模态和非模态对话框 Qt 支持模态对话框和非模态对话框。其中,Qt 有两种级别的模态对话框:应用程序级别的模态和窗口级别的模态,默认是应用程序级别的模态。应用程序级别的模态是指,当该种模态的对话框出现时,...
  • 浅谈VMD(变分模态分解)

    万次阅读 多人点赞 2019-12-02 11:41:40
    浅谈VMD(变分模态分解) 新的自适应信号处理方法,对非平稳、非线性信号具有良好处理效果。 文章说明 因为最近论文需要用到VMD,所以看了几篇关于VMD的论文,VMD在2014年提出,所以其论文比较新,而且知网上的论文都...
  • QMainWindow\QWdiget\QDialog三者的区别 windows control panel 操作: 创建文件夹:mkdir(命令) "想要创建的文件路径" ...模态和非模态和半模态 模态:只能操作完当前窗口。 非模态:直接 对话框对象...
  • MFC中经常会用到弹出模态或非模态对话框,模态对话框与非模态对话框容易混淆
  • 模态

    2019-03-21 17:55:55
    创建模态框(Modal) 开始演示模态框 × 模态框(Modal)标题 在这里添加一些文本 关闭 提交更改 ...
  • 模态
  • 模态对话框VS非模态对话框

    千次阅读 2018-09-28 16:46:53
    模态对话框VS非模态对话框 模态对话框:此对话框关闭后,它的上一级对话框才可操作 非模态对话框:两个对话框可同时操作 代码实现 例如:在MainWindow中,利用pushButton打开新的对话框 void MainWindow::on_...
  • 变分模态分解

    2016-05-22 21:39:05
    变分模态分解源码以及测试程序,简单强大,和经验模态机理不同,没有模态混叠
  • QT-模态和非模态

    2020-07-15 10:49:43
    模态和非模态模态:非模态模态: QDialog dialog; dialog.exec(); 只有当前对话框可活动,完成当前对话框之后,才能执行其他操作。 非模态: QDialog *dialog = new QDialog; dialog->show(); 可以打开多个...
  • 模态学习

    千次阅读 2020-01-25 11:34:10
    今天,我们生活在一个由大量不同模态内容(文本、图像、视频、音频、传感器数据、3D 等)构建而成的多媒体世界中,这些不同模态的内容在具体事件和应用中具有高度相关性。跨模态任务也越来越多,涉及多个模态的数据...
  • QWidget设置模态模态

    千次阅读 2018-08-01 10:43:08
      有时候QDialog并不能满足我们的需求(太丑了 ( ╯□╰ )),我们需要使用 QWidget 自定义对话框,这就涉及到一个模态的问题。QWidget 默认是非模态的, 其实很简单,两钟方法: QWidget *pWidget = new QWidget...
  • 模态窗口和非模态窗口

    千次阅读 2019-02-22 18:37:54
    模态窗口就是在该窗口关闭之前,其父窗口不可能成为活动窗口的那种窗口。 例如: 窗口A弹出窗口B,如果窗口B是模态的,在窗口B关闭前就不可能切换到窗口A;如果B是非模态的,那可以在这两个窗口之间任意切换。 模态...
  • 模态

    2019-05-27 19:43:12
    模态窗 开发工具与关键技术:Visual Studio 2015 – 模态窗 作者:廖亚星 撰写时间:2019年 5月 25 日 在搭建页面的时候,往往会弹出很多模态窗体,如果要我们一个一个写点击事件与关闭页面的事件话,那无疑很耗费...
  • 简单一点讲就是在弹出模态对话框时,除了该对话框,整个应用程序的窗口都无法接受用户响应,处于等待状态,直到模态对话框被关闭。 这时一般需要用户点击对话框中的确定或取消按钮来关闭该对话框,程序得到对话框的...
  • Qt之模态模态窗口

    2020-08-21 17:50:18
    Qt之模态模态窗口概述:示例代码: 概述: 1.有的时候项目中会遇到一些用户登录窗口,这个时候我们的窗口就要是模态的,因为你只能进行登陆操作后才可以进入到程序中。 2.Qt有两种方法可以实现模态窗口: (1)...
  • 变分模态分解(VMD)

    万次阅读 多人点赞 2019-12-11 19:24:41
    变分模态分解(VMD) VMD是一种自适应、完全非递归的模态变分和信号处理的方法。其核心思想是构建和求解变分问题:在搜索时确定每个模态的中心频率和有限带宽,并且可以自适应地实现固有模态函数(IMF)的有效分离、...
  • 模态是指数据的存在形式,比如文本、音频、图像、视频等文件格式。有些数据的存在形式不同,但都是描述同一事物或事件的 常见的多模态问题有 视觉问答:针对图片提问题让计算机回答 多模态建索,用自然语言问...
  • 模态框中弹模态框的问题

    千次阅读 2018-07-11 09:45:32
    有时候会遇到模态框中弹另外一个模态框的时候,若是旧模态框需要隐藏的时候,直接在点击事件里加上$('#aaa').modal('hide')即可,若是想旧模态框一直保持,但是新模态框也要弹出,这样的话,新模态框z-index应该大于...
  • 模态和非模态对话框

    2017-05-24 14:48:38
    MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box)。  一、模态对话框(model dialog box)  在程序运行的过程中,若出现了模态对话框,那么主窗口...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,617
精华内容 33,046
关键字:

模态