把一张图片交给视觉语言模型,问它“图里有什么”,背后通常会发生一场翻译接力:视觉编码器提取特征,连接器把特征接入语言模型,语言模型再结合问题生成回答。
理解这条链路,可以先分清两件事:**视觉编码器决定模型从图片里提取什么,连接器决定这些信息怎样进入语言模型。**前者的代表包括 CLIP、SigLIP 和 DINOv2;后者常见的设计包括 MLP 投影、Q-Former,以及插入语言模型内部的交叉注意力模块。
如果任务进一步延伸到机器人控制,还需要动作输出头。视觉前端、连接器和动作表示分别解决不同问题,适合放在同一个系统中考察。
一、先看整条链路:图片不会先变成一句话
以常见的视觉编码器加语言模型架构为例,图片被切成 patch,经过编码器后得到一串连续特征。连接器将这些特征映射为语言模型可接收的向量,或供交叉注意力读取的视觉记忆。
这里的“视觉 token”通常指连续向量,并不要求先把图片翻译成词表中的文字 token ID。例如,模型可以直接接收杯子所在区域的特征,而无需先生成“这里有一个杯子”的文字描述。
这个框架适合解释许多公开 VLM,但不能据此推断某个未公开模型一定使用哪一种编码器或连接器。
二、视觉编码器:CLIP、SigLIP 和 DINOv2 学到了什么
CLIP:用图文配对建立语义联系
CLIP 的全称是 Contrastive Language–Image Pre-training。OpenAI 的 Alec Radford 等人在 2021 年公开了论文 Learning Transferable Visual Models From Natural Language Supervision。它分别编码图片和文本,让匹配的图文表示更接近、不匹配的表示更远,从而获得可迁移的视觉语义特征。
“苹果照片”和描述苹果的文本之所以能够比较,是因为 CLIP 训练了配套的图像与文本编码器。这个共同空间并不等于任意语言模型的输入空间,接到 LLM 上仍然需要适配。
CLIP 的图像级训练目标也不直接保证精确的局部定位。读小字、区分左右关系、识别部件时,模型还需要合适的输入分辨率、patch 特征和任务监督。不能把这个限制解释成“CLIP 的所有空间信息都被平均掉了”:视觉骨干的局部特征与最终的全局图文表示是不同层面的输出。
CLIP 是很多经典 VLM 的重要起点,但视觉前端已经存在多种选择,用“所有模型的默认配置”概括会掩盖版本差异。
SigLIP:把 softmax 对比目标改为成对 sigmoid 目标
SigLIP 来自 Xiaohua Zhai 等人的 Sigmoid Loss for Language Image Pre-Training,发表于 ICCV 2023。
CLIP 的对比目标需要在一组候选之间做 softmax 归一化;SigLIP 对图文对分别计算匹配或不匹配的损失,无需为归一化收集所有成对相似度。它依然使用负样本,改变的是损失的组织方式。论文展示了这种设计在较小 batch 下的表现和训练扩展性。
SigLIP 是 OpenVLA 等系统采用的视觉组件之一。选择它时应评估具体检查点的分辨率、预训练数据和推理成本,不能只根据损失函数名称推断下游表现,更不能把个别模型的选择推广为整个 VLA 领域已经完成替代。
DINOv2:从图像本身学习可迁移表征
Meta 的 Maxime Oquab 等人在 2023 年公开了 DINOv2: Learning Robust Visual Features without Supervision。它不依赖配对文本监督,通过教师—学生自蒸馏、图像级与 patch 级目标等设计学习视觉特征。
这类特征能够支持分类,也能用于分割、深度估计等密集任务。“没有文字监督”并不意味着没有语义,而是没有直接建立与自然语言文本编码器的配对关系。接入语言系统后,它仍可通过后续训练学习指令与视觉内容的联系。
因此,更合适的比较是:CLIP/SigLIP 从图文配对获得语言相关的视觉先验;DINOv2 从图像自监督获得通用视觉表示。语义与空间能力可以重叠,并不是两组互斥技能。
| 前端 | 主要监督信号 | 接入 VLM 时可利用的特点 | 仍需验证 |
|---|---|---|---|
| CLIP | 图文对比学习 | 图文语义联系、成熟的预训练权重 | 局部定位、OCR、任务分布适配 |
| SigLIP | 成对 sigmoid 图文损失 | 语言相关视觉特征、不同的训练扩展方式 | 具体版本效果、分辨率与延迟 |
| DINOv2 | 图像自监督 | 通用图像特征与局部 patch 表征 | 语言对齐、任务需要的空间精度 |
三、OpenVLA:两路视觉特征怎样融合
2024 年公开的 OpenVLA采用 SigLIP 与 DINOv2 的融合视觉前端。按照论文的架构说明,两路 patch 特征沿通道维拼接,再通过投影器送入语言模型。
可以用下面的形状示意理解:
SigLIP 特征:N × d₁ ─┐
├─ 通道拼接 → N × (d₁ + d₂) → 投影器 → N × dLLM
DINOv2 特征:N × d₂ ─┘
这要求两路特征能够在空间位置上对应。通道拼接增加每个位置的特征宽度,并不自动把输入语言模型的 token 数量翻倍。
融合的动机是利用两种预训练方式的互补性。它不意味着“单独使用 SigLIP 就抓不准”或“DINOv2 永远听不懂 cup”。实际收益必须通过单编码器与双编码器的消融实验判断,同时考虑多跑一个视觉骨干带来的成本。
对抓取、放置等任务,一个可操作的比较方法是固定数据、动作头和训练预算,分别评估单路与融合前端的成功率、定位误差和端到端延迟。
四、连接器:MLP、Q-Former 与交叉注意力
视觉特征进入 LLM,至少要解决维度匹配与训练适配。有些连接器还负责压缩视觉序列,有些则改变语言模型读取视觉信息的位置。
MLP:保留 patch 数量,改变每个向量的维度
MLP 的全称是 Multi-Layer Perceptron,即多层感知机。初代 LLaVA使用线性投影;LLaVA-1.5采用两层 MLP。两者可以简写为:
线性投影:h = Wv + b
两层 MLP:h = W₂ · GELU(W₁v + b₁) + b₂
其中 v 是一个视觉位置的特征,h 的维度与 LLM 输入嵌入一致。逐位置投影通常保留 token 数量:输入 N 个 patch 特征,输出仍是 N 个视觉向量,再与文本嵌入拼接。
这个方案实现简单,适合建立基线。它有效的前提包括预训练特征、图文对齐数据和视觉指令训练,而不能仅归因于“两个语义空间只差一个坐标变换”。维度一致只是接口接通,模型是否使用视觉证据,还要靠训练和评估。
Q-Former:用查询向量提取有限数量的视觉 token
Q-Former 是 Querying Transformer,来自 Salesforce 的 BLIP-2(2023)。原论文使用 32 个可学习查询,通过交叉注意力从图像特征中提取信息,形成固定长度的视觉表示,再投影到语言模型。
BLIP-2 的预训练分两阶段:先学习与语言相关的视觉表征,再通过冻结的语言模型学习图像到文本生成;视觉编码器与 LLM 骨干保持冻结,主要训练桥接模块。它不要求第二阶段必须解冻整个系统。32 是该配置的查询数量,也不是所有后续 Q-Former 的硬性限制。
压缩收益取决于输入。以 224×224 图像、14×14 patch 为例,不计特殊 token 时有 256 个 patch;压缩到 32 个后,视觉序列缩短到八分之一。若输入换成 336×336,则有 576 个 patch,所以“ViT-L/14 永远输出 256 个 token”不成立。
Flamingo:在语言模型内部读取视觉记忆
DeepMind 的 Flamingo发表于 2022 年。它先用 Perceiver Resampler 将视觉特征压缩为固定长度表示,再在冻结的语言模型层之间插入可训练的门控交叉注意力模块。原论文使用 64 个视觉 latent,插入模块的频率也是架构配置的一部分。
因此,Flamingo 并不是“每层直接读取未经压缩的原始视觉特征”。它同时包含视觉压缩和中间层融合;也不能单凭交叉注意力就断言信息保真度最高、计算成本最大。
token 少八倍,不代表整套系统快六十四倍
设文本长度为 T,视觉长度为 N,压缩后为 K。对于把视觉向量拼入语言序列的方案,标准稠密自注意力的计算项大致由 (T+N)² 变为 (T+K)²。只有忽略文本并只比较视觉部分时,256→32 才对应平方项减少到 1/64。
整套系统还要运行视觉编码器、连接器和前馈层;逐 token 解码时也会使用 KV cache。实际延迟应分别测量视觉编码、首 token 时间和后续生成速度。交叉注意力的相关计算则与文本查询长度和视觉记忆长度的乘积有关,不能直接套用上述平方比值。
| 方案 | 视觉长度变化 | 融合位置 | 主要取舍 |
|---|---|---|---|
| 逐 patch MLP | 通常 N→N | LLM 输入序列 | 实现简单,但高分辨率会增加序列负担 |
| Q-Former | N→K | 查询输出投影后接入 LLM | 控制视觉长度,但需要评估压缩后的细节损失 |
| Flamingo 式模块 | 先重采样到 K | LLM 层间交叉注意力 | 显式读取视觉记忆,需要修改模型内部结构 |
五、对齐策略:连接器接好以后,还要训练什么
“对齐”至少包括三个层次。首先是接口:维度、位置、mask 和特征排列必须正确。其次是图文学习:连接器要把视觉表示变成 LLM 能利用的信息。最后是指令学习:模型要根据用户问题选择视觉证据,而不仅仅生成通用描述。
以投影器路线建立基线时,可以先冻结视觉骨干和语言模型,用图文数据训练连接器,再根据预算进行视觉指令微调。是否解冻视觉编码器、是否使用 LoRA、哪些层更新,都需要结合数据量和任务验证;这只是常见训练安排,并非所有模型共享的规则。
如果模型会描述“大致有一张表格”,却读不出单元格,不应立即认定连接器不够复杂。可以沿数据流逐步检查:原图缩放后文字还是否清楚,裁剪是否覆盖目标区域,patch 特征是否保留,压缩是否过强,训练数据是否包含对应的 OCR 或表格任务。
做连接器对比时,应尽量固定编码器、图像预处理、LLM 和训练数据。否则观察到的提升可能来自分辨率或数据变化,很难归因于连接器本身。
六、延伸到 VLA:动作怎样输出
VLA 是 Vision–Language–Action。它在视觉和语言条件下输出动作,但动作头并不由前端或连接器唯一决定。下面是两类代表设计,此外还存在连续回归及其他动作编码方案。
离散动作 token
RT-2与原始 OpenVLA 将动作编码为 token,用自回归预测与交叉熵训练。OpenVLA 将动作各维按训练数据的分位范围划分为 256 个区间,再将预测 token 还原为控制量。
离散分布可以为不同动作模式分配概率,相比单点平方误差回归,更容易表达多种可行选择。不过,有限分箱会引入量化误差,多 token 自回归也带来解码成本。动作是否抖动还与数据、采样方式、控制频率和执行器有关,不能完全归因于离散化。
扩散与流匹配动作头
Octo采用扩散动作生成,π₀采用流匹配,将带噪动作逐步变换为连续动作块。两者都可以表达复杂动作分布,但训练目标和采样过程并不完全相同。
连续动作避免了逐维固定分箱,却不自动保证平滑或精确:轨迹长度、训练示范、采样方法和闭环反馈同样重要。推理步数取决于具体模型与求解设置,不适合把“流匹配 1–10 步、扩散 50–100 步”当作普遍规律。
对实际系统,应测量一次动作块生成的耗时、执行覆盖时长以及重新读取观测的频率。多步生成可能仍满足控制要求,自回归离散输出也不一定更快,最终应以目标硬件上的闭环表现判断。
七、怎样做一个可验证的选择
对于普通图像问答,可以从成熟的图文视觉编码器加 MLP 开始,先把数据与训练流程跑通。对于大量图片或视频,固定数量的查询或重采样有助于控制视觉序列长度,但应检查目标信息是否被压缩掉。
对于 OCR、文档和精细识别,首先检查输入分辨率、局部裁剪和任务数据,再评估 token 保留策略。对于机器人操作,可以比较单路与融合视觉前端,并单独比较动作头,避免一次更换多个模块后无法解释结果。
视觉编码器决定可供使用的特征,连接器决定信息传入方式,训练策略决定模型能否利用这些信息,动作头决定控制输出的形式。选择方案时,应该把任务准确率、端到端延迟和计算预算放到同一次实验里评估。
参考资料
- CLIP:Learning Transferable Visual Models From Natural Language Supervision
- SigLIP:Sigmoid Loss for Language Image Pre-Training
- DINOv2:Learning Robust Visual Features without Supervision
- LLaVA 项目 · LLaVA-1.5:Improved Baselines with Visual Instruction Tuning
- BLIP-2:Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models
- Flamingo:a Visual Language Model for Few-Shot Learning
- OpenVLA 论文 · 项目主页
- RT-2 论文 · Octo 项目 · π₀ 论文