视觉表征

VIT

[2010.11929] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

核心思想:将图像划分为多个固定大小的 Patch,把每个 Patch 看作 NLP 中的一个 Token,通过 线性映射为固定维度的 Patch Embedding,再直接输入标准 Transformer Encoder

传统 CNN:

1
2
3
4
5
6
7
Image
↓
Convolution
↓
Feature Map
↓
Classification

ViT

1
2
3
4
5
6
7
8
9
10
11
Image
↓
Patchify
↓
Patch Embedding
↓
[CLS] + Position Embedding
↓
Transformer Encoder
↓
Classification

将二维图像转化成一维 Patch Token Sequence,把图像识别转化为序列建模问题

Patch Embedding

给定输入图像

$$ x\in\mathbb{R}^{H\times W\times C} $$
把图片切成 $P\times P$ 的互不重叠图像块 (`non-overlapping patches`)

Patch 数量:

$$ N=\frac{HW}{P^2}=\frac{H}{P}\frac{W}{P} $$
对于 ViT-B/16:
$$ H = W = 224, P = 16 \rightarrow N = 196 $$
把每个 Patch 展平成一个向量
$$ {x}_p\in\mathbb{R}^{N\times(P^2C)} $$
通过线性投影对 Patch 维度进行压缩,固定到 $D$,,再输入 Transformer
$$ {z_i} = x_i {E}\qquad {E}\in\mathbb{R}^{(P^2C)\times D} $$
每个 Patch 就对应 Transformer 中的一个 token
$$ z \in \mathbb{R}^{N\times D} $$

Position Embedding

ViT 在 Patch Embedding 上加入 Position Embedding

原始 ViT 延续 BERT 的设计,在 Patch Token 前加入一个可学习的 [CLS] Token

$$ z_0=[x_{cls};x_1E;x_2E;...;x_NE]+E_{pos} \qquad E_{pos}\in\mathbb R^{(N+1)\times D} $$

默认使用可学习的一维位置编码

序列中的每个位置都有一个独立的、可学习的 $D$ 维位置向量

经过多层 Self-Attention 后,[CLS] Token 可以与所有 Patch Token 进行信息交互,最终其输出作为整张图像的表示,用于分类

ViT-B/16 完整流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Input Image
[B, 3, 224, 224]

↓ Patchify: 16×16

196 Patches
Each: [3,16,16]

↓ Flatten

[B, 196, 768]

↓ Linear Projection
D = 768

[B, 196, 768]

↓ Add CLS Token

[B, 197, 768]

↓ Add Position Embedding

[B, 197, 768]

↓ Transformer Encoder × 12

[B, 197, 768]

↓ Take CLS Token

[B, 768]

↓ Classification Head

[B, num_classes]

现代 VIT

CLS Token 只是获得全局图像表示的一种方式,并不是 Transformer 的必要组成部分

一些后续视觉 Transformer 会直接对 Patch Tokens 进行 Global Average Pooling:

$$ z=\frac1N\sum_{i=1}^{N}z_i $$
优势:
  • 不需要额外学习 CLS token
  • 训练更加稳定
  • 与 CNN 的 Global Average Pooling 类似

局限

虽然 ViT 将 Transformer 引入视觉领域,但存在两个问题:

  1. Self-Attention 计算量高,随着图像分辨率提高,计算和显存开销增长很快
  2. 缺少 CNN 的层次化结构

因此后续提出Swin Transformer:通过窗口注意力和层次化结构,让 Transformer 更适合视觉任务

Swin Transformer

[2103.14030] Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

核心思想:通过三个核心设计解决VIT的问题

  • Window Attention:降低 Self-Attention 计算量
  • Shifted Window:实现不同 Window 之间的信息交互
  • Patch Merging:建立层次化信息结构

Patch Embedding

输入图像

