4. VLM基础原理
视觉语言模型(Vision-Language Model, VLM)是自动驾驶场景理解的核心引擎。它要解决的根本问题是:如何让一个只懂离散文本符号的语言模型,理解连续、高维、带有空间结构的图像像素,并在同一语义空间中对“看到什么”和“说什么”进行联合推理。本节从四个关键部件出发,梳理VLM的基础原理与演进脉络。
一、视觉编码器:把像素变成可被语言模型消化的token
视觉编码器负责将输入图像转换为一系列视觉特征向量。主流方案有两类:一类是CNN骨干网络(如ResNet、ConvNeXt),通过卷积逐层提取局部到全局特征;另一类是Vision Transformer(ViT),将图像切分为固定大小的patch(如14×14或16×16),每个patch线性投影为一个token,再经过多层自注意力建模全局关系。ViT因结构统一、易于与语言模型对齐,已成为当前VLM的主流选择。
编码器输出的视觉token数量直接决定计算开销。以一张448×448图像、patch大小为14为例,可产生1024个视觉token,若直接送入语言模型,序列长度会急剧膨胀。因此工程上常采用视觉重采样器(如Q-Former、Perceiver Resampler)或池化/合并策略,将视觉token压缩到64~256个,在保留关键语义的同时控制上下文长度。
二、语言模型与跨模态注意力:让两种模态真正“对话”
语言模型部分通常采用预训练好的LLM(如LLaMA、Qwen、Vicuna系列),其自回归解码能力提供语言生成与常识推理基础。视觉token与文本token拼接后,送入LLM的Transformer层。跨模态注意力在这里发挥核心作用:文本token作为Query,视觉token作为Key/Value,通过注意力权重动态决定“当前生成的词应该关注图像的哪个区域”。
这种机制使模型在描述“前方车辆正在减速”时,能将“前方车辆”对应到图像中特定patch区域,而非全局平均。部分架构还引入双向跨模态注意力或门控融合,让视觉特征也能反向影响文本表示,提升细粒度对齐能力。
三、视觉指令微调:从“能看懂”到“会回答”
预训练阶段让模型建立了视觉与语言的粗粒度对齐,但要让模型遵循人类指令、完成场景问答、风险描述等任务,还需要视觉指令微调(Visual Instruction Tuning)。其核心是构造大量“图像+指令+回答”三元组数据,例如:
{
"image": "highway_rain_001.jpg",
"instruction": "描述当前场景中可能影响行车安全的风险因素。",
"response": "路面湿滑,前方货车尾灯亮度较低,右侧车道有车辆频繁变道,建议降低车速并保持更大跟车距离。"
}
微调时通常冻结视觉编码器,仅训练投影层与LLM,或采用LoRA等参数高效方法。数据质量比数量更关键:自动驾驶场景应覆盖夜间、逆光、雨雾、施工区、异形车辆等长尾情况,并保证回答中包含可验证的感知依据。
四、多模态大模型演进与工程选型
从CLIP的对比学习对齐,到BLIP-2的Q-Former桥接,再到LLaVA的视觉指令微调,VLM经历了“对齐—桥接—指令化”的演进。当前自动驾驶领域常见路线包括:轻量级端侧VLM用于实时风险描述,云端大参数VLM用于复杂场景离线推理与数据挖掘。
| 阶段 | 代表方法 | 核心机制 | 自动驾驶适用性 |
|---|---|---|---|
| 对比对齐 | CLIP | 图文对比学习,共享嵌入空间 | 零样本分类、检索,弱生成能力 |
| 桥接融合 | BLIP-2 | Q-Former压缩视觉token | 参数量可控,适合端侧部署 |
| 指令微调 | LLaVA | 视觉token直接拼接LLM,指令数据微调 | 场景问答、风险描述能力强 |
| 多图/视频 | Video-LLaVA等 | 时序建模与多帧融合 | 动态场景理解、行为预测 |
五、常见误区与复盘要点
- 误区一:视觉token越多越好。token数量增加会显著提升显存与延迟,且冗余patch可能引入噪声。应根据任务粒度选择重采样策略。
- 误区二:只关注语言输出,忽略视觉 grounding。若模型回答“有行人”但注意力未落在行人区域,说明跨模态对齐不充分,需检查数据与注意力可视化。
- 误区三:指令微调数据与真实场景分布不一致。训练集多为晴天高速,部署到雨夜城区时性能骤降。应建立场景分层采样与持续回流机制。
- 复盘建议:对每次误判,回溯视觉编码器输出、注意力热力图与指令数据样本,定位是感知、对齐还是语言先验导致的错误。