Multi-Modal Model
多模态模型可在单个网络中处理多种数据类型,例如图像、文本和音频。内容涵盖融合方法、模型类型和代码。
多模态模型(也写作 multimodal model)是一个单独的机器学习 (ML)模型,它接收有时也生成多种类型的数据或模态:图像、文本、音频、视频、深度图或传感器读数。由于它会同时处理这些模态,因此可以将一种模态用作其他模态的上下文,例如回答关于照片的语音问题、找到句子描述的视频帧,或同时根据摄像头和雷达数据检测行人。由多个单模态模型串联而成的流水线(例如由语音识别器向纯文本聊天机器人提供输入)只能通过各模型的最终输出在模态之间传递信息,而多模态模型能够学习不同模态之间的关系。
多模态模型的工作原理#
每种模态首先会通过适合自身特点的编码器,例如处理图像的视觉 Transformer (ViT),或将文本转换为向量的tokenizer和嵌入层。随后,模型会融合这些向量,并根据融合后的表示预测文本、标签、框或动作。融合发生的位置决定了主要的设计类别:
- 早期融合:在第一层之前或第一层中组合输入。配准后的传感器数据可以堆叠为额外的图像通道,Ultralytics YOLO26直接支持这种方式:在数据集 YAML 中设置
channels键,即可训练检测器处理通道数超过三个的图像,例如将 RGB 与热成像或深度波段保存为一个多通道 TIFF;10 通道的 COCO8-Multispectral 数据集就展示了这种做法。 - 中间融合:每种模态分别编码,然后通常通过注意力在中间层融合特征。DeepMind 的 Flamingo 将交叉注意力层插入冻结的语言模型,使文本 token 能够关注图像特征;许多视觉语言模型 (VLM)会将图像特征投影为“视觉 token”,供大型语言模型 (LLM)与提示词一同读取。
- 后期融合:不同模型分别进行预测,并在最后组合预测结果。这种方式在某个传感器发生故障时更稳健,但无法学习不同模态之间的交互。
- 联合嵌入:编码器将每种模态映射到同一个共享向量空间,并通过对比学习进行训练,使匹配的样本对在空间中彼此靠近。CLIP对齐图像和文本;Meta 的 ImageBind则将一个嵌入空间扩展到六种模态:图像、文本、音频、深度、热成像和运动传感器数据,而且只使用与图像配对的数据。
适合哪种设计,主要取决于数据和任务:
ViLT,即视觉语言 Transformer,是一个紧凑的早期融合示例:它将图像切分成图块,与问题中的词语一同嵌入,然后用一个 Transformer处理合并后的序列。下面的示例通过 Hugging Face Transformers使用经过视觉问答 (VQA)微调的 ViLT 检查点:
import requests
import torch
from PIL import Image
from transformers import ViltForQuestionAnswering, ViltProcessor
# ViLT embeds image patches and question tokens into one sequence for a single transformer
processor = ViltProcessor.from_pretrained("dandelin/vilt-b32-finetuned-vqa")
model = ViltForQuestionAnswering.from_pretrained("dandelin/vilt-b32-finetuned-vqa")
image = Image.open(requests.get("https://ultralytics.com/images/bus.jpg", stream=True).raw)
# Ask different questions about the same image; each answer is one of the model's 3,129 answer classes
for question in ["What vehicle is this?", "What color is the bus?", "How many people are there?"]:
inputs = processor(image, question, return_tensors="pt")
with torch.no_grad():
logits = model(**inputs).logits
answer = model.config.id2label[logits.argmax(-1).item()]
print(f"{question} {answer}")模型根据同一张图像正确回答了 bus 和 blue and white,并对计数问题回答了 3;不过照片中实际有四个人,其中两人被画面边缘截断。计数仍是视觉语言模型的常见弱项。
多模态模型的类型#
- 视觉语言模型:读取图像和文本,用于生成描述、回答问题、读取文档,或定位提示中提到的对象,这项任务称为定位。VLM 基准测试结果会比较这类模型在真实世界检测数据集中定位对象的准确度。
- 原生多模态助手:OpenAI 于 2024 年发布的 GPT-4o是一个端到端训练的单一网络,可同时处理文本、视觉和音频;Google 从一开始就将 Gemini 模型设计为多模态,因此一个模型可以在同一提示中接收文本、图像、音频和视频的混合输入。
- 音频语言模型:结合语音或声音与文本,用于转录、翻译和语音对话。
- 视觉语言动作模型:扩展 VLM,使其能够输出机器人电机指令,从而让机器人遵循“把苹果放进碗里”之类的指令。
- 传感器融合感知:自动驾驶汽车将摄像头、激光雷达和雷达的输入融合到一个模型中,以检测和跟踪 3D 空间中的物体。
多模态模型与相关术语的区别#
- 多模态 AI:处理多种数据类型的更广泛 AI 领域,包括串联单模态模型的系统。多模态模型是该领域中的一种单一模型。
- 多模态学习:用于生成多模态模型的训练方法,例如对比对齐和跨模态预训练。
- 传感器融合:组合多个传感器的读数,通常采用卡尔曼滤波器等经典估计器,而非学习型模型。
- 基础模型:为许多下游任务预训练的大型模型。许多近期的基础模型都是多模态的,但也有一些只处理一种模态,例如纯文本 LLM。
挑战#
多模态模型需要大量配对数据,例如带字幕的图像或带转录文本的音频;在推理时,它们还必须应对缺失或含噪的模态,例如被眩光照射而看不清的摄像头。图像和视频输入成本较高,因为每张图片都会向 LLM 的上下文添加数百或数千个 token。模型也可能依赖较容易处理的模态,而忽略较难处理的模态:早期 VQA 模型常常仅根据问题中的模式作答,因此 VQA v2 基准为每个问题配上两张相似但答案不同的图像,使数据集中的图像-问题配对数量大致翻倍。










