如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?

3月27日阿里云QWen团队发布了 Qwen2.5-Omni,(Omni是一个拉丁语前缀,意味着“全部”或“所有”)。正如其名,该模型专为全方位多模态感知设计,能够无缝处理文本、图像、音频和视频等多种输入形式,并通过实时流式响应同时生成文本与自然语音合成输出。



Qwen2.5-Omni在包括图像,音频,音视频等各种模态下的表现都优于类似大小的单模态模型以及封闭源模型,例如Qwen2.5-VL-7B、Qwen2-Audio和Gemini-1.5-pro。在多模态任务OmniBench,Qwen2.5-Omni达到了SOTA的表现。

收藏者
0
被浏览
67

5 个回答

小鸭影艺 LV

发表于 前天 09:16

友友们好呀,我是时空猫的问答盒,目前探索的方向是AI前沿文章解读,深耕知乎&公众号。欢迎大家关注~
文章推荐

文章名称:Qwen2.5-Omni Technical Report
文章链接:https://github.com/QwenLM/Qwen2.5-Omni/blob/main/assets/Qwen2.5_Omni.pdf
github链接:https://github.com/QwenLM/Qwen2.5-Omni/tree/main
hf link: https://huggingface.co/Qwen/Qwen2.5-Omni-7B
Abstract

在这份报告中,我们介绍了Qwen2.5-Omni,这是一个一体化的多模态模型,能够处理多种类型的数据,包括文本、图像、音频和视频,同时还能实时生成文本和自然的语音回复。为了让模型能够实时处理多模态数据输入,我们在音频和视频编码器中采用了“分块处理”的方法。这种方法有效地将长序列多模态数据的处理任务分解开来,让多模态编码器负责感知任务,而将长序列的建模任务交给大型语言模型来完成。这种分工合作的方式,通过共享注意力机制,增强了不同模态数据的融合效果。
为了使视频和音频的时间戳对齐,我们将音频和视频数据以交错的方式组织在一起,并提出了一种新的位置嵌入方法,称为TMRoPE(时间对齐多模态RoPE)。这种方法能够更好地对齐音频和视频的时间信息。
在同时生成文本和语音时,为了避免两种模态之间的相互干扰,我们设计了一种名为Thinker-Talker的架构。在这个框架中,Thinker部分是一个大型语言模型,负责生成文本内容;而Talker部分是一个双轨自回归模型,它可以直接利用Thinker的隐藏层表示,生成语音的输出。无论是Thinker还是Talker,都可以在端到端的方式下进行训练和推理。
为了实现实时生成语音的目的,我们在解码音频令牌时引入了一种带有滑动窗口的DiT(深度卷积网络),通过限制感受野来减少初始包的延迟。这种设计使得模型在生成语音时更加高效。
实验结果显示,Qwen2.5-Omni在性能上与同规模的Qwen2.5-VL相当,并且优于Qwen2-Audio。在多模态基准测试(如Omni-Bench)中,Qwen2.5-Omni也达到了当前最优的水平。特别值得一提的是,Qwen2.5-Omni在端到端语音指令跟随任务上的表现,与它处理文本输入的能力不相上下,这一点在MMLU和GSM8K等基准测试中得到了验证。在语音生成方面,Qwen2.5-Omni的Talker模块在鲁棒性和自然度方面,也优于大多数现有的流式和非流式语音生成方法。

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-1.jpg

图1:Qwen2.5-Omni是一个统一的端到端模型,能够处理文本、音频、图像和视频等多种模态数据,并实时生成文本或语音回复。基于这些特性,Qwen2.5-Omni可以支持多种任务,包括但不限于语音对话、视频对话和视频推理。
1 Introduction

1.1 背景与挑战

在日常生活中,人类能够同时感知周围的视觉和听觉信息,并通过语言、书写或工具进行反馈,展示出智能。近年来,通用人工智能的发展主要得益于大语言模型(LLMs)的进步,这些模型通过大量文本数据训练,展示了处理复杂问题和快速学习的能力。然而,尽管语言模型在文本处理上取得了显著进展,如何高效地将听觉和视觉能力统一到一个端到端的模型中,仍然是一个重大挑战。
1.2 构建统一模型的关键因素

构建一个统一的智能模型需要考虑以下几个关键因素:

  • 多模态联合训练:需要系统地联合训练文本、图像、视频和音频等多种模态,促进它们的相互提升,特别是视频内容中音频和视觉信号的时间同步。
  • 输出模态的干扰管理:确保生成文本和语音的过程互不影响,避免模态之间的相互干扰。
  • 实时处理与高效生成:探索实时处理多模态信息和高效语音输出流的架构设计,以减少初始延迟。
1.3 Qwen2.5-Omni模型的介绍

Qwen2.5-Omni是一个统一的单模型,能够处理文本、图像、视频和音频等多种模态,并同时生成文本和自然语音流式响应。为了解决多模态对齐和输出干扰的问题,模型采用了以下创新设计:

  • TMRoPE位置嵌入算法:通过将音频和视频帧以交错结构组织,按时间顺序表示视频序列,实现音频和视频的时间对齐。
  • Thinker-Talker架构:Thinker部分负责文本生成,Talker部分专注于生成流式语音令牌,Talker直接接收来自Thinker的高层表示,实现类似人类利用不同器官产生信号的效果。
  • 流式语音生成优化:采用双轨自回归模型和DiT模型,将语音令牌转换为波形,实现流式音频生成并减少初始延迟。
1.4 模型性能

Qwen2.5-Omni在性能上与同规模的Qwen2.5-VL相当,并在图像和音频能力上优于Qwen2-Audio。在多模态基准测试如OmniBench和AV-Odyssey Bench上达到了当前最优水平。特别是在端到端语音指令跟随任务中,其性能与文本输入能力相当。在语音生成方面,Qwen2.5-Omni在多个测试集上表现出色,WER指标优于MaskGCT和CosyVoice 2。
1.5 关键特点总结


  • 统一模型:Qwen2.5-Omni是一个统一的模型,能够同时处理多种模态并生成文本和自然语音流式响应。
  • TMRoPE算法:引入了TMRoPE位置嵌入算法,有效同步音频和视频的时间信息。
  • Thinker-Talker架构:通过该架构实现实时理解和语音生成,提升模型的综合性能。
通过这些创新设计,Qwen2.5-Omni在多模态处理和实时生成方面取得了显著进展,为通用人工智能的发展提供了新的方向。
2 Architecture

2.1 概述

如图2所示,Qwen2.5-Omni采用了Thinker-Talker架构。Thinker就像一个“大脑”,负责处理和理解来自文本、音频和视频等多种模态的输入,生成高层次的表示和相应的文本输出。而Talker则像一个“嘴巴”,实时接收Thinker产生的高层次表示和文本,流畅地输出离散的语音令牌。
Thinker是一个Transformer解码器,配备了用于音频和图像信息提取的编码器。Talker则采用了双轨自回归Transformer解码器架构,灵感来源于Mini-Omni(Xie & Wu, 2024)。在训练和推理过程中,Talker可以直接接收Thinker的高层表示,并共享其历史上下文信息,从而实现端到端的高效处理。
图2展示了Qwen2.5-Omni的整体架构,Thinker负责多模态输入的感知和文本生成,而Talker则专注于语音的实时生成。

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-2.jpg

