本页面介绍了 Hugging Face Transformers 库中的多模态模型架构。这些模型结合了视觉和语言能力,以处理图像/视频和文本输入。对于纯文本模型,请参阅LLM 架构;对于音频专用模型,请参阅音频模型。
Transformers 库中的多模态模型遵循一种常见的架构模式,该模式结合了
这些模型可以处理图像或视频以及文本提示,以执行视觉问答、图像字幕生成和多模态推理等任务。
来源
Transformers 库包含几种多模态模型实现
| 模型 | 描述 | 视觉骨干 | 语言模型 | 特殊功能 |
|---|---|---|---|---|
| LLaVA | 用于通用视觉理解的视觉-语言模型 | CLIP ViT | Llama | 图像标记替换 |
| LLaVA-NeXT | 支持高分辨率图像的改进型LLaVA | CLIP ViT | Llama | 任意分辨率图像处理 |
| PaliGemma | 谷歌的多模态模型 | ViT | Gemma | 在多样化数据集上的专门训练 |
| VipLLaVA | 具有改进视觉特征的视觉语言模型 | CLIP ViT | Llama | 多层特征提取 |
| VideoLLaVA | 视频语言模型 | CLIP ViT | Llama | 视频帧处理 |
| LLaVA-NeXT-Video | 支持高分辨率的视频语言模型 | CLIP ViT | Llama | 任意分辨率视频处理 |
来源
MultiModalProjector 是一个关键组件,它通过将视觉特征投影到语言模型的嵌入空间来连接视觉模型和语言模型。
该投影仪通常由以下部分组成:
来源
多模态模型扩展了 PreTrainedModel 类,并实现了 GenerationMixin 接口以提供文本生成能力。
来源
多模态模型使用视觉编码器从图像或视频中提取特征。特征提取过程通常涉及:
来源
LLaVA-NeXT 等模型通过以下方式支持高分辨率图像处理:
来源
VideoLLaVA 和 LLaVA-NeXT-Video 等视频模型通过以下方式处理视频帧:
来源
多模态模型通过将特殊的图像/视频标记替换为相应的视觉特征,将视觉特征集成到语言模型中。
此过程中的关键步骤是:
来源
多模态模型的前向传播通常遵循以下步骤:
来源
多模态模型扩展了生成过程以处理视觉输入
一个关键的优化是视觉输入仅在第一个生成步骤中处理一次,结果会被缓存以供后续步骤使用。
来源
LLaVA(大型语言和视觉助手)是一个基本的视觉-语言模型,它将 CLIP ViT 视觉编码器与 Llama 语言模型结合在一起。
来源
LLaVA-NeXT 扩展了 LLaVA,通过基于块的处理方法支持高分辨率图像。
主要功能
image_grid_pinpoints 支持任意分辨率的图像来源
PaliGemma 是谷歌的多模态模型,它将 ViT 视觉编码器与 Gemma 语言模型结合在一起。
主要功能
来源
VideoLLaVA 和 LLaVA-NeXT-Video 扩展了基于图像的模型以处理视频输入。
主要功能
来源
以下是使用多模态模型进行图像字幕生成的基本示例:
来源
多模态模型定义了自定义输出类,通过额外的视觉特征字段扩展了基础模型输出。
来源
多模态模型包含验证,以确保输入文本中的图像标记数量与提供的图像数量匹配。
来源
在生成过程中,视觉输入仅在第一个步骤中处理一次,以提高效率。
来源
多模态模型可以与 Transformers pipeline API 配合使用,以实现简便推理。
来源
Transformers 库中的多模态模型提供了一个灵活的框架,用于结合视觉和语言能力。它们遵循通用的架构模式,同时针对不同的用例(如高分辨率图像处理或视频理解)提供模型特定的优化。
这些模型的关键组件是:
这些模型支持广泛的应用,从图像字幕生成和视觉问答到多模态推理和视频理解。