SimScale: Learning to Drive via Real-World Simulation at Scale

Paper: arXiv:2511.23369 Code: OpenDriveLab/SimScale Code reference: main @ 95ffa577 (2026-05-06)

1. Motivation:这篇论文要解决什么问题

这篇论文的核心目标不是提出一个新的端到端规划网络,而是回答一个更系统的问题:在自动驾驶里,是否能像语言、视觉模型那样,通过持续扩大数据规模获得稳定的能力增长;如果真实世界驾驶日志有限、长尾场景稀缺,那么可控仿真数据能否成为可靠的数据扩展来源。作者把这个问题命名为 SimScale,并把贡献拆成两部分:第一,用真实驾驶日志作为起点,扰动自车轨迹、让周围交通体在反应式环境中交互,再用神经渲染生成多视角传感器观测;第二,把新合成的状态配上伪专家轨迹或奖励信号,与真实数据混合训练已有的端到端规划器。

自动驾驶里的数据瓶颈和普通感知任务不同。真实车队采集的日志大多来自安全、常见、被人类驾驶员自然规避过的状态;模型上线后真正危险的是分布外状态,例如偏离车道中心、近距离碰撞、突然切入、驶出道路等。单纯扩大真实数据并不一定能高效覆盖这些状态,因为人类专家示范本身会避开它们。SimScale 的想法是:不要从零构造虚拟世界,而是以真实 nuPlan / NAVSIM 日志为锚点,在物理和交通规则允许的邻域内把自车推到新的终端状态,再让交通参与者响应它,最后用高保真渲染把这个新状态重新变成端到端模型可吃的多摄像头输入。

Figure 1 解读:图 1 的关键信息是,SimScale 不是孤立的 simulator benchmark,而是一条数据构造流水线。它先从真实日志抽取场景和 3DGS 数据引擎,随后通过 ego trajectory perturbation 产生偏离人类日志的新状态,再生成对应的 pseudo-expert demonstration,并把这些样本与真实世界样本共同用于 sim-real co-training。作者特别强调“任意端到端规划器”这一点:实验覆盖 LTF 这类回归式规划器、DiffusionDrive 这类扩散式规划器,以及 GTRS-Dense 这类轨迹词表打分式规划器。因此论文的判断标准不是某个模型是否涨分,而是仿真数据在不同架构上是否表现出可预测的 scaling trend。

一句话概括:SimScale 用真实日志驱动的反应式神经渲染仿真,把“稀缺长尾驾驶状态”转化为可规模化采样的数据资产,并证明在 NAVSIM v2 的 navhard / navtest 上,简单混合真实数据和仿真数据就能显著提高规划器鲁棒性与泛化能力。

2. Idea:核心想法

SimScale 的核心想法是把真实驾驶日志当作“可扩展仿真的锚点”:真实日志提供场景几何、交通上下文和视觉外观,仿真模块只在合理邻域内扰动自车、重新演化交通交互,并生成伪专家或 reward 标签。这样得到的数据既不完全脱离真实世界,也不被人类日志的安全分布束缚,因此可以专门补足端到端 planner 在分布外恢复、避险和长尾交互上的训练缺口。

3. Method:从真实日志到可训练仿真样本

SimScale 的输入是一个真实驾驶 clip ,包含一段历史观测、真实世界状态和未来交通参与者。方法里最重要的设计是两段式时间结构:第一段从 用于探索被扰动后的自车状态,第二段从 用于在新状态上生成专家轨迹。这样做的好处是避免直接在原始真实状态上采样标签;模型真正学习的是“如果自车已经偏离了日志分布,怎样恢复或继续安全规划”。

Figure 2 解读:图 2 把 pipeline 拆成三个动作:先在 扰动自车轨迹以进入新状态,再让周围车辆在 reactive environment 中响应,最后从 生成 recovery-based 或 planner-based pseudo-expert。它说明本文的样本不是静态图像增强,而是重新演化后的交互轨迹与传感器观测。

3.1 轨迹扰动:只扰动到“多样但仍合理”的状态

论文没有让自车随意乱飞,而是从一个 16,384 条聚类人类轨迹构成的 vocabulary 中选候选轨迹,并用两个约束过滤:候选轨迹相对真实日志的朝向偏差满足 ,并且基于 EPDMS 的 reward filter 要达到 。空间采样按终点做纵向和横向扰动:纵向范围 、横向范围 ,采样步长分别是 。这组数值很重要,因为它说明 SimScale 不是在追求无限开放的仿真,而是在真实轨迹局部邻域内有控制地扩展状态分布。