Figure 2: Qwen2.5-Omni的架构概述
2.2 感知

2.2.1 多模态输入处理

文本、音频、图像和视频(无音频)通过各自的编码器转换为隐藏表示后输入到Thinker中。文本使用Qwen的分词器(Yang et al., 2024a),采用字节级字对编码,词汇量为151,643个。音频输入经过重采样至16kHz,并转换为128通道的mel频谱图,窗口大小为25ms,步长为10ms。视觉编码器基于Vision Transformer(ViT),参数量约为675百万,能够有效处理图像和视频。
视频处理方面,采用动态帧率采样以适应音频采样率,同时每张图像被视为两帧处理。这样可以保留尽可能多的视频信息,同时保持模型的高效性。
2.2.2 TMRoPE:时间对齐多模态RoPE

为了对齐音频和视频的时间戳,模型采用了时间交错算法和新的位置编码方法TMRoPE。TMRoPE将原始旋转嵌入分解为时间、高度和宽度三个部分,分别处理不同模态的输入。
文本输入:时间、高度和宽度位置ID相同,功能等同于1D-RoPE。
音频输入:每40ms对应一个时间位置ID。
图像输入:时间位置ID固定,高度和宽度ID基于位置分配。
视频输入:音频处理同上,视频每帧递增时间位置ID,高度和宽度ID与图像处理相同。
多模态输入时,各模态的位置编号从上一模态的最大位置ID递增开始。TMRoPE增强了位置信息的建模能力,促进了多模态信息的融合。
2.2.3 时间交错排列

在处理带音频的视频时,模型采用时间交错方法,每2秒将视频和音频表示分割成块。每个2秒块中,视觉表示在前,音频表示在后,交错排列。这种方法确保了模型能够同时接收视觉和听觉信息。
2.3 生成

2.3.1 文本生成

文本生成由Thinker直接完成,采用自回归采样方法,基于词汇的概率分布生成文本。生成过程中可能使用重复惩罚和Top-p采样等技术,以增强文本的多样性。
2.3.2 语音生成

Talker接收Thinker的高层表示和文本令牌的嵌入,通过自回归方式生成语音令牌。为了实现实时生成,Talker采用了滑动窗口机制,限制当前令牌对上下文的访问范围。具体来说,使用Flow-Matching DiT模型,将输入代码转换为mel频谱图,再通过修改后的BigVGAN将其重建为波形。
这种方法避免了模态间的相互干扰,同时简化了训练数据和推理过程的需求。
2.4 流式设计

2.4.1 分块前传

为了支持流式处理,模型对音频和视觉编码器进行了修改,使其支持沿时间维度的分块注意力。音频编码器将全注意力改为每2秒块的注意力,视觉编码器使用高效的Flash注意力,并通过MLP层将相邻的2x2令牌合并为一个令牌。
2.4.2 滑动窗口注意力机制

在语音生成过程中,模型采用了滑动窗口块注意力机制,限制当前令牌的访问范围。具体来说,DiT模型的接收野被限制为4个块,包括2个回看块和1个预览块。这种方法通过保持上下文信息,提高了流式输出的质量。
2.4.3 流式语音生成

通过分块处理和滑动窗口机制,模型在生成语音时能够实现实时处理,显著降低了初始包的延迟。这种方法不仅提高了生成效率,还保证了语音输出的自然度和鲁棒性。
图4展示了滑动窗口块注意力机制在DiT中的应用,通过分块处理和限制接收野,模型能够高效生成高质量的语音流。

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-3.jpg

Figure 4: 滑动窗口块注意力机制在DiT中的应用
通过以上设计,Qwen2.5-Omni在多模态感知和实时生成方面取得了显著的性能提升,为语音对话、视频推理等任务提供了强大的支持。
3 Pre-training

在本节中,我们将详细探讨Qwen2.5-Omni模型的预训练过程,包括其训练阶段、数据集构成、训练策略以及关键的技术细节。
3.1 训练阶段

Qwen2.5-Omni的预训练过程分为三个阶段,每个阶段都有其特定的目标和方法:

  • 第一阶段:锁定LLM参数,专注于多模态编码器训练
       - 在这一阶段,模型的大型语言模型(LLM)参数被锁定,仅对视觉编码器和音频编码器进行训练。
       - 使用了大量音频-文本和图像-文本对的数据,目的是增强模型在LLM内部的语义理解能力。
  • 第二阶段:解冻所有参数,进行广泛多模态数据训练
       - 解冻所有参数,使整个模型可以进行端到端的训练。
       - 使用更广泛的数据集,包括更多类型的多模态数据,以实现更全面的学习。
  • 第三阶段:长序列数据训练,提升复杂长序列处理能力
       - 使用长度为32,768 token的长序列数据进行训练,以增强模型处理复杂长序列数据的能力。
3.2 数据集构成

Qwen2.5-Omni的预训练数据集包含多种类型的数据:
图像-文本数据:用于视觉信息的理解和关联。
视频-文本数据:用于视频内容与文本的结合理解。
视频-音频数据:用于视频和音频内容的联合学习。
音频-文本数据:用于音频信息与文本的关联。
纯文本数据:用于保持和提升语言模型的文本处理能力。
此外,模型采用了自然语言提示(natural language prompts)替代传统的层次化标签(hierarchical tags)。这种改进有助于提升模型的泛化能力和指令遵循能力,使其在面对多样化任务时表现更佳。
3.3 初始预训练阶段

在初始预训练阶段,模型的各个组件分别初始化为已有的模型参数:
LLM部分:使用了Qwen2.5的参数,确保了语言模型的初始性能。
视觉编码器:采用了与Qwen2.5-VL相同的结构,专注于图像信息的处理。
音频编码器:基于Whisper-large-v3进行初始化,专注于音频信息的处理。
在这一阶段,视觉编码器和音频编码器分别在固定LLM的基础上进行适配器(adapters)的训练,随后再对整个编码器进行训练。这种分阶段的训练策略有助于模型逐步建立对视觉和音频信息的理解,同时保持LLM的稳定性。
3.4 第二阶段预训练

第二阶段预训练引入了更大规模的数据,包括:
8000亿token的图像和视频数据:丰富了视觉信息的多样性。
3000亿token的音频数据:增强了对不同音频内容的理解。
1000亿token的视频-音频数据:促进了视频和音频信息的联合学习。
这一阶段的训练不仅增加了数据量,还引入了更多样化的任务,进一步增强了模型对听觉、视觉和文本信息之间交互的理解。纯文本数据的引入则确保了模型在语言能力上的持续提升。
3.5 长序列数据训练

为了提高模型处理长序列数据的能力,第三阶段的训练采用了32,768 token的长序列数据。这一扩展不仅提升了模型对复杂长序列的理解能力,还在实验中显示出显著的性能提升。
3.6 训练效率优化

在前两个阶段,模型的最大token长度被限制在8192,以提高训练效率。进入第三阶段后,模型的最大token长度扩展至32,768,以适应长序列数据的处理需求。
通过以上三个阶段的预训练,Qwen2.5-Omni模型在多模态数据的理解和处理能力上得到了显著提升,为后续的多任务处理和实际应用奠定了坚实的基础。
4 Post-training

