库名称: transformers
标签:
- 全能模态大语言模型
- 多模态大语言模型
- 情感语音对话
许可证: apache-2.0
数据集:
- Emova-ollm/emova-alignment-7m
- Emova-ollm/emova-sft-4m
- Emova-ollm/emova-sft-speech-231k
语言:
- 英文
- 中文
基础模型:
- Emova-ollm/qwen2vit600m
- Emova-ollm/Qwen2.5-3B-Instruct_add_speech_token_4096_nostrip
模型索引:
- 名称: emova-qwen-2-5-3b-hf
结果:
- 任务:
类型: 多模态
数据集:
名称: AI2D
类型: ai2d
指标:
- 类型: 准确率
值: 78.6
名称: 准确率
已验证: 是
- 任务:
类型: 多模态
数据集:
名称: ChartQA
类型: chartqa
指标:
- 类型: 准确率
值: 81.5
名称: 准确率
已验证: 是
- 任务:
类型: 多模态
数据集:
名称: DocVQA
类型: docvqa
指标:
- 类型: 准确率
值: 93.5
名称: 准确率
已验证: 是
- 任务:
类型: 多模态
数据集:
名称: InfoVQA
类型: infovqa
指标:
- 类型: 准确率
值: 71.2
名称: 准确率
已验证: 是
- 任务:
类型: 多模态
数据集:
名称: MathVerse
类型: mathverse
指标:
- 类型: 准确率
值: 31.4
名称: 准确率
已验证: 是
- 任务:
类型: 多模态
数据集:
名称: MathVista
类型: mathvista
指标:
- 类型: 准确率
值: 62.6
名称: 准确率
已验证: 是
- 任务:
类型: 多模态
数据集:
名称: MMBench
类型: mmbench
指标:
- 类型: 准确率
值: 79.2
名称: 准确率
已验证: 是
- 任务:
类型: 多模态
数据集:
名称: MME
类型: mme
指标:
- 类型: 得分
值: 2175
名称: 得分
已验证: 是
- 任务:
类型: 多模态
数据集:
名称: MMVet
类型: mmvet
指标:
- 类型: 准确率
值: 57.3
名称: 准确率
已验证: 是
- 任务:
类型: 多模态
数据集:
名称: OCRBench
类型: ocrbench
指标:
- 类型: 准确率
值: 803
名称: 准确率
已验证: 是
- 任务:
类型: 多模态
数据集:
名称: RealWorldQA
类型: realworldqa
指标:
- 类型: 准确率
值: 62.6
名称: 准确率
已验证: 是
- 任务:
类型: 多模态
数据集:
名称: Seed-Bench-Image
类型: seed-bench-image
指标:
- 类型: 准确率
值: 74.9
名称: 准确率
已验证: 是
- 任务:
类型: 多模态
数据集:
名称: Science-QA
类型: science-qa
指标:
- 类型: 准确率
值: 92.7
名称: 准确率
已验证: 是
- 任务:
类型: 多模态
数据集:
名称: TextVQA
类型: textvqa
指标:
- 类型: 准确率
值: 77.2
名称: 准确率
已验证: 是
- 任务:
类型: 自动语音识别
名称: 自动语音识别
数据集:
名称: LibriSpeech (clean)
类型: librispeech_asr
配置: clean
分割: test
参数:
语言: en
指标:
- 类型: 词错误率
值: 5.4
名称: 测试词错误率
EMOVA-Qwen-2.5-3B-HF
模型概述
EMOVA (EMotionally Omni-present Voice Assistant) 是一种新颖的端到端全能模态大语言模型,无需依赖外部模型即可实现视觉、听觉和语音功能。通过接收全能模态(即文本、视觉和语音)输入,EMOVA能够利用语音解码器和风格编码器生成带有生动情感控制的文本和语音响应。EMOVA具备通用的全能模态理解和生成能力,在高级视觉语言理解、情感语音对话以及结构化数据理解的语音对话方面表现卓越。其主要优势可概括为:
- 顶尖的全能模态性能:EMOVA在视觉语言和语音基准测试中同时达到顶尖可比结果。我们的最佳性能模型EMOVA-72B甚至超越了包括GPT-4o和Gemini Pro 1.5在内的商业模型。
- 情感语音对话:采用语义-声学解耦的语音分词器和轻量级风格控制模块,实现无缝的全能模态对齐和多样化的语音风格控制。EMOVA支持双语(中文和英文)语音对话,并提供24种语音风格控制(即2种说话者、3种音高和4种情感)。
- 多样化配置:我们开源了3种配置,EMOVA-3B/7B/72B,以支持不同计算预算下的全能模态使用。查看我们的模型库,为您的计算设备找到最适合的模型!
性能表现
基准测试 |
EMOVA-3B |
EMOVA-7B |
EMOVA-72B |
GPT-4o |
VITA 8x7B |
VITA 1.5 |
百川全能 |
MME |
2175 |
2317 |
2402 |
2310 |
2097 |
2311 |
2187 |
MMBench |
79.2 |
83.0 |
86.4 |
83.4 |
71.8 |
76.6 |
76.2 |
SEED-Image |
74.9 |
75.5 |
76.6 |
77.1 |
72.6 |
74.2 |
74.1 |
MM-Vet |
57.3 |
59.4 |
64.8 |
- |
41.6 |
51.1 |
65.4 |
RealWorldQA |
62.6 |
67.5 |
71.0 |
75.4 |
59.0 |
66.8 |
62.6 |
TextVQA |
77.2 |
78.0 |
81.4 |
- |
71.8 |
74.9 |
74.3 |
ChartQA |
81.5 |
84.9 |
88.7 |
85.7 |
76.6 |
79.6 |
79.6 |
DocVQA |
93.5 |
94.2 |
95.9 |
92.8 |
- |
- |
- |
InfoVQA |
71.2 |
75.1 |
83.2 |
- |
- |
- |
- |
OCRBench |
803 |
814 |
843 |
736 |
678 |
752 |
700 |
ScienceQA-Img |
92.7 |
96.4 |
98.2 |
- |
- |
- |
- |
AI2D |
78.6 |
81.7 |
85.8 |
84.6 |
73.1 |
79.3 |
- |
MathVista |
62.6 |
65.5 |
69.9 |
63.8 |
44.9 |
66.2 |
51.9 |
Mathverse |
31.4 |
40.9 |
50.0 |
- |
- |
- |
- |
Librispeech (词错误率↓) |
5.4 |
4.1 |
2.9 |
- |
3.4 |
8.1 |
- |
使用方法
本仓库包含以HuggingFace格式组织的EMOVA-Qwen2.5-3B检查点,因此可以直接使用transformers Auto API加载。
from transformers import AutoModel, AutoProcessor
from PIL import Image
import torch
model = AutoModel.from_pretrained(
"Emova-ollm/emova-qwen-2-5-3b-hf",
torch_dtype=torch.bfloat16,
attn_implementation='flash_attention_2',
low_cpu_mem_usage=True,
trust_remote_code=True).eval().cuda()
processor = AutoProcessor.from_pretrained("Emova-ollm/emova-qwen-2-5-3b-hf", trust_remote_code=True)
speeck_tokenizer = AutoModel.from_pretrained("Emova-ollm/emova_speech_tokenizer_hf", torch_dtype=torch.float32, trust_remote_code=True).eval().cuda()
processor.set_speech_tokenizer(speeck_tokenizer)
inputs = dict(
text=[
{"role": "system", "content": [{"type": "text", "text": "你是一个乐于助人的助手。"}]},
{"role": "user", "content": [{"type": "image"}, {"type": "text", "text": "这张图片展示了什么?"}]},
{"role": "assistant", "content": [{"type": "text", "text": "这张图片显示了一个红色停车标志。"}]},
{"role": "user", "content": [{"type": "text", "text": "更详细地描述这张图片。"}]},
],
images=Image.open('图片路径')
)
inputs = dict(
text=[{"role": "system", "content": [{"type": "text", "text": "你是一个乐于助人的助手。"}]}],
audios='音频路径'
)
inputs = dict(
text=[{"role": "system", "content": [{"type": "text", "text": "你是一个乐于助人的助手。"}]}],
images=Image.open('图片路径'),
audios='音频路径'
)
has_speech = 'audios' in inputs.keys()
inputs = processor(**inputs, return_tensors="pt")
inputs = inputs.to(model.device)
gen_kwargs = {"max_new_tokens": 4096, "do_sample": False}
speech_kwargs = {"speaker": "female", "output_wav_prefix": "output"} if has_speech else {}
with torch.no_grad():
outputs = model.generate(**inputs, **gen_kwargs)
outputs = outputs[:, inputs['input_ids'].shape[1]:]
print(processor.batch_decode(outputs, skip_special_tokens=True, **speech_kwargs))
引用
@article{chen2024emova,
title={Emova: Empowering language models to see, hear and speak with vivid emotions},
author={Chen, Kai and Gou, Yunhao and Huang, Runhui and Liu, Zhili and Tan, Daxin and Xu, Jing and Wang, Chunwei and Zhu, Yi and Zeng, Yihan and Yang, Kuo and others},
journal={arXiv preprint arXiv:2409.18042},
year={2024}
}