在第一段仿真中,自车轨迹由 LQR 模拟,其他 agent 用 IDM 响应自车行为,得到未来状态 。随后,数据引擎 将跨两阶段的自车和周围 agent 轨迹渲染成多视角视频 。这个“行为仿真和传感器渲染解耦”的结构是论文和普通数据增强的根本区别:普通增强只改图像外观,SimScale 改的是闭环交互后产生的状态,并把状态重新渲染回端到端模型的输入空间。

3.2 伪专家生成:recovery-based 与 planner-based 两条路线

当扰动状态产生后,系统需要给它配一个可监督的未来轨迹。作者提供两类伪专家。Recovery-based expert 从真实 navtrain 人类轨迹全集中检索相似的恢复轨迹,检索词表规模是 103,288 条。它的优点是行为更像人类,缺点是探索能力受人类日志覆盖限制。Planner-based expert 使用 privileged planner,即 nuPlan 中的 PDM-Closed,它可以访问 ground-truth state,通过规则和代价函数生成反应式、优化式轨迹。它的优点是能在偏离状态下更主动探索,缺点是行为不一定完全人类化,舒适性指标可能受影响。

伪专家还要再经过有效性过滤:除 EP 之外的 EPDMS 子指标需要满足,EP 放宽为大于 0.5,以避免过度偏向最短路线而保留一定探索性。由于计算限制,论文对每类伪专家最多做五轮 non-overlapping random sampling,随着轮数增加累积更多仿真示范。直观上,SimScale 的数据不是“一个真实 clip 对应一个仿真 clip”,而是“一个真实场景附近可以采样出多个扰动状态和多个专家响应”,这就是它能研究 scaling property 的原因。

方法可写成下面的伪代码:

for each real clip d in navtrain:
    build or load 3DGS scene engine Phi(d)
    sample perturbed ego trajectory from clustered human vocabulary
    filter by heading, endpoint shift, and EPDMS plausibility
    rollout ego with LQR and traffic agents with IDM from T to T+H
    choose pseudo expert:
        recovery: retrieve from human trajectory vocabulary
        planner: run PDM-Closed with privileged states
        reward-only: keep reward labels for GTRS-Dense scoring
    rollout and render multi-view observations from T to T+2H
    keep samples whose EPDMS sub-metrics pass validity filters
mix real D and simulated D_sim during planner training

3.3 Sim-real co-training:简单混合,而不是复杂域适配

论文的训练策略反而很朴素:训练时随机从真实数据 和仿真数据 中采样,把二者混合到同一训练流程中。作者认为真实数据的作用是维持人类驾驶分布和真实视觉域,仿真数据的作用是补充长尾状态和纠偏行为;两者同时存在可以缓解仿真伪影、光照不真实、时间抖动等 visual domain degradation。

这点也解释了为什么论文不是在评价“纯仿真训练能否替代真实数据”。它的主张更温和也更实用:真实数据固定为 100K navtrain 交互场景,额外只增加仿真数据,看性能是否平滑增长。若性能随仿真样本量增加而提升,就说明仿真数据在真实数据已经存在的前提下具有可扩展的边际价值。

4. Setup & Results:实验设置与主要结果

4.1 数据、模型和指标

实验使用 NAVSIM 的 navtrain split,基于 nuPlan,包含 100K 交互式真实世界场景。仿真数据也从 navtrain 构造。3DGS 数据引擎会剔除 novel-view PSNR 低于 27 的 block,以保证渲染质量;后续补充实验还专门比较了 的仿真数据,验证视觉保真度会影响训练收益。

模型选择覆盖三种端到端规划范式:LTF 代表 regression-based planner,DiffusionDrive 代表 diffusion-based planner,GTRS-Dense 代表 scoring-based planner。为了公平比较,作者统一输入图像分辨率为 ,并移除 LiDAR 输入以符合 navhard 评测设置。训练细节来自论文补充材料和代码:LTF 使用 ResNet34,8 GPU、100 epochs、batch size 64、学习率 ;DiffusionDrive 使用 ResNet34,8 GPU、100 epochs、batch size 512、学习率 ;GTRS-Dense 使用 ResNet34 或 V2-99,32 GPU、50 epochs、总 batch size 352、学习率 ,训练和推理都围绕 16,384 条轨迹词表展开,navhard 推理使用 8,192 条,navtest 使用完整 16,384 条。

