☰
OpenDriveVLA:多阶段训练统一视觉问答与驾驶规划
2026/10/14 8:55:13 网站建设 项目流程

最近在整理自动驾驶大模型相关的工作时,被一个思路扎扎实实打动:与其把一个驾驶模型强行训练成“会开车的问答机器”,不如把“看得懂场景、答得出问题、开得好车”这三件事揉进同一个多阶段训练范式里。AAAI 2026的OpenDriveVLA就是这样一个方向性很强的工作。简单说,它不再把视觉问答(VQA)当成驾驶模型的附属任务,而是把它当作驾驶规划的共同底座,通过分阶段的训练流程把两件事统一进一个模型。这篇文章我想从VLA本身的概念讲起,把OpenDriveVLA的多阶段训练设计、任务统一方式、评测表现和复现踩坑都拆开聊一聊,供想做类似方向的同学参考。

1. 先厘清VLA这个概念:为什么驾驶要用“视觉-语言-动作”而不是传统端到端

1.1 传统端到端驾驶模型的瓶颈

传统的端到端驾驶模型,业内习惯的写法是“传感器输入到控制信号”的直接映射。无论是早期基于CNN的转弯角回归,还是后来基于Transformer的轨迹解码,其基本逻辑都是:输入多视角图像或激光雷达点云,经过网络提取特征,直接输出方向盘转角、加速度或一条目标轨迹。

这套范式在闭环仿真里表现不错,但它有两个绕不开的老问题。第一个是中间表示缺失:模型被训练成输入到动作的黑箱,一旦出现长尾场景,你很难通过它的内部状态判断“它到底有没有理解前车在减速、有没有识别出路肩上的行人”,出了问题也很难定位是哪一层的感知出了问题。第二个是语义能力的稀缺:传统端到端模型无法输出任何自然语言解释,你问它“为什么在这里变道”,它答不上来,更无法执行“找一条更安全的车道”这类指令式任务。

这种缺陷在L2+甚至L3级别的辅助驾驶里尤其明显。系统需要能够告诉驾驶员“我看到了什么、我打算怎么做、为什么这么做”,不是靠一段写死的提示语,而是基于当前真实场景生成动态描述。没有语言能力的端到端模型,是不可能做到这一点的。

1.2 VLA到底是什么

VLA是Vision-Language-Action Model的缩写,中文一般叫视觉-语言-动作模型。它的做法是把一个大语言模型(LLM)当作“中央处理器”,一边接视觉编码器,把图像变成视觉token,一边接动作解码器,把LLM输出的隐向量变成连续动作或离散动作token。

用一个类比来理解:传统端到端模型像是一个只懂“看图转头”的反射回路,而VLA则是一个“先看、再想、再动”的完整认知链路。图像先被视觉编码器变成特征序列,语言模型在特征序列上做推理,推理结果既可以是自然语言回答,也可以是某种形式的动作指令。

这里的关键点在于:语言模型本身携带了大量世界常识与推理能力。例如,当场景里出现一个停在路边的卡车,传统的感知头也许会把它当做一个静态障碍物,但语言模型很容易理解“卡车旁边可能有行人正在穿行”这一隐含风险。这种常识让VLA在处理开放世界场景时天然比单任务模型更有优势。

1.3 为什么不能直接拿通用VLM来开车

有人会问:既然视觉语言模型(VLM)已经能看图说话了,直接拿来开车不就行了?实际操作中你会发现差得很远。通用VLM从来没有被训练过输出连续控制量,它输出的是自然语言token,轨迹坐标对它来说是陌生的符号序列;通用VLM对空间尺度和时间序列的理解也很弱,它能告诉你“前方有一个行人”,但说不出这个行人在以多大的横向速度移动,两秒后会出现在什么位置。

更进一步,通用VLM的训练目标是“答对问题”,而驾驶规划的目标是“安全高效地走完一段路”,两者存在本质差异。OpenDriveVLA实际上是做了一个工程化极强的嫁接:保留通用VLM的理解能力,再为它加上动作头和多任务训练流程,使模型既能回答问题,又能输出规划轨迹。

