阿里通义 | 开源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 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

在这里插入图片描述

<think>嗯,用户询问的是关于本地部署通义千问2.5-Omni-7B全模态模型的情况。之前的对话中提到过这个模型是开源的,并且在魔搭社区和Hugging Face上提供下载。用户现在想知道是否有人成功在本地部署并通过程序访问这个模型。 从技术角度来看,这个需求完全可行。根据引用内容显示,这个7B参数规模的模型设计目标之一就是便于本地部署,特别是提到"即便在手机上也能部署"。这暗示其硬件要求不会特别高。 我需要考虑几个关键点:首先是硬件要求,虽然模型号称能在手机运行,但PC端部署更实际;其次是部署方式,主要有两种主流方案——通过Hugging Face Transformers库或vLLM推理加速框架;最后是程序访问,通常通过API封装来实现。 用户可能是个开发者,想在自己的应用中集成这个模型。ta特意强调"通过程序访问",说明需要编程接口而非单纯试用。考虑到模型刚发布不久,可能缺乏详细教程,但开源社区通常很快会有实践案例出现。 从模型特性来看,它支持全模态输入是个亮点,但本地部署时可能需要额外处理图像/音频等多模态数据的预处理。这点在回答时需要提及,避免用户忽略多模态支持带来的额外复杂度。 准备在回复中提供具体的代码示例会很有帮助,比如展示如何用transformers加载模型。同时要提醒硬件配置要点,因为显存不足是本地部署最常见的问题。最后补充部署建议和社区资源,方便用户进一步探索。 </think>是的,**已经有人在本地成功部署并通过程序访问通义千问2.5-Omni-7B全模态模型**。官方开源和模型设计使其非常适合本地部署,社区中也已有成功案例和详细教程[^1][^2]。 **具体实现方式和关键点:** 1. **模型获取与本地下载:** * 模型权重已在 **[魔搭社区 (ModelScope)](https://modelscope.cn/models/qwen/Qwen2.5-Omni-7B)** 和 **[Hugging Face Hub](https://huggingface.co/Qwen/Qwen2.5-Omni-7B)** 开源。 * 用户可以使用 `git lfs clone` 或 Hugging Face 的 `snapshot_download` 工具将完整的模型文件下载到本地机器。 2. **部署方式 (常见选择):** * **Hugging Face Transformers:** * 这是最常用、最灵活的方式。 * 安装库: `pip install transformers accelerate` * 使用 Python 脚本加载模型并进行推理: ```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", # 自动分配到可用设备 (GPU/CPU) trust_remote_code=True ).eval() # 进行文本推理 prompt = "请介绍一下你自己。" messages = [{"role": "user", "content": prompt}] text = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True ) model_inputs = tokenizer([text], return_tensors="pt").to(model.device) generated_ids = model.generate( **model_inputs, max_new_tokens=512 ) generated_ids = [ output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids) ] response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] print(response) ``` * **vLLM (推理加速框架):** * 专注于高性能、低延迟推理,支持 OpenAI 兼容的 API 服务,非常适合程序化访问。 * 安装: `pip install vllm` * 启动 API 服务: ```bash python -m vllm.entrypoints.openai.api_server \ --model ./Qwen2.5-Omni-7B \ # 本地模型路径 --trust-remote-code \ --served-model-name Qwen2.5-Omni-7B ``` * 程序即可通过 HTTP 请求访问(兼容 OpenAI API 格式): ```bash curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen2.5-Omni-7B", "messages": [ {"role": "user", "content": "请写一首关于春天的诗"} ], "max_tokens": 200 }' ``` * **LMDeploy (由社区/官方支持):** * 一套包含高效推理、量化、部署服务的工具链,对通义千问系列优化良好。也支持 API 服务部署。 * **ollama / text-generation-webui 等社区工具:** * 这些工具通常提供了更易用的图形界面或命令行交互,底层也依赖 Transformers 或 vLLM。 3. **程序访问:** * **直接调用库:** 如上述 Transformers 示例,在你的 Python 应用程序中直接加载模型并调用 `generate` 方法。 * **HTTP API:** 如使用 vLLM 或 LMDeploy 部署了 API 服务,程序可以通过标准的 HTTP POST 请求(通常模仿 OpenAI API 格式)与模型交互。这是最常见的生产集成方式,允许不同语言编写的程序访问模型。 * **SDK/Client Library:** 一些部署框架或社区项目可能提供特定语言的 SDK 简化访问。 **成功部署的关键要素:** * **硬件要求:** * **GPU (推荐):** 至少需要显存 >= 16GB (如 RTX 4090, A10, A100 40GB 的一部分)。使用量化技术(如 AWQ, GPTQ)可将显存需求降低到 8GB 左右。 * **CPU (较慢):** 需要足够大的系统内存(RAM > 32GB),推理速度会显著慢于 GPU。 * 模型支持 Mac M 系列芯片的 Metal 加速。 * **软件依赖:** Python (>=3.8), PyTorch (>=2.0), Transformers (>=4.37.0), 以及所选部署框架的依赖 (vLLM, LMDeploy 等)。必须允许 `trust_remote_code=True`。 * **网络(仅初次下载):** 下载约 14GB 的模型文件需要稳定的网络连接。 * **磁盘空间:** 模型文件本身需要约 14GB 空间。 **总结:** 通义千问2.5-Omni-7B 的开源许可和优化设计(7B 参数量级)使其**非常适合本地部署**。开发者社区已有大量成功案例,通过 Hugging Face Transformers, vLLM, LMDeploy 等工具可以轻松实现本地部署。程序可以通过 **直接库调用** 或更标准的 **HTTP API (兼容 OpenAI 格式)** 访问部署好的模型服务。部署前需确保满足硬件(主要是显存或大内存)和软件依赖要求[^1][^2]。 **相关问题:** 1. 部署通义千问2.5-Omni-7B需要的最低显存/内存是多少?量化技术能降低多少要求? 2. 在本地使用 vLLM 部署通义千问2.5-Omni-7B时,如何配置才能支持多模态(图片、音频)输入? 3. 除了 Python,能否用其他编程语言(如 Java, Node.js)通过 API 访问本地部署的通义千问2.5-Omni-7B? 4. 在 MacBook Pro (M 系列芯片) 上部署通义千问2.5-Omni-7B 的性能和体验如何? 5. 有没有针对通义千问2.5-Omni-7B 本地部署的详细图文或视频教程?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值