$$ {x}\in\mathbb{R}^{H\times W\times C} $$
Swin 原论文使用 $P=4$
$$ H\times W\rightarrow\frac H4\times\frac W4 $$
1
2
3
4
5
6
7
8
9
10
11
Input
[B, 3, 224, 224]

↓ Patchify 4×4

[B, 56, 56, 48]

↓ Linear Projection
48 → 96

[B, 56, 56, 96]

每个 $4\times4\times3$ 的 Patch 被展平成一个长度为 48 的向量

ViT 强调全局的一维 Token sequence;Swin 则保留 Patch 的二维网格结构

Window Partition

Swin 不进行全局 Attention,而是划分局部窗口

$$ M = 7 $$
每个 Window有 $7\times 7 = 49$ 个 token
1
2
3
4
5
6
7
8
9
10
11
12
13
[B, 56, 56, 96]

↓ Window Partition 7×7

[B,8,8,7,7,96]

↓ Window Flatten

[B, 64, 49, 96]

↓ 把 Window 合并到 Batch

[B×64, 49, 96]

每张图有 64 个 window,每个 window 有 49 个 token,每个 token 是 96 维

把 Window 合并进 Batch 后就可以把每个 window 当成一个独立的小序列做 Self-Attention

W-MSA

W-MSA:Window Multi-head Self-Attention

1
2
3
4
5
6
7
┌───────┬───────┐
│Window │Window │
│ A │ B │
├───────┼───────┤
│Window │Window │
│ C │ D │
└───────┴───────┘

每个 Window 内部进行 Self-Attention,不同窗口之间不发生交互,使得计算量显著下降 ($O(M^2N)$),也因此需要 Shifted Window

SW-MSA

SW-MSA:Shifted Window Multi-head Self-Attention

下一层不继续使用相同窗口,而是将 Window Partition 平移,移动大小为 $\left\lfloor M/2\right\rfloor$

1
2
3
4
5
6
7
8
9
10
11
12
13
原窗口
┌───┬───┐
│ A │ B │
├───┼───┤
│ C │ D │
└───┴───┘

移动后
┌───┬───┐
│A/B│B/C│
├───┼───┤
│C/D│D/A│
└───┴───┘

实现跨 Window 信息交流

Swin Block

W-MSA 负责窗口内部建模,SW-MSA 负责跨窗口信息传播

连续两个 Block 分别使用 W-MSA 和 SW-MSA

1
2
3
4
5
6
7
Swin Block L
↓
W-MSA

Swin Block L+1
↓
SW-MSA

相对位置偏置

Swin 的 Attention 中加入了相对位置偏置 (Relative Position Bias)

Attention 可以写成:

$$ \operatorname{Attention}(Q,K,V)=\operatorname{Softmax} \left(\frac{QK^T}{\sqrt d}+B\right)V $$
表示窗口内部不同 token 之间的相对位置偏置

对于视觉空间,这种相对关系非常自然

$$ \hat B= \begin{bmatrix} b_{-(M-1),-(M-1)} & \cdots & b_{-(M-1),M-1}\\ \vdots & & \vdots\\ b_{M-1,-(M-1)} & \cdots & b_{M-1,M-1} \end{bmatrix} \in \mathbb{R}^{(2M-1)\times(2M-1)} $$

Patch Merging

ViT 基本保持同一尺度,而 Swin 逐渐降低空间尺寸,同时提升 channel

会在 Swin Block 后下采,下采采用拼接 + Linear 的实现方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
特征图
x00 x01 x02 x03
x10 x11 x12 x13
x20 x21 x22 x23
x30 x31 x32 x33

取 2 × 2
x00 x01
x10 x11

Concatenate 通道维度
[x00 | x01 | x10 | x11]
4C
↓
Linear Projection
4C → 2C

产生了 CNN 模式的特征金字塔

ViT Swin
Token形式 一维序列 二维Feature Map
Attention Global Attention Window Attention
复杂度 $O(N^2)$ $O(NM^2)$
空间结构 弱 强
多尺度 无 有
Patch数量 固定 逐层减少
适合任务 分类 分类/检测/分割