4.1 数据格式

在Post-training部分,首先介绍的是数据格式。文章中使用了基于ChatML格式的数据集,该格式支持多模态对话数据的组织。数据格式示例如下:
<|im_start|> $>$ user  
<|vision_start|> $>$ Video.mp4 [视频内容描述]<|vision_end|> 用户的问题或指令 $<|$ im_end $|>  
<|im_start|> $>$ assistant  
助理的回答内容 $<|$ im_end $|>  
这种格式允许模型处理文本、视觉和音频等多种模态数据,并支持实时生成文本或语音回复。数据格式的结构清晰,便于模型在多模态环境中进行理解和生成。
4.2 Thinker模块

Thinker模块是负责生成文本内容的部分,采用了指令微调的方法。在Post-training阶段,使用了包含以下类型的数据:

  • 纯文本对话数据:用于模型在文本交互中的理解和生成能力。
  • 视觉模态对话数据:结合视觉信息,提升模型对图像内容的理解和生成能力。
  • 音频模态对话数据:结合音频信息,增强模型对语音内容的理解和生成能力。
  • 多模态对话数据:整合文本、图像和音频等多种模态信息,提升模型在复杂场景下的表现。
通过这些数据的训练,Thinker模块能够更好地处理多模态输入,并生成相应的文本回复。
4.3 Talker模块

Talker模块负责生成语音回复,采用了三阶段的训练方法:
第一阶段:上下文延续学习(In-Context Learning)

在这一阶段,Talker模块通过预测下一个令牌来学习上下文的延续。训练数据包含多模态对话内容和语音回复,模型学习将语义表示映射到语音输出,并掌握在上下文中适当表达语音属性(如语调、情感和音调)的能力。
第二阶段:DPO(Denoising Diffusion Probabilistic Models, DDO)训练

为了提高语音生成的稳定性,引入了DPO方法。DPO通过对比目标模型和参考模型的输出,优化语音生成的质量。具体公式如下:

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-4.jpg

第三阶段:多说话人指令微调

为了提高语音生成的自然度和可控性,进行了多说话人指令微调。通过强化学习,模型学习在不同场景和说话人下生成高质量的语音。具体方法是构建包含优质和劣质语音样本的数据集,并根据单词错误率(WER)和停顿错误率进行排序,优化模型生成语音的质量。
此外,引入了音调分离技术,防止模型将特定语音与不常见的文本模式关联,提升语音生成的多样性和自然度。
通过这三阶段的训练,Talker模块在语音生成的稳定性和自然度方面表现出色,优于现有的流式和非流式语音生成方法。
5 Evaluation

5 评估

在这部分,我们将全面评估Qwen2.5-Omni模型的性能。该模型主要分为两类任务:理解($\mathrm{\hat{X}\to Text}$)和语音生成($\mathrm{\Delta}X\to$ Speech)。接下来,我们将分别从文本生成能力和语音生成能力两个方面进行详细讲解。
5.1 文本生成能力评估

在这一部分,我们评估了Qwen2.5-Omni对多种模态输入(文本、音频、图像、视频)的理解能力,并生成相应的文本输出。具体包括以下几个方面:
5.1.1 文本→文本任务

我们主要关注模型在通用任务、数学与科学能力以及编程能力方面的表现。通过使用MMLU-Pro、MMLU-redux、Livebench0803等基准测试,我们发现Qwen2.5-Omni在这些任务中表现优异,尤其是在MMLU-Pro、MMLU-redux、MATH、GSM8K、MBPP和MultiPL-E等基准测试中,其性能优于Qwen2-7B和Qwen2.5-7B模型。
表1展示了Qwen2.5-Omni在文本→文本任务中的具体表现:
表1:文本→文本任务的性能对比
从表中可以看出,Qwen2.5-Omni在大多数基准测试中表现优于Qwen2-7B,与Qwen2.5-7B相当,这表明模型在文本理解任务中具有较强的竞争力。
5.1.2 音频→文本任务

在音频→文本任务中,我们评估了模型在自动语音识别(ASR)、语音到文本翻译(S2TT)、语音实体识别(SER)、语音分类(VSC)以及音乐理解等方面的能力。通过使用Fleurs_zh、CommonVoice_en、CoVoST2_en-de等数据集,我们发现Qwen2.5-Omni在这些任务中表现优异,显著优于Whisper-large-v3、Qwen2-Audio等模型。
此外,在语音交互任务中,我们将文本指令转换为语音指令,并与Qwen2-Audio和Qwen2-7B进行对比。结果显示,Qwen2.5-Omni在语音交互任务中表现更加稳定,与Qwen2-7B的差距显著缩小。
表2表3展示了Qwen2.5-Omni在音频→文本任务中的具体表现:
表2:音频→文本任务的性能对比(ASR)
表3:音频→文本任务的性能对比(SER、VSC、音乐等)
从表中可以看出,Qwen2.5-Omni在ASR、SER、VSC和音乐理解等任务中均达到了当前最优水平。
5.1.3 图像→文本任务

在图像→文本任务中,我们评估了模型在视觉问答(VQA)、OCR、数学视觉推理等方面的能力。通过使用MMMU、MathVision、TextVQA、DocVQA等数据集,我们发现Qwen2.5-Omni在这些任务中表现优异,显著优于Qwen2.5-VL-7B和其他开源多模态模型。
此外,在视觉定位任务中,我们还评估了模型在图像定位、目标检测等方面的能力。通过使用Refcoco、Refcocog、PointGrounding等数据集,我们发现Qwen2.5-Omni在这些任务中表现接近于Qwen2.5-VL-7B和Grounding-DINO等领先模型。
表4表5展示了Qwen2.5-Omni在图像→文本任务中的具体表现:
表4:图像→文本任务的性能对比(视觉问答、OCR等)
表5:图像→文本任务的性能对比(视觉定位)
从表中可以看出,Qwen2.5-Omni在视觉问答、OCR和视觉定位任务中均表现优异。
5.1.4 视频→文本任务

在视频→文本任务中,我们评估了模型在视频理解、视频问答等方面的能力。通过使用Video-MME、MVBench、EgoSchema等数据集,我们发现Qwen2.5-Omni在这些任务中表现优异,显著优于Qwen2.5-VL-7B和其他开源多模态模型。
表6展示了Qwen2.5-Omni在视频→文本任务中的具体表现:
表6:视频→文本任务的性能对比
从表中可以看出,Qwen2.5-Omni在视频理解任务中表现优于Qwen2.5-VL-7B和其他开源多模态模型。
5.1.5 多模态→文本任务

在多模态→文本任务中,我们评估了模型在混合模态输入(图像、音频和文本)下的理解能力。通过使用OmniBench等基准测试,我们发现Qwen2.5-Omni在这些任务中表现优异,显著优于其他多模态模型。
表7展示了Qwen2.5-Omni在多模态→文本任务中的具体表现:
表7:多模态→文本任务的性能对比
从表中可以看出,Qwen2.5-Omni在多模态理解任务中表现显著优于其他模型。
5.2 语音生成能力评估

在这一部分,我们评估了Qwen2.5-Omni的语音生成能力,主要关注以下两个方面:
5.2.1 零样本语音生成

