多模态特征融合方法总结

本文介绍了四种多模态特征融合方法在抑郁症识别中的应用:特征级融合、决策级融合、混合级融合和模型级融合。通过Python代码展示了这四种方法的具体实现,包括将文本、音频和视觉特征进行不同层次的融合,并分析了各种方法的优缺点。此外,还列举了一些相关研究文章和资源链接,以供进一步阅读和研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于本人的研究是文本、语音和图像三者模态数据的融合,所以针对的是这三种模态的特征融合方法进行总结。本文章会从方法、总结网址和综述文章进行介绍。

方法:

首先,在特征提取之后,多模态特征融合的方法分为四种:特征级融合、决策级融合、混合级融合和模型级融合。其中:

  • 特征级融合。也称为早期融合,是多模态识别系统最常用的策略。它表示在提取后立即从不同模态提取的特征连接成单个高维特征向量的方法。多模态早期融合方法常常与特征提取方法相结合以剔除冗余信息,如主成分分析(PCA)、最大相关最小冗余算法(mRMR)、自动解码器(Autoencoders)等。具体来说:首先得到的文本特征ftext,音频特征faudio和视觉特征fvisual,然后将三个特征连接得到融合后的特征funion,最后输入MLP和softmax层得到分类结果。然而,特征融合的局限性在于生成的高维特征向量,并且由于它以一种直接的方式融合了三种模态特征,不能对复杂的关系进行建模。

        python代码:

class Feature_level(nn.Module):
    def __init__(self):
        super(Feature_level, self).__init__()

        self.fc = nn.Linear(in_features=200, out_features=1)

    def forward(self, feature_a, feature_t, feature_v):
        x = torch.cat((feature_a, feature_t, feature_v), 0)
        out = self.fc(x)[:, 0][0]
        return out
  • 决策级融合。也称为后期融合,是在获得基于每个模态的决策之后,通过应用多个预测类标签的代数组合规则(例如,最大值、最小值、总和、平均值等)对这些决策执行集成步骤。具体来说,将文本特征ftext、音频特征faudio和视觉特征fvisual分别输入各自的MLP和softmax层进行抑郁症回归训练,预测结果分别为ytext ,yaudioyvisual。之后将ytext ,yaudioyvisual进行线性加权求和得到融合结果rf。最后将rf经过softmax层,得到多模态融合的结果。然而,决策级融合无法捕捉不同模态之间的相互关联,因为这些模态被假定为独立的。因此,决策级融合不符合人类以互补冗余的方式表达的事实。

        python代码:

class decision_level(nn.Module):
    def __init__(self):
        super(decision_level, self).__init__()

        self.fc1 = nn.Linear(in_features=200, out_features=100)
        self.fc2 = nn.Linear(in_features=100, out_features=1)

    def forward(self, feature_a, feature_t, feature_v):
        x_a = self.fc1(feature_a)
        x_t = self.fc1(feature_t)
        x_v = self.fc1(feature_v)
        x = torch.cat((torch.mul(0.3, x_a), torch.mul(0.4, x_t), torch.mul(0.3, x_v)), 0)
        out = self.fc2(x)[:, 0][0]
        return out
  • 混合级融合。它是早期融合和后期融合两个方法的结合,通过早期融合和单个模态预测的输出相结合。然而,混合级融合虽然改善了特征级融合和决策级的局限性,但是问题没有得到解决,只是这两种方案的折中。思路如下:将文本特征、音频特征和视觉特征分别输入到各自的线性回归层进行抑郁症分数预测,并将其和每个模态的特征向量进行拼接,然后使用这些新的特征向量来输入到FC层进行预测。

        python代码:

class Hybrid_level(nn.Module):
    def __init__(self):
        super(Hybrid_level, self).__init__()

        self.fc1 = nn.Linear(in_features=200, out_features=1)
        self.fc2 = nn.Linear(in_features=201, out_features=1)

    def forward(self, feature_a, feature_t, feature_v):
        a_x = self.fc1(feature_a)
        t_x = self.fc1(feature_t)
        v_x = self.fc1(feature_v)
        a = torch.cat((feature_a, a_x), 2)
        t = torch.cat((feature_a, t_x), 2)
        v = torch.cat((feature_a, v_x), 2)
        x = torch.cat((a, t, v), 0)
        out = self.fc2(x)[:, 0][0]
        return out
  • 模型级融合。该方法旨在获得三种模态的联合特征表示,它的实现主要取决于使用的融合模型。模型级融合是更深层次的融合方法,为分类和回归任务产生更优化的联合判别特征表示。以ML-LSTM为例,多层次LSTM(Multi-layers LSTM,ML-LSTM)作为模型级融合方法之一,该方法是将多层网络与传统的LSTM模型相结合,通过充分考虑话语之间的关系,来使得在学习过程中处理话语层面的多模态融合问题,旨在用于抑郁症的识别。融合思路如下:将文本特征输入到第一层LSTM(Layer1)得到的是每个神经元的隐藏层状态,然后将音频特征与Layer1得到的隐藏层状态相拼接输入到第二层LSTM(Layer2)得到第二层每个神经元的隐藏层状态,之后将视觉特征与Layer2得到的隐藏层状态相拼接输入到第二层LSTM(Layer3)得到第三层每个神经元的隐藏层状态,最后将融合后的特征输入到FC层得到最终的预测结果。

     python代码:

