阿里通义 | 开源Omni-Emotion 多模态情感分析

【论文标题】

Omni-Emotion: Extending Video MLLM with Detailed Face and Audio Modeling for Multimodal Emotion Analysis

摘要

准确理解情感对于人机交互等领域至关重要。

由于情感的复杂性及其多模态性质(例如,情感受面部表情和音频影响),研究人员已转向使用多模态模型而非单模态来理解人类情感。

然而,当前的视频多模态大语言模型(MLLMs)在有效整合音频和识别细微面部微表情方面存在困难。

此外,缺乏详细的情感分析数据集也限制了多模态情感分析的发展。

为解决这些问题,本文引入了一个自动审核数据集和一个人工审核数据集

分别包含 24,137 个粗粒度样本和 3,500 个带有详细情感注释的手动标注样本。

这些数据集使模型能够从不同场景中学习,并更好地泛化到实际应用中。

此外,除了音频建模,还提议将面部编码模型明确集成到现有的先进视频 MLLM 中

使 MLLM 能够有效地统一音频和微妙的面部线索以进行情感理解。

通过在统一空间中对齐这些特征,并在数据集中使用指令调整

OmniEmotion 在情感识别和推理任务中均达到了最先进的性能。

背景

情感分析在教育工具、虚拟形象和人机交互等领域发挥着关键作用。

传统的单模态方法,如基于音频的情感识别、文本情感分析和面部表情识别方法,在单模态情感感知方面各有优势。

但在现实世界中,情感表达往往涉及文本、视觉和听觉信息,传统方法忽略了这些重要线索。

虽然多模态大语言模型取得了显著进展,但在准确识别情感方面仍面临挑战,尤其是在整合音频和识别细微面部表情方面存在不足。

此外,缺乏具有多样数据分布和详细注释的多模态情感指令数据集也是一个重要问题

个体间的标注标准不一致以及不同文化背景下情感表达的差异,都增加了获取情感数据的难度,需要专家进行标注。

贡献

  1. 高质量数据集构建:本文开发了一种有效且可扩展的方法,基于现有的情感识别数据集构建了用于情感推理分析和开放词汇情感识别的高质量基准。

  2. 整合视频 MLLM 与听觉和面部信息:本文提议将额外的面部和音频编码器与现有的视频 MLLM 模型集成,以更好地进行情感分析,并构建了一个三阶段训练过程,有效地将音频编码器和细粒度面部编码器统一到视频 MLLM 中。

  3. 最先进的性能:本文模型在各种情感分析任务中取得了最先进的结果。

技术方案

4.1 扩展视频 MLLM 到音频模态

使用 Whisper-large-v3的音频编码器作为音频编码器,对于给定的配对数据(其中 和 分别表示音频序列和文本序列)

训练目标是最大化下一个文本标记的概率,公式为

其中 和 分别表示 LLM 解码器和音频编码器的参数。

概率取决于音频表示和前面的文本序列,旨在将音频特征与语言特征相连接。

具体来说,音频编码器的初始化从 Whisper-large-v3 模型的编码器权重加载

对每个音频数据重采样到 16KHz 的频率,并使用 25ms 的窗口大小和 10ms 的跳步将原始波形转换为 128 通道的梅尔频谱图。

使用步长为 3 的池化层将其减少到标记长度,每个标记大约对应原始音频信号的 60ms 段。

每个音频特征被输入到由两个线性层组成的音频投影仪中,投影仪的输出维度设计为与 LLM 的隐藏嵌入大小相匹配

4.2 细节面部建模

大多数视频 MLLMs 使用通用视觉编码器如 SigLip、CLIP 或 InternVideo2,从视频中提取通用视觉特征,但这些编码器并非专门用于提取与人或面部相关的特征。

本文在 Omni-Emotion MLLM 中引入了一个额外的面部特征编码器,采用 FaceXFormer 的编码器作为面部特征编码器。

对于输入的视频帧,首先提取细粒度的多尺度特征,然后通过一个轻量级的 MLP 融合模块从多尺度特征生成融合的面部表示

最后将转换后的特征连接、展平并输入到由两个线性层组成的面部投影仪中,其输出维度等于 LLM 的隐藏嵌入大小。

