多模态大模型中的图像Patch处理:从像素到序列

为什么需要将图像处理成 Patch?

传统的图像处理主要依赖于卷积神经网络(CNN),CNN 通过局部感受野和层层抽象来提取图像特征。然而,当前许多强大的 MLLMs 的基础架构是 Transformer 模型,这种模型最初为处理文本等序列数据而设计,其核心优势在于通过自注意力机制捕捉序列中元素之间的长距离依赖关系。

将原始图像直接输入 Transformer 面临两大挑战:

  1. 巨大的维度: 高分辨率图像包含海量像素点,直接将像素矩阵作为输入,维度过高,计算和内存消耗巨大,难以处理。
  2. 结构不匹配: Transformer 处理的是一维序列,而图像是二维网格结构。需要一种方式将二维图像转化为一维序列,同时尽可能保留原有的空间信息。

将图像分割成固定大小的“补丁”(patches)并排成序列,提供了一种优雅的解决方案。这种方法将图像类比于文本中的“词语”或“tokens”,使得 Transformer 模型能够以处理文本序列的方式来处理图像。

Patch处理的详细步骤:

  1. Image Segmentation into Patches:将图像分割成若干个patch

    • 过程: 将原始图像按照固定大小(例如 16×16 或 32×32 像素)分割成一系列互不重叠的小块。

    • 示例: 对于一张 H×W 的图像,使用 P×P 的 patch 大小,会得到 (H/P)×(W/P) 个图像块。例如,256x256 图像用 16x16 的 patch 分割,会得到 16×16=256 个 patch。

    • 目的: 将大型二维图像分解成可管理的、标准大小的基本处理单元。

  2. Flattening:展平

    • 过程: 将每个 P×P×C(高 × 宽 × 通道数)的图像块的像素数据按顺序展平为个长度为 P×P×C 的一维向量。
    • 示例: 一个 16x16x3 的 RGB patch 展平后得到一个 768 维的向量。
    • 目的: 将每个图像块转换为一个标准的向量格式,适配后续的线性变换。
  3. Initial Patch Embedding / Linear Projection:Patch 嵌入化 / 线性投影

    • 过程: 对每个展平后的 patch 向量应用一个线性变换(一个全连接层)。这个线性层将高维的展平向量(维度 P2C)投影到模型内部统一的嵌入维度 D。
    • 目的: 这不仅仅是维度变换,更是一个可学习的过程。它学习将原始像素数据映射到模型所在的嵌入空间中具有语义意义的向量表示,类似于文本处理中的词嵌入层。这一步将原始像素信息转化为模型能够理解的、低维稠密的特征嵌入。
  4. Positional Encoding:位置编码

    • 原因: Transformer 的自注意力机制是位置无关的,它处理序列时不考虑元素的顺序。然而,图像中 patch 的空间位置信息(哪个 patch 在左上角,哪个在右下角)至关重要。
    • 过程: 在 Patch 嵌入向量中加入一个表示该 patch 在原始图像中空间位置的向量(位置编码)。位置编码可以是预设的(如正弦/余弦函数)或可学习的。
    • 目的: 为每个 patch 嵌入注入空间上下文信息,使模型能够理解 patch 之间的相对和绝对空间关系,从而捕捉图像的整体结构。
  5. 添加 CLS Token

    • 过程: 类似于 BERT 模型,通常在 Patch 嵌入序列的开头添加一个特殊的、可学习的分类 Token([CLS] Token)。
    • 目的: 这个 [CLS] Token 在经过 Transformer 层处理后,其最终状态通常被用作整个图像的全局特征表示,便于进行图像级任务,或与文本的 [CLS] Token 进行交互。

关于排序是否破坏特征的担忧

将原本在二维空间中相邻的 patches(如上下相邻的 patch)在序列中隔开,这确实与CNN通过局部卷积核处理邻近区域的方式不同。这会破坏某些依赖于严格二维邻近性的局部特征吗?

答案是:Transformer 模型依靠其独特的机制来克服这个问题,并不会因此“破坏”特征。

  1. 自注意力机制的全局连接能力: 与 CNN 的局部感受野不同,Transformer 的自注意力机制允许序列中的每一个 patch 嵌入所有其他 patch 嵌入直接计算注意力权重并进行信息交换,无论它们在序列中是相邻还是相隔很远。这意味着,即使上下相邻的 patch 在序列中距离较远,模型也可以在单个注意力层中捕捉到它们之间的关系。
  2. 位置编码提供的空间语境: 位置编码确保了模型知道每个 patch 在原始二维图像中的真实空间位置。模型学习到序列中相隔较远的两个 patch(例如,序列索引为 i 和 j 的 patch)在原始图像中是上下相邻的(例如,基于它们的位置编码),从而可以在处理过程中有效地整合它们的信息。

因此,虽然序列化改变了局部邻近性,但 Transformer 通过自注意力提供的全局连接和位置编码提供的空间信息,能够学习并利用图像的全局和局部结构,包括原本二维相邻的 patch 之间的关系。

选择多模态大模型的视觉骨干网络

在将图像 Patch 转换为初始嵌入序列后,这些序列会被输入到一个视觉骨干网络中,进行更深层次的特征提取和抽象。这个视觉骨干网络是 MLLM 中专门负责处理图像信息的部分。以下是一些常见的视觉部分选择及其分析:

传统的卷积神经网络 (CNN)

    • 代表模型:ResNet、ResNeXt、EfficientNet 等。
    • 核心思想: 利用卷积和池化进行层次化特征提取。
    • 优点: 技术成熟,计算效率相对较高(对于局部特征),对局部结构敏感。
    • 缺点: 缺乏原生处理长距离依赖的能力,输出格式需转换,缺乏原生的跨模态对齐。
    • 应用场景: 早期或特定需求(如边缘设备)的 MLLMs,或作为混合模型的一部分。

原生视觉 Transformer(ViT)

    • 代表模型: Vision Transformer (ViT) 原始版本及其变体。
    • 核心思想: 在 Patch 序列上直接应用标准的 Transformer Encoder。
    • 优点: 强大的全局建模能力,与 Transformer 架构天然兼容,可扩展性强。
    • 缺点: 对局部细节捕捉相对弱,计算量大(高分辨率),缺乏原生的跨模态对齐。
    • 应用场景: 许多现代 MLLMs 的首选,特别是需要强大全局视觉理解能力的模型。

层次化视觉 Transformer (Hierarchical ViT)

    • 代表模型: Swin Transformer、PVT等。
    • 核心思想: 结合层次化思想和 Transformer,逐步扩大感受野。
    • 优点: 兼顾局部和全局信息,计算效率更高(特别是高分辨率),输出多尺度特征。
    • 缺点: 结构相对复杂,缺乏原生的跨模态对齐。
    • 应用场景: 处理高分辨率图像、对计算效率有要求或需要多尺度视觉特征的 MLLMs。

图文对齐模型 (Image-Text Alignment Models) 的图像编码器

    • 代表模型:CLIP(其 Vision Transformer 或 ResNet 图像编码器)、ALIGN、Florence、CoCa 等。
    • 核心思想: 在大规模图文对数据上进行对比学习等联合训练,使图像和文本在共享空间中对齐。
    • 优点:强大的预训练跨模态对齐能力,泛化能力强,简化后续融合。
    • 缺点: 可能牺牲部分纯视觉任务性能,依赖预训练数据质量。
    • 应用场景: 当前绝大多数领先的 MLLMs 首选,特别是需要理解图文关联和开放世界概念的模型。