ConvNeXt

[2201.03545] A ConvNet for the 2020s

核心思想:以经典 ResNet 为基础,引入 Transformer 时代的设计思想,对传统 ConvNet 进行现代化改造,使纯 CNN 达到与 Swin Transformer 相近的性能

与 ResNeXt 没有直接继承关系:

  • ResNeXt:通过 Cardinality(多分支)增强 ResNet
  • ConvNeXt:重新设计 CNN Block,使其适应现代训练方式

Depthwise Convolution

传统卷积同时完成:

  • Spatial Mixing:融合邻域空间信息
  • Channel Mixing:融合不同通道的信息

ConvNeXt 将两种操作显式拆开

  • Depthwise Conv:每个 Channel 独立进行空间卷积,Channel 之间不发生信息融合
  • 1 × 1 Conv:进行 Channel 之间的信息融合

从参数量上来看:

  • 普通卷积

    $$ Params=K^2C_{in}C_{out} $$
  • Group Conv (分组 $G = Cardinality$)

    $$ \mathrm{Params}=\frac{K^2C_{in}C_{out}}{G} $$
  • Depthwise Conv 可以看作 $G=C_{\text{in}}$,并且通常 $C_{\text{out}}=C_{\text{in}}$

    $$ Params=K^2C_{in} $$

相比普通卷积,Depthwise Conv 可以用较少的参数和计算量完成 Spatial Mixing

传统 ResNet Block 主要使用 $3\times3$ Conv,而 ConvNeXt 采用 $7\times7$ Depthwise Conv

使用更大的卷积核,以较低额外计算成本扩大空间感受野

Inverted Bottleneck

传统 ResNet Bottleneck

1
2
3
4
5
6
7
8
9
10
11
12
13
Input C
↓
1×1 Conv
↓
C/4
↓
3×3 Conv
↓
C/4
↓
1×1 Conv
↓
C

先降维 → Spatial Mixing → 再升维

ConvNeXt 在 Channel Mixing 部分采用类似 Transformer FFN 的 Inverted Bottleneck:

1
2
3
4
5
6
7
8
9
10
11
12
13
Input C
↓
7×7 Depthwise Conv
↓
LayerNorm
↓
1×1 Conv / Linear
C → 4C
↓
GELU
↓
1×1 Conv / Linear
4C → C

先升维 → 非线性变换 → 再降维

类比Transformer:

  • $7\times7$ Depthwise Conv:负责 Spatial Mixing
  • $1\times1$ Conv / Linear:构成类似 FFN 的 Channel Mixing

ConvNeXt-T Architecture

和 Swin 基本一致

Snipaste_2026-09-23_12-13-09
Stage Feature Size Channel Block数量
Stage 1 56×56 96 3
Stage 2 28×28 192 3
Stage 3 14×14 384 9
Stage 4 7×7 768 3

视觉语言对齐

CLIP

[2103.00020] Learning Transferable Visual Models From Natural Language Supervision

CLIP:Contrastive Language-Image Pre-training

传统视觉分类模型通常学习:

1
2
3
4
5
6
7
8
9
Image
↓
Image Encoder
↓
Feature
↓
Linear Classifier
↓
Labels

这类方法通常需要预先定义固定类别,并依赖人工标注的分类数据

核心思想:使用自然语言作为视觉监督信号,同时训练 Image Encoder 和 Text Encoder,将图像和文本映射到同一个多模态向量空间,通过对比学习使匹配的图文表示靠近、不匹配的图文表示远离,解决图像与文本如何进行语义对齐的问题

模型结构

CLIP 由两个 Encoder 构成:

1
2
3
4
5
6
7
8
9
10
11
                 CLIP

┌─────────────────┐
Image → │ Image Encoder │ → Image Embedding
└─────────────────┘
↘
Shared Space
↗
┌─────────────────┐
Text → │ Text Encoder │ → Text Embedding
└─────────────────┘