评价包含 NAVSIM v2 的 navhard 和 navtest。navhard 更强调未见、困难、分布外状态,因此主要检验鲁棒性;navtest 更广泛,主要检验泛化。主指标是 EPDMS,并分解为 NC、DAC、DDC、TLC、EP、TTC、LK、HC、EC 等子指标。对这篇论文来说,navhard 的提升尤其关键,因为仿真数据本来就是为了补足真实日志中缺失的困难状态。

4.2 Leaderboard 结果

主表结果显示,三类规划器都从仿真数据中获益。在 navhard 上,LTF-ResNet34 从 24.4 提升到 30.2;DiffusionDrive-ResNet34 从 27.5 提升到 32.6;GTRS-Dense-ResNet34 在 reward-only 配置下从 38.3 提升到 46.9,绝对提升 +8.6;GTRS-Dense-V2-99 从 41.9 提升到 48.0,成为表中最高分。这个现象说明仿真数据并不是只对弱模型有用:更强的 V2-99 backbone 仍能继续吸收仿真数据带来的长尾覆盖。

在 navtest 上,提升幅度较小但一致。LTF 从 81.5 到 84.4,+2.9;DiffusionDrive 从 84.2 到 85.9,+1.7;GTRS-Dense-ResNet34 从 82.3 到 84.6,+2.3;GTRS-Dense-V2-99 从 84.0 到 84.6,+0.8。navtest 的提升小于 navhard 是合理的,因为 navtest 的分布更接近常规真实场景,真实数据已经覆盖较多;而 navhard 的困难场景更接近 SimScale 想补充的分布外区域。

Figure 3 解读:图 3 对比了不同 planner 和 supervision signal 随仿真数据规模增长的曲线。读图时重点不是单点最高分,而是拐点和斜率:LTF 更早进入平台期,DiffusionDrive 更接近持续增长,GTRS-Dense 在 reward-only 条件下显示出打分式规划器更适合吸收仿真 reward 信号。

4.3 Scaling 曲线:不同规划范式的瓶颈不同

Fig. 4 是论文最有价值的结果之一。作者在真实数据量固定的条件下逐步增加仿真数据,并用 log-quadratic function 拟合性能和总数据量 的关系:。如果 接近零,曲线退化为近似线性 log relation,说明 scaling trend 更稳定;如果曲线出现明显抛物线和拐点,则表示模型或监督信号已经进入平台期。

论文观察到,LTF 和 DiffusionDrive 的参数量接近,分别约 56M 和 61M,但 scaling behavior 很不一样。LTF 在 simulation-to-real ratio 达到 1:1 时开始饱和甚至下降;DiffusionDrive 则表现出更接近线性的持续增长。作者的解释是,多模态轨迹建模能够更好吸收仿真数据,因为扩散式规划可以保留多个候选轨迹模式,而纯回归更容易把分布外状态平均化,最终在长尾数据扩展时遇到表达瓶颈。GTRS-Dense 的表现进一步说明轨迹词表打分范式适合奖励信号:在充足真实专家监督稳定优化方向后,仿真中的 reward-only training 甚至超过显式伪专家监督。

4.4 反应式仿真的必要性

论文专门比较 non-reactive 和 reactive simulation。两轮 non-reactive 采样产生 141K 有效轨迹,比 reactive 两轮的 120K 更多,因为不响应交通时碰撞率较低、更容易留下“有效”样本;但它在 GTRS-Dense 上没有带来对应 EPDMS 提升。相反,reactive 两轮虽然样本少,ResNet34 / V2-99 分别达到 44.4 / 46.7;三轮 reactive 产生 167K 样本后进一步达到 45.0 / 47.9。这个对比很关键:有效样本数不是唯一决定因素,交通参与者是否会根据自车扰动做出响应,决定了样本是否真的包含可学习的闭环交互结构。

Figure 4 解读:Fig. 5 展示的四类仿真场景包括 off-center lane drift、near collision、departure 和 cutting in。它们不是简单视觉变换,而是把自车带到真实日志中少见但部署时危险的状态,然后要求 planner 学会恢复或规避。对端到端模型而言,这类样本尤其重要,因为它们同时改变图像、交通体相对位置、未来可行轨迹和评测奖励。

5. Code Mapping:代码与复现映射

