多模态特征融合:图像、语音、文本如何转为特征向量并进行分类

简介: 多模态特征融合:图像、语音、文本如何转为特征向量并进行分类

前言


学习多模态的话题可以从深度学习的分类任务出发,因为分类任务是最直观的可以观察到不同模态的数据,通过输入数据到模型中,我们可以看到模型是如何学习到数据的特征向量的,同时分类任务的模型也是实现更复杂任务模型的基础。从分类任务中可以了解到图像、文本、语音在模型的特征向量是什么。


以飞浆的多模态视频分类模型为例,这个模型基于真实的短视频业务数据,融合文本、视频图像、音频三种模态进行视频多模标签分类,相比只使用视频图像特征,显著提升了高层语义标签的效果。模型架构图如下:


b66c2542afdb4884b9383be63e9a7476.png

在该模型中,不同模态的数据通过不同的处理方式进行特征提取和融合。比如,文本数据可以通过词嵌入的方式转换为特征向量,视频和音频数据可以通过卷积神经网络和循环神经网络提取特征。这些特征向量经过融合层进行特征融合,最终输入到分类层进行分类。通过这个例子,我们可以看到如何将不同模态的数据转换为特征向量,以及如何通过特征融合提高模型的分类性能。


从上述段落中可以看出,该模型架构包含了三种数据类型的输入(图像、文本、语音),并且根据不同的数据类型拆分成不同的模型进行学习。为了能够将这些数据输入到深度学习模型中进行学习,需要先将它们转换成数字类型的向量。这个过程称为特征工程,其目的是将原始数据转换成能够被深度学习模型所理解的特征向量。具体来说,对于图像数据,可以使用卷积神经网络(CNN)来提取特征;对于文本数据,可以使用词嵌入(Word Embedding)等技术将单词转换成向量表示;对于语音数据,可以使用声学特征提取技术,如Mel频率倒谱系数(MFCC)等来提取特征。经过特征工程处理后,这些数据就可以被送入相应的模型进行学习。


在模型的输出层,需要将三种模型所学习到的特征向量进行合并,以获得最终的分类结果。合并方法通常使用简单的向量拼接(Concatenation)或者加权平均(Weighted Average)等方式进行。具体的合并方法可以根据实际情况进行选择,以获得最佳的性能。


输入层,数据集转为特征向量


图像


在计算机视觉中,图像通常以矩阵形式表示。


这个矩阵由多个向量组成,可以通过卷积、激活函数和池化等操作提取出图像的特征。在这个过程中,每个向量都代表着图像中的某些信息,如边缘、纹理等。最后,在全连接层中,所有的特征向量被展平成一个向量,用来表示整个图像的特征。可以将这个向量看做是将图像从左到右、从上到下拆分成若干块,按照顺序排列得到的。通过这种方式,我们可以将复杂的图像信息转换成一个向量表示,方便后续的机器学习模型进行处理。


语音

1356fa09bb4e4644a567725494dabfa0.png

对于语音信号的处理,通常需要进行预处理和特征提取,以便为后续的语音识别模型提供高质量的输入语音预处理通常包括以下步骤:


语音信号的采集:通过麦克风或其他录音设备收集语音信号。

信号增益调整:根据录制环境和麦克风特性等因素,对信号进行增益调整,以保证信号的质量。

降噪处理:对信号进行降噪处理,去除录音中的噪声、杂音等干扰信号。

分帧处理:将信号划分成若干小段,每一小段称为一帧,通常每帧的长度在10ms-30ms之间。

加窗:对每帧信号应用窗函数(例如汉明窗),以减少频谱泄漏的影响。

傅里叶变换:对每帧信号进行快速傅里叶变换(FFT),以将时域信号转换为频域信号。

Mel滤波器组:将频域信号通过一组Mel滤波器,得到每个滤波器的输出能量。

对数变换:对每个滤波器的输出能量取对数,以提高计算精度并将能量值范围缩小。

