菜单

多模态模型

相关源文件

本页面介绍了 Hugging Face Transformers 库中的多模态模型架构。这些模型结合了视觉和语言能力,以处理图像/视频和文本输入。对于纯文本模型,请参阅LLM 架构;对于音频专用模型,请参阅音频模型

概述

Transformers 库中的多模态模型遵循一种常见的架构模式,该模式结合了

  1. 视觉编码器(通常是视觉 Transformer)
  2. 语言模型(通常是仅解码器 LLM)
  3. 一个将视觉特征映射到语言模型嵌入空间的投影层

这些模型可以处理图像或视频以及文本提示,以执行视觉问答、图像字幕生成和多模态推理等任务。

来源

主要多模态模型实现

Transformers 库包含几种多模态模型实现

模型描述视觉骨干语言模型特殊功能
LLaVA用于通用视觉理解的视觉-语言模型CLIP ViTLlama图像标记替换
LLaVA-NeXT支持高分辨率图像的改进型LLaVACLIP ViTLlama任意分辨率图像处理
PaliGemma谷歌的多模态模型ViTGemma在多样化数据集上的专门训练
VipLLaVA具有改进视觉特征的视觉语言模型CLIP ViTLlama多层特征提取
VideoLLaVA视频语言模型CLIP ViTLlama视频帧处理
LLaVA-NeXT-Video支持高分辨率的视频语言模型CLIP ViTLlama任意分辨率视频处理

来源

通用架构组件

MultiModalProjector

MultiModalProjector 是一个关键组件,它通过将视觉特征投影到语言模型的嵌入空间来连接视觉模型和语言模型。

该投影仪通常由以下部分组成:

  • 一个或两个线性层
  • 一个激活函数(通常是 GELU)
  • 可选的归一化层

来源

模型基类

多模态模型扩展了 PreTrainedModel 类,并实现了 GenerationMixin 接口以提供文本生成能力。

来源

视觉特征处理

特征提取

多模态模型使用视觉编码器从图像或视频中提取特征。特征提取过程通常涉及:

  1. 通过视觉编码器处理图像/视频
  2. 从视觉编码器的特定层选择特征
  3. 根据特征选择策略选择性地移除 CLS 标记
  4. 将特征投影到语言模型的嵌入空间

来源

高分辨率图像处理

LLaVA-NeXT 等模型通过以下方式支持高分辨率图像处理:

  1. 将图像分割成块
  2. 单独处理每个块
  3. 解除图像特征的填充以移除填充
  4. 将特征与换行符嵌入连接起来

来源

视频处理

VideoLLaVA 和 LLaVA-NeXT-Video 等视频模型通过以下方式处理视频帧:

  1. 重塑视频张量以处理每一帧
  2. 从每一帧提取特征
  3. 可选地应用空间池化以降低特征维度
  4. 将特征投影到语言模型的嵌入空间

来源

特征集成

标记替换机制

多模态模型通过将特殊的图像/视频标记替换为相应的视觉特征,将视觉特征集成到语言模型中。

此过程中的关键步骤是:

  1. 识别输入序列中的特殊图像/视频标记
  2. 为这些标记创建掩码
  3. 用投影的视觉特征替换这些标记的嵌入

来源

模型前向传播

多模态模型的前向传播通常遵循以下步骤:

来源

生成过程

多模态模型扩展了生成过程以处理视觉输入

一个关键的优化是视觉输入仅在第一个生成步骤中处理一次,结果会被缓存以供后续步骤使用。

来源

模型特定功能

LLaVA

LLaVA(大型语言和视觉助手)是一个基本的视觉-语言模型,它将 CLIP ViT 视觉编码器与 Llama 语言模型结合在一起。

来源

LLaVA-NeXT

LLaVA-NeXT 扩展了 LLaVA,通过基于块的处理方法支持高分辨率图像。

主要功能

  • 通过 image_grid_pinpoints 支持任意分辨率的图像
  • 解除图像特征填充以处理宽高比差异
  • 在图像特征后添加换行符嵌入

来源

PaliGemma

PaliGemma 是谷歌的多模态模型,它将 ViT 视觉编码器与 Gemma 语言模型结合在一起。

主要功能

  • 使用更简单的投影层(单个线性层)
  • 实现自定义的因果掩码更新用于训练
  • 通过除以隐藏大小的平方根来归一化图像特征

来源

视频模型

VideoLLaVA 和 LLaVA-NeXT-Video 扩展了基于图像的模型以处理视频输入。

主要功能

  • 同时支持图像和视频输入
  • 视频帧被单独处理然后合并
  • 可选的空间池化以降低特征维度

来源

使用示例

以下是使用多模态模型进行图像字幕生成的基本示例:

来源

常见模式和最佳实践

模型输出类

多模态模型定义了自定义输出类,通过额外的视觉特征字段扩展了基础模型输出。

来源

处理不匹配的图像和文本标记

多模态模型包含验证,以确保输入文本中的图像标记数量与提供的图像数量匹配。

来源

优化生成

在生成过程中,视觉输入仅在第一个步骤中处理一次,以提高效率。

来源

与 Transformers Pipeline 集成

多模态模型可以与 Transformers pipeline API 配合使用,以实现简便推理。

来源

结论

Transformers 库中的多模态模型提供了一个灵活的框架,用于结合视觉和语言能力。它们遵循通用的架构模式,同时针对不同的用例(如高分辨率图像处理或视频理解)提供模型特定的优化。

这些模型的关键组件是:

  1. 用于处理视觉输入的视觉编码器
  2. 用于将视觉特征映射到语言模型嵌入空间的多模态投影仪
  3. 用于生成文本输出的语言模型
  4. 用于将视觉特征集成到语言模型中的标记替换机制

这些模型支持广泛的应用,从图像字幕生成和视觉问答到多模态推理和视频理解。