我们评估了模型在零样本语音生成任务中的内容一致性和说话人相似性。通过使用SEED数据集,我们发现Qwen2.5-Omni在这些任务中表现优异,显著优于其他零样本语音生成模型。
此外,经过强化学习优化后,Qwen2.5-Omni在生成稳定性方面也取得了显著提升。
表8展示了Qwen2.5-Omni在零样本语音生成任务中的具体表现:
表8:零样本语音生成任务的性能对比
从表中可以看出,Qwen2.5-Omni在零样本语音生成任务中表现优异。
5.2.2 单说话人语音生成

我们评估了模型在单说话人语音生成任务中的自然度和稳定性。通过使用SEED数据集,我们发现经过说话人微调的Qwen2.5-Omni在这些任务中表现接近于人类水平。
表9展示了Qwen2.5-Omni在单说话人语音生成任务中的具体表现:
表9:单说话人语音生成任务的性能对比
从表中可以看出,Qwen2.5-Omni在单说话人语音生成任务中表现优异,自然度和稳定性均接近人类水平。
总结

通过以上评估,我们可以看到Qwen2.5-Omni在文本生成和语音生成任务中均表现优异,显著优于其他模型。这充分体现了Qwen2.5-Omni在多模态理解和生成任务中的强大能力。
6 Conclusion

在这一部分,作者总结了Qwen2.5-Omni模型的主要特点、技术创新以及实验结果,并展望了未来的研究方向。
6.1 模型特点与技术创新

Qwen2.5-Omni是一个统一的多模态模型,能够理解和生成多种模态数据,包括文本和实时语音。以下是其主要特点和技术创新:

  • 多模态统一模型:Qwen2.5-Omni是一个端到端的统一模型,能够处理文本、音频、图像和视频等多种模态数据,并实时生成文本或语音回复。
  • TMRoPE(时间对齐多模态RoPE):为了对齐音频和视频的时间戳,作者提出了一种新的位置嵌入方法——TMRoPE。这种方法能够更好地对齐音频和视频的时间信息,提升多模态数据的融合效果。
  • Thinker-Talker架构:在生成文本和语音时,Qwen2.5-Omni采用了Thinker-Talker架构。Thinker部分是一个大型语言模型,负责生成文本内容;而Talker部分是一个双轨自回归模型,可以直接利用Thinker的隐藏层表示生成语音输出。这种设计能够有效避免不同模态之间的相互干扰。
  • 分块处理与滑动窗口机制:在音频和视频编码器中采用了“分块处理”的方法,将长序列多模态数据的处理任务分解开来,让多模态编码器负责感知任务,而将长序列的建模任务交给大型语言模型完成。此外,在解码音频令牌时引入了带有滑动窗口的深度卷积网络(DiT),通过限制感受野来减少初始包的延迟,从而实现高效的语音生成。
6.2 实验结果

实验结果表明,Qwen2.5-Omni在性能上与同规模的Qwen2.5-VL相当,并且优于Qwen2-Audio。在多模态基准测试(如Omni-Bench)中,Qwen2.5-Omni达到了当前最优的水平。特别是在端到端语音指令跟随任务上,其表现与处理文本输入的能力不相上下。
此外,Qwen2.5-Omni在语音生成方面也表现出色。在零样本语音生成任务中,Qwen2.5-Omni在内容一致性和说话人相似性等指标上均优于其他模型(如Seed-TTSRL、MaskGCT等)。在单说话人语音生成任务中,Qwen2.5-Omni的自然度得分也达到了与人类相当的水平。
以下是实验结果的具体展示:
表9:零样本语音生成


如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-5.jpg

表10:单说话人语音生成


如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-6.jpg

从表中可以看出,Qwen2.5-Omni在内容一致性和自然度方面均表现优异,接近甚至超越了人类水平。
6.3 未来研究方向

在模型的开发过程中,作者指出了几个在之前的研究中常被忽视的关键问题,例如视频OCR和音视频协作理解。这些问题的解决需要学术界和工业界的共同努力,特别是在构建全面的评估基准和研究数据集方面。
作者认为,Qwen2.5-Omni是朝着通用人工智能(AGI)方向的重要进步。未来的研究目标包括:

  • 提升模型的鲁棒性和速度:进一步优化模型的稳定性和运行效率,使其能够更高效地处理多种任务。
  • 扩展输出能力:在现有基础上,进一步扩展模型的输出模态,例如支持图像、视频和音乐等多种形式的输出。
  • 多模态协作理解:继续研究音视频协作理解等问题,推动多模态模型在更广泛的应用场景中发挥作用。
通过这些努力,Qwen2.5-Omni有望在多模态人工智能领域取得更大的突破,为实现通用人工智能(AGI)奠定坚实的基础。

奕夫 LV

发表于 前天 09:27

3月27日,北京时间周四凌晨,阿里巴巴发布通义千问系列的最新旗舰模型Qwen2.5-Omni。这款端到端多模态模型专为广泛的多模态感知设计,能够处理文本、图像、音频和视频等多种输入,同时能够通过生成文本和合成语音提供实时流式响应。
据“通义千问Qwen”官方微信号介绍,这款模型的主要特点如下:
全能创新架构:Qwen团队提出了一种全新的Thinker-Talker架构,这是一种端到端的多模态模型,旨在支持文本/图像/音频/视频的跨模态理解,同时以流式方式生成文本和自然语音响应。Qwen提出了一种新的位置编码技术,称为TMRoPE(Time-aligned Multimodal RoPE),通过时间轴对齐实现视频与音频输入的精准同步。
实时音视频交互:架构旨在支持完全实时交互,支持分块输入和即时输出。
自然流畅的语音生成:在语音生成的自然性和稳定性方面超越了许多现有的流式和非流式替代方案。
全模态性能优势:在同等规模的单模态模型进行基准测试时,表现出卓越的性能。Qwen2.5-Omni在音频能力上优于类似大小的Qwen2-Audio,并与Qwen2.5-VL-7B保持同等水平。
卓越的端到端语音指令跟随能力:Qwen2.5-Omni在端到端语音指令跟随方面表现出与文本输入处理相媲美的效果,在MMLU通用知识理解和GSM8K数学推理等基准测试中表现优异。
这是 Qwen 系列中全新的旗舰级多模态大模型,专为全面的多模式感知设计,可以无缝处理包括文本、图像、音频和视频的各种输入,同时支持流式的文本生成和自然语音合成输出。

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-1.jpg

从此以后,你可以像打电话或进行视频通话一样与 Qwen 聊天!可以说是「语音聊天 + 视频聊天」都实现了。

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-2.jpg


体验地址:https://chat.qwen.ai/
更重要的是,团队人员将支持这一切的模型 Qwen2.5-Omni-7B 开源了,采用 Apache 2.0 许可证,并且发布了技术报告,分享所有细节!
现在,开发者和企业可免费下载商用Qwen2.5-Omni,手机等终端智能硬件也可轻松部署运行。


如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-3.jpg


  • 论文地址:https://github.com/QwenLM/Qwen2.5-Omni/blob/main/assets/Qwen2.5_Omni.pdf
  • 博客地址:https://qwenlm.github.io/blog/qwen2.5-omni/
  • GitHub 地址:https://github.com/QwenLM/Qwen2.5-Omni
  • Hugging Face 地址:https://huggingface.co/Qwen/Qwen2.5-Omni-7B
  • ModelScope:https://modelscope.cn/models/Qwen/Qwen2.5-Omni-7B