论文组件 / 结论代码或仓库证据(main@95ffa577)复现含义
sim-real co-training with pseudo-expertscripts/training/run_transfuser_training_syn.sh, scripts/training/run_diffusiondrive_training_syn.sh, scripts/training/run_gtrs_dense_training_multi_syn.shSYN_IDX 控制使用到第几轮仿真数据,SYN_GT=pdm/recovery 控制 planner-based 或 recovery-based 伪专家。
synthetic cache loadingnavsim/planning/training/dataset.py设置 SYN_IDX 后,dataset 从 default_log_split_synthetic_reation_{SYN_GT}_v1.0-{idx}.yamlnavtrain_reaction_{SYN_GT}_v1.0-{idx}_cache 逐轮加载仿真 cache。
GTRS-Dense reward-only / pseudo-expert switchscripts/training/run_gtrs_dense_training_multi_syn.shsyn_imi=true/false 决定是否使用 imitation-style pseudo-expert;false 对应 _rewards_only 实验名。
training config numbersrun_transfuser_training_syn.sh, run_diffusiondrive_training_syn.sh, run_gtrs_dense_training_multi_syn.sh学习率、batch、epoch、GPU 数来自具体 launch script,而不是 README 泛化描述或 base config。
NAVSIM evaluationscripts/evaluation_navhard/, scripts/evaluation_navtest/仓库提供 navhard/navtest 三类 policy 的评测入口,和论文主表指标直接对应。

代码搜索找到了公开实现 OpenDriveLab/SimScale,本笔记锚定 main@95ffa577(2026-05-06)。仓库 README 显示代码 v1.0 已在 2026-01-06 发布,并提供数据、模型、训练脚本与评测脚本。需要注意,公开仓库主要提供 sim-real co-training、数据下载和 NAVSIM 评测入口;论文中完整的大规模仿真生成流水线并不等价于一个简单脚本入口,复现时应把“下载已发布 SimScale data 并训练规划器”和“重新生成所有仿真数据”区分开。

代码里的训练入口与论文设置对应较清楚。scripts/training/run_transfuser_training_syn.sh 设置 SYN_IDX=0SYN_GT=pdm,学习率 2.82e-4、batch size 64max_epochs=100,调用 run_training_transfuser.py 并把 train_test_split=navtraincache_path=${NAVSIM_EXP_ROOT}/cache/trainval_cache 传入 Hydra。

scripts/training/run_diffusiondrive_training_syn.sh 类似,但默认 SYN_GT=recovery,用 torchrun --nproc_per_node=8,学习率 6e-4

scripts/training/run_gtrs_dense_training_multi_syn.sh 里有三处与论文 ablation 直接相关:SYN_IDX 控制仿真轮数,SYN_GTpdmrecovery 间切换,syn_imi=true/false 决定是否使用 imitation-style pseudo-expert,若为 false 会生成 _rewards_only 实验名;该脚本还设置 agent.pdm_gt_path=${NAVSIM_TRAJPDM_ROOT}/ori/navtrain_16384.pklagent.config.backbone_type

数据加载逻辑在 navsim/planning/training/dataset.py 中体现得更直接。若环境变量 SYN_IDX 没设置,dataset 使用默认真实 cache;若设置了 SYN_IDX,代码会从 0 到 SYN_IDX 逐轮读取 default_log_split_synthetic_reation_{SYN_GT}_v1.0-{idx}.yaml,并把 cache path 指向 navtrain_reaction_{SYN_GT}_v1.0-{idx}_cache。这和 README 对 SYN_IDX 的解释一致:SYN_IDX=2 表示使用 0、1、2 三轮仿真数据。README 还说明每个仿真 clip/log 是 6 秒、2 Hz,分成 2 秒历史和 4 秒未来,sensor_blobs_histsensor_blobs_fut 分开存储,策略训练只需要历史传感器。

复现者最容易踩坑的地方有三个。第一,仓库 README 明确说 simulation data cache path 在 dataset.py 附近需要按本地目录设置,否则训练脚本即使能启动也找不到 synthetic caches。第二,论文表中的训练细节不要从基础默认配置推断,必须看具体脚本里的 lrbsmax_epochs 和分布式设置;例如 GTRS-Dense 脚本里每进程 batch size 是 11,结合 4 nodes × 8 GPUs 才对应论文总 batch size 352。第三,reward-only 并不是“没有监督随便强化学习”,而是在真实数据专家监督稳定模型后,让仿真样本提供 reward/scoring 信号,这也是为什么论文会观察到 real-only reward 反而下降、sim-real reward 才有效。

6. Results & Ablations:关键消融与作者想证明的机制

5.1 伪专家不是越像人越好,互补性更重要