2. 多阶段训练范式:OpenDriveVLA的核心设计拆成几步

2.1 第一阶段:视觉-语言对齐与预训练

OpenDriveVLA整个训练流程的第一步,是视觉-语言对齐。这一步解决的是“让模型看见的图像,和它已经学会的语言概念能对上”的问题。换句话说,不是拿一套预训练好的视觉编码器直接冻结不动,而是要在大量驾驶场景图文对上做一次领域适配。

驾驶场景图像和通用自然图像有显著差异。车载摄像头的视角、光照条件、运动模糊程度、目标分布密度,都和网上的通用图片数据集不同。如果直接用通用VLM的视觉编码器,模型可能分得清猫和狗,却分不清“旁边车道正在加速汇入的车辆”和“在闸道口排队等待的车辆”,视觉特征缺少驾驶场景特化的语义区分度。

这个阶段通常的做法是冻结语言模型主体,只微调视觉编码器和连接层,用大规模驾驶图文对做一个对比学习或下一句预测类的任务。比较关键的设计是不要让模型在这个阶段就开始输出轨迹,否则会把两个优化目标混在一起。先让它把“看”这个能力专精,后续再谈“开”。

2.2 第二阶段:多任务指令微调,把VQA和规划绑在一起训练

第二个阶段是整个范式的重头戏。在这一阶段,OpenDriveVLA把两类数据混合进同一个训练批次里:一类是驾驶场景的VQA数据,问题包括目标检测、场景理解、行为预测、风险判断;另一类是规划数据,包括历史帧图像、当前状态和对应的专家轨迹。

这里有个很容易被忽视的细节:两类数据不是先训完问答再训规划,也不是交替训练,而是以特定的比例混合在同一个step里。为什么?因为如果先训练VQA再训练规划,模型在学会输出轨迹后会把问答能力忘掉——语言指令微调数据里的“被迫能力迁移”问题在自动驾驶这种高维连续输出场景下会更严重。混合训练让模型每个step都能同时见到两类任务的梯度,尽量平衡两者的参数更新方向。

从损失函数角度看,VQA任务使用交叉熵损失,规划任务则对轨迹坐标做回归损失。OpenDriveVLA在实际实现中通常用一个可学习的损失权重来自动平衡两个任务,而不是手动调一个固定系数。这一点我后面会专门展开讲。

2.3 第三阶段:时序推理与后训练增强

前两个阶段解决的是“单帧图像的语义理解+动作输出”问题,第三个阶段则引入时序建模和推理增强。驾驶决策本质上是一个随时间变化的优化问题,只看当前帧无法判断前车是正要刹车还是志在超车。因此OpenDriveVLA在第三阶段引入多帧历史信息,让模型能够感知运动趋势。

这一阶段还很值得注意的一点是,他们把VQA和规划之间的关系做得更深了一层。不满足于“分别输出答案和轨迹”,而是先让模型生成一个对场景的推理链,比如“前方车辆刹车灯亮起,且与自车距离逐渐缩短,所以自车需要减速并准备变道”,再基于这个推理链输出具体轨迹。这种“先推理后规划”的结构在后面评测里显示出了明显的优势,尤其是在带有遮挡和不确定性的场景下。

3. VQA推理与驾驶规划为什么必须“统一”而不是“拼接”

3.1 两个任务表面上是矛盾的

乍看起来,VQA和驾驶规划属于两种性格完全不同的任务。VQA要求模型输出离散的文本答案,力求简洁可解释;驾驶规划则要求模型输出连续的轨迹坐标,力求精确可执行。把两者放在同一个模型里,很容易让人觉得是为了发论文硬拧在一起,但OpenDriveVLA给出的理由很有说服力:统一不是形式上的便利,而是表征层面的必然。

如果没有VQA任务的约束,模型在提取视觉特征时可以只关注那些对规划有直接影响的区域,比如车道线、前方障碍物、可行驶区域。但一旦加入VQA任务,模型被迫理解图像中更多的细节——交通标志的含义、行人的姿态、其他车辆的类型和意图。这些在短期内看似与轨迹输出无关的信息,恰恰构成了更鲁棒的场景表征,让模型在遇到训练集中没见过的场景时,有更大的概率做出合理决策。