有网友表示,这才是真正的 Open AI。

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-4.jpg

模型架构

表现可与文本输入的有效性相媲美,这一点在 MMLU 和 GSM8K 等基准测试中得到了证明。
前文我们已经提到,Qwen2.5-Omni 采用了 Thinker-Talker 架构。
Thinker 就像大脑一样,负责处理和理解来自文本、音频和视频模态的输入,生成高级表示以及对应的文本。
Talker 则像人类的嘴巴,以流式方式接收 Thinker 产生的高级表示和文本,并流畅地输出离散的语音 token。
Thinker 是一个 Transformer 解码器,配备有音频和图像的编码器,以便于提取信息。相比之下,Talker 被设计为一种双轨自回归 Transformer 解码器架构。
在训练和推理过程中,Talker 直接接收来自 Thinker 的高维表示,并共享 Thinker 的所有历史上下文信息。因此,整个架构作为一个统一的单一模型运行,实现了端到端的训练和推理。


如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-5.jpg


Qwen2.5-Omni 模型架构

模型性能

团队人员对 Qwen2.5-Omni 进行了全面评估,结果表明,该模型在所有模态上的表现均优于类似大小的单模态模型以及闭源模型,例如 Qwen2.5-VL-7B、Qwen2-Audio 和 Gemini-1.5-pro。
在需要集成多种模态的任务中,如 OmniBench,Qwen2.5-Omni 达到了最先进的水平。
此外,在单模态任务中,Qwen2.5-Omni 在多个领域中表现优异,包括语音识别(Common Voice)、翻译(CoVoST2)、音频理解(MMAU)、图像推理(MMMU, MMStar)、视频理解(MVBench)以及语音生成(Seed-tts-eval 和 subjective naturalness)。


如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-6.jpg

大宋提辖鲁 LV

发表于 前天 09:40

案例

虽然7B模型,但显存吃的还是很大

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-1.jpg

官方视频案例【https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2.5-Omni/draw.mp4】,21秒视频,显示显存100GB显存OOM:

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-2.jpg

图片稍大就保错,现在官方demo也是这个问题:

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-3.jpg

速度很慢,不知道是我没配置好还是其他原因,一次要三四分钟才能生成语音(没有flash-att加速);
案例1 (图+文)生成 (音)

一张小图,语音生成是ok的;

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-4.jpg

生成结果还是ok的,但是还是玩的不够尽兴;
案例2 (文) 生 (语音)


如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-5.jpg

还是东北腔的;
后面测试更多的结果;
方法

模型框架