Table 3 和补充实验显示,planner-based expert 通常强于 recovery-based expert,但 recovery-style 人类轨迹仍有价值。GTRS-Dense-ResNet34 在真实专家监督下基线是 38.3;加入仿真 expert 与 reward 后达到 46.1,reward-only 配置达到 45.9 或主表 46.9,取决于具体表格和配置;V2-99 从 41.9 提升到 47.7 / 48.0。补充材料里的 multi-expert ensemble 进一步说明,多类伪专家的互补增益在 ResNet34 / V2-99 上分别达到 +0.8 和 +2.9 EPDMS,但继续扩大到所有六个模型没有额外提升。这意味着关键不只是专家数量,而是专家是否覆盖了不同的恢复策略和优化偏好。

5.2 reward-only 的结论要谨慎理解

论文有一个很醒目的结论是 “Reward is All You Need”,但它的适用条件比较窄。该结论主要针对 GTRS-Dense 这种 trajectory vocabulary scoring planner:模型本来就在给大量候选轨迹打分,reward 信号天然适合用于监督排序或评分头。而 LTF 和 DiffusionDrive 仍依赖显式轨迹监督更直观。更重要的是,作者对 real-world data only 做 reward-only 会导致性能下降,说明 reward 本身并不是万能;它只有在仿真数据提供足够探索状态、真实数据提供稳定人类分布时才变成有效的优化信号。

5.3 仿真数据质量不只是 PSNR,但 PSNR 下限有用

补充实验比较了 的仿真数据。在 GTRS-Dense 上,高保真仿真基本更好:例如 V2-99 在不同轮数和 co-training 策略下, 组达到 45.4、46.1、44.9、46.3,而低 PSNR 组为 44.4、44.5、43.7、44.8。这个结果支持作者的数据清洗策略:仿真样本要提供状态多样性,但如果视觉域差距太大,端到端模型会把一部分容量花在错误的视觉适配上。

Figure 5 解读:Fig. 8 从另一个角度解释仿真数据的价值。作者用 EgoMLP 对真实和仿真数据评估,发现仿真数据 EPDMS 分布更低,说明它确实更偏向 safety-critical / OOD 区域;按照 nuPlan scenario tags 排序后,低 EPDMS 标签可以帮助后续有针对性增加困难场景比例。这种分析把 simulation scaling 从“盲目加数据”推进到“知道哪些场景值得加”。

7. Limitations:局限、风险与后续启发

论文对自己的限制讲得比较清楚。首先,当前 trajectory perturbation 是规则驱动和静态的;如果用已经训练好的 planner 自我迭代探索 simulator,可能更高效地收集 recovery data。其次,planner-based expert 使用的 PDM-Closed 是规则型 privileged planner,虽然可解释、稳定,但性能有限,在极端 corner case 会失败,并且可能损害 HC、EC 这类舒适性指标。第三,交通行为仿真使用 IDM,能提供基本交互,但场景多样性有限;未来可以用 diffusion-based traffic generator 或统一 world model 代替部分行为仿真和传感器仿真。第四,传感器侧依赖 3DGS / neural rendering,PSNR 过滤能减轻 visual gap,但不能完全保证时序一致性、材质真实度和多模态一致性。

对我来说,这篇论文最有启发的是它把 driving simulation 从“构建一个看起来真实的闭环 simulator”转成“构建一个可规模化的数据生成器”。如果研究目标是训练端到端 planner,那么 simulator 的评判标准不是单帧画质,也不是单个场景是否逼真,而是合成样本是否能在固定真实数据量下带来可预测的 policy improvement。SimScale 的实验显示,仿真数据的边际价值取决于三件事:状态扰动是否覆盖模型部署时会遇到的长尾区域,伪专家或 reward 是否给出了可学习的优化方向,模型架构是否有足够表达能力吸收这些额外分布。

这也提示了后续工作可以沿三条线推进。第一,把静态扰动改成 planner-in-the-loop 或 self-play,让模型主动暴露自己的失败状态,再由 simulator 生成恢复监督。第二,把 reward-only 从 GTRS-Dense 扩展到更多规划范式,例如用可微分排序、轨迹能量模型或 offline RL 目标连接扩散式规划。第三,把数据 scaling law 做成数据治理工具:不仅看样本数量,还要按 scenario tag、PSNR、碰撞率、恢复难度、专家类型和仿真轮数拆分收益,判断下一轮仿真预算应该投向哪里。

如果只读实验数字,SimScale 像是一篇“仿真数据涨点”的论文;但从系统角度看,它更像是自动驾驶端到端学习的数据基础设施论文。它的最大价值是证明:在真实数据固定时,经过反应式交通、伪专家和高保真渲染约束的仿真数据,可以成为 planner scaling 的可复用资源,而不仅是评测或可视化工具。