Mini-Omni2
- 创业
- 2025-08-29 12:27:02

概述 1.Mini-Omni2 的目标
Mini-Omni2 的目标是模拟 GPT-4o 的多模态能力,其中包括视觉、语音和文本的联合理解与生成。
1.1.场景用户上传一张图片(一只猫在草地上),并同时用语音问:“这是什么动物?” Mini-Omni2 需要完成以下任务:
1.视觉理解:识别图片中的内容(猫和草地)。2.语音理解:将语音问题转换为文本3.文本生成:生成回答:“这是一只猫。”4.语音输出:将回答转换为语音流,实时播放给用户。 2.模型基础:Qwen2Qwen2 是 Mini-Omni2 的基础模型,负责多模态特征的融合和推理。
2.1输入 图像:一张猫的图片。语音:用户说“这是什么动物?”(语音信号)。文本:无(用户没有输入文本)。 2.2.Qwen2 的处理 1.接收来自 CLIP 的视觉特征和来自 Whisper 的语音特征。2.将这些特征拼接在一起,输入到 Qwen2 的推理模块。3.生成回答:“这是一只猫。” 3.多模态输入处理Mini-Omni2 使用预训练的视觉和语音编码器提取特征。
3.1.视觉特征提取:CLIP输入:
图像:一张猫的图片(RGB 格式,以分辨率 224x224为例)CLIP 的处理:
1.将图像输入到 CLIP 的视觉编码器2.提取图像的视觉特征(案例: 512 维的向量) [0.11, -0.04, 0.41, ..., 0.28] 3.2.语音特征提取:Whisper输入
语音:用户说“这是什么动物?”(语音信号,16kHz 采样率)。Whisper 的处理:
1.将语音信号分帧(每帧 25ms,帧移 10ms)。2.对每帧提取 MFCC 或其他声学特征。3.使用 Whisper 的编码器将语音特征转换为语义特征,案例: 768 维的向量: [0.45, -0.12, 0.67, ..., 0.23] 3.3. 文本特征提取如果用户输入了文本(例如“这是什么动物?”),Qwen2 会直接使用其文本嵌入模块将文本转换为特征向量。
4.特征融合Mini-Omni2 将视觉、语音和文本特征拼接在一起,作为模型的输入。 输入特征:
1.视觉特征(来自 CLIP):[0.11, -0.04, 0.41, ..., 0.28](512 维)2.语音特征(来自 Whisper):[0.45, -0.12, 0.67, ..., 0.23](768 维)3.文本特征(来自 Qwen2):[0.10, -0.08, 0.55, ..., 0.30](768 维)特征拼接: 将上述特征拼接成一个长向量: [0.11, -0.04, 0.41, ..., 0.28,0.45, -0.12, 0.67, ..., 0.23,0.10, -0.08, 0.55, ..., 0.30](512+768+768)维 这个长向量将作为 Qwen2 的输入。
5.模型推理与输出Mini-Omni2 是一个端到端模型,能够直接从多模态输入生成多模态输出。
5.1文本生成输入:
拼接后的特征向量Qwen2 的处理:
将特征向量输入到 Qwen2 的解码器。生成文本回答:“这是一只猫。” 5.2 语音输出输入:
生成的文本:“这是一只猫。”语音合成的处理:
使用语音合成模型将文本转换为语音信号。实时流式传输语音信号,播放给用户。 6.实时语音交互Mini-Omni2 支持实时语音交互,包括语音输入和语音输出。
场景: 用户正在听 Mini-Omni2 的语音回答:“这是一只猫。” 在回答过程中,用户打断并说:“它是什么颜色的?” Mini-Omni2 的处理:
1.打断机制: 检测到用户的语音输入,暂停当前的语音输出 2.语音理解 使用 Whisper 将用户的语音转换为文本:“它是什么颜色的?” 3.视觉理解 使用 CLIP 重新分析图像,提取颜色信息(如“这只猫是橘色的”) 4.文本生成 生成新的回答:“这只猫是橘色的。” 5.语音输出 将新的回答转换为语音流,播放给用户。 7. 数据利用效率Mini-Omni2 通过使用预训练的 CLIP 和 Whisper 编码器,提高了数据利用效率。
训练数据:
CLIP 已经在数亿张图像和文本对上进行了预训练Whisper 已经在数十万小时的语音数据上进行了预训练Mini-Omni2 的训练:
直接使用 CLIP 和 Whisper 的预训练权重,无需从头训练视觉和语音编码器只需要训练 Qwen2 的多模态融合和推理模块,大大减少了训练成本 训练 Mini-Omni2 模型训练过程: 1. Stage 1: Multimodal Encoder Adaptation(多模态编码器适应) 目标: 让图像和音频通过各自的编码器转换成特征向量,然后通过适配器将它们映射到语言模型可以处理的特征空间中。重点是让视觉和音频数据的特征与文本数据的特征对接。 具体过程:输入数据:
图像输入:假设我们有一张狗的图片,输入是图像。我们将图像通过 视觉编码器(Vision Encoder) 转化为图像特征。
例如,图像输入的大小为 1 × 224 × 224 × 3 1 \times 224 \times 224 \times 3 1×224×224×3(224x224 像素的 RGB 图像),视觉编码器将其转换为一个向量表示(如 F image ∈ R 50 × 512 F_{\text{image}} \in \mathbb{R}^{50 \times 512} Fimage∈R50×512,即50个区域,每个区域512维的特征表示)。音频输入:输入是一段音频信号,音频信号经过 音频编码器(Audio Encoder) 处理,得到音频特征。例如,音频的梅尔频谱图(Mel Spectrogram)可以作为音频的特征,转换成类似 F audio ∈ R 50 × 512 F_{\text{audio}} \in \mathbb{R}^{50 \times 512} Faudio∈R50×512的向量。
适配器处理(Vision Adapter 和 Audio Adapter):
在这一阶段,视觉和音频的特征会通过各自的适配器(Vision Adapter 和 Audio Adapter)进行处理。适配器的作用是将视觉和音频特征转换到和文本特征(通过语言模型得到的嵌入表示)相同的空间。
假设视觉和音频特征经过适配器后变为新的表示 F image_adapted ∈ R 50 × 4096 F_{\text{image\_adapted}} \in \mathbb{R}^{50 \times 4096} Fimage_adapted∈R50×4096 和 F audio_adapted ∈ R 50 × 4096 F_{\text{audio\_adapted}} \in \mathbb{R}^{50 \times 4096} Faudio_adapted∈R50×4096,即它们的维度被扩展到 4096 维。
冻结与训练:
这一阶段,视觉编码器(Vision Encoder) 和 音频编码器(Audio Encoder) 的权重被冻结,不进行更新。适配器(Vision Adapter 和 Audio Adapter) 的权重被训练,以使得视觉和音频的特征能够适配到一个统一的空间,和文本特征进行对接。这个过程的损失函数可以表示为: L adapt = ∑ i = 1 N ∥ F image_adapted ( i ) − E text ( i ) ∥ 2 2 + ∥ F audio_adapted ( i ) − E text ( i ) ∥ 2 2 \mathcal{L}_{\text{adapt}} = \sum_{i=1}^N \| F_{\text{image\_adapted}}^{(i)} - E_{\text{text}}^{(i)} \|_2^2 + \| F_{\text{audio\_adapted}}^{(i)} - E_{\text{text}}^{(i)} \|_2^2 Ladapt=i=1∑N∥Fimage_adapted(i)−Etext(i)∥22+∥Faudio_adapted(i)−Etext(i)∥22 其中:
F image_adapted ( i ) F_{\text{image\_adapted}}^{(i)} Fimage_adapted(i) 和 F audio_adapted ( i ) F_{\text{audio\_adapted}}^{(i)} Faudio_adapted(i)是经过适配器处理后的图像和音频特征。 E text ( i ) E_{\text{text}}^{(i)} Etext(i) 是对应的文本嵌入表示。目标:最小化图像和音频特征与文本特征之间的差距,使得这些不同模态的特征在相同的嵌入空间中能够对齐。
2. Stage 2: Modality Alignment with Language Model(与语言模型的模态对齐) 目标: 将来自文本、图像和音频的数据对齐,使得它们在同一个特征空间中能够共享信息。这里模型的关键任务是将多模态特征(图像、音频)与文本特征对齐,并进行多模态推理。 具体过程:
输入数据:
文本输入:文本(例如问题“这是什么动物?”)通过语言模型(如 Qwen2-0.5B)进行处理,得到文本嵌入 E text question ∈ R 50 × 512 E_{\text{text}}^{\text{question}} \in \mathbb{R}^{50 \times 512} Etextquestion∈R50×512。图像输入:图像通过视觉编码器处理,得到特征 F image processed ∈ R 50 × 512 F_{\text{image}}^{\text{processed}} \in \mathbb{R}^{50 \times 512} Fimageprocessed∈R50×512。音频输入:音频通过音频编码器处理,得到特征 F audio processed ∈ R 50 × 512 F_{\text{audio}}^{\text{processed}} \in \mathbb{R}^{50 \times 512} Faudioprocessed∈R50×512。适配器输出:
适配器(Vision Adapter 和 Audio Adapter)将视觉和音频特征映射到和文本嵌入空间对齐的特征空间: F image_adapted = Vision Adapter ( F image ) F_{\text{image\_adapted}} = \text{Vision Adapter}(F_{\text{image}}) Fimage_adapted=Vision Adapter(Fimage) F audio_adapted = Audio Adapter ( F audio ) F_{\text{audio\_adapted}} = \text{Audio Adapter}(F_{\text{audio}}) Faudio_adapted=Audio Adapter(Faudio)特征对齐:
在这个阶段,模型的目标是将图像和音频的特征与文本的特征对齐。具体来说,模型希望最小化图像/音频特征和文本特征之间的差异。损失函数类似于阶段 1: L align = ∑ i = 1 N ∥ F image_adapted ( i ) − E text ( i ) ∥ 2 2 + ∥ F audio_adapted ( i ) − E text ( i ) ∥ 2 2 \mathcal{L}_{\text{align}} = \sum_{i=1}^N \| F_{\text{image\_adapted}}^{(i)} - E_{\text{text}}^{(i)} \|_2^2 + \| F_{\text{audio\_adapted}}^{(i)} - E_{\text{text}}^{(i)} \|_2^2 Lalign=i=1∑N∥Fimage_adapted(i)−Etext(i)∥22+∥Faudio_adapted(i)−Etext(i)∥22 这里,损失函数用来最小化不同模态的特征与文本之间的差异。训练:
在这一阶段,模型已经开始理解文本、图像和音频之间的关系。通过训练,模型学习如何将不同模态的特征对齐,使得它能够同时处理图像、音频和文本。3. Stage 3: Post-Training of the Model’s Multimodal Output Capabilities / Semantic Interruption(后期训练:多模态输出能力 / 语义中断) 目标: 扩展模型的多模态输出能力,使其能够生成多模态的响应(如文本或语音)。引入语义中断机制,使得模型能够根据不同的任务需求,在多个模态之间进行切换。 具体过程:
输入数据:
文本输入:文本通过语言模型处理,得到文本特征。图像输入:图像通过视觉编码器处理。音频输入:音频通过音频编码器处理。输出生成:
在这个阶段,模型不仅能够理解输入的多模态数据(图像、音频、文本),还能够根据这些输入生成合适的输出。比如,给定一张图像和问题“这是什么动物?”,模型可以生成文本回答:“这是一只狗”,或者生成语音回答。损失函数与阶段 1 和 2 类似,但在输出时包括了生成任务: L generate = ∑ i = 1 N ∥ Y ^ ( i ) − Y ( i ) ∥ 2 2 \mathcal{L}_{\text{generate}} = \sum_{i=1}^N \| \hat{Y}^{(i)} - Y^{(i)} \|_2^2 Lgenerate=i=1∑N∥Y^(i)−Y(i)∥22 其中 Y ^ \hat{Y} Y^ 是模型生成的输出(例如文本或语音), Y Y Y是实际的目标输出。论文连接
Mini-Omni2由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Mini-Omni2”