这个模型框架好复杂,还没自习看transformers内部代码:
  1. Qwen2_5OmniModel(
  2.   (thinker): Qwen2_5OmniThinkerForConditionalGeneration(
  3.     (audio_tower): Qwen2_5OmniAudioEncoder(
  4.       (conv1): Conv1d(128, 1280, kernel_size=(3,), stride=(1,), padding=(1,))
  5.       (conv2): Conv1d(1280, 1280, kernel_size=(3,), stride=(2,), padding=(1,))
  6.       (positional_embedding): SinusoidsPositionEmbedding()
  7.       (audio_bos_eos_token): Embedding(2, 3584)
  8.       (layers): ModuleList(
  9.         (0-31): 32 x Qwen2_5OmniAudioEncoderLayer(
  10.           (self_attn): Qwen2_5OmniAudioAttention(
  11.             (k_proj): Linear(in_features=1280, out_features=1280, bias=False)
  12.             (v_proj): Linear(in_features=1280, out_features=1280, bias=True)
  13.             (q_proj): Linear(in_features=1280, out_features=1280, bias=True)
  14.             (out_proj): Linear(in_features=1280, out_features=1280, bias=True)
  15.           )
  16.           (self_attn_layer_norm): LayerNorm((1280,), eps=1e-05, elementwise_affine=True)
  17.           (activation_fn): GELUActivation()
  18.           (fc1): Linear(in_features=1280, out_features=5120, bias=True)
  19.           (fc2): Linear(in_features=5120, out_features=1280, bias=True)
  20.           (final_layer_norm): LayerNorm((1280,), eps=1e-05, elementwise_affine=True)
  21.         )
  22.       )
  23.       (ln_post): LayerNorm((1280,), eps=1e-05, elementwise_affine=True)
  24.       (avg_pooler): AvgPool1d(kernel_size=(2,), stride=(2,), padding=(0,))
  25.       (proj): Linear(in_features=1280, out_features=3584, bias=True)
  26.     )
  27.     (visual): Qwen2_5OmniVisionEncoder(
  28.       (patch_embed): Qwen2_5_VisionPatchEmbed(
  29.         (proj): Conv3d(3, 1280, kernel_size=(2, 14, 14), stride=(2, 14, 14), bias=False)
  30.       )
  31.       (rotary_pos_emb): Qwen2_5_VisionRotaryEmbedding()
  32.       (blocks): ModuleList(
  33.         (0-31): 32 x Qwen2_5OmniVisionBlock(
  34.           (norm1): Qwen2RMSNorm((1280,), eps=1e-06)
  35.           (norm2): Qwen2RMSNorm((1280,), eps=1e-06)
  36.           (attn): Qwen2_5OmniVisionAttention(
  37.             (q): Linear(in_features=1280, out_features=1280, bias=True)
  38.             (k): Linear(in_features=1280, out_features=1280, bias=True)
  39.             (v): Linear(in_features=1280, out_features=1280, bias=True)
  40.             (proj): Linear(in_features=1280, out_features=1280, bias=True)
  41.           )
  42.           (mlp): Qwen2_5OmniMLP(
  43.             (gate_proj): Linear(in_features=1280, out_features=3420, bias=True)
  44.             (up_proj): Linear(in_features=1280, out_features=3420, bias=True)
  45.             (down_proj): Linear(in_features=3420, out_features=1280, bias=True)
  46.             (act_fn): SiLU()
  47.           )
  48.         )
  49.       )
  50.       (merger): Qwen2_5OmniPatchMerger(
  51.         (ln_q): Qwen2RMSNorm((1280,), eps=1e-06)
  52.         (mlp): Sequential(
  53.           (0): Linear(in_features=5120, out_features=5120, bias=True)
  54.           (1): GELU(approximate='none')
  55.           (2): Linear(in_features=5120, out_features=3584, bias=True)
  56.         )
  57.       )
  58.     )
  59.     (model): Qwen2_5OmniThinkerModel(
  60.       (embed_tokens): Embedding(152064, 3584)
  61.       (layers): ModuleList(
  62.         (0-27): 28 x Qwen2_5OmniDecoderLayer(
  63.           (self_attn): Qwen2_5OmniAttention(
  64.             (q_proj): Linear(in_features=3584, out_features=3584, bias=True)
  65.             (k_proj): Linear(in_features=3584, out_features=512, bias=True)
  66.             (v_proj): Linear(in_features=3584, out_features=512, bias=True)
  67.             (o_proj): Linear(in_features=3584, out_features=3584, bias=False)
  68.             (rotary_emb): Qwen2_5OmniRotaryEmbedding()
  69.           )
  70.           (mlp): Qwen2MLP(
  71.             (gate_proj): Linear(in_features=3584, out_features=18944, bias=False)
  72.             (up_proj): Linear(in_features=3584, out_features=18944, bias=False)
  73.             (down_proj): Linear(in_features=18944, out_features=3584, bias=False)
  74.             (act_fn): SiLU()
  75.           )
  76.           (input_layernorm): Qwen2RMSNorm((3584,), eps=1e-06)
  77.           (post_attention_layernorm): Qwen2RMSNorm((3584,), eps=1e-06)
  78.         )
  79.       )
  80.       (norm): Qwen2RMSNorm((3584,), eps=1e-06)
  81.       (rotary_emb): Qwen2_5OmniRotaryEmbedding()
  82.     )
  83.     (lm_head): Linear(in_features=3584, out_features=152064, bias=False)
  84.   )
  85.   (talker): Qwen2_5OmniTalkerForConditionalGeneration(
  86.     (thinker_to_talker_proj): Linear(in_features=3584, out_features=896, bias=True)
  87.     (model): Qwen2_5OmniTalkerModel(
  88.       (embed_tokens): Embedding(8448, 3584)
  89.       (layers): ModuleList(
  90.         (0-23): 24 x Qwen2_5OmniDecoderLayer(
  91.           (self_attn): Qwen2_5OmniAttention(
  92.             (q_proj): Linear(in_features=896, out_features=1536, bias=True)
  93.             (k_proj): Linear(in_features=896, out_features=512, bias=True)
  94.             (v_proj): Linear(in_features=896, out_features=512, bias=True)
  95.             (o_proj): Linear(in_features=1536, out_features=896, bias=False)
  96.             (rotary_emb): Qwen2_5OmniRotaryEmbedding()
  97.           )
  98.           (mlp): Qwen2MLP(
  99.             (gate_proj): Linear(in_features=896, out_features=18944, bias=False)
  100.             (up_proj): Linear(in_features=896, out_features=18944, bias=False)
  101.             (down_proj): Linear(in_features=18944, out_features=896, bias=False)
  102.             (act_fn): SiLU()
  103.           )
  104.           (input_layernorm): Qwen2RMSNorm((896,), eps=1e-06)
  105.           (post_attention_layernorm): Qwen2RMSNorm((896,), eps=1e-06)
  106.         )
  107.       )
  108.       (norm): Qwen2RMSNorm((896,), eps=1e-06)
  109.       (rotary_emb): Qwen2_5OmniRotaryEmbedding()
  110.     )
  111.     (codec_head): Linear(in_features=896, out_features=8448, bias=False)
  112.   )
  113.   (token2wav): Qwen2_5OmniToken2WavModel(
  114.     (code2wav_dit_model): Qwen2_5OmniToken2WavDiTModel(
  115.       (time_embed): TimestepEmbedding(
  116.         (time_embed): SinusPositionEmbedding()
  117.         (time_mlp): ModuleList(
  118.           (0): Linear(in_features=256, out_features=1024, bias=True)
  119.           (1): SiLU()
  120.           (2): Linear(in_features=1024, out_features=1024, bias=True)
  121.         )
  122.       )
  123.       (text_embed): CodecEmbedding(
  124.         (codec_embed): Embedding(8194, 512)
  125.       )
  126.       (input_embed): InputEmbedding(
  127.         (proj): Linear(in_features=912, out_features=1024, bias=True)
  128.         (spk_encoder): ECAPA_TDNN(
  129.           (blocks): ModuleList(
  130.             (0): TDNNBlock(
  131.               (conv): Conv1d(80, 256, kernel_size=(5,), stride=(1,), padding=same, padding_mode=reflect)
  132.               (activation): ReLU()
  133.             )
  134.             (1-3): SERes2NetBlock(
  135.               (tdnn1): TDNNBlock(
  136.                 (conv): Conv1d(256, 256, kernel_size=(1,), stride=(1,), padding=same, padding_mode=reflect)
  137.                 (activation): ReLU()
  138.               )
  139.               (res2net_block): Res2NetBlock(
  140.                 (blocks): ModuleList(
  141.                   (0): TDNNBlock(
  142.                     (conv): Conv1d(128, 128, kernel_size=(3,), stride=(1,), padding=same, dilation=(2,), padding_mode=reflect)
  143.                     (activation): ReLU()
  144.                   )
  145.                 )
  146.               )
  147.               (tdnn2): TDNNBlock(
  148.                 (conv): Conv1d(256, 256, kernel_size=(1,), stride=(1,), padding=same, padding_mode=reflect)
  149.                 (activation): ReLU()
  150.               )
  151.               (se_block): SEBlock(
  152.                 (conv1): Conv1d(256, 64, kernel_size=(1,), stride=(1,), padding=same, padding_mode=reflect)
  153.                 (relu): ReLU(inplace=True)
  154.                 (conv2): Conv1d(64, 256, kernel_size=(1,), stride=(1,), padding=same, padding_mode=reflect)
  155.                 (sigmoid): Sigmoid()
  156.               )
  157.             )
  158.           )
  159.           (mfa): TDNNBlock(
  160.             (conv): Conv1d(768, 768, kernel_size=(1,), stride=(1,), padding=same, padding_mode=reflect)
  161.             (activation): ReLU()
  162.           )
  163.           (asp): AttentiveStatisticsPooling(
  164.             (tdnn): TDNNBlock(
  165.               (conv): Conv1d(2304, 64, kernel_size=(1,), stride=(1,), padding=same, padding_mode=reflect)
  166.               (activation): ReLU()
  167.             )
  168.             (tanh): Tanh()
  169.             (conv): Conv1d(64, 768, kernel_size=(1,), stride=(1,), padding=same, padding_mode=reflect)
  170.           )
  171.           (fc): Conv1d(1536, 128, kernel_size=(1,), stride=(1,), padding=same, padding_mode=reflect)
  172.         )
  173.       )
  174.       (rotary_embed): RotaryEmbedding()
  175.       (transformer_blocks): ModuleList(
  176.         (0-21): 22 x DiTBlock(
  177.           (attn_norm): AdaLayerNormZero(
  178.             (silu): SiLU()
  179.             (linear): Linear(in_features=1024, out_features=6144, bias=True)
  180.             (norm): LayerNorm((1024,), eps=1e-06, elementwise_affine=False)
  181.           )
  182.           (attn): DiTAttention(
  183.             (to_q): Linear(in_features=1024, out_features=1024, bias=True)
  184.             (to_k): Linear(in_features=1024, out_features=1024, bias=True)
  185.             (to_v): Linear(in_features=1024, out_features=1024, bias=True)
  186.             (to_out): ModuleList(
  187.               (0): Linear(in_features=1024, out_features=1024, bias=True)
  188.               (1): Dropout(p=0.1, inplace=False)
  189.             )
  190.           )
  191.           (ff_norm): LayerNorm((1024,), eps=1e-06, elementwise_affine=False)
  192.           (ff): FeedForward(
  193.             (ff): ModuleList(
  194.               (0): Linear(in_features=1024, out_features=2048, bias=True)
  195.               (1): GELU(approximate='tanh')
  196.               (2): Dropout(p=0.1, inplace=False)
  197.               (3): Linear(in_features=2048, out_features=1024, bias=True)
  198.             )
  199.           )
  200.         )
  201.       )
  202.       (norm_out): AdaLayerNormZero_Final(
  203.         (silu): SiLU()
  204.         (linear): Linear(in_features=1024, out_features=2048, bias=True)
  205.         (norm): LayerNorm((1024,), eps=1e-06, elementwise_affine=False)
  206.       )
  207.       (proj_out): Linear(in_features=1024, out_features=80, bias=True)
  208.     )
  209.     (code2wav_bigvgan_model): Qwen2_5OmniToken2WavBigVGANModel(
  210.       (conv_pre): Conv1d(80, 1536, kernel_size=(7,), stride=(1,), padding=(3,))
  211.       (ups): ModuleList(
  212.         (0-5): ModuleList(
  213.           (0): ConvTranspose1d(1536, 768, kernel_size=(11,), stride=(5,), padding=(3,))
  214.         )
  215.       )
  216.       (resblocks): ModuleList(
  217.         (0-17): AMPBlock(
  218.           (convs1): ModuleList(
  219.             (0): Conv1d(768, 768, kernel_size=(3,), stride=(1,), padding=(1,))
  220.             (1): Conv1d(768, 768, kernel_size=(3,), stride=(1,), padding=(3,), dilation=(3,))
  221.             (2): Conv1d(768, 768, kernel_size=(3,), stride=(1,), padding=(5,), dilation=(5,))
  222.           )
  223.           (convs2): ModuleList(
  224.             (0-2): 3 x Conv1d(768, 768, kernel_size=(3,), stride=(1,), padding=(1,))
  225.           )
  226.           (activations): ModuleList(
  227.             (0-5): 6 x TorchActivation1d(
  228.               (act): SnakeBeta()
  229.               (upsample): UpSample1d()
  230.               (downsample): DownSample1d()
  231.             )
  232.           )
  233.         )
  234.       )
  235.       (activation_post): TorchActivation1d(
  236.         (act): SnakeBeta()
  237.         (upsample): UpSample1d()
  238.         (downsample): DownSample1d()
  239.       )
  240.       (conv_post): Conv1d(24, 1, kernel_size=(7,), stride=(1,), padding=(3,), bias=False)
  241.     )
  242.   )
  243. )
