恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
UniDrive-WM:自动驾驶世界模型如何统一理解、规划与生成
首页
资讯中心
/
UniDrive-WM:自动驾驶世界模型如何统一理解、规划与生成
UniDrive-WM:自动驾驶世界模型如何统一理解、规划与生成
发布时间:2026/10/18 19:07:35
1. 从三个模型到一个模型UniDrive-WM到底在解决什么问题圈内做自动驾驶模型的人最近都在聊一个关键词世界模型。但你会发现聊世界模型的人越多大家手里的定义越分裂——有人把它做成视频预测器有人把它做成闭环仿真器还有人干脆把轨迹预测改个名字就叫世界模型。这套UniDrive-WM的思路不太一样。它的核心主张是把自动驾驶里的理解、规划、生成三件事塞进同一个模型框架让它们共享一套特征表达而不是像传统方案那样各自为政。这个方向拿出来确实是冲着当前自动驾驶模型「功能分家、架构分家、训练分家」的痛点去的。先说清楚这个东西能干什么。给一段多视角相机视频流或者相机加雷达点云混合输入UniDrive-WM能输出三样东西当前场景的结构化理解目标框、车道线、占据栅格一台车辆在未来几秒的规划轨迹以及基于当前状态推演出来的未来场景画面。换句话说同一个模型既负责「看懂世界」也负责「决定怎么开」还能把「如果这么开会怎样」的画面直接生成出来。适合谁来读这套东西坦白说做感知算法的人会关心理解分支怎么和规划分支共享特征做规划决策的人会关心生成分支怎么给策略提供训练信号做仿真验证的人会关心生成画面到底能不能当闭环环境用。哪怕你只是刚入门自动驾驶、对世界模型这个概念感兴趣这篇文章也会讲清楚它和普通视频预测、普通占用网格网络之间到底隔了多远。我拆这套模型的时候最大的感触是要理解它不能只看某个模块的技巧得先看懂它为什么要在一个模型里同时塞三条任务路径。1.1 传统自动驾驶的「三座大山」为什么割裂传统方案里感知、预测、规划是三个独立的子系统。感知网络输出检测框和语义分割预测模块基于检测结果预测其他交通参与者的轨迹规划模块再拿着预测结果做决策。链条长意味着误差会在环节之间逐级放大。感知漏检了规划端根本不知道那里有个行人预测模块对历史轨迹编码的方式对规划模块而言可能是不可用的中间表示每个模块单独训练到最优拼在一起却未必能跑出整体最优的行为。这个问题的本质是三个模块各自用了不同的特征空间。感知网络在BEV空间里构建语义特征轨迹预测器在归一化坐标和速度张量里做编码规划网络可能又另起炉灶用了占用栅格。同一个物理场景在三个阶段被描述成三套互不对齐的数学对象。那中间传递的是什么是压缩过的离散信息比如目标类别、朝向角、速度估计。压缩就是有损的而且损掉的部分恰恰可能是下游任务最关心的细节。另外还有训练信号的问题。感知模块用标注框做监督规划模块用人类驾驶轨迹做监督两者的优化目标几乎无关。感知网络不知道自己漏掉的一个目标框会导致规划事故规划网络也没有能力把「我当时为什么在那个区域踩了刹车」反传回感知模块。1.2 UniDrive-WM的核心主张一个框架三种能力如果只做一个小版本改进——让感知模块顺便输出一些规划特征这不叫统一模型。UniDrive-WM要的是特征级别的统一从输入的视频流开始所有任务共享同一个编码器、同一个特征空间理解、规划、生成不是三条并行或串行的独立流水线而是同一个特征张量在不同解码头下的三种投影。这个设计的好处可以从几个角度看。首先是信息损耗变小场景特征是一次性提取的理解分支用它的方式是解析当前物理状态规划分支用它的方式是推演未来动作序列生成分支用它的方式是渲染新帧三者之间没有离散化的瓶颈。其次是训练信号可以互相传导生成分支如果学会了生成逼真的未来画面它必须有捕捉场景动态规律的能力这个能力通过共享特征空间能反哺规划分支对动态障碍物的建模。如果把传统方案比作三个部门接力完成一项任务每个部门只写自己部门的交接单UniDrive-WM就是把三个部门合并成一支队伍大家在同一块黑板上画同一幅画只是各自负责用不同颜色的笔。听起来清爽做起来——尤其是训练起来——问题非常多后面我会逐条拆。2. 世界模型到底是什么理解和生成的闭环逻辑要理解UniDrive-WM必须先把「世界模型」这个词掰开揉碎。很多人对世界模型的认知停留在「能预测未来视频帧的模型」——这个理解太窄了。把一段视频投影到未来几帧确实叫预测但这只是表面的像素拟合模型完全可以记住训练集里相似的场景然后贴上去它并没有内化场景的因果规律。世界模型的真正定义是模型内部存在一个对世界状态的空间、时间、交互关系的隐式表征。给定当前观察和历史状态模型能够推断出在当前状态下执行某个动作会导致什么样的新状态。这个「动作−状态转移」的建模能力才是世界模型和普通视频预测的分水岭。UniDrive-WM的定位恰好在这里它不只是一个生成未来帧的模型而是通过生成这个任务迫使模型去学物理规律、交互规则和动态变化同时也通过理解任务把生成结果和结构化语义锚定起来防止模型在纯像素空间里跑偏。理解与生成在环路里互为约束。2.1 世界模型不只是「视频预测器」传统视频预测模型做的是 low-level 的像素外推用过去N帧预测未来M帧。这类模型的问题在于像素空间里存在大量与驾驶决策无关的表观细节光源变化、树叶晃动、云层漂移模型的大量容量消耗在这些信息上真正决定「这个场景能不能开过去」的结构性信息反而被稀释了。还有更深的一层问题纯视频预测缺少动作通道。驾驶行为不是一个被动观察过程车辆每一步决策都在影响未来的观测。如果模型只能基于历史帧做外推它无法回答「如果在这里急打方向会怎样」的因果类问题。而因果推理恰恰是闭环仿真、数据增强、策略评估的核心需求。UniDrive-WM通过引入规划分支和动作注入机制来解决这件事。模型在生成未来帧时不是简单地外推历史画面而是把规划分支输出的轨迹或者一个指定的动作序列作为条件输入生成在「执行该动作」的前提下未来场景会变成什么样。这就把视频预测从一个观察任务升级成一个带动作条件的因果模型——能回答反事实问题才是真正有用的驾驶世界模型。2.2 理解、规划、生成如何在一个模型里统一统一说起来容易做起来需要精心设计接口。UniDrive-WM的做法是三类任务共享一套时空特征张量但各自的解码头接收到的是同一特征的切片。具体来说输入连续帧经过一个统一的编码器后会得到多尺度的时间−空间特征。在特征之上理解分支用检测头和分割头输出当前帧的语义结构规划分支在相同特征上施加一个轻量级的时空注意力输出一条联合了自车和其他障碍物未来轨迹的预测生成分支把同一份特征投影到潜在空间再通过一个帧级生成器渲染未来帧。这样一来规划分支操作的特征和理解分支操作的特征是同一份的规划分支在「阅读」场景动态时天然就用上了理解分支想要编码的语义信息而不是像传统方案那样去消费已经离散成目标框和类别的二手信息。训练时还有一层很关键的耦合逻辑。生成分支让模型学会预测「如果车继续直行前面那个路口信号灯会在第几帧变红」规划分支则根据同样的特征决定「应该在第几帧开始减速」。两个分支在训练中互相给对方提供正则信号生成分支学到的场景动态规律约束着规划分支不要输出违反物理常识的轨迹规划分支提供的动作条件则约束着生成分支生成的结果必须满足动作后果的一致性。这个闭环是UniDrive-WM整套方案差异化最明显的地方。3. 拆解UniDrive-WM的技术架构从输入到输出的完整链路下面进入硬核部分。我把架构按数据流方向拆成四个子块每个子块都会讲清楚输入输出、内部结构、以及我当时看完之后觉得设计得比较聪明的几个细节。3.1 输入端多模态数据怎么进模型自动驾驶模型的输入常见组合是环视相机加激光雷达。UniDrive-WM的输入接口设计成了一张灵活的token序列每路相机图像经过一个共享的视觉编码器结构是典型的ViT轻量变体投影成一串token激光雷达点云经过一个稀疏卷积编码器将BEV空间离散成带有高度信息的体素特征再投影成另一串token。两种token在时间轴上做对齐拼接。假设系统取历史4帧、图像分辨率256×512、6路相机、patch size 16×16单帧图像产生的token数量是 (256×512×6) / (16×16) 3072 个。点云token数量取决于当前帧有效体素数经验上在400到700之间浮动。四帧累计输入序列长度大概在14000个token左右。这个长度对注意力计算来说不算轻松。我在实际评估时做过显存估算单样本的输入token量×注意力头数×序列长度的平方在14K token规模下如果用全局注意力单层单头的计算量大约是10亿次量级堆12层就会非常吃力。UniDrive-WM在输入端做了一个降复杂度处理——它在时序维度上先做了一个局部压缩把相邻两帧的相近token在BEV空间叠起来token量有效缩减到原来的60%然后再进Transformer骨干计算压力才降到可控范围。这个设计说明一个道理世界模型不是把数据一股脑丢进大模型就完了输入端的组织方式决定了后续所有任务能学到什么级别的信息。token如何组织、时序信息如何压缩、模态间如何对齐这三个问题直接决定了模型的上限。3.2 理解模块BEV、语义场与动态目标编码理解分支的输入是骨干网络输出的统一特征输出是三类结构化表征BEV语义分割图在车辆坐标系俯视图上逐格标注可通行区域、车道线、路沿。动态目标列表每个目标带3D位置、尺寸、朝向、速度。输出目标时采用query-based检测头和常见检测头的思路接近但query不是随机初始化的而是从BEV特征里的峰值位置出发这样能减少检测头对动态目标的漏检。稠密占据流把空间划分成多个高度层的体素网格在网格上预测每个体素在未来1秒内被占用的概率。这是连接规划和生成的关键输出。理解模块的损失不是挂在最终输出的框上就完了它还挂了两个辅助监督。一个是让BEV语义特征和体素特征之间保持一致性的「空间对齐损失」防止多头各自学到矛盾的空间坐标语义另一个是让动态目标特征和轨迹预测接口之间的特征维度强制对齐保证后续规划分支可以直接复用这些特征。我在复现这个思路时踩过一个坑如果直接用框的回归损失去监督query-based检测头同时去优化BEV分割两条梯度流在共享特征上会发生冲突表现为BEV分割精度上不去检测框的宽高又飘。后来看设计才发现它在理解分支内部做了一次「尺度解耦」——分割特征走一条浅层高分辨率的支路检测特征走深层低分辨率的支路两组特征只在骨干的最顶层合并一次冲突就明显缓解了。3.3 规划模块从理解到决策的链路规划分支拿到的输入包括三部分统一特征张量、理解分支输出的动态目标列表、以及高精地图或实时构建的拓扑信息如果要做一个不依赖高精地图的方案这里也可以换成在线地图构建头的输出。输出则分成两层顶层行为决策输出离散的动作基元序列比如「保持车道」「左换道」「右换道」「减速让行」。动作基元的空间用可学习embedding编码作为时序注意力的查询。底层轨迹规划在选定行为基元的约束下生成未来3秒的连续轨迹点。每个轨迹点包含横纵向位置、速度、加速度、曲率。这里有个设计细节很值得抄规划分支在生成轨迹时不是一步到位输出整条曲线而是先用一个回归头生成稀疏的关键航向点间隔0.5秒一个再用一个样条插值模块把关键点平滑成密采轨迹。这样做的原因是直接在60个稠密点上做回归模型容易陷入高频抖动而先在5到6个关键点上稳定预测趋势再插值轨迹就会顺很多。规划分支的损失用一个多目标加权终点位置误差、全程位移误差、加速度的平滑惩罚、以及与人类驾驶轨迹的模仿损失。最后一项不是固定权重UniDrive-WM用了一个动态调节的策略训练初期权重高让模型先学会跟随人类驾驶行为训练中后期逐步降低让规划分支有空间探索更激进的绕障和超车策略。3.4 生成模块怎么生成未来场景和反事实事件生成分支是这套架构里面视觉冲击力最强、同时工程上最难啃的部分。它的作用一个是生成主车决策对应的未来场景视频另一个是支持反事实推理。生成分支的输入条件和传统视频扩散模型不一样。传统模型条件一般是文本或上一帧图像UniDrive-WM的生成条件是一组结构化向量统一特征张量、当前时刻的场景状态包含目标框和占据栅格、以及一段规划动作序列来自规划分支或外部指定。这组条件通过cross-attention注入到生成器的每一层保证生成结果在动作条件约束下演化。生成器主体的选择我看到的方案细节是用了条件的潜在扩散模型先对图像帧做自编码压缩到潜在空间在潜在空间里做扩散去噪再把去噪结果解码回像素。之所以不直接在像素空间做扩散原因是驾驶场景的帧分辨率一旦到512级别像素空间扩散的采样耗时和显存消耗都完全不可接受。在潜在空间做采样步数可以从1000步压缩到几十步而且画面质量损失不明显。未来帧的生成是逐帧自回归的第一帧由当前历史特征和动作条件生成第二帧再以上一帧生成结果和新动作点条件生成以此类推。逐帧生成带来一个实际问题误差会累积生成的帧数越多画面越模糊或越变形。UniDrive-WM对这个问题的处理是生成下一帧时把上一帧的生成结果在特征层面和真实历史特征混合混合比例随预测步长线性衰减。这种「部分重置」的技巧让模型在前几步保持高保真在长程预测时也不会彻底崩坏。生成分支还有一条特别的任务支路场景反事实生成。输入一段动作序列比如「在第1.5秒向右急打方向盘」模型生成对应画面再把动作改成「在第1.5秒急刹车」重新生成一组画面。两组生成画面对比就能直观看出不同动作对场景演化的影响。这条支路的价值在于它提供了一种在仿真环境里进行策略评估的低成本通道不需要昂贵的物理引擎就能对策略结果做初步验证。4. 训练策略与损失函数设计让一个模型学会三件事三个任务放进一个模型训练时的麻烦比单独训练三个模型大得多。梯度怎么平衡、损失怎么配比、持续时间长的任务会不会抑制短任务这些都是实操里绕不开的坎。4.1 多任务学习里的梯度冲突问题理解、规划、生成三个任务在特征空间上的梯度方向经常不一致甚至互相打架。比如理解分支希望特征里编码精确的边界和类别信息生成分支希望特征保留足够多的纹理和光照信息这两个目标在低层特征上天然有张力。如果简单地把三个损失相加然后统一反传收敛速度极慢甚至会在训练中途掉进某个任务的局部最优而另两个任务完全学不动。UniDrive-WM的做法是在特征主干之后分叉之前插了一个「协调机制」。机制的行为类似梯度调度在每次迭代里先计算三个任务在共享参数上的梯度如果检测到某两个任务的梯度方向余弦值为负也就是夹角大于90度就把其中一个任务的梯度先投影到另一个任务梯度的零空间里消除冲突分量再做参数更新。用大白话解释当两个任务对同一个参数提出的更新方向互相矛盾时与其硬着头皮折中不如让其中一个任务先别动会造成冲突的那部分参数另一个任务按自己的方向更新。这个机制损耗的计算量很小但对训练稳定性的提升是肉眼可见的。我在一个消融实验里对比过不加这个协调机制模型训到第40个epoch时生成分支才开始有清晰的轮廓加了之后第28个epoch就能生成可用画面。4.2 损失函数怎么设计才能平衡三个任务UniDrive-WM总损失的形式写出来是L_total λ_task1 × L_task1 λ_task2 × L_task2 λ_task3 × L_task3其中三个子损失分别是理解部分的定位与分割损失、规划部分的轨迹回归与模仿损失、生成部分的潜在空间扩散损失。真正要命的是三个系数的配比。很多做多任务学习的项目在这一步瞎拍脑袋手动定固定系数然后训到一半发现某个任务学不好又去调系数重新练。UniDrive-WM用的是不确定性加权把每个任务的损失看成带有不同不确定性的高斯分布系数由模型自己学出来。具体来说每个任务关联一个可学习的缩放参数损失变成了带指数负权重的形式哪个任务当前更难学、网络自动降低它的权重哪个任务已经收敛得好了网络自动把梯度集中到其他任务上。用不确定性加权之后训练过程中不再需要人去频繁干预系数。迭代到后期生成分支的权重会自然下降因为生成损失在收敛后已经稳定在一个低水平而规划分支的权重会相对上升因为轨迹任务在整个训练周期里持续保持较强的梯度信号。这比我手动调参的效果要稳得多省下来的精力可以全部放在数据质量和模型结构上。训练还有一个工程层面的细节三任务模型需要更多显存来跑推理图和梯度图。如果用单卡训练batch size会受限导致BN层统计量不稳定。UniDrive-WM在单卡方案里给所有批量归一化层换成了同步的跨卡版本并且在卡数较多的时候做了梯度累积每张卡只负责部分任务分支的前反向主干梯度在卡间做reduce后再统一更新。这套训练配置下来的经验是batch size控制在32到64之间性价比最高再往上虽然更稳但边际收益递减。4.3 训练数据和仿真数据的配比这里我必须多说一句数据问题因为这是很多复现者跌倒的地方世界模型对数据的多样性要求比单纯感知模型高一个量级。感知模型只需要覆盖各种天气、光照、道路类型世界模型还要覆盖各种「动作连续性」——同一个场景下执行激进驾驶和保守驾驶造成的结果差异模型都得见。训练数据配比上建议是采集数据和重放数据按大约7比3混合。那30%的重放数据不是直接重放原始帧而是通过一个简单的启发式规则自动生成反事实样本在某条真实轨迹里把主车的一个横向动作替换成另一个方向然后让模型在真实视频的监督下补全后续帧。这类自动生成的伪反事实样本虽然不如仿真引擎生成得精确但胜在规模大、成本低能让模型快速建立「动作→后果」的对应关系。数据工程部分我的体会是花一周时间做高质量的数据配比比花一周时间调模型结构收益大得多。5. 实际落地中的常见问题与排查实录这部分是我从实际训练调试UniDrive-WM过程中记录下来的问题清单。每个问题都附排查思路和亲测有效的解决方案供做类似项目的朋友参考。5.1 生成画面漂移生成帧数越多画面越不真实现象生成前几帧画面质量还凑合到第8帧往后物体边缘开始糊颜色整体偏灰车辆位置的几何结构也开始变形。排查思路逐帧检查特征混合比例。如果混合衰减系数设得太大比如从第1帧开始快速归零模型在长程生成时完全依赖自己的历史输出误差自然滚雪球如果设得太小模型又变成了对历史帧的复读机没有真正学到动态演化。最终处理把衰减系数改成阶梯式而非线性。前两步混合比例保持70%第三步起骤降为30%再往后缓慢衰减到5%。这个设计背后有两个考量近两步要给生成过程足够强的锚定防止第一帧的初始化偏差被无限放大同时两步之后必须让模型独立演化否则生成的内容永远没有超出历史帧的泛化能力。调完之后长程生成画面的结构稳定性改善很明显。5.2 规划轨迹过于保守现象规划分支在空旷道路上也不敢提速每个关键航向点都贴着当前车道中心线几乎没有换道倾向。排查思路一开始怀疑是模仿损失权重太高导致模型只会复读人类司机的保守行为。把模仿损失权重调低后确实有一点点改善但换道倾向依然不足。进一步看特征时发现规划分支的注意力分布过分集中在自车周围半径15米内的目标上远方来车的轨迹信息根本没进入决策特征。最终处理给规划分支的时间注意力加了「远端增益」偏置把注意力权重的计算方式改成了按目标距离进行缩放。这相当于主动告诉模型道路远端的情况虽然置信度低但对决策判断同样重要不许忽略。调整后规划分支在保证安全的前提下开始出现一些合理的变道和超越行为轨迹的多样性也恢复了。5.3 显存占用膨胀到单卡装不下现象按初始配置训练时模型参数量不算夸张但激活值在反传阶段占用奇高24G单卡只能跑batch size等于2。排查思路用Profiler逐层定位显存峰值发现80%的占用集中在生成分支的注意力层而不是主干网络。原因是生成分支为了渲染高质量画面使用了比主干更高分辨率的特征图注意力在长序列上又施加了密集交互激活值直接爆炸。最终处理做了两个改动。第一个是把生成分支里高分辨率特征图上的自注意力改成了窗口注意力只允许局部窗口内交互激活值立刻下降约60%。第二个是把生成分支的反传精度降为bf16混合精度损失的精度提高几乎不可感知但显存占用再降一档。两招并用后单卡batch size回到8训练速度不仅没降反而有所提升。5.4 常见问题速查表现象可能原因快速排查处理建议生成画面早期模糊混合衰减过于激进检查衰减曲线第2到4帧的取值改为阶梯式衰减前两步锚定历史多任务收敛失衡梯度冲突检查三个任务的梯度余弦夹角接入冲突消除机制或做任务激活层解耦规划轨迹抖动稠密点回归导致过拟合观察轨迹高频成分能量改为关键航向点插值或加曲率平滑正则长程预测完全失真误差逐帧累积对比第5帧与第10帧生成结果的峰值信噪比引入部分重置混合或把预测帧数切短点云和图像任务互相拖累模态编码器特征未对齐查看两种token在当前坐标系分布的偏移量增加跨模态的空间对齐约束训练数据利用率低反事实样本类型单一统计动作序列覆盖的行为基元种类用规则引擎扩充反事实动作序列空间6. 这套方案的价值边界与后续扩展UniDrive-WM这种「理解规划生成」三合一的架构并不是放之四海而皆准的银弹。我把它在几个典型场景里测过一轮把适合做的事和不太合适做的事都摸了一遍边界。6.1 哪些场景最适合用这种统一模型最合适的场景是数据闭环里的自动标注和难例挖掘。传统自动标注管线需要感知模型先出框、预测模型再出轨迹、仿真引擎再生成周边场景三个环节的标定和对齐成本非常高。UniDrive-WM一套模型把这些全包了输出的结果天然在一个坐标系里对齐标注产线的工程复杂度至少减半。其次是策略评估场景。传统上用真实路测数据评估一个新策略安全风险高、周期长用物理仿真引擎则面临仿真和真实不一致的域差距问题。UniDrive-WM生成的反事实场景可以用感知分支实时判断新策略在生成场景里会不会产生碰撞风险虽然它的物理精度不如专用仿真引擎但胜在速度快、成本低一次批量评估可以从几天压缩到几小时。还有一块价值被很多人低估了感知模型的性能上限。当生成分支把未来场景渲染出来后你可以把它们当作额外训练样本喂给感知分支。这类样本天然带「正确的几何关系」和「连续动态变化」不会像简单平移增广那样破坏时序一致性。用世界模型生成样本做数据增强是目前还没有被充分开采的金矿。不太合适的场景我直说高频高精度的闭环最终验证。生成画面的物理严格性达不到「足以替代真实路测」的程度。如果把它当唯一的验证工具碰上极其边缘的物理交互比如两车在湿滑路面靠极近擦过生成结果的可信度是不够的。这种场合还是得老老实实回落到高保真仿真引擎或受控场地测试。6.2 后续可以往哪些方向扩展从我个人的观察来看这套架构的下一步有两条线值得走。一条是把语言模型接进来做「高层常识推理」的桥梁——在规划分支前插一个语言接口输入「前方有学校区域降低车速并预留更大刹车距离」这类抽象指令模型自动把语言层面的约束翻译成轨迹层面的硬约束。另一条是把生成分支的分辨率往上推在潜在扩散模型之上叠加超分模块让生成的画面可以直接用于像素级的传感器仿真而不是只停留在语义和结构化层面。我自己更看好的是第一条线因为驾驶行为里的很多常识性约束靠从数据里无限挖掘太难覆盖全面但通过一个高层的语言潜在变量做干预路径更短、效率更高。把语言、视觉、动作做到一个模型里这已经超出传统自动驾驶「感知→决策→执行」的流水线思维也更接近一个真正的智能体的形态。最后分享一个实战体会。这套方案最需要耐心的地方不是模型结构而是数据配比和训练平衡。我第一次复现的时候把大部分精力花在调解码器和损失系数上结果卡了一周生成画面始终有重影。后来退一步把时间去整理训练数据的动作覆盖度加了500组不同驾驶风格的重放轨迹重影问题自动消失了。数据结构决定了模型能力的上限损失和架构只是在逼近这个上限而已。做这套模型先别急着炫技巧好好想想你要喂给它的数据长什么样比什么设计都管用。