3.2 共享表征带来的“可解释性红利”

当VQA和规划共享同一个视觉-语言骨干网络时,一个直接的好处是:你终于可以用语言去“盘问”这个驾驶模型了。过去的模型你只能看最终轨迹,而现在你可以先问“当前车道前方是否有障碍物”,再问“自车打算跟车还是变道”,模型给出的轨迹不再是一个孤独的预测,而是可以被语言描述验证的行为。

这种可解释性在开发调试阶段价值极大。我在自己复现类VLA架构时深有体会:以前模型在仿真里撞了一次车,只能去翻成千上万帧的日志定位原因;现在可以直接让模型输出它对危险场景的文字描述,经常一句话就点出了误判来自哪里。这种能力不是后期加上去的遮羞布,而是因为VQA任务和规划任务共用feature,才让解释真正做到位。

3.3 统一输出空间是怎么设计的

统一模型有两个层面:语义理解层面的统一,以及输出空间层面的统一。语义理解层面的统一比较直接:共享视觉编码器和语言模型。真正棘手的是输出空间。

常见的做法有两种。第一种是全token化:把轨迹坐标离散成token,和文本token放在同一个词表里,统一做自回归解码。优点是结构简单,缺点是轨迹精度受离散化粒度限制。第二种是“语言头+动作头”解耦:语言模型主体照常输出文本token,同时在最后一层接入一个连续动作回归头。

OpenDriveVLA更偏向于后者,但会在文本解码过程中加入特殊的“任务分隔符”。模型先解码一段场景描述,输出规划分隔符,然后再由动作头基于该时刻的隐向量回归轨迹。这样一来,VQA和规划不是两个并行输出,而是有先后依赖的串行输出,语言推理真正成了规划的前置条件。我在实际操作中觉得这种设计更合理,因为它让“思考然后行动”的因果链真正建立起来了。

4. 评测设计与效果表现:除了终极指标,还要看什么

4.1 驾驶规划评测的层次感

对于驾驶规划模型的评测,不能只看一两个数字。OpenDriveVLA在实验部分采用了多层次的评测体系:开环指标(如轨迹L2误差)、闭环指标(如任务完成率、碰撞率、驾驶得分)、以及行为合理性指标(如变道次数、加速度变化率)。开环指标可以反映模型的轨迹拟合能力,但无法反映模型与环境的交互能力;闭环指标则能直观体现整体安全性。

实用经验是:开环L2误差与闭环表现并不总是一致。有些模型轨迹拟合得很准,一进闭环环境就怂;有些模型开环误差偏大,但闭环时更稳。OpenDriveVLA在开环误差上并非绝对领先,但在闭环碰撞率和任务完成率上提升显著,这和他们强调VQA带来的理解能力是符合的。

4.2 VQA评测不能只看准确率

VQA部分的评测,OpenDriveVLA并不是只使用标准答案匹配的准确率,而是额外引入了人工评测和GPT辅助评测。因为驾驶场景的开放性很强,同一个场景可以有多个合理的答案,例如“前方车辆在减速”和“前方车辆可能准备停车”都是正确的、但对规划有不同含义的回答。

我发现他们这样评测是有道理的。只使用字符串匹配会导致模型倾向于输出“安全但模糊”的答案,比如遇到什么都回答“前方有车辆”,这样准确率可能很高,但对规划任务提供的有效语义信息很少。他们引入语义等价匹配和人工打分,本质上是逼模型输出真正有信息量的描述。这一点在复现时很容易被忽略,但恰恰是VQA与驾驶结合场景下的核心评估难点。

4.3 去掉一个任务,另一个也会变差:消融实验传递的信号

OpenDriveVLA做了几组关键的消融实验,数量不多但每一组都在说明同一个问题:多任务统一是相互增强的。单独去掉了VQA数据后,模型的规划性能明显下降,尤其在“前车切入”和“行人横穿”这类需要预判的场景下,轨迹输出的反应时间普遍变慢。单独去掉规划数据后,模型的VQA答案开始出现常识性错误,比如对“是否允许右转”的回答不再考虑当前信号灯状态。