倒谱变换:对每个滤波器的对数能量值进行离散余弦变换(DCT),以提取频率特征,得到MFCC系数。 8. 特征归一化:对提取出的特征进行归一化处理,以消除不同说话人、不同录制设备等因素对特征的影响。

特征拼接:将相邻帧的特征进行拼接,以提高特征的时序信息。

数据增强:通过对语音信号进行变换、扰动等操作,增加数据量和多样性,提高模型的泛化能力。


从上面步骤来看语音转换主要涉及到的技术是时域信号转频域信号,和mel滤波器转换,这里补充这二个部分的内容。


什么是时域信号,什么是频域信号


时域分析是指将信号看作是时间的函数,通过对信号在时间轴上的变化进行分析


频域分析则是将信号看作是频率的函数,通过对信号在频率轴上的分解和重建来分析信号的特征


图像


信号就是我们的数据,以图像来说信号就是不同的像素级,也可以说不同值的像素,图像在时域上看表示的是信号的空间位置关系,也就是我们人眼看到一张图片,就是图像的时域信号,


图像的频域,就类似于图像直方图一样,将不同的像素级结合像素级在图像中的数量,绘制出的图。


对应到语音同理


语音跟图像像素级一样也有区分,语音按不同的声音频率区分不同的语音数据,

在时域上抽象看,就是我们听到的一段声音,如果把它放到2维图像中,就一段语音(不同频率的语音信号叠加到一起),在时间维度上的振幅大小和变换。语音信号在时域上是一个连续的波形,由多个频率成分叠加而成


语音频域,将语音信号分解为不同频率的正弦波成分,并计算每个频率成分的幅度、相位等特征


将一个语音信号转换为频域表示通常需要进行傅立叶变换。


语音信号转换 - 1.傅立叶变换


傅立叶变换是一种将时域信号转换为频域信号的数学方法。


1687315346734.png


import numpy as np
# 生成一个简单的声音信号
t = np.linspace(0, 1, 1000)
f = 440  # 频率为440Hz
signal = np.sin(2 * np.pi * f * t)
# 计算DFT
dft = np.fft.fft(signal)


在这个例子中,我们生成了一个频率为440Hz的正弦波,并使用NumPy的fft函数计算了它的DFT。dft变量包含了信号的频域表示,其中每个值对应于一个频率


将傅立叶转换的信息用梅尔频率倒谱系数(Mel Frequency Cepstral Coefficients,MFCC)转换为语谱图。


语音信号转换 - 2.梅尔频率倒谱系数


1687315379611.png


可以将语谱图视为一张图像,因为它具有图像的基本特征,例如宽度、高度、像素值等。


语谱图是由频谱分析的结果得到的,它将音频信号在时间和频率维度上分解,并用颜色来表示不同频率的能量强度,因此类似于图像中的像素。在语音识别中,将语谱图转换为特征向量是一种常见的方法,称为Mel频率倒谱系数(Mel Frequency Cepstral Coefficients, MFCCs)。


MFCCs是一种将语音信号的频率特征进行提取的方法,其基本思想是将语谱图转换为一组特征向量,这些特征向量可以用来训练分类器或进行其他的机器学习任务。因此,可以将语谱图看作是一种图像,并使用MFCCs将其转换为特征向量。这种方法已被广泛应用于语音识别和相关领域中。


文本

eaca6604cc1e450ba5e5f50428af1f73.png


将文本转化为特征向量的原理是将文本中的词语映射为向量空间中的点,然后根据这些点的位置和距离来表示文本特征。常用的方法有词袋模型和词嵌入模型,下面分别介绍它们的原理和公式。


词袋模型


词袋模型将每个文本看作是一个词语的集合,忽略其词语出现的顺序和语法结构,只考虑文本中每个词语的出现次数。词袋模型可以用一个向量来表示文本,其中向量的每个元素对应一个词语,其取值表示该词语在文本中出现的次数。词袋模型的公式可以表示为:


1687315420306.png


词嵌入模型


词嵌入模型是一种将文本中的词语映射为向量空间中的向量的方法,它能够在保留词语语义信息的同时,还考虑了词语之间的相关性。常用的词嵌入模型有Word2Vec和GloVe,它们都是基于共现矩阵的方法。

1687315441365.png

from sklearn.feature_extraction.text import CountVectorizer
corpus = ['this is a test', 'this is another test']
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)
print(X.toarray())
#run result
[[1 1 1 0]
 [1 1 0 1]]


可以看到,文本被转化为了一个二维矩阵,其中每行表示一个文本,每列表示一个词语,矩阵中的每个元素表示对应的词语在文本中出现的次数。这个矩阵就可以作为深度学习模型的输入特征。


输出层,多模态模型合并

a5ced331b9fa4df4bca921ff15cb8cb4.png


1687315489484.png

import paddle
import numpy as np
# 创建三个全连接层,分别为1024、768和256
fc1 = paddle.nn.Linear(2048, 1024)
fc2 = paddle.nn.Linear(1024, 768)
fc3 = paddle.nn.Linear(768, 256)
# 创建输入数据
x = np.random.randn(1, 2048).astype('float32')
# 分别对三个全连接层进行sigmoid激活函数操作,并将它们的输出拼接起来
y1 = paddle.concat([paddle.to_tensor(fc1(x)), paddle.to_tensor(fc2(fc1(x))), paddle.to_tensor(fc3(fc2(fc1(x))))], axis=1)
s1 = paddle.nn.functional.sigmoid(y1)
# 将三个全连接层的输出拼接起来,并对拼接后的结果进行sigmoid激活函数操作
y2 = paddle.to_tensor(fc3(paddle.concat([fc2(paddle.concat([fc1(x), fc1(x)], axis=1)), fc1(x)], axis=1)))
s2 = paddle.nn.functional.sigmoid(y2)
# 比较两种方法得到的输出结果是否相等
print("s1:", s1.numpy())
print("s2:", s2.numpy())
print("s1 == s2:", np.allclose(s1.numpy(), s2.numpy(), rtol=1e-6))


在运行上述代码时,我们可以看到,S 1  和S 2 2的值非常接近,几乎相等,证明这两种方法得到的输出结果相同,而且从代码的逻辑来看,可以看到几乎一样的,只是修改了to_tensor和concat的顺序。


