一句话定位
多相机图像进,不用稠密 BEV 栅格 ,只用稀疏「实例」(车框 + 地图折线)表示场景;检测/跟踪/建图共用对称结构,他车预测与自车规划并行做,再靠碰撞感知重打分挑一条最安全的轨迹。比 UniAD / VAD 更安全、更快。
本页概念卡
- 范式:端到端自动驾驶 · 规划导向设计 · SparseDrive · Sparse-Centric 范式
- 对照:UniAD · VAD · BEV · PETR
- 本文模块:对称稀疏感知 · 并行运动规划器 · 碰撞感知重打分(CAR)
- 数据与指标:nuScenes · minADE / minFDE / MR · 开环规划评测(L2 / 碰撞率)
1. 背景概念(给新人)
- 模块化自动驾驶:感知(看见车/人)→ 预测(猜别人怎么走)→ 规划(决定自己怎么开)→ 控制。每步独立训练时,前一步的错会被后一步放大。
- 端到端(End-to-End):整条链一个可微网络,可按「规划好不好」联合优化。
- BEV(Bird's-Eye View,鸟瞰图):把多相机信息铺成俯视栅格。UniAD、VAD 等「BEV-Centric」方法依赖这张稠密图,算力贵。
- 稀疏场景表示(Sparse Scene Representation):不铺满整张俯视图,只维护少量「实例」------每辆车一个锚框 + 特征向量,每条车道一条折线 + 特征向量。像通讯录只记关键联系人,不记整本电话簿。
- 技术线位置:站在 UniAD(规划导向全栈)→ VAD(矢量化轻量)之后,把感知也彻底稀疏化,并重做「预测 vs 规划」任务设计;ICRA 2025,清华 + 地平线。
直觉类比
UniAD 像带一张高分辨率城市俯视图开车;SparseDrive 像老司机脑子里只有「附近几辆车 + 几条车道线」------信息够开,脑子负担小得多。
2. 论文在干什么
- 问题 :
- 现有端到端方法(尤其 UniAD)依赖昂贵的稠密 BEV,训练慢、推理慢;
- 预测与规划常做成串行(先猜别人,再规划自己),忽略「自车也会影响别人」;
- 规划常输出单一确定轨迹,没把「多可能性」当一等公民;安全上也不够好。
- 设定:nuScenes;多视角相机;检测 + 跟踪 + 在线矢量建图 + 他车运动预测 + 自车规划;规划给高层命令(左转 / 右转 / 直行);评测用开环 L2 与碰撞率(作者对碰撞判定做了更严格的框重叠版,并用官方权重复现 UniAD/VAD)。
- 输出:他车多模态未来轨迹 + 自车多模态规划候选,经分层选择后一条安全轨迹。
3. 核心创新点
-
Sparse-Centric 范式(Sparse-Centric)
- 是什么:用稀疏实例(特征 + 几何锚点)统一表示动态目标与静态地图,贯穿感知到规划,避免稠密 BEV。
- 为什么新:把「稀疏检测线」(PETR / Sparse4D)接到端到端驾驶全栈,形成与 BEV-Centric 对照的新范式。
-
对称稀疏感知(对称稀疏感知)
- 是什么:检测 / 跟踪 / 在线建图共用同一套解码器结构;动态用 3D 锚框,静态用折线锚点;跟踪用 Sparse4Dv3 式简单 ID 锁定,无额外跟踪损失。
- 为什么新:一个对称架构吃下三件感知任务,学到「全稀疏」场景表示。
-
并行运动规划器(并行运动规划器)
- 是什么:自车也做成「实例」;与周围 agent 拼在一起,同时做他车预测与自车多模态规划(agent--agent / agent--map / 实例级时序注意力)。
- 为什么新:显式利用「预测 ≈ 规划」三点共性:双向交互、语义+几何、多模态不确定性。
-
分层规划选择 + 碰撞感知重打分(CAR)(CAR)
- 是什么:先按导航命令筛候选 → 用他车预测轨迹做碰撞检查,撞的分数置 0 → 取最高分。
- 为什么新:比 UniAD 那类「后处理优化」更贴端到端,消融里碰撞率明显下降且 L2 几乎不伤。
4. 方法细节
4.1 图像编码器
- 多相机 → Backbone + Neck → 多尺度特征图 III。
- SparseDrive-S:ResNet50,输入 256×704256\times704256×704;SparseDrive-B:ResNet101,512×1408512\times1408512×1408。
4.2 对称稀疏感知
动态实例(车/人等)
- 实例特征 Fd∈RNd×CF_d \in \mathbb{R}^{N_d \times C}Fd∈RNd×C + 锚框 Bd∈RNd×11B_d \in \mathbb{R}^{N_d \times 11}Bd∈RNd×11(位置、尺寸、朝向、速度等)。
- 默认 Nd=900N_d=900Nd=900;6 层解码器(1 层无时序 + 5 层时序)。
- 可变形聚合:在锚框周围采关键点,投影到图像特征采样 → 更新特征 → 分类与框 refinement。
- 时序:跨帧 cross-attention + 当前帧 self-attention;锚框变成高维 embedding 当位置编码。
静态地图实例
- 折线锚点:每条元素 Np=20N_p=20Np=20 个点;实例特征 FmF_mFm + 折线 LmL_mLm;Nm=100N_m=100Nm=100。
- 结构与检测分支对称,只改「实例定义」。
跟踪
- 置信度超过阈值 Tthresh=0.2T_{thresh}=0.2Tthresh=0.2 就锁定 ID,随时间传播;无额外跟踪约束/损失。
4.3 并行运动规划器
自车实例初始化(EII)
- 自车也有 Fe,BeF_e, B_eFe,Be。相机拍不到自己,所以用前视最小尺度特征 做 AveragePool 初始化 FeF_eFe(补语义 + 补稀疏漏检的「黑名单障碍」)。
- 速度不用 GT(防 ego status 泄漏):用辅助头预测当前自车状态,上一帧预测速度初始化本帧锚框速度。
时空交互
- 拼接 agent:Fa=Concat(Fd,Fe)F_a=\mathrm{Concat}(F_d,F_e)Fa=Concat(Fd,Fe)。
- 实例记忆队列长度 H=3H=3H=3(只看自己的历史,叫 instance-level 时序)。
- 三类注意力:agent--temporal、agent--agent、agent--map。
- 并行解码:他车 Km=6\mathcal{K}_m=6Km=6 模态、Tm=12T_m=12Tm=12;规划 Kp=6\mathcal{K}_p=6Kp=6、Tp=6T_p=6Tp=6,并按 3 种驾驶命令组织。
分层选择
- 按命令筛子集;
- CAR:用他车 top-2 预测轨迹做碰撞检查,撞则分数置 0;
- 最高分轨迹作为最终规划。
4.4 训练
- 两阶段:Stage-1 只训稀疏感知;Stage-2 感知 + 规划器端到端联合(不冻结)。
- 总损失:L=Ldet+Lmap+Lmotion+Lplan+Ldepth\mathcal{L}=\mathcal{L}{det}+\mathcal{L}{map}+\mathcal{L}{motion}+\mathcal{L}{plan}+\mathcal{L}_{depth}L=Ldet+Lmap+Lmotion+Lplan+Ldepth。
- 多模态用 winner-takes-all(ADE 最低为正样本);深度估计作辅助稳定感知训练。
5. 整体框架(Mermaid)
5.1 稠密感知 vs 感知也稀疏
#mermaid-svg-9CKm3OaUiFRQqbmR{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-9CKm3OaUiFRQqbmR .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-9CKm3OaUiFRQqbmR .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-9CKm3OaUiFRQqbmR .error-icon{fill:#552222;}#mermaid-svg-9CKm3OaUiFRQqbmR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-9CKm3OaUiFRQqbmR .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-9CKm3OaUiFRQqbmR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-9CKm3OaUiFRQqbmR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-9CKm3OaUiFRQqbmR .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-9CKm3OaUiFRQqbmR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-9CKm3OaUiFRQqbmR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-9CKm3OaUiFRQqbmR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-9CKm3OaUiFRQqbmR .marker.cross{stroke:#333333;}#mermaid-svg-9CKm3OaUiFRQqbmR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-9CKm3OaUiFRQqbmR p{margin:0;}#mermaid-svg-9CKm3OaUiFRQqbmR .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-9CKm3OaUiFRQqbmR .cluster-label text{fill:#333;}#mermaid-svg-9CKm3OaUiFRQqbmR .cluster-label span{color:#333;}#mermaid-svg-9CKm3OaUiFRQqbmR .cluster-label span p{background-color:transparent;}#mermaid-svg-9CKm3OaUiFRQqbmR .label text,#mermaid-svg-9CKm3OaUiFRQqbmR span{fill:#333;color:#333;}#mermaid-svg-9CKm3OaUiFRQqbmR .node rect,#mermaid-svg-9CKm3OaUiFRQqbmR .node circle,#mermaid-svg-9CKm3OaUiFRQqbmR .node ellipse,#mermaid-svg-9CKm3OaUiFRQqbmR .node polygon,#mermaid-svg-9CKm3OaUiFRQqbmR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-9CKm3OaUiFRQqbmR .rough-node .label text,#mermaid-svg-9CKm3OaUiFRQqbmR .node .label text,#mermaid-svg-9CKm3OaUiFRQqbmR .image-shape .label,#mermaid-svg-9CKm3OaUiFRQqbmR .icon-shape .label{text-anchor:middle;}#mermaid-svg-9CKm3OaUiFRQqbmR .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-9CKm3OaUiFRQqbmR .rough-node .label,#mermaid-svg-9CKm3OaUiFRQqbmR .node .label,#mermaid-svg-9CKm3OaUiFRQqbmR .image-shape .label,#mermaid-svg-9CKm3OaUiFRQqbmR .icon-shape .label{text-align:center;}#mermaid-svg-9CKm3OaUiFRQqbmR .node.clickable{cursor:pointer;}#mermaid-svg-9CKm3OaUiFRQqbmR .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-9CKm3OaUiFRQqbmR .arrowheadPath{fill:#333333;}#mermaid-svg-9CKm3OaUiFRQqbmR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-9CKm3OaUiFRQqbmR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-9CKm3OaUiFRQqbmR .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-9CKm3OaUiFRQqbmR .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-9CKm3OaUiFRQqbmR .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-9CKm3OaUiFRQqbmR .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-9CKm3OaUiFRQqbmR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-9CKm3OaUiFRQqbmR .cluster text{fill:#333;}#mermaid-svg-9CKm3OaUiFRQqbmR .cluster span{color:#333;}#mermaid-svg-9CKm3OaUiFRQqbmR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-9CKm3OaUiFRQqbmR .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-9CKm3OaUiFRQqbmR rect.text{fill:none;stroke-width:0;}#mermaid-svg-9CKm3OaUiFRQqbmR .icon-shape,#mermaid-svg-9CKm3OaUiFRQqbmR .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-9CKm3OaUiFRQqbmR .icon-shape p,#mermaid-svg-9CKm3OaUiFRQqbmR .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-9CKm3OaUiFRQqbmR .icon-shape .label rect,#mermaid-svg-9CKm3OaUiFRQqbmR .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-9CKm3OaUiFRQqbmR .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-9CKm3OaUiFRQqbmR .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-9CKm3OaUiFRQqbmR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} SparseDrive:直接记便利贴
UniAD 等:先铺地毯
多相机
稠密 BEV 特征图
Track / Map / ...
稀疏实例
车框 + 折线
可变形采样图像
5.2 SparseDrive 全流程
#mermaid-svg-a4aaEDIXy1Z5OEla{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-a4aaEDIXy1Z5OEla .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-a4aaEDIXy1Z5OEla .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-a4aaEDIXy1Z5OEla .error-icon{fill:#552222;}#mermaid-svg-a4aaEDIXy1Z5OEla .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-a4aaEDIXy1Z5OEla .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-a4aaEDIXy1Z5OEla .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-a4aaEDIXy1Z5OEla .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-a4aaEDIXy1Z5OEla .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-a4aaEDIXy1Z5OEla .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-a4aaEDIXy1Z5OEla .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-a4aaEDIXy1Z5OEla .marker{fill:#333333;stroke:#333333;}#mermaid-svg-a4aaEDIXy1Z5OEla .marker.cross{stroke:#333333;}#mermaid-svg-a4aaEDIXy1Z5OEla svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-a4aaEDIXy1Z5OEla p{margin:0;}#mermaid-svg-a4aaEDIXy1Z5OEla .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-a4aaEDIXy1Z5OEla .cluster-label text{fill:#333;}#mermaid-svg-a4aaEDIXy1Z5OEla .cluster-label span{color:#333;}#mermaid-svg-a4aaEDIXy1Z5OEla .cluster-label span p{background-color:transparent;}#mermaid-svg-a4aaEDIXy1Z5OEla .label text,#mermaid-svg-a4aaEDIXy1Z5OEla span{fill:#333;color:#333;}#mermaid-svg-a4aaEDIXy1Z5OEla .node rect,#mermaid-svg-a4aaEDIXy1Z5OEla .node circle,#mermaid-svg-a4aaEDIXy1Z5OEla .node ellipse,#mermaid-svg-a4aaEDIXy1Z5OEla .node polygon,#mermaid-svg-a4aaEDIXy1Z5OEla .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-a4aaEDIXy1Z5OEla .rough-node .label text,#mermaid-svg-a4aaEDIXy1Z5OEla .node .label text,#mermaid-svg-a4aaEDIXy1Z5OEla .image-shape .label,#mermaid-svg-a4aaEDIXy1Z5OEla .icon-shape .label{text-anchor:middle;}#mermaid-svg-a4aaEDIXy1Z5OEla .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-a4aaEDIXy1Z5OEla .rough-node .label,#mermaid-svg-a4aaEDIXy1Z5OEla .node .label,#mermaid-svg-a4aaEDIXy1Z5OEla .image-shape .label,#mermaid-svg-a4aaEDIXy1Z5OEla .icon-shape .label{text-align:center;}#mermaid-svg-a4aaEDIXy1Z5OEla .node.clickable{cursor:pointer;}#mermaid-svg-a4aaEDIXy1Z5OEla .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-a4aaEDIXy1Z5OEla .arrowheadPath{fill:#333333;}#mermaid-svg-a4aaEDIXy1Z5OEla .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-a4aaEDIXy1Z5OEla .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-a4aaEDIXy1Z5OEla .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-a4aaEDIXy1Z5OEla .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-a4aaEDIXy1Z5OEla .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-a4aaEDIXy1Z5OEla .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-a4aaEDIXy1Z5OEla .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-a4aaEDIXy1Z5OEla .cluster text{fill:#333;}#mermaid-svg-a4aaEDIXy1Z5OEla .cluster span{color:#333;}#mermaid-svg-a4aaEDIXy1Z5OEla div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-a4aaEDIXy1Z5OEla .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-a4aaEDIXy1Z5OEla rect.text{fill:none;stroke-width:0;}#mermaid-svg-a4aaEDIXy1Z5OEla .icon-shape,#mermaid-svg-a4aaEDIXy1Z5OEla .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-a4aaEDIXy1Z5OEla .icon-shape p,#mermaid-svg-a4aaEDIXy1Z5OEla .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-a4aaEDIXy1Z5OEla .icon-shape .label rect,#mermaid-svg-a4aaEDIXy1Z5OEla .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-a4aaEDIXy1Z5OEla .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-a4aaEDIXy1Z5OEla .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-a4aaEDIXy1Z5OEla :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 多相机图像
图像编码器
稀疏检测实例
稀疏地图实例
自车实例初始化
ID 锁定跟踪
实例记忆队列
并行运动规划器
他车多模态轨迹
自车多模态候选
碰撞感知重打分
按导航命令筛选
最终规划轨迹
上半截是「对称稀疏感知」学场景;下半截是「并行规划 + CAR」选安全轨迹。图中缩写见本页概念卡。对照图也见 Sparse-Centric。
6. 实验与结论
主结果(nuScenes val,SparseDrive-B)
| 任务 | 关键数字 | vs 前序 |
|---|---|---|
| 检测 | mAP 0.496 / NDS 0.588 | vs UniAD mAP +11.6% |
| 跟踪 | AMOTA 0.501,IDS 632 | vs UniAD AMOTA +14.2% |
| 在线建图 | mAP 56.2% | vs VAD +8.6% |
| 运动预测 | minADE 0.60 / minFDE 0.96 | vs UniAD 更低误差 |
| 规划 | Avg L2 0.58 m ,碰撞率 0.06% | vs VAD:L2 −19.4%,碰撞 −71.4% |
| 效率(S) | 训练约 20h,推理 9.0 FPS | vs UniAD:训练约 7.2×、推理约 5.0×(硬件不完全同,方向仍明显) |
消融要点(SparseDrive-S)
- 改串行预测→规划:碰撞变差。
- 去掉自车语义/几何初始化:L2 与碰撞都变差。
- 规划改单模态:碰撞率升到约 0.25%。
- 去掉实例级时序注意力:Avg L2 升到 0.77 m。
- CAR:碰撞 0.12% → 0.08%;UniAD 式后优化反而伤 L2、碰撞更差。
- 规划模态数约 6 时饱和。
局限(作者自述)
- 在线建图仍落后部分单任务方法(如 MapTR)。
- 数据规模与开环评测不足以完全代表真实闭环驾驶。
7. 要点总结
- SparseDrive = 稀疏实例场景表示 + 预测/规划并行 + CAR 选安全轨迹
- 相对 UniAD/VAD:不只是「更快」,规划安全(碰撞率)提升是卖点
- 自车也要当「实例」:语义来自前视特征,几何/速度要防泄漏
8. 开放问题
- 作者修订后的碰撞率与社区常用 UniAD/VAD 脚本差多少?跨论文对比时是否要对齐评测代码?
- 稀疏漏检时,前视 dense pool 能补多少「黑名单障碍」?有没有定量消融?
- 闭环(CARLA / NAVSIM / Bench2Drive)上 SparseDrive 是否仍保持优势?
相关
- PDF:
papers/VLA与模仿学习/2405.19620 - SparseDrive.pdf - 前序:UniAD 精读 · VAD
- 代码:https://github.com/swc-17/SparseDrive