复制代码


全新的思考者 - 说话者架构

Qwen2.5-Omni 引入了独特的 Thinker-Talker 架构,这是一套端到端的多模态模型,能够处理文本、图像、音频和视频等多种输入形式,并以自然流畅的方式生成文本和语音回应。更令人称道的是,它采用了名为 TMRoPE(时间对齐多模态 RoPE)的新型位置嵌入技术,巧妙地解决了视频输入与音频时间戳同步的难题。这种创新使得模型在处理复杂多模态信息时更加精准高效,为用户带来前所未有的交互体验。

小鸭影艺 LV

发表于 前天 09:53

深夜重磅消息!3 月 27 日凌晨,阿里通义千问团队开源发布首个端到端全模态大模型—Qwen2.5-Omni。
这个模型厉害就厉害在,它只需要一个模型,就能搞定文字、声音、图片、视频这些各种各样的东西,还能实时生成文字和自然的语音。
在7B模型里,它就是那个啥都能干的“六边形战士”。
Qwen2.5-Omni 模型已在 Hugging Face、ModelScope、DashScope 和 GitHub 等平台开源。你可以通过官方的 Demo 体验其互动功能,或者使用 Qwen Chat 发起语音、视频聊天,沉浸式感受其性能。

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-1.jpg

开源地址:

  • 论文地址:https://github.com/QwenLM/Qwen2.5-Omni/blob/main/assets/Qwen2.5_Omni.pdf
  • 博客地址:https://qwenlm.github.io/zh/blog/qwen2.5-omni/
  • GitHub 地址:https://github.com/QwenLM/Qwen2.5-Omni
  • Hugging Face:https://huggingface.co/Qwen/Qwen2.5-Omni-7B
  • ModelScope:https://modelscope.cn/models/Qwen/Qwen2.5-Omni-7B
体验地址:

  • 官方体验:https://chat.qwen.ai/
  • Demo体验:https://modelscope.cn/studios/Qwen/Qwen2.5-Omni-Demo
我们先来通过官方demo展示一下它的实力。
当你走在大街上和它进行视频通话,让它描述一下你现在所在的场景,会按照你的需求介绍附近有大厦、商铺和餐馆。
如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-2.jpg


https://www.zhihu.com/video/1888968106350731587
如果你想做一道以前没有做过的菜,它可以成为一个“语音菜谱”,指导你一步步完成菜品制作。
如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-3.jpg


https://www.zhihu.com/video/1888968188005418038
当你进行歌曲创作时它还能充当歌曲创作助手,你演奏给它。让它从歌词、节奏、演唱和旋律等方面提一些建议,它会告诉你在哪些方面需要进行怎么改进。
如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-4.jpg


https://www.zhihu.com/video/1888968256393564561
画画也不在话下,你画一副草图给它,能判断出草图的内容并且给出你构图建议。
如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-5.jpg


https://www.zhihu.com/video/1888968352304706100
数学题解答惊艳到我了,我要是能赶上这时候也不用花钱去补习了。你只需要把题目写在纸上,它就能耐心帮你一步一步解答,这不就是相当于请了一个家教吗。
如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-6.jpg


https://www.zhihu.com/video/1888968442855538724
这东西等到发展成熟了,可是家长们的福音呀,以后不用花昂贵的费用让孩子去补习了。还不用为了孩子学不会气的暴跳如雷,让它去教就好了,反正也不会生气。
网友们也直呼这是真正的OpenAI

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-7.jpg

还有网友表示视频通话功能有很多应用场景,准备制作一个智能眼镜。

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-8.jpg

虽然展现出来的效果确实不错,但也不是没有缺点的。
网友们表示在测试过程中发现它中文和英文说的很好,但是西班牙语和法语不行。

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-9.jpg


如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-10.jpg

还有网友表示需要一些更简单的使用方法,对于小白来说不够友好。

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-11.jpg

在技术上都有哪些亮点呢?下面我们一起来看一下。
Qwen2.5-Omni 的核心亮点之一是其首创的 Thinker-Talker 双核架构。Thinker 模块如同人类的大脑,负责处理和理解来自文本、音频、视频等多模态的输入信息,生成高层语义表征以及对应的文本内容。而 Talker 模块则更像人类的发声器官,以流式的方式接收由 Thinker 实时输出的语义表征与文本,并流畅地合成离散语音 tokens。
这种架构的优势在于,它能够实现端到端的训练和推理,支持完全实时交互,分块输入和即时输出。在实际使用中,当你与 Qwen2.5-Omni 进行视频通话时,它能够实时理解你的语音指令、识别画面中的物体和场景,并迅速给出回应。这种流畅的交互体验,是传统单模态模型或串联多个模型实现类似功能的方式难以企及的。

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-12.jpg

