📄 论文信息
- 标题:DriveVLM: The Convergence of Autonomous Driving and Large Vision-Language Models
- 来源:上海交通大学 × 蔚来(NIO)
- 关键词:VLM、场景理解、空间推理、双系统架构
- 一句话总结:用 VLM 做自动驾驶的"大脑",理解场景 + 推理决策,再用一个小模型保证实时性。
🤔 要解决什么问题?
传统自动驾驶 pipeline 能做检测、跟踪,但缺乏"理解"和"推理"能力:
- 能识别"前方有锥桶",但不懂"因为施工所以要变道绕行"
- 能检测"雨天",但不会推理"路滑所以要提前减速"
- 能看到"路口有交警",但不会推理"交警手势优先级高于红绿灯"
人类开车靠的是对场景的语义理解和因果推理,而这正是大语言模型(LLM)的强项。规则系统无法枚举所有 corner case,而 VLM 可以借助预训练知识做"举一反三"。
核心问题:如何让 VLM(视觉语言模型)的推理能力服务于自动驾驶决策?更进一步——如何让又大又慢的 VLM 真正跑在车端?
DriveVLM 给出的答案是两步走:先把推理流程结构化(CoT),再用双系统架构解决实时性。
💡 核心思路:CoT 场景推理
DriveVLM 设计了一套**思维链(Chain-of-Thought)**式的场景理解流程,模拟人类司机的思考过程:
描述 → 分析 → 提取 → 推理
先看清楚 → 想明白 → 再行动。这四步不是随意切分,而是对应人类从"看到"到"想到"再到"决定"的认知链条。
M1 场景描述(Describe)
这一步要说清楚"我在哪、周围有什么"。模型输出对自车状态和环境元素的客观描述,分三类枚举:
- 交通参与者:轿车、卡车、行人、骑行者、交警……
- 交通信号与标识:红绿灯、停止线、限速牌、施工标志……
- 道路结构与障碍:车道线、护栏、锥桶、施工围挡……
📍 例子: “本车行驶在城市双向两车道上,前方约 20 米有一辆白色厢式货车正缓慢行驶;右车道被一排施工锥桶占用;路口东侧有一个红绿灯当前显示为绿灯剩余 3 秒;右侧人行道上有两名行人正朝路口走来。”
注意,这一步只描述,不下判断——先把场景"拍下来",避免过早决策漏掉关键信息。
M2 场景分析(Analyze)
在描述的基础上,评估每个目标的状态、属性及其对自车的潜在影响:
- 目标的运动状态:速度、朝向、是否在加速/减速
- 目标的空间关系:相对距离、所在车道、与自车的相对位置
- 目标的潜在影响:会不会变道、会不会闯红灯、是否构成风险
📍 例子: “前方货车速度明显低于本车(约 15 km/h),且其右车道已被锥桶封闭,短期内无法避让;红绿灯即将变黄,本车按当前速度无法在变灯前通过路口;右侧行人虽然还在人行道,但步速较快,预计会在本车到达路口时进入斑马线。”
这一步把"看到的事实"升级成"懂的含义",是从感知到推理的关键过渡。
M3 关键目标提取(Extract)
真实场景里目标几十上百个,全盘推理既慢又没必要。这一步用一套拓扑关系筛出当前最影响决策的目标:
- 与自车交互最强的目标(同车道前车、汇入车辆)
- 具有高风险的目标(行人、电动车、施工区)
- 具有高不确定性的目标(打灯未变道、犹豫的行人)
提取后形成一个关键目标集合,后续推理只围绕它们展开。
📍 例子: 当前关键目标 = {前方货车, 右侧行人, 红绿灯},其余车辆因距离远或车道无关而被剔除。
M4 推理决策(Reason)
最后一步基于上述三个模块的输出,给出明确的驾驶决策和理由:
📍 例子: “由于前方货车速度过低且右车道施工封闭,本车应减速跟车而非强行变道;同时红绿灯即将变黄,应准备在停止线前停车;右侧行人可能在变灯时进入斑马线,需保持观察并随时制动。最终决策:缓慢减速,准备停车。”
这一步的输出不仅是动作,更包含可解释的因果链——这是 VLM 路线相比黑盒端到端的巨大优势。
四步对比一览
| 步骤 | 作用 | 关注什么 | 输出形式 | 例子 |
|---|---|---|---|---|
| M1 描述 | 客观陈述场景 | 元素存在性 | 自然语言清单 | “前方有施工锥桶,右侧有行人” |
| M2 分析 | 评估状态与影响 | 运动/空间关系 | 带属性的描述 | “锥桶占据左车道,行人靠近路边” |
| M3 提取 | 聚焦关键目标 | 拓扑重要性 | 目标集合 | “施工区域是当前主要风险” |
| M4 推理 | 得出决策 | 因果链 | 决策+理由 | “需减速并变道至右车道” |
为什么不直接"看图出决策"?
一个自然的疑问:为什么不让 VLM 直接从图像输出动作? 实验表明,直接映射有两个问题:
- 幻觉严重:模型会编造场景中不存在的东西(凭空出现一辆车)
- 推理跳跃:跳过中间步骤,决策缺乏依据,出错难定位
CoT 把一个大跳跃拆成几个小步骤,每步可验证、可监督,既提升准确率,也带来可解释性——这也是 LLM 领域"think step by step"在驾驶场景的迁移。
⚙️ 关键创新:DriveVLM-Dual 双系统架构
VLM 虽然聪明,但推理慢(单次推理几百毫秒到数秒),无法满足车端实时性(规划通常需要 10Hz+)。作者借鉴卡尼曼《思考,快与慢》中的双系统理论,设计了 DriveVLM-Dual:
- 🐢 慢系统(VLM 大模型):深度推理,频率低(几秒一次),处理复杂/罕见场景
- ⚡ 快系统(轻量网络):高频运行,实时输出控制,处理常规场景
两者通过触发机制和条件融合协同工作。
快系统:高频实时
快系统是一个轻量化 CNN/Transformer,输入多帧图像和传感器数据,直接输出轨迹或控制量。它的特点:
- 频率高:10Hz 以上,保证平顺性和安全性
- 覆盖常规场景:直线行驶、跟车、普通变道等
- 不擅长长尾:对施工、复杂路口、突发情况理解不足
可以理解为" reflex 反射弧"——大部分时间它在开车。
慢系统:低频深度推理
慢系统就是上文的 VLM + CoT,输出的是高层语义指导:
- 场景描述(M1)
- 关键目标集合(M3)
- 高层决策意图(M4,如"减速准备停车"“变道绕行”)
注意慢系统不直接输出最终轨迹,而是给快系统当"指挥官"。
关键场景触发机制
慢系统很贵,不能一直开。**触发器(Trajectory Trigger)**负责判断"当前是否需要请慢系统出山":
| 触发条件 | 说明 |
|---|---|
| 目标突变 | 前车急刹、有车强汇入、行人闯入 |
| 特殊路况 | 施工区、事故、临时管制 |
| 复杂拓扑 | 多岔路口、无保护左转、环岛 |
| 异常天气 | 雨、雪、雾影响感知 |
| 快系统置信度低 | 快系统对自己的输出"没把握" |
| 定时兜底 | 即使无异常,每隔几秒也跑一次 |
触发器本质上是一个轻量分类器,把"是否复杂"做成一个可学习的判断,避免人工写死规则。
双系统的融合方式
慢系统被触发后,它的输出如何"指导"快系统?大致是条件注入的思路:
慢系统输出(描述/关键目标/决策意图) ➜ 编码为条件向量 ➜ 作为额外输入拼到快系统 ➜ 快系统输出最终轨迹
这样设计的好处:
- 快系统始终在跑,保证实时性
- 慢系统的指导像"提词器",把语义信息注入到低层规划
- 即使慢系统偶尔延迟,快系统也能维持基本安全
| 维度 | 慢系统(VLM) | 快系统(轻量网络) |
|---|---|---|
| 频率 | 低(~0.2–1Hz) | 高(10Hz+) |
| 算力 | 大 | 小 |
| 擅长 | 语义推理、长尾 | 实时反应、常规场景 |
| 输出 | 高层决策指导 | 轨迹/控制量 |
| 类比 | 人脑"深思" | 人脑"反射" |
这套设计的精髓在于:用频率解耦"深度"和"速度"——重要的不是让 VLM 跑得多快,而是让它在关键时刻"点一下"。
🧪 训练策略与数据
DriveVLM 不只是"调一个 GPT-4V",而是有完整的训练 pipeline。
基座模型选择
作者选用 Qwen-VL 系列作为基座(实验中也对比了 InternVL 等),原因:
- 中文场景描述能力强(适配国内路况标注)
- 开源可微调,便于车端部署
- 视觉编码器(ViT)与 LLM 部分解耦,便于优化
视觉-语言对齐
VLM 预训练时见的多是"网络图片 + 描述",驾驶视角图像与日常照片差异巨大(鱼眼、多摄、低光照)。对齐的关键:
- 视觉编码器用驾驶图像继续预训练,让 token 编码适配车端视角
- 多视图融合:把环视多摄像头图像分别编码后拼接,让模型有 360° 视野
- 时序信息:用少量历史帧提供运动线索,弥补单帧看不出速度的问题
训练阶段与 loss 设计
训练分多个阶段,逐步解锁能力:
| 阶段 | 数据 | 目标 | loss |
|---|---|---|---|
| 阶段 1:对齐预训练 | 大量驾驶图像 + 简短描述 | 视觉-语言对齐 | 图文对比 + 描述生成(CE) |
| 阶段 2:CoT 监督微调 | 标注的四步推理样本 | 学会 Describe/Analyze/Extract/Reason | 逐步骤交叉熵(SFT) |
| 阶段 3:决策对齐 | 带决策动作的样本 | 让推理对齐最终动作 | 动作回归 + 语言 CE 联合 |
几个关键设计:
- 逐步骤监督:每一步(M1–M4)都有独立标注和 loss,而不是只监督最后决策。这强迫模型"过程正确",显著降低幻觉
- 关键目标提取的可学习性:M3 的输出用集合匹配 loss,允许目标顺序不固定
- 高效微调:大模型部分用 LoRA / QLoRA,只训少量参数,降低显存压力
- 快系统单独训练:快系统是独立的轻量网络,用海量驾驶轨迹数据训练,与慢系统解耦
🏭 Meta-DriveVLM 数据生成引擎
CoT 监督需要大量带四步推理标注的数据,人工标注又贵又慢。作者提出 Meta-DriveVLM,用 VLM 自己自动生成训练数据——一个"数据飞轮"。
工作流程
采集驾驶片段 ➜ 关键帧抽取 ➜ 用强 VLM(如 GPT-4V / 标注大模型)生成四步 CoT ➜ 质量过滤 ➜ 入库用于训练小模型
关键技术点
- 关键帧采样:不是每帧都标注,而是按"场景变化点"采样(变道、加减速、信号变化),提升数据效率
- 多模型交叉验证:用多个 VLM 生成描述,取一致部分作为伪标签,过滤单模型幻觉
- 结构化提示词:用固定 schema 约束输出格式,保证 M1–M4 结构整齐,便于下游训练
- 人工抽检:抽样人工复核,估算伪标签准确率,反过来迭代提示词
数据飞轮的意义
Meta-DriveVLM 的真正价值在于可规模化:
- 人工标注一天几百条,自动生成可达几万到几十万量级
- 新场景(新城市、新天气)只要采集视频,就能快速产出标注
- 形成"采集 ➜ 生成 ➜ 训练 ➜ 部署 ➜ 再采集“的闭环
| 维度 | 人工标注 | Meta-DriveVLM 自动生成 |
|---|---|---|
| 速度 | 慢(小时级/条) | 快(秒级/条) |
| 成本 | 高 | 低(摊销算力) |
| 一致性 | 因人而异 | 模板统一 |
| 准确性 | 高(专家) | 中等(需过滤) |
| 规模上限 | 千-万 | 万-百万 |
这也是论文把"数据"作为独立贡献的原因——VLM 落地驾驶的瓶颈不在模型,而在数据。
🔬 实验与结果
评测数据集
作者在多个 benchmark 上评测:
- DriveVLM 自建数据集:覆盖施工、复杂天气、复杂路口等长尾场景,带 CoT 标注
- nuScenes:通用感知与预测基准,做对比验证
- SUP-AD 等私有仿真平台:闭环/开环规划评测
关键指标
主要从两个维度看效果:
1. 推理与决策质量(开环)
| 方法 | 场景描述准确率 | 决策合理性(人工评分) |
|---|---|---|
| 纯感知 + 规则 | — | 基线 |
| GPT-4V 直接推理 | 中(幻觉多) | 中 |
| DriveVLM(CoT) | 高 | 高 |
2. 规划精度(L2 误差 / 碰撞率)
DriveVLM-Dual 在长尾场景下相比纯快系统基线有明显提升,同时双系统设计把平均延迟控制在可接受范围。具体数值随 benchmark 差异较大,建议查原论文 Table。
经验性结论:在常规场景下双系统与纯快系统持平,在长尾场景下显著优于纯快系统——这正是慢系统被触发的时候。
与 GPT-4V 直接做驾驶推理的对比
一个常见疑问:直接用 GPT-4V 不就行了? 实测下来差距明显:
| 维度 | GPT-4V 直接推理 | DriveVLM |
|---|---|---|
| 空间感知 | 弱(距离/车道判断常错) | 强(驾驶数据对齐过) |
| 幻觉 | 严重(编造目标) | 受 CoT 监督约束,显著降低 |
| 延迟 | 数秒(云端调用) | 双系统可达车端实时 |
| 可控性 | 黑盒,难微调 | 可微调、可注入业务约束 |
| 成本 | 每次调用付费 | 一次性部署 |
| 离网可用 | 否(依赖云) | 是(本地部署) |
核心结论:通用 VLM 缺的不是智力,而是"驾驶常识"和"车端可部署性”,这正是 DriveVLM 微调 + 双系统要解决的。
失败案例
论文和分析中常见的失败模式:
- 夜间/强逆光:视觉编码器失效,描述漏检关键目标,导致 M1 就错了,后续连锁出错
- 罕见交通手势:训练数据少,模型识别不准
- 远距离小目标:分辨率不足,行人/电动车在 M3 漏提取
- 慢系统延迟过大:触发后慢系统没及时返回,快系统只能"盲开"几帧,存在安全隐患
- 过度推理:简单场景也被触发慢系统,造成算力浪费和平顺性下降
这些失败案例提示:触发器的设计、视觉编码器的鲁棒性、慢系统的延迟预算是工程落地的三大关键。
🎯 这篇论文的意义
- 范式验证:证明了 VLM 的推理能力确实能提升自动驾驶决策质量,尤其在长尾场景
- 工程可行:双系统架构给出了一套"VLM 落地车端"的现实方案,而不只是 demo
- 数据飞轮:Meta-DriveVLM 展示了用 VLM 反哺数据生成的可能性,把"数据瓶颈"变成可工程化的 pipeline
- 可解释性:CoT 输出天然带因果链,对安全审计和事故复盘有重大价值
它是 VLA 这条路线在自动驾驶领域的重要奠基工作之一。
🔗 相关工作延伸
| 工作 | 团队 | 与 DriveVLM 的关系 |
|---|---|---|
| EMMA | Wayve | 更激进的端到端多模态大模型,统一感知+规划 |
| DriveVLM-Dual | 本文 | DriveVLM 的实时化版本 |
| LMDrive | 田野 | LLM 辅助的端到端驾驶 |
| π0 / π0.5 | Physical Intelligence | 通用机器人 VLA,Flow Matching 动作头设计可借鉴 |
| GPT-4V / Qwen-VL | OpenAI / 阿里 | 作为基线或数据生成器被对比/使用 |
📝 个人思考
这篇论文最打动我的不是某个模块设计,而是**“用人类思考方式来设计系统”这个理念。CoT 推理 + 双系统架构,本质上是在用 AI 架构模拟人类认知机制——人类开车也是"平时靠反射、遇到复杂情况才动脑子想"。这种仿认知结构**的设计哲学,比单纯堆参数或堆数据更有长期价值,因为它对齐了我们已知的最优驾驶智能体(人类司机)的工作方式。
对工程实践的第一点启发:VLM 落地车端的核心矛盾是**“聪明"和"快"不可兼得**,而双系统是一种通用的解法模板——不只是自动驾驶,机器人、具身智能、甚至工业控制都能用。关键不是把大模型蒸馏到多小,而是想清楚**“哪些决策需要深思、哪些只需要反射”**,把算力花在刀刃上。这个"重要性与算力的匹配"思想,比具体网络结构更值得迁移。
第二点启发在数据侧。Meta-DriveVLM 让我意识到,大模型时代自动驾驶的护城河正在从"模型结构"转移到"数据闭环”。谁能把"采集 ➜ 自动标注 ➜ 训练 ➜ 部署 ➜ 再采集"这条飞轮转得更快更稳,谁就有优势。CoT 的结构化输出在这里起到关键作用——它不仅是推理范式,更是一种数据 schema,让自动生成、人工校验、模型训练三者能对齐。这一点上,DriveVLM 的工程价值可能比它的模型设计更深远。
最后一点是对可解释性的体会。监管和安全验证是自动驾驶绕不开的坎,而黑盒端到端最大的软肋就是出事说不清。CoT 天然带因果链:“我看到了什么 ➜ 我判断了什么 ➜ 所以我怎么做”,这种可追溯的决策日志在事故复盘里价值巨大。我倾向于认为,未来真正能大规模上车的系统,一定会在"端到端的效率"和"CoT 的可解释"之间找一个平衡点——而 DriveVLM 给出了一个相当有说服力的左脚踩右脚的起点。
📖 这是论文精读系列的第 1 篇。下一篇你想看哪篇论文的解读?欢迎留言。