4.3 视觉特征融合模块

为了在捕捉细粒度面部细节的同时保持通用知识,本文开发了一个视觉融合模块来整合面部特征和通用视觉特征。

由于这些特征的长度不同,加权求和或沿通道维度连接等方法并不适用。

本文研究了三种方法:在帧级或视频级沿序列长度连接,以及使用交叉注意力层。

最终融合特征作为最终的视觉标记,与其他模态的嵌入相结合并输入到 LLM 解码器中。

4.4 训练细节

Omni-emotion MLLM 基于 LLaVA-OneVision-7B 构建,保留了其通用视觉编码器和投影仪,并引入了额外的面部和音频编码器及相应的投影仪。

为了有效地统一三个编码器的信息,首先将音频和面部特征对齐到原始 MLLM 特征空间

包括音频特征对齐、面部特征对齐和多模态指令调整三个阶段,每个阶段使用不同的数据集和训练参数进行训练。

实验结果

开放词汇情感识别:在 EMER-OV 数据集上,本文模型显著优于 AffectGPT,尤其是在召回率方面。

模型能返回更丰富的情感描述符,如 “Excited”、“Calm”、“Frustration” 等,证实了数据集的质量和多样性以及方法的有效性。

多模态情感推理:在 EMER 数据集上,本文方法在情感相关线索重叠和总结情感状态重叠这两个指标上均取得最高得分,验证了方法的有效性和数据集的质量。

模态分析:在 EMER-OV 中的模态分析表明,听觉模态显著提高了召回率和准确性,“视觉+音频+面部” 的组合实现了最佳平均性能,同时细粒度面部线索对多模态开放词汇情感识别也很重要。

视觉特征融合分析:在 EMER-OV 和 EMER 数据集上对视觉融合模块的分析表明,视频级别的连接在两个设置中均取得最高得分,但由于训练数据与通用视频 MLLM 存在显著差距,仍需进一步探索帧融合方法。

情感识别评估:在 DFEW 和 MAFW 这两个包含音频信息的野外数据集上,本文模型在情感识别性能上优于其他 MLLMs 和现有方法,在 MAFW 数据集上优势明显。

结论

当前的 MLLMs 由于缺乏详细的训练数据,在整合音频和识别面部微表情方面存在困难。

为解决此问题,本文引入了一个包含 24,137 个样本的自审核数据集和 3,500 个带有详细情感注释的手动标注数据集,增强了模型的学习和泛化能力。

本文提出了一种新方法,将音频和面部编码器集成到现有的视频 MLLMs 中,有效地捕捉面部和音频线索。

通过在统一空间中对齐特征并使用指令调整,Omni-Emotion 方法在情感识别和推理方面取得了最先进的结果。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