这个现象从表征学习的角度很好理解:VQA任务给模型提供了强语义监督,让视觉特征更具区分度;规划任务则给模型提供了强行为监督,让语言推理的结果必须回落到可执行维度。两者互相充当了正则项,防止模型在任何一个单任务上过拟合。这也给后来的研究者提了个醒:如果你只是把规划头接到通用VLM后面不做联合微调,那你收获的会是一个“会说话的规划器”,而不是一个真正统一的驾驶智能体。

5. 复现OpenDriveVLA路上的实操经验与踩坑记录

5.1 数据配比:多任务训练的隐形调度器

如果你决定复现这个架构,第一个要面对的坑就是数据配比。我一开始用的是1:1的VQA与规划数据混合,结果训练出来的模型“话很多但开车犹豫”。观察到的行为是:模型会输出一大段正确的场景描述,然后轨迹输出非常保守,几乎不敢变道。这是因为VQA数据里的标注往往偏向于描述静态事实,而规划数据需要模型学会“主动决策”的动态行为,1:1的配比让模型过度偏向描述而非行动。

后来我把比例调成1:3,也就是一份VQA配三份规划数据,情况好了很多。再后来采用课程式调整:训练前20%的epoch让VQA多一些,让模型先把语义理解做扎实;训练中后期逐步加大规划数据的权重,让模型的重心向行为决策倾斜。最终的效果比固定比例混合有明显提升。数据配比这个东西没有标准答案,但你一定要把它当做一个关键超参数来调,而不是随意拍脑袋。

5.2 损失权重与训练稳定性:两种损失互相打架怎么办

VQA的交叉熵损失和轨迹回归损失在梯度尺度上差异很大。交叉熵损失通常是1左右,轨迹回归损失经常在几十到几百之间,如果不做归一化,动作头会把语言头的梯度完全压住。训练几次之后你会发现模型彻底“失语”,回答全是重复的通用词。

我的做法是分头设置优化器参数:语言模型主体用一个学习率,动作头用一个单独的学习率,后者通常要低一个数量级。同时用梯度裁剪把全局梯度范数限制在1.0以内。还有一个值得试试的技巧是“损失归一化”:根据每个batch的实际损失值对梯度做缩放,而不是直接用固定的损失权重。这个技巧在混合了文本和连续输出任务的框架里非常有效。

5.3 评测环境里的坑:坐标系对齐和频次匹配

复现论文时最容易被低估的是评测环境本身。轨迹预测模型输出的坐标往往是在自车坐标系下的相对坐标,而闭环仿真器记录的是全局坐标。如果你直接拿预测轨迹和真实轨迹算L2误差,因为坐标系原点没有对齐,看似很大的误差其实只是原点平移造成的假象。正确做法是先把预测轨迹和真实轨迹都变换到同一个参考坐标系,再做逐点对比。

另一个坑是控制频率的匹配。规划模型可能每隔200毫秒输出一次轨迹,而仿真器的控制指令可能要求100毫秒一次。中间如果不做插值处理,模型输出的轨迹在仿真器里会呈现出明显的锯齿形走线,导致一系列无意义的碰撞。我当时在这上面浪费了两周时间,一直以为是模型没训好,最后发现只是缺了一个线性插值模块。这些细节论文里往往不会写,但实际复现时缺一个都不行。

最后说点个人的感想。OpenDriveVLA让我觉得有价值的不是它有多大的指标提升,而是把“让驾驶模型学会解释自己的行为”这件事从附属功能变成了训练主线。我在实际复现过程中体会到,一个模型真正开始“理解”驾驶场景,往往不是从动作精度变高那一刻开始的,而是从它能用语言准确描述出一个模糊场景、并且据此做出正确轨迹决策那一刻开始的。如果你的实验条件有限,不用急着照搬模型规模,我建议先从小规模数据集上跑通“VQA+规划”的联合训练流程,把数据配比、损失平衡和评测对齐这几个底层问题解决好。这套能力迁移到更大模型上,只是时间问题。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询