对比学习

训练数据由大量匹配的 (image, text) Pair 构成

一个 Batch 中

$$ (I_1,T_1),(I_2,T_2),\ldots,(I_N,T_N) $$
总共可以组成 $N^2$ 个 Image-Text Pairing,只有 $N$ 个是Positive Pair,其余均为 Negative Pair

分别提取视觉和文本 Feature,进行 L2 归一化,两个 Embedding 的 Dot Product 就等价于 Cosine Similarity

$$ S_{ij}=z_I^i\cdot z_T^j=\frac{z_I^i\cdot z_T^j }{ \|z_I^i\|_2\|z_T^j\|_2 } $$
得到 Similarity Matrix

训练目标就是让对角线相似度更高,非对角线相似度更低

对比损失

Similarity 在进入 Softmax 前还会经过缩放

$$ \ell_{ij}=\frac{S_{ij}}{\tau} $$
CLIP 中的 Temperature 是可学习的,而不是固定超参数

训练时同时优化两个方向:

Image → Text

给定一张图片 $I_i$,在 batch 中所有文本里找到与它匹配的 $T_i$:

$$ L_I = -\frac{1}{N} \sum_i \log \frac{ \exp(S_{ii}/\tau) }{ \sum_j \exp(S_{ij}/\tau) } $$
可以理解为对 Similarity Matrix 的每一行做 Classification

Text → Image

给定文本 $ T_i$,在所有图片中找到 $ I_i$:

$$ L_T = -\frac{1}{N} \sum_i \log \frac{ \exp(S_{ii}/\tau) }{ \sum_j \exp(S_{ji}/\tau) } $$
相当于对 Similarity Matrix 的另一维做 Classification

最终

$$ \boxed{ L = \frac{L_I+L_T}{2} } $$

CLIP 同时优化,形成一个对称的 Contrastive Objective

Snipaste_2026-09-23_11-49-30

Zero-shot 分类

CLIP 最重要的能力之一是:下游分类时不需要重新训练一个固定的 Linear Classifier,而是直接使用自然语言描述目标类别

假设一个数据集包含:

1
2
3
4
dog
cat
car
plane

传统分类器:

1
2
3
4
5
6
7
8
Image Feature
↓
Learned Linear Classifier

W_dog
W_cat
W_car
W_plane

而 CLIP 可以直接构造:

1
2
3
4
"a photo of a dog."
"a photo of a cat."
"a photo of a car."
"a photo of a plane."

分别经过 Text Encoder

1
2
3
4
5
Text Prompt
↓
Text Encoder
↓
Class Embedding

这些 Text Embedding 就可以看成 Classification Weight

Text Encoder 可以理解为根据自然语言动态生成 Linear Classifier 的权重

Prompt Engineering

如果直接将 dog 输入 Text Encoder,效果并不是最好

因为 CLIP 预训练时遇到的文本通常是自然语言描述,而不是孤立的类别名称

因此论文使用:

1
"A photo of a {label}."

作为一个效果较好的默认模板

Prompt 实际上是在利用自然语言更加准确地定义视觉类别

CLIP 与 LLM

Zero-shot:

两者共同的范式可以理解为:通过大规模预训练获得通用能力,在下游任务中通过自然语言指定任务,而不重新训练模型参数

CLIP LLM
输入 Image + Text Text
预训练任务 Image-Text Contrastive Learning Next Token Prediction
核心能力 Visual-Language Alignment Language Modeling
Zero-shot Prompt 定义 Classification Class Prompt 描述 Task
推理方式 Similarity Matching Autoregressive Generation

Few-shot:

CLIP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
少量标注图片
(cat, dog, car)
│
▼
Frozen Image Encoder
│
▼
Image Features
│
▼
训练 Linear Classifier
│
▼
cat / dog / car

LLM 的 few-shot 不影响模型参数