<think>好的,我现在需要帮助用户了解如何在本地部署通义千问Qwen2.5-Omni-7B模型。首先,我需要确认用户的需求,他们可能希望在自己的服务器或个人电脑上运行这个模型,所以必须了解部署的系统要求、步骤以及可能的代码示例。 根据提供的引用内容,这个模型是阿里巴巴开源的,支持多模态,包括文本、图像、音频和视频的处理,并且能够流式生成响应。因此,在部署时需要考虑多模态处理的能力以及硬件资源是否足够。 首先,系统要求方面,用户需要足够的计算资源。因为模型参数是7B规模,通常需要至少16GB的GPU显存,比如使用NVIDIA V100或A10这样的显卡。同时,内存方面建议32GB以上,存储空间需要至少20GB,因为模型文件本身可能较大,加上依赖库和数据集。软件环境方面,需要Python 3.8或更高版本,PyTorch框架,以及Hugging Face的Transformers库,这些都是运行此类模型的基础。 接下来,部署步骤。第一步是环境准备,安装必要的库,比如transformers、torch、sentencepiece等。用户可能需要使用pip安装这些依赖。然后,模型下载,可以通过Hugging Face Hub或者阿里巴巴提供的源获取模型文件。需要确保下载正确的模型版本,可能使用git lfs来下载大文件。 然后是代码示例,用户需要加载模型和分词器。使用AutoModelForCausalLM和AutoTokenizer来自动加载适合的模型结构和分词器。同时,可能需要配置设备映射,比如device_map="auto"让模型自动分配到可用的GPU上。预处理输入部分,可能需要处理多模态数据,比如图像或音频,需要特定的处理器来转换成模型可接受的输入格式。生成输出时,设置参数如max_length、temperature等来控制生成文本的长度和多样性。对于流式输出,可能需要使用generate的streamer参数,但需要查看模型的文档是否支持。 部署注意事项方面,显存优化是关键。如果显存不足,可以考虑量化技术,比如bitsandbytes库的8位或4位量化,或者使用模型并行将模型分散到多个GPU上。多模态处理部分,用户需要确保输入数据经过正确的预处理,比如图像需要resize和归一化,音频可能需要转换为频谱图等。流式响应可能需要结合WebSocket或服务器推送技术,但具体实现可能需要参考模型的API文档。 此外,用户可能需要参考官方文档和GitHub仓库,因为开源项目通常会有详细的安装和使用说明,以及可能的常见问题解答。如果遇到问题,检查依赖版本是否兼容,比如PyTorch和CUDA的版本是否匹配,transformers库是否更新到支持该模型的版本。 最后,生成相关问题需要考虑用户可能进一步的问题,比如性能优化方法、处理多模态输入的技巧,或者与其他模型的对比。这样可以帮助用户更全面地理解和应用该模型。</think>### 通义千问 Qwen2.5-Omni-7B 本地部署指南 #### 一、部署要求 1. **硬件配置** - **GPU**: 推荐 NVIDIA V100/A10/A100 等显存 ≥16GB 的显卡(7B 模型推理需约 14GB 显存) - **内存**: ≥32GB - **存储**: ≥20GB 可用空间(模型文件约 14GB) 2. **软件环境** - Python ≥3.8 - PyTorch ≥2.0(需与 CUDA 版本匹配) - Transformers ≥4.37.0 - 其他依赖:`sentencepiece`, `accelerate`, `bitsandbytes`(量化部署时需安装) #### 二、部署步骤 1. **环境准备** ```bash pip install torch transformers sentencepiece accelerate ``` 2. **模型下载** ```bash git lfs install git clone https://www.modelscope.cn/qwen/Qwen2.5-Omni-7B.git ``` 3. **基础推理代码示例** ```python from transformers import AutoModelForCausalLM, AutoTokenizer model_path = "Qwen2.5-Omni-7B" tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained( model_path, device_map="auto", trust_remote_code=True ) # 文本推理示例 inputs = tokenizer("法国的首都是哪里?", return_tensors="pt").to("cuda") outputs = model.generate(**inputs, max_length=50) print(tokenizer.decode(outputs[0])) ``` #### 三、多模态处理(需额外安装依赖) ```bash pip install pillow soundfile torchaudio ``` ```python # 图像推理示例 from PIL import Image image = Image.open("test_image.jpg").convert("RGB") image_input = model.image_processor(image, return_tensors="pt").to("cuda") text_input = tokenizer("描述这张图片", return_tensors="pt").to("cuda") outputs = model.generate(**dict(text_input, **image_input)) ``` #### 四、显存优化方案 1. **4-bit 量化部署** ```python model = AutoModelForCausalLM.from_pretrained( model_path, device_map="auto", load_in_4bit=True, # 启用4-bit量化 bnb_4bit_compute_dtype=torch.float16 ) ``` 2. **模型并行** ```python model = AutoModelForCausalLM.from_pretrained( model_path, device_map={"": 0}, # 手动分配多GPU max_memory={0:"16GiB", 1:"16GiB"} ) ``` #### 五、流式响应实现 ```python from transformers import TextStreamer streamer = TextStreamer(tokenizer) inputs = tokenizer("请解释量子计算", return_tensors="pt").to("cuda") model.generate(**inputs, streamer=streamer, max_new_tokens=500) ``` #### 六、部署验证 执行以下命令测试模型响应: ```bash python -c "from transformers import pipeline; pipe = pipeline('text-generation', model='Qwen2.5-Omni-7B'); print(pipe('你好,请作一首七言诗', max_length=50)[0]['generated_text'])" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值