相关文章
|
4月前
|
数据可视化 API Swift
全模态图像模型Nexus-Gen对齐GPT-4o!同时搞定,数据、训练框架、模型全面开源
OpenAI GPT-4o发布强大图片生成能力后,业界对大模型生图能力的探索向全模态方向倾斜,训练全模态模型成研发重点。
258 17
|
5月前
|
人工智能 中间件 API
别让创意卡在工具链!MiniMax MCP Server:MiniMax 开源 MCP 服务打通多模态生成能力,视频语音图像一键全搞定
MiniMax MCP Server 是基于模型上下文协议的多模态生成中间件,支持通过文本指令调用视频生成、图像创作、语音合成及声音克隆等能力,兼容主流客户端实现跨平台调用,采用检索增强生成技术保障内容准确性。
484 3
别让创意卡在工具链!MiniMax MCP Server:MiniMax 开源 MCP 服务打通多模态生成能力,视频语音图像一键全搞定
|
27天前
|
传感器 机器学习/深度学习 监控
【图像融合】差异的高斯:一种简单有效的通用图像融合方法[用于融合红外和可见光图像、多焦点图像、多模态医学图像和多曝光图像](Matlab代码实现)
【图像融合】差异的高斯:一种简单有效的通用图像融合方法[用于融合红外和可见光图像、多焦点图像、多模态医学图像和多曝光图像](Matlab代码实现)
|
2月前
|
机器学习/深度学习 人工智能 自动驾驶
AI Agent多模态融合策略研究与实证应用
本文从多模态信息融合的理论基础出发,构建了一个结合图像与文本的AI Agent模型,并通过PyTorch代码实现了完整的图文问答流程。未来,多模态智能体将在医疗、自动驾驶、虚拟助手等领域展现巨大潜力。模型优化的核心是提升不同模态的协同理解与推理能力,从而打造真正“理解世界”的AI Agent。
AI Agent多模态融合策略研究与实证应用
|
3月前
|
机器学习/深度学习 资源调度 算法
Kaggle金牌方案复现:CGO-Transformer-GRU多模态融合预测实战
本文详细介绍了在2023年Kaggle "Global Multimodal Demand Forecasting Challenge"中夺冠的**CGO-Transformer-GRU**方案。该方案通过融合协方差引导优化(CGO)、注意力机制和时序建模技术,解决了多模态数据预测中的核心挑战,包括异构数据对齐、模态动态变化及长短期依赖建模。方案创新性地提出了动态门控机制、混合架构和梯度平衡算法,并在公开数据集TMU-MDFD上取得了RMSE 7.83的优异成绩,领先亚军12.6%。
112 1
|
2月前
|
JSON 算法 安全
1688图片搜索逆向工程与多模态搜索融合实践——基于CLIP模型的特征向
本文介绍了通过逆向工程分析实现图片搜索的技术方案,包括请求特征捕获、签名算法破解及多模态搜索的实现。利用CLIP模型提取图像特征,并结合Faiss优化相似度计算,提升搜索效率。最后提供完整调用示例,模拟实现非官方API的图片搜索功能。
|
4月前
|
存储 机器学习/深度学习 人工智能
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本
本文探讨了多模态RAG系统的最优实现方案,通过模态特定处理与后期融合技术,在性能、准确性和复杂度间达成平衡。系统包含文档分割、内容提取、HTML转换、语义分块及向量化存储五大模块,有效保留结构和关系信息。相比传统方法,该方案显著提升了复杂查询的检索精度(+23%),并支持灵活升级。文章还介绍了查询处理机制与优势对比,为构建高效多模态RAG系统提供了实践指导。
1202 0
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本
|
4月前
|
人工智能 弹性计算 智能设计
🎨 三步打造AI创意工坊 | 通义万相图像生成服务极速部署指南
🚀 从零到大师 | 通义万相智能创作系统部署指南
|
3月前
|
传感器 人工智能 搜索推荐
人机融合智能 | 可穿戴计算设备的多模态交互
本文介绍了可穿戴计算设备的多模态交互技术,阐述了以人为中心的设计目标与原则。内容涵盖设备的历史发展、特点及分类,并重点分析手指触控、手部动作、头部和眼睛动作等交互模态。同时探讨支持这些交互的传感器种类与原理,以及未来挑战。通过十个设计原则,强调自然高效、个性化、低认知负荷及隐私保护的重要性,为可穿戴技术的设计提供指导。
139 0
|
5月前
|
机器学习/深度学习 存储 数据可视化
KG4MM:融合知识图谱与多模态数据预测药物相互作用
本文探讨了用于多模态学习的知识图谱(KG4MM)在药物相互作用(DDI)预测中的应用。知识图谱通过整合药物的分子图像和文本描述,提供结构化先验知识,指导模型关注关键信息。具体实现中,利用图神经网络(GNN)连接知识图谱与多模态数据,通过注意力机制提取最具区分性的特征。以 Goserelin 和 Desmopressin 为例,模型结合直接边关系和共享节点路径,生成透明可解释的预测结果。实验表明,KG4MM 方法显著提升了预测准确性与可解释性,为生物医学领域提供了新思路。
120 0
KG4MM:融合知识图谱与多模态数据预测药物相互作用

热门文章

最新文章