class MLLSTM(nn.Module):
    def __init__(self, input_size, hidden_size, output_size, batch_size, num_layers, num_directions):
        super(MLLSTM, self).__init__()

        self.input_size = input_size
        self.hidden_size = hidden_size
        self.output_size = output_size
        self.batch_size = batch_size
        self.num_layers = num_layers
        self.num_directions = num_directions

        self.lstm1 = nn.LSTM(input_size=input_size, hidden_size=hidden_size, num_layers=num_layers,
                             bidirectional=(num_directions == 2)).cuda()
        self.lstm2 = nn.LSTM(input_size=input_size, hidden_size=hidden_size, num_layers=num_layers,
                             bidirectional=(num_directions == 2)).cuda()
        self.lstm3 = nn.LSTM(input_size=input_size, hidden_size=hidden_size, num_layers=num_layers,
                             bidirectional=(num_directions == 2)).cuda()
        # self.attention_weights_layer = nn.Sequential(
        # 	nn.Linear(hidden_size, hidden_size),
        # 	nn.ReLU(inplace=True)
        # )
        self.fc = nn.Linear(hidden_size * 2, output_size).cuda()
        self.pred = nn.Linear(output_size, 1).cuda()

    def forward(self, x, y, z):
        # lstm的输入维度为 [seq_len, batch, input_size]
        # x [batch_size, sentence_length, embedding_size]
        # xx = x.permute(1, 0, 2)  # [sentence_length, batch_size, embedding_size]

        # 由于数据集不一定是预先设置的batch_size的整数倍,所以用size(1)获取当前数据实际的batch
        # batch_size = x.size(1)

        # 设置lstm最初的前项输出
        h_0 = torch.randn(self.num_layers * self.num_directions, self.input_size, self.hidden_size).cuda()
        c_0 = torch.randn(self.num_layers * self.num_directions, self.input_size, self.hidden_size).cuda()

        # out[seq_len, batch, num_directions * hidden_size]。多层lstm,out只保存最后一层每个时间步t的输出h_t
        # h_n, c_n [num_layers * num_directions, batch, hidden_size]
        text_out, (text_h_n, text_c_n) = self.lstm1(x, (h_0, c_0))
        text = self.fc(text_out)
        audio_out, (audio_h_n, audio_c_n) = self.lstm2(y + text, (text_h_n, text_c_n))
        audio = self.fc(audio_out)
        visual_out, (visual_h_n, visual_c_n) = self.lstm3(z + audio, (audio_h_n, audio_c_n))
        visual = self.fc(visual_out)
        out = self.pred(visual)
        return out[:, 0][0]

总结网址:

下面介绍比较实用的专门总结多模态融合文章的网址(里面都是关于多模态的高水平论文):

文章:

1、综述文章:

深度多模态表征学习:一项调查,该文章通过对深度学习中多模态数据方法进行总结和讨论,分析方法种类和各自优缺点。网址:Deep Multimodal Representation Learning: A Survey | IEEE Journals & Magazine | IEEE Xplore

2、特征级融合文章汇总:

  • Multi-modality Depression Detection via Multi-scale Temporal Dilated CNNs:通过将文本特征和音频特征串联送入FC层对多模态的特征进行融合
  • A Multi-Modal Hierarchical Recurrent Neural Network for Depression Detection:通过分层BiLSTM对三种模态进行集成,第一层对音频和视觉特征进行编码,然后通过隐藏状态和置信度得分加权得到对应的特征,第二层将三种模态特征通过其置信度得分加权的平均值进行融合

  • Multi-level Attention network using text, audio and video for Depression Prediction:通过BiLSTM得到的音频特征和视觉特征,以及使用预训练工具得到文本特征,然后在三种模态上使用一个注意力层,进行加权相加,最后得到融合后的特征。

3、决策级融合文章汇总:

  • Depression recognition based on dynamic facial and vocal expression features using partial least square regression

  • Detect depression from communication: how computer vision, signal processing, and sentiment analysis join forces

4、混合级融合文章汇总:

  • A Linguistically-Informed Fusion Approach for Multimodal Depression Detection:为每种模态训练单独的预测模型,然后从每个单模态中获得预测,最后使用这些新的特征向量来训练新模型以进行最终预测。

  • Cross-cultural detection of depression from nonverbal behaviour:将每个模态的结果连接到早期融合特征向量然后进行模型的预测,最后采用多数票表决法来评估效果。

  • Depression Status Estimation by Deep Learning based Hybrid Multi-Modal Fusion Model:将三种模态特征分别输入Linear中分别得到对应的分数,然后将得到的分数进行拼接得到融合后的特征,最后将融合后的特征输入Linear中进行模型的训练。

5、模型级融合文章汇总:

  • Multi-modal feature fusion based on multi-layers LSTM for video emotion recognition:ML-LSTM,对应上述的模型级融合讲述

  •  Deep-HOSeq: Deep Higher Order Sequence Fusion for Multimodal Sentiment Analysis

6、其他文章集合:

待更新

如有侵犯,会立即修改或删除。如果有知识上的问题,欢迎交流

评论 58
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值