🎯 一句话理解 VLM

VLM = 让 AI 既"看得懂图"又"说得出话",打通视觉像素与语言语义之间的鸿沟。

人类看一张照片,能瞬间说出"画面里有一个穿红衣服的人正要横穿马路"。VLM(Vision-Language Model,视觉语言模型)要做的,就是让机器获得同一种能力:输入可以是图像、可以是文字、也可以是两者的组合,输出是文字

它对自动驾驶的意义在于——VLM 是 VLA(Vision-Language-Action,视觉语言动作模型)的视觉理解基础

VLAVLM""LLM""

换句话说:VLA 先靠 VLM 把"像素"翻译成"语义"(这辆车、这个人、这个红灯),再用大模型的推理能力决定"该怎么做"。VLM 看懂场景的上限,直接决定了 VLA 决策质量的上限。


🧠 第 0 步:前置知识——多模态是怎么"统一"的?

在看四代架构之前,先建立三个最小必要概念,否则后面所有公式都会"飘"。

0.1 世界上有两种信息形态:像素 vs 符号

  • 视觉信息:一张图本质是 H×W×3 的数值矩阵(宽 × 高 × RGB 三通道)。模型"看"到的就是这些数字,没有"这是猫"这种高级概念。
  • 语言信息:一段文字本质是一串离散符号(token),每个符号在词表里有编号。

VLM 的全部工作,就是在这两种完全不同的数据结构之间搭桥——把连续的像素,翻译成离散语言模型能消费的形式。

0.2 LLM 里的一切都是 token(向量)

LLM 内部并没有"字",只有向量

  1. 文本先被分词(tokenize):“一只猫” → ["一", "只", "猫"]
  2. 每个 token 查词表得到嵌入向量(embedding),比如维度 $d=4096$;
  3. LLM 的 Transformer 在这些向量上做自注意力,最后一层输出每个位置"下一个词是谁"的概率分布。

所以对 LLM 来说,“看懂图"的唯一途径就是:把图像也变成一串向量 token,塞进同一个自注意力序列里。 这就是"多模态统一"的本质,也是下面所有架构的共同目标。整条链路可以先用一张总图把位置感建立起来:

VLM 总体架构:视觉与语言如何在模型里汇合

0.3 统一多模态的三种思路(先建立地图)

思路做法代表能生成吗
对比对齐图像和文本各走各的编码器,只在最后的特征空间里比相似度CLIP❌ 只能对齐
特征桥接视觉特征经一个"翻译层"注入 LLM,LLM 负责生成BLIP-2 / LLaVA✅ 能生成
原生多模态从零训练一个统一编码器,图/文/音/视频共用 token 体系GPT-4V / Gemini✅ 全模态

后面的架构演进,就是这三条路依次登场的完整历史。


🧬 架构演进:四代 VLM

第一代:双塔对比(CLIP, 2021)

CLIP 由 OpenAI 提出,走的是"对比对齐"路线。它不生成文字,而是让两个编码器各自把图文映射到同一个特征空间,再用对比学习拉近"配对图文”、推远"不配对图文":

CLIP 双塔对比架构

结构:图像塔(ViT 或 ResNet)+ 文本塔(Transformer),各自输出一个全局特征向量,经投影层 + L2 归一化后,在同一个空间里算余弦相似度。

核心公式(对称交叉熵 / InfoNCE):设一个 batch 有 $N$ 对图文,相似度矩阵 $s_{ij}=\hat{i}_i\cdot\hat{t}_j$(图像特征与文本特征的内积),则损失为:

$$\mathcal{L} = -\frac{1}{2N}\sum_{i=1}^N \left(\underbrace{\log\frac{e^{s_{ii}}}{\sum_j e^{s_{ij}}}}_{\text{图→文:找到它的文本}} + \underbrace{\log\frac{e^{s_{ii}}}{\sum_j e^{s_{ji}}}}_{\text{文→图:找到它的图像}}\right)$$

直觉:对角线上($i$ 图配 $i$ 文本)是正对,其余都是负对。$\log\frac{e^{s_{ii}}}{\sum_j e^{s_{ij}}}$ 相当于问"第 $i$ 张图的特征,在所有 $N$ 个文本特征里,是不是离自己的配文最近"。两个方向都做,所以叫对称。