CLIP LLM
Example 的形式 标注图像 Prompt 中的示例
是否更新 Backbone 否 否
是否训练新参数 训练分类头 否
Adaptation 方式 Parameter Learning In-Context Learning

BLIP

[2201.12086] BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation

在 CLIP 图文对齐思路的基础上,进一步统一了视觉语言理解(Understanding)和生成(Generation)两类任务

早期问题:Encoder-based 模型擅长图文检索等理解任务,但不容易直接用于文本生成;Encoder-Decoder 模型适合生成任务,但在图文检索方面表现受限

MED:让同一个预训练框架同时支持理解和生成

MED

Snipaste_2026-09-29_22-21-22

与CLIP相比真正变化的是文本这一侧,可以切换三种模式:

模式 主要结构 作用
Unimodal Encoder Image Encoder + Text Encoder 独立提取图文特征
Image-grounded Text Encoder Text Encoder + Cross-Attention 融合图文特征,判断是否匹配
Image-grounded Text Decoder Text Decoder + Cross-Attention 基于图像自回归生成文本
  • Image Encoder:使用 ViT,将图像切分为 Patch 并编码,利用 [CLS] 表示全局图像特征
  • Text Encoder:使用 BERT 类结构,通过双向 Self-Attention 获取文本表示
  • Image-grounded Text Encoder:在文本 Transformer 中加入 Cross-Attention,使文本能够关注图像特征
  • Image-grounded Text Decoder:将双向 Self-Attention 替换为 Causal Self-Attention,根据图像逐 Token 生成文本

Text Encoder 和 Text Decoder 共享除 Self-Attention 外的参数,包括 Embedding、Cross-Attention 和 FFN

原因是理解任务需要双向上下文,而生成任务需要因果掩码,两者对 Self-Attention 的要求不同

训练目标

BLIP 联合优化两个理解任务目标和一个生成任务目标。

Loss 全称 核心作用
ITC Image-Text Contrastive Loss 图文特征空间对齐,类似CLIP
ITM Image-Text Matching Loss 图文细粒度匹配
LM Language Modeling Loss 根据图像生成文本

CapFilt

BLIP 不直接完全相信原始 Web Text,因为其中存在较多与图像内容不匹配的噪声文本

Snipaste_2026-09-29_23-12-09

具体过程:

  1. 先利用原始数据预训练 MED
  2. 将预训练模型分别微调成 Captioner 和 Filter,使用 COCO 人工标注数据
  3. Captioner 为网络图像生成合成描述(每张图像生成一条)
  4. Filter 使用 ITM 判断图文是否匹配,过滤原始描述和生成描述中的噪声
  5. 将保留的图文对与人工标注数据合并,重新预训练一个模型

BLIP2

[2301.12597] BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models

BLIP 已经通过 MED 统一了视觉语言理解与生成,但仍然需要训练较大规模的多模态模型,计算成本较高

BLIP-2 希望直接利用已经训练好的单模态模型:

  • 预训练的视觉编码器:例如 ViT,已经具有较好的视觉理解能力
  • 预训练的大语言模型:已经具有较好的语言理解和生成能力

视觉编码器和 LLM 分别在不同的模态上训练,二者的特征空间并不天然对齐

通过两阶段训练实现高效的视觉语言对齐,先学习图文表示对齐,再学习让 LLM 理解视觉特征

Q-Former

Q-Former 并不是简单的线性映射,让 32 个可学习的 Query 与整张图像的视觉特征交互

通过 Cross-Attention 与冻结视觉编码器的输出交互

Snipaste_2026-10-11_21-32-40

每个 Query 随着训练进行,会学习如何从视觉特征中提取对图文任务有用的信息

论文给出的 ViT-L/14 视觉特征形状是 257 × 1024,而 Q-Former 输出为 32 × 768

因此 Q-Former 也起到 Information Bottleneck 的作用,将较长的视觉特征序列压缩成固定数量的视觉 Token

1
2
3
4
5
Image → Image Encoder → Image Features
↑
Cross-Attention
↑
Text Tokens
1
2
3
4
5
6
7
8
9
10
11
12
Image → Frozen Image Encoder
│
▼
Image Features
│ K, V
▼
Learnable Queries (Q)
│
Cross-Attention
│
▼
Query Representations

关键区别在于:

  • BLIP 主要由文本 Token 在跨模态融合过程中读取视觉特征
  • BLIP-2 额外引入 32 个可学习 Query,主动从视觉特征中提取信息

两阶段预训练

第一阶段:Vision-Language Representation Learning

训练 Q-Former,让它学会从图像中提取与语言语义相关的视觉信息

第二阶段:Vision-to-Language Generative Learning

让 Q-Former 输出的视觉信息能够作为输入,被冻结的大语言模型理解并用于文本生成

  1. Q-Former 提取视觉特征
  2. FC 层将视觉特征映射到 LLM 的词嵌入维度
  3. 将投影后的视觉特征作为 Soft Visual Prompts,与文本输入一起送入 LLM
  4. 通过文本生成损失训练连接模块,LLM 本身保持冻结
Snipaste_2026-10-11_21-41-20

这里的两种模式其实是针对两种不同架构的LLM

BLIP2的核心:可以保留预训练单模态模型的能力,仅训练较小的跨模态连接模块,实现视觉信息向语言模型的迁移

多模态大模型

LLaVA

[2304.08485] Visual Instruction Tuning

通过简单的视觉连接结构和多模态指令数据,让大语言模型学会根据图像回答用户的问题

模型架构

与 BLIP-2 相比,LLaVA 的模型连接方式更加简单

三个核心模块:

  • Vision Encoder:使用预训练的 CLIP ViT-L/14,提取图像 Patch 特征
  • Projection Layer:一个可训练的线性映射层,将视觉特征转换到 LLM 的词嵌入空间
  • LLM:使用 Vicuna,根据图像特征和文本指令自回归生成回答

BLIP-2 通过 Query 和 Cross-Attention 主动压缩并提取视觉信息;LLaVA 则直接保留视觉 Patch 特征,用简单线性层完成转换

多模态指令数据构建

核心贡献

普通图文数据一般是:

1
2
3
4
Image: 一辆停在车库里的 SUV

Caption:
A black SUV parked in a garage.

但真实用户可能会提出各种要求

如果训练数据几乎只有固定 Caption,那么模型缺少针对不同指令组织回答的监督信号

因此,需要构建:Image + Instruction → Response

而不仅仅是:Image → Caption

Snipaste_2026-10-11_21-59-33

两阶段训练

LLaVA 同样采用两阶段训练,但与 BLIP-2 的训练方式不同

第一阶段:Feature Alignment(特征对齐)

在冻结视觉编码器和 LLM 的情况下,仅训练 Linear Projection,使视觉特征适应预训练 LLM

原论文将这个阶段理解为训练一个与冻结 LLM 兼容的 Visual Tokenizer

第二阶段:Visual Instruction Tuning(视觉指令微调)

不仅要让 LLM 接收视觉信息,还要让它根据不同用户指令利用这些视觉信息

与第一阶段不同:

  • 视觉编码器仍然冻结
  • Projection Layer 继续更新
  • 解冻 LLM,让语言模型也参与训练
模型 核心设计 重点
CLIP Dual Encoder + Contrastive Learning 图文语义对齐
BLIP MED + CapFilt 统一理解与生成
BLIP-2 Frozen Encoder + Q-Former + Frozen LLM 高效连接视觉编码器和 LLM
LLaVA CLIP + Linear Projection + Vicuna 多模态指令微调

Qwen2-VL

[2409.12191] Qwen2-VL: Enhancing Vision-Language Model's Perception of the World at Any Resolution

BLIP 重点主要是如何将视觉特征与 LLM 连接,LLaVA 通过多模态指令微调实现视觉理解与问答

Qwen2-VL 进一步关注视觉信息本身的表示与建模问题:如何适应不同分辨率的图像、如何保留视觉 Token 的空间位置信息,以及如何统一处理图像与视频中的时空信息

引入了三个关键设计

动态分辨率

根据输入图像的原始分辨率,动态生成不同数量的 Visual Tokens,而不是将所有图片统一缩放到固定尺寸

传统固定分辨率的问题:

  1. 高分辨率图像需要下采样,导致文字、细节等信息丢失。
  2. 不同长宽比的图像需要统一缩放或 Padding,难以充分利用原始图像的空间信息

为了支持不同分辨率,Qwen2-VL 对 ViT 进行了两个重要修改

  1. 移除原来的绝对位置编码
  2. 使用 2D Rotary Position Embedding(2D-RoPE)表示图像中的二维空间位置

ViT 输出后,使用一个 MLP 对相邻的 $2\times2$ Visual Tokens 进行合并

$$ N_{\text{patch}}=\frac{H}{14}\frac{W}{14},\qquad N_{\text{merged}}=\frac{H}{28}\frac{W}{28} $$
对于 224×224 图像:先得到 16×16=256 个 Patch Token,再压缩成 8×8=64 个视觉 Token

加上视觉序列首尾的 <|vision_start|>、<|vision_end|>,共 66 个 Token

M-RoPE

将传统 RoPE 的一维位置表示扩展为时间、高度、宽度三个维度,实现文本、图像和视频的统一位置编码

  • Temporal:时间维度 $t$
  • Height:高度维度 $h$
  • Width:宽度维度 $w$
输入类型 Temporal Height Width
Text 随 Token 变化 与 Temporal 相同 与 Temporal 相同
Image 固定不变 随图像行变化 随图像列变化
Video 随 Frame 变化 随图像行变化 随图像列变化

对于文本输入,三个维度使用相同的位置 ID,M-RoPE 在文本场景下等价于传统 1D-RoPE

对于图像,所有视觉 Token 的 Temporal ID 保持不变,每个 Token 都有独立的二维空间位置

对于视频,每一帧 Temporal ID 随 Frame 递增

这样可以在统一的序列中处理多种模态

当模型输入包含多种模态时,每个模态的位置编号从前一个模态的最大位置 ID 加 1 开始

MROPE

图像视频的统一建模

将图像和视频放在统一的视觉处理框架中,训练过程中同时使用,使模型能够同时学习静态视觉理解与动态视频理解

引入深度为 2 的 3D Convolution,将相邻两帧中的对应空间区域编码为一个时空单元;对于静态图像,将其视为两张相同的帧,复用同一套处理方式

Patch 的空间大小为 14×14,结合时间深度 2,可以把输入单元理解为 2×14×14 的时空块

根据结构可推导压缩后的视觉 Token 数:

$$ N_{\text{video}}=\frac{F}{2}\frac{H}{28}\frac{W}{28} $$

三阶段训练

与 LLaVA 的两阶段训练不同

阶段 Vision Encoder LLM 训练目标
Stage 1 训练 冻结 视觉语义学习
Stage 2 训练 训练 多模态联合学习
Stage 3 冻结 训练 多模态指令微调

Stage 1:使用大量 Image-Text Pairs,使 Vision Encoder 学习视觉语义信息

Stage 2:解冻全部模型参数,进行联合训练,主要增强视觉与语言之间的语义关联

Stage 3:使用多模态指令数据,使模型能够理解用户指令,并根据视觉信息生成符合要求的回答

多模态数据标识

使用特殊 Token 区分文本、图像以及不同的多模态任务

标记 作用
`< vision_start
`< im_start
`< object_ref_start
`< box_start

这样模型不仅能够描述图像中的物体,还可以将文本描述与具体的图像区域关联起来