在多模态任务 OmniBench 评测中,Qwen2.5-Omni 刷新记录拿下新 SOTA,远超谷歌 Gemini-1.5-Pro 等同类模型。在单模态的语音识别、翻译、音频理解、图像推理、视频理解、语音生成任务中,其全维度表现也都优于类似大小的单模态模型以及闭源模型。
这意味着 Qwen2.5-Omni 能很好地和世界进行实时交互,甚至能轻松识别音视频情绪。在 seed-tts-eval 语音生成基准中,Qwen2.5-Omni 展现出与人类水平相当的语音合成能力。例如,它能够根据输入的文本生成自然流畅的语音,音色真实且富有情感,让人难以分辨是人工智能合成的语音还是人类的自然发声。

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-13.jpg

Qwen2.5-Omni 很轻量,可以直接在手机上运行,不需要高端设备。而且,它还是开源的,用的是 Apache2.0 协议,这意味着开发者和企业可以免费下载和商用。这不仅节省了成本,还激发了大家的创新热情,未来可能会有更多基于这个模型的有趣应用出现。
总的来说,Qwen2.5-Omni是一个很有潜力的多模态大模型。它在技术架构、性能表现和应用场景上都有很多亮点。但同时,有许多技术难题还需要突破,比如在复杂场景下的稳定性、细节处理的精度、交互的深度以及资源限制等方面。
我相信,随着技术的不断进步和优化,这些问题都会逐步得到解决。多模态大模型一定会在更多的领域发挥重要作用,为我们的生活和工作带来更多的便利和惊喜。不过,现在说它能完全改变行业格局还为时尚早,它还有很长的路要走。
<hr/>大全目前专注于小白 AI 入门领域的研究,分享从 0 到 1 入门 AI,ChatGPT,DeepSeek等知识的系统性教程,
0 基础的小白也可以学会 ,有基础的小伙伴也可以学到进阶的知识,这里全部免费送给大家:
大全Prompt:都是干货!超全 AI 入门, ChatGPT 资料分享!大全的愿景是成为 AI 的布道者,带领 10 万小白入门 AI。关注 @大全Prompt 带您 AI 入门
最后,祝大家都能寻得可以全身心投入的事情,生活愉快!记得给我一个赞。

hijacker LV

发表于 前天 10:02

实测多模态效果非常棒,推理能力有待提高

Demo地址为:https://huggingface.co/spaces/Qwen/Qwen2.5-Omni-7B-Demo

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-1.jpg


推理

6.9和6.11哪个大?

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-2.jpg
嗯,这个简单,6.9比6.11小呢,你要是还有数学方面的问题都可以问我呀。
Strawberry有几个r?

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-3.jpg
草莓,strawberry,里有两个r。如果还有关于单词或者其他方面的问题,你可以随时再问我哦。
不愧是多模态,在输出文本回答的同时输出了语音答复,速度很快,声音很好听,中英文混合说的也都很好。可惜两个问题都回答错了。看来这个模型主打的是全模态,不是推理。
图片理解

Prompt:你是商场的智能预警系统,负责分析监控画面中的人员行为。请识别画面中是否存在异常行为(如偷窃、破坏财物等),并返回检测结果类型(正常、可疑、违规)及具体原因。例如,将商品放入自带手提包等行为应视为可疑。请确保分析精准,并提供清晰的判断依据。如果有可疑行为则输出语音提示:“请注意自己的行为“

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-4.jpg
从这张图片来看,这个人把商品被进了自己的手提包里,这属于可疑行为,所以检测结果是:可疑,具体原因是将商品放入了随身携带的于提包内,这种行为可能涉嫌偷窃,请注意自己的行为。如果你还有其他类做的图片需委分析,可以随时告诉我。
如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-5.jpg
这张图看起来很正常啊,没有看到任何异常行为。检测结果是:正常。如果以后还有类似的情况,欢迎随时找我分析哦。
识别的很准确,这么小的模型能进行这么准确的判断是非常不容易的。不过输出的语音和文本是一样的。要是能进行进一步定制就好了。
视频

上传网上找到的一段舞蹈视频,让它说明视频的内容

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-6.jpg

回答非常准确:

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-7.jpg
嗯,这个视频里有个人在跳舞。他戴着红帽子和口罩,穿着黑色T恤,上面有图案,还有破洞牛仔裤和红色鞋子。他在灰色背暴前跳着街舞,动作很酷炫。手臂和腿的动作很有节奏感,身体也随着音乐摆动呢。你要是对舞蹈感兴趣的话,可以再跟我说说你的想法呀。
声音

上传一段红烧肉做法的音频,问它怎么做的,它回答的也很正确。

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-8.jpg

测试一圈下来发现,对于一个7B的模型来说,Qwen2.5-Omni非常的棒,多模态能力用起来非常方便。
模型性能

Qwen2.5-Omni在包括图像,音频,音视频等各种模态下的表现都优于类似大小的单模态模型以及封闭源模型。在多模态任务OmniBench,Qwen2.5-Omni达到了SOTA的表现。


架构创新

Qwen2.5-Omni采用Thinker-Talker双核架构。Thinker模块如同大脑,负责处理文本、音频、视频等多模态输入,生成高层语义表征及对应文本内容;Talker模块则类似发声器官,以流式方式接收Thinker实时输出的语义表征与文本,流畅合成离散语音单元。



Qwen2.5-Omni还提出了TMRoPE(Time-aligned Multimodal RoPE)这一革新位置编码技术。通过时间轴的精准对齐,TMRoPE实现了视频与音频输入的完美同步。

如何评价阿里云刚发布的Qwen2.5-Omni全方位多模态大模型?-11.jpg

webgotoo LV

发表于 昨天 09:54

针对阿里云刚发布的Qwen2.5-Omni全方位多模态大模型,该模型表现卓越。专为全方位多模态感知设计,能够无缝处理多种输入形式,并通过实时流式响应生成文本与自然语音合成输出。在包括图像、音频、音视频等各个模态下的表现均优于类似大小的单模态模型及封闭源模型。特别是在多模态任务OmniBench上,Qwen2.5-Omni达到了 state-of-the-art(SOTA)的表现,证明了其全方位多模态感知的能力。期待其在未来推动多模态人工智能领域的发展。

chenyumai LV

发表于 昨天 09:59

针对阿里云刚发布的Qwen2.5-Omni全方位多模态大模型,该模型实现了多模态感知的无缝处理,能够同时处理文本、图像、音频和视频等多种输入形式,并通过实时流式响应生成文本和自然语音合成输出。相较于其他单模态模型和封闭源模型,Qwen2.5-Omni在各种模态下的表现均表现出色,且在多模态任务OmniBench上达到了SOTA的表现。该模型的应用将极大地推动多模态人工智能的发展,为各行业提供更高效、智能的服务。期待其在未来有更广泛的应用场景和更深入的技术发展。

ziken LV

发表于 昨天 10:06

阿里云新发布的Qwen2.5-Omni全方位多模态大模型展现出了强大的性能。该模型能够无缝处理文本、图像、音频和视频等多种输入形式,生成自然语音合成输出,并且实时响应。其表现超越了类似大小的单模态模型和封闭源模型,如在多模态任务OmniBench上达到了SOTA(顶尖)的表现。这一进步对于需要处理多模态数据的领域具有重大意义,将推动人工智能技术的进一步发展。

您需要登录后才可以回帖 登录 | 立即注册