为什么对比学习能成功? 两个前提缺一不可:

  1. 海量数据:CLIP 用了 4 亿图文对,提供了极其丰富的负样本;
  2. 极大的 batch size:CLIP 训练 batch = 32,768,保证每个 batch 里负样本足够多、足够多样。

这在当时只有 OpenAI 的算力能做到。代价也很明显:CLIP 只能对齐、不能生成——它给你一个"图文相似度分数",却不会回答"图上有什么"。

三个关键技术细节(至今仍被沿用):

  • Zero-shot 分类:把类别名写成文本(“a photo of a cat."),与图像特征比相似度,相似度最高的就是预测类别。在 ImageNet 上 zero-shot 达 76.2%,不需要任何训练数据即可分类。
  • Prompt ensemble:推理时把类别名套进多个模板("a photo of a {class}.""a blurry photo of a {class}.""the {class} in the picture." 等),取所有模板文本特征的均值。这能显著提升鲁棒性,后来成了 VLM 推理的标准技巧。
  • 特征空间的可迁移性:CLIP 学到的特征后来被大量用于图像检索、文生图的引导(如 Stable Diffusion 的文本编码器就用了它)。

SigLIP(Sigmoid loss)是 CLIP 的重要改进版:把 softmax 换成 sigmoid 二元损失,即每个图文对独立判断"是否配对”:

$$\mathcal{L}_{\text{SigLIP}} = -\frac{1}{N}\sum_i \log\sigma(s_{ii}\cdot t) - \sum_{i\ne j}\log\sigma(-s_{ij}\cdot t)$$

($t$ 是学习到的温度参数。)它不依赖 batch 内负样本的相互竞争,因此 batch size 较小(如 16K)时依然有效,训练更稳定——这也让 SigLIP 成为当前 VLA 视觉编码器的首选(LLaVA、OpenVLA 等都在用)。

第一代小结:CLIP 教会了大家"图文如何对齐",但它只是"判官",不是"话痨"。它把多模态问题从"能不能看"推进到"怎么对齐"。


第二代:Q-Former 桥接(BLIP-2, 2023)

CLIP 只能比对,那么"生成"怎么来?BLIP-2 的答案是:桥接层——用一个可学习的模块,把视觉特征"压缩翻译"成 LLM 能消费的 token,从而第一次实现了"看图说话":

BLIP-2 Q-Former 架构

Q-Former 是什么? 一组 32 个可学习的 query token,通过交叉注意力去"询问" ViT 输出的 257 个 patch 特征(256 个 patch + 1 个 [CLS]),把信息压缩成 32 个视觉 token。这相当于一个"信息瓶颈":256 个 patch 里最关键的语义被挑出来,冗余被过滤。

为什么参数高效? Q-Former 只有约 188M 参数,却完成了两个层级的桥接:

  • 对 LLM 而言,输入从"257 个 patch"变成"32 个 query 输出",上下文长度大幅缩短(LLM 的 attention 开销随 token 数平方增长,省 8 倍输入就省了 64 倍的 attention 计算);
  • 对训练而言,绝大多数参数(ViT + LLM)都冻结,只需训练这一层桥接。

BLIP-2 的三阶段训练(冻结策略逐步放开,见上图右半部分):

阶段目标冻结部分说明
1. 表示学习让 query 学会从 ViT 提特征ViT对比损失 + ITM(图文匹配)+ 图文生成,三个目标联合
2. 生成学习让 LLM 学会"用视觉 token 生成"ViT + LLM冻结 LLM,只训 Q-Former 对齐生成目标
3. 端到端微调下游任务最优全部放开在目标任务数据上微调

BLIP-3 / xGen-MM(2024,Salesforce)是 BLIP 的第三代,去掉了 Q-Former,直接用投影层把 ViT 特征注入 LLM。这印证了一个重要趋势:随着 LLM 能力变强,中间桥接模块可以越来越简单。BLIP-3 同时把训练数据扩展到多语言、多来源的大规模图文语料。

第二代小结:Q-Former 证明了"桥接层"的价值——用极少的可训练参数激活一个冻结大模型的视觉理解能力。但它仍然不是最简方案。


第三代:简单投影(LLaVA, 2023)

LLaVA 由威斯康星大学麦迪逊分校与微软提出,是目前学术界最流行的 VLM 框架。它的核心洞察只有一句话:

“LLM 已经足够强,只需要一个简单的 MLP 把视觉特征’翻译’成 LLM 能理解的格式。”

LLaVA 简单投影架构

架构ViT-L/14 → MLP 投影层(2 层全连接)→ LLM(Vicuna/LLaMA 7B)。图像经过 ViT 得到 576 个 patch 特征(维度 1024),MLP 把它升维到 4096(与 LLM 词嵌入维度一致),然后与文本 token 一起拼进 LLM。

两阶段训练(见上图下部):

阶段数据训练范围任务
预训练对齐CC-595K 图文对(约 59.5 万)只训 MLP,LLM 冻结看图生成一句描述(“这是什么”)
指令微调158K 视觉指令(VQA + 对话)MLP + LLM遵循"请描述图中危险物体"等指令

为什么 LLaVA 能成为主流? 不只是结构简单,更在于:

  1. 清晰的训练 recipe:两阶段、数据公开、成本低——LLaVA-1.5 用 600K 指令数据 + 单卡 A100 训练约 1 天,就能达到接近 GPT-4V 的 VQA 性能;
  2. 开源生态繁荣:社区能复现、能改造,于是围绕它长出了一整片下游应用。

高分辨率改进(对驾驶至关重要):LLaVA 早期只能看 224×224 的图,远处的小目标(行人、锥桶)根本看不清。后继版本逐一解决:

  • LLaVA-1.5(AnyRes):把高分辨率图切成多个 336×336 的 patch,每个 patch 独立过 ViT 编码,再拼回 LLM;
  • LLaVA-NeXT:支持动态分辨率,输入图像自适应切分,不再固定到某个尺寸;
  • LLaVA-HR:用多层 Transformer 投影替换 MLP,保留更多视觉细节。

这些改进对驾驶场景极其关键——驾驶是典型的"小目标密集 + 远距离细节重要"场景,分辨率不足的 VLM 会直接漏掉路边的行人和锥桶。

第三代小结:LLaVA 用"最简单桥接"证明:在 LLM 足够强的前提下,投影层只是"翻译官",不需要复杂的检索或压缩结构。它的高分辨率路线图直接为驾驶 VLM 铺了路。


第四代:原生多模态(GPT-4V / Gemini, 2023)

当前的能力天花板。它们的路线是"原生多模态"——从第一性原理设计,让一个模型直接处理多种模态

GPT-4V(OpenAI):架构未公开,推测为视觉 encoder + 大规模多模态 Transformer。能力涵盖看图对话、视觉推理、图表理解、视频帧分析。它在自动驾驶中的典型用途是离线推理数据生成:DriveVLM 就是用 GPT-4V 看视频、生成 Chain-of-Thought 标注数据,再蒸馏给自研小模型。

Gemini(Google):从第一性原理设计的原生多模态模型,用一个统一编码器处理图像/视频/音频/文本。Wayve 的 EMMA 就基于 Gemini 系列,一个模型同时输出感知 + 预测 + 规划(把轨迹也编码成 token)。

对比GPT-4VGemini
架构视觉 encoder + LLM原生统一 encoder
输入图像 + 文本图像 + 视频 + 音频 + 文本
上下文128K1M+
驾驶用途教师数据生成(DriveVLM)EMMA 基模型

架构趋势总览

架构代表融合方式参数量训练成本能否生成
双塔对比CLIP最后一层对比小~中
Q-FormerBLIP-2交叉注意力桥接
直接投影LLaVAMLP
原生多模态GPT-4V端到端统一极大极高

三个贯穿趋势

  1. 桥接模块简化:Q-Former → MLP → (未来可能)不需要投影,LLM 直接原生理解视觉 token;
  2. 视觉 encoder 强化:ViT-B → ViT-L → ViT-G,视觉分支的容量一路变大;
  3. 训练数据膨胀:4 亿 → 50 亿+,数据质量从"弱对齐"走向"强指令"。

🔬 深度专题:决定 VLM 能力的四个工程点

看懂四代架构之后,真正动手做 VLM(或选型 VLM)时,决定性能的其实是下面四个工程细节。

1. 视觉编码器怎么选?

  • CLIP:零样本能力强、通用性好,但对小目标/细节敏感度一般;
  • SigLIP:训练更稳、batch 要求低,是目前 VLA 首选(OpenVLA、LLaVA 后续版本都在用);
  • InternViT / 其他大视觉模型:分辨率高、参数大,适合高要求场景(如 Senna 用的 InternVL 系列)。

2. 投影层怎么设计?

投影方式代表特点
无投影(直接拼)部分原生多模态最简,但需从头训
MLPLLaVA简单有效,信息无压缩
Q-FormerBLIP-2压缩 token 数,省 LLM 上下文
Resampler / PerceiverFlamingo类似 Q-Former,可采样固定长度

3. 分辨率与位置编码

  • 视觉信息里"位置"很重要:VLM 必须知道"这个锥桶在画面的左前方";
  • 高分辨率方案(AnyRes、动态切分)要小心位置编码错乱——切分后的 patch 与原始像素位置的对应关系要正确;
  • 驾驶场景常用多分辨率 + 位置编码对齐的组合。

4. 图文 token 的组织方式

  • 前缀拼接[图像 token][文本指令],LLaVA 模式,简单;
  • 交错输入:图文交替出现,适合文档理解(如多页驾驶手册、多帧视频逐帧插入);
  • 特殊分隔符:用 <image></image> 等 token 标记边界,让 LLM 知道"这里换了一种模态"。

🎓 VLM 训练三阶段

无论哪种架构,现代 VLM 的训练都遵循"三阶段"配方:

VLM 训练三阶段

阶段目标数据典型损失训练范围
① 对齐预训练视觉-语言特征空间对齐海量图文对对比损失 / ITM / 下一句生成投影层为主
② 指令微调学会遵循视觉指令VQA / 对话 / 指令集自回归交叉熵投影层 + LLM
③ RLHF / DPO对齐人类偏好人类偏好标注PPO / DPO全模型

阶段 ② 的数学本质(最重要,几乎所有 VLM 的 loss 都是它):给定图像 $x$ 和指令前缀 $q$,LLM 自回归生成回答 $y=(y_1,\dots,y_T)$,目标是最小化负对数似然:

$$\mathcal{L}_{\text{SFT}} = -\sum_{t=1}^{T}\log P_\theta(y_t \mid y_{阶段 ③ 的数学本质:人类给同一问题标注"哪个回答更好"($y_w$ 好于 $y_l$),DPO 直接优化偏好差距:

$$\mathcal{L}_{\text{DPO}} = -\log\sigma\Big(\beta\cdot\big[\log\frac{\pi_\theta(y_w\mid x)}{\pi_{\text{ref}}(y_w\mid x)} - \log\frac{\pi_\theta(y_l\mid x)}{\pi_{\text{ref}}(y_l\mid x)}\big]\Big)$$

三阶段数据量递减,但数据"质量/针对性"递增。对驾驶 VLM 而言:通常做到阶段 ②(驾驶 QA 微调),阶段 ③ 因为"驾驶对错难以人工打分"而交给后续的 RL 环节(AlphaDrive、Flow-GRPO 等)。


🚗 驾驶专用 VLM

通用 VLM 有三个驾驶硬伤:缺少驾驶知识(不知道交规)、分辨率不足(看不清远距小目标)、缺乏时序理解(单帧看不出运动)。业界按四条路线逐一打补丁:

通用 VLM 到驾驶 VLM 的四条适配路线

适配策略具体做法代表模型
高分辨率切 patch + 多尺度编码LLaVA-HR, DriveVLM
多视角多路相机独立编码再拼接DriveVLM(6 视角)
时序建模多帧输入 + 时序注意力GenAD, Senna
驾驶微调驾驶 QA / CoT 数据微调LMDrive, DriveGPT4

驾驶 VLM 的三个代表性模型:

  • DriveVLM:基于 Qwen-VL,高分辨率 + 结构化 CoT 推理。它的输出分四步:场景描述 → 关键物体 → 因果推理 → 规划建议。这条"看图→思考→决策"的链路,是当前驾驶 VLM 的主流范式。
  • EMMA(Wayve):基于 Gemini,多任务统一——感知、预测、规划全部以文本 token 形式输出,一个模型端到端完成。代表"原生多模态"路线在驾驶的落地。
  • Senna:基于 InternVL,VLM + 规划头,强调驾驶规则对齐(跟车、让行等交规知识注入)。

驾驶 VLM 的输入输出形态(驱动对话的 prompt 模板):

[QDr1i]v[eVL轿2M][C3o]T轿2[02m4]4

📊 VLM 关键评估基准

通用多模态基准

基准任务典型指标
VQAv2视觉问答准确率
COCO Caption图像描述CIDEr, BLEU
MMBench多模态理解综合(多任务)分类准确率
MMMU大学级跨学科知识准确率
POPE幻觉(Hallucination)检测F1

驾驶专用基准

基准任务说明
DRAMA危险场景识别关注驾驶安全场景(行人横穿、事故现场等)
DriveLM-nuScenes驾驶问答基于 nuScenes 的 QA 对,含结构化推理
Rank2Tell风险排序要求按风险等级对场景中物体排序

注意:通用基准(MMMU、POPE 等)分数高不代表驾驶好——驾驶需要的是安全敏感度,而不是"知识广度"。评估驾驶 VLM 必须回到驾驶基准。


⚠️ VLM 关键局限(驾驶视角)

  1. 视觉 Hallucination:模型可能"看到"不存在的障碍物并一本正经地描述,这对驾驶是致命的——谎报一个假行人可能导致急刹,漏报真行人则直接威胁安全。缓解手段:更高的解码温度控制、POPE 这类幻觉检测、以及偏好对齐时把"幻觉"作为负面样本。
  2. 时序不一致:视频连续帧的描述可能互相矛盾(上一帧"行人静止",下一帧"行人在走")。驾驶场景的核心短板——运动与速度的判断必须依赖时序一致性,而很多 VLM 是单帧训练、单帧推理。
  3. 微调遗忘:用驾驶数据微调后,模型可能丧失通用知识(对交通标志的常识理解等)。缓解手段:混合通用数据、LoRA 低秩微调、KL 约束(保留原模型分布)。
  4. 推理速度:数亿到数千亿参数,离车端 <100ms 的实时要求差得远。缓解手段:蒸馏成小模型(如 DriveVLM-Dual 的双分支设计)、量化、只让轻量分支上端。
  5. 闭环评估难:文本输出难以客观评价"这个转向决策对不对"——语言是中间表示,不是最终动作。这也是驾驶 VLM 普遍要再接一个规划头、或升级成 VLA 的原因。

🧭 如何为驾驶任务选 VLM(决策清单)

你的需求建议选型
只需要"看懂场景"做问答/标注LLaVA 系 + SigLIP + 高分辨率
需要结构化推理(场景→物体→决策)DriveVLM 系(Qwen-VL 底座 + CoT)
需要车端实时蒸馏小模型 / 双分支(大模型离线标注,小模型在线)
需要多视角 360° 环视支持多视角输入的 VLM(6 相机拼接)
需要最终驾驶动作直接上 VLA(EMMA / DriveVLA),VLM 只做底座

✅ 小结

  1. CLIP:对比学习奠基,zero-shot 迁移能力,只能对齐不能生成;
  2. BLIP-2:Q-Former 用 188M 参数高效桥接视觉与语言,首次打通"看图说话";
  3. LLaVA:简单 MLP 投影证明 LLM 可直接理解视觉 token,高分辨率路线为驾驶铺路;
  4. GPT-4V/Gemini:原生多模态,能力天花板,同时承担"教师数据生成"角色。

VLM 的演进就是"如何让计算机既看图又识字“的技术路线,它是 VLA 的视觉理解根基。VLM 选型决定了 VLA 理解场景的上限——选择视觉编码器(SigLIP vs CLIP)、对齐策略(MLP vs Q-Former)、以及是否支持高分辨率多视角,直接影响了后续驾驶决策的质量。

再往上一层,当 VLM 理解了场景,真正开车还需要把语义变成动作——这就是 VLA 要做的事。建议下一篇接着读《什么是VLA模型》和《VLA大模型训练技巧》。


📖 知识点拆解系列第 11 篇。下一篇:大语言模型基础详解。