📄 论文信息
- 标题:Sparse4D: Multi-view 3D Object Detection with Sparse Spatial-Temporal Fusion(v1)/ Recurrent Temporal Fusion with Sparse Model(v2)/ Advancing End-to-End 3D Detection and Tracking(v3)
- 团队:地平线机器人(Horizon Robotics,林学武、林天威、裴子祥、黄黎超、苏志中)
- arXiv:2211.10581(v1)/ 2305.14018(v2)/ 2311.11722(v3)
- 关键词:全稀疏、4D 关键点采样、循环时序融合、实例去噪、检测+跟踪
- 一句话总结:用一组稀疏实例 query 直接从多相机图像里"抠"出 3D 目标,绕开稠密 BEV,通过稀疏 4D 采样 ➜ 循环时序融合 ➜ 实例去噪三连击,把多摄像头 3D 检测与跟踪做到 nuScenes 顶尖,是全稀疏感知范式的奠基之作。

图1:Sparse4D V1 整体架构。输入多视图图像经 backbone 提取特征后,稀疏 anchor 通过 4D 关键点采样从多视图/多尺度/多时间戳特征中聚合信息,经层级融合与迭代精炼输出 3D 检测框。
🤔 要解决什么问题?BEV 的"算力原罪"
多摄像头 3D 感知这几年几乎被 BEV 范式统治(BEVFormer、LSS、DETR3D)。主流做法是先把环视图像压成一张稠密俯视图,再在上面做检测。这套范式有效,却带着"原罪":
| 痛点 | 原因 | 后果 |
|---|---|---|
| 算力随分辨率平方爆炸 | BEV 是 $H\times W$ 网格,注意力/卷积都稠密算 | 显存吃紧 |
| 算力浪费在空白区 | 目标只占 BEV 几个像素,其余是空地天空 | 信息密度极低 |
| 时序融合更重 | 多帧 BEV 要对齐堆叠 | 延迟飙升 |
| 车端部署难 | Orin 等芯片跑不动重 BEV backbone | 落地受阻 |
Sparse4D 的核心拷问:路上有意义的东西本来就稀疏(几十辆车、人、车道),为什么中间表示非要稠密?能不能从图像到 3D 框,全程只用一组稀疏 query? 这就是 全稀疏(Fully Sparse) 范式的起点——与 BEV 形成路线之争。
🌱 V1:稀疏 4D 采样,证明全稀疏可行
核心机制:4D 关键点采样
V1 的灵魂是对每个 3D anchor(锚框),分配多个 4D 关键点,再把它们投影到多视图 / 多尺度 / 多时间戳的图像特征上采样。这一步直接绕开了 BEV 的视角变换。
数学形式化
设第 $i$ 个 3D anchor 的状态为:
$$\mathbf{b}_i = (x, y, z, w, l, h, \theta) \in \mathbb{R}^7$$其中 $(x,y,z)$ 是中心点坐标,$(w,l,h)$ 是尺寸,$\theta$ 是朝向角。为每个 anchor 定义 $K$ 个 4D 关键点:
$$\mathcal{P}_i = \{\mathbf{p}_{i,k} \in \mathbb{R}^3 \mid k=1,\dots,K\}$$这些关键点分布在 anchor 的表面和内部(3D 空间 + 时间维)。第 $k$ 个关键点在 $t$ 时刻投影到第 $v$ 个相机的图像坐标为:
$$ \mathbf{u}_{i,k}^{(v,t)} = \mathbf{K}_v \cdot \mathbf{T}_{v}^{-1} \cdot \mathbf{T}_t \cdot \mathbf{p}_{i,k} $$其中 $\mathbf{K}_v$ 是第 $v$ 个相机的内参矩阵,$\mathbf{T}_v$ 是其外参(车身→相机),$\mathbf{T}_t$ 是 $t$ 时刻的车身位姿。投影后从多尺度特征 ${\mathbf{F}v^{(l)}}{l=1}^L$ 中通过双线性插值采样特征:
$$ \mathbf{f}_{i,k}^{(v,t,l)} = \text{Bilinear}(\mathbf{F}_v^{(l)}, \mathbf{u}_{i,k}^{(v,t)}) $$层级特征融合
采回来的特征按层级逐级融合:
- 视图/尺度层:同一关键点在不同相机、不同分辨率上的特征融合
其中 $\alpha_{v,l}$ 是可学习的加权系数(通过注意力或累加实现)。
- 时间戳层:同一关键点在不同历史帧上的特征融合
- 关键点层:同一 anchor 的 $K$ 个关键点特征融合成实例特征
这种由细到粗的层级聚合,比全局注意力高效得多,又保留了空间结构。

图2:Sparse4D 的模块设计详解。从左至右分别为 4D 关键点采样、层级特征融合、实例级深度加权和迭代精炼模块。
层级特征融合
采回来的特征不是一股脑拼接,而是按层级逐级融合:
- 视图/尺度层:同一关键点在不同相机、不同分辨率上的特征融合;
- 时间戳层:同一关键点在不同历史帧上的特征融合;
- 关键点层:同一 anchor 的多个关键点特征融合成实例特征。
这种由细到粗的层级聚合,比全局注意力高效得多,又保留了空间结构。
实例级深度加权
3D 到 2D 投影是个病态问题(深度丢失)。V1 引入实例级深度加权模块:让每个实例自己学一个深度重权,缓解投影歧义——这比全局深度显式监督更轻巧。结果上,V1 超越所有稀疏方法、并打败多数 BEV 方法,首次证明全稀疏路线在精度上不输 BEV。
为什么"4D 关键点"比 BEV 视角变换更划算
理解这一步的关键是意识到:BEV 的视角变换(LSS 或 attention)本质是把所有像素都搬一遍到 3D,而不管这像素到底属不属于某个目标。Sparse4D 反过来——先有目标假设(anchor),再去像素里挑相关的特征。前者是"先到站再找人",后者是"先知道找谁再去站里挑"。当目标本来就稀疏(路上几十辆车),后者天然高效得多。而且 4D 关键点天然带时间维,运动线索直接从"同一关键点在历史帧的位置"采回来,不需要额外建时序模块——空间融合与时序融合被同一个采样动作完成,这是 V1 设计最优雅的地方。
⚡ V2:循环时序融合,把复杂度从 O(T) 压到 O(1)
解耦图像特征与锚框特征

图3:Sparse4D V2 架构。核心改进在于解耦图像特征与锚框特征,通过 GRU 门控单元实现循环式状态传播,复杂度从 O(T) 降到 O(1)。
V1 的时序融合要保留多帧历史特征,复杂度随帧数 $T$ 线性增长。V2 的关键洞察:图像特征和结构化的锚框特征可以解耦——不必缓存多帧图像特征,只需逐帧传递稀疏的锚框特征。
循环式多帧采样
把时序融合改成递归形式:
数学形式化
V1 的时序融合需要缓存多帧图像特征,第 $t$ 帧的实例特征为:
$$\mathbf{f}_i^{(t)} = \text{Aggregate}(\{\mathbf{f}_{i,k}^{(t,\tau)}\}_{\tau=t-T+1}^{t})$$复杂度 $O(T)$ 且需存储 $T$ 帧的完整图像特征。V2 的关键洞察:解耦图像特征与锚框特征。
V2 引入循环状态传播,设 $\mathbf{q}_i^{(t)}$ 为第 $t$ 帧第 $i$ 个 anchor 的状态特征,则更新规则为:
$$\mathbf{q}_i^{(t)} = \text{GRU}\left( \mathbf{f}_i^{(t,\text{curr})}, \mathbf{q}_i^{(t-1)} \right)$$其中 $\mathbf{f}_i^{(t,\text{curr})}$ 是当前帧的采样特征,$\mathbf{q}_i^{(t-1)}$ 是上一帧传播来的状态。展开后:
$$\mathbf{q}_i^{(t)} = \text{GRU}\left( \text{Sample}(\mathbf{F}^{(t)}, \mathbf{b}_i^{(t)}), \mathbf{q}_i^{(t-1)} \right)$$实际实现中,GRU 可以替换为更轻量的门控线性单元:
$$\mathbf{q}_i^{(t)} = \sigma(\mathbf{W}_z \mathbf{f}_i^{(t)} + \mathbf{U}_z \mathbf{q}_i^{(t-1)}) \odot \tanh(\mathbf{W}_h \mathbf{f}_i^{(t)} + \mathbf{U}_h \mathbf{q}_i^{(t-1)}) + (1-\sigma(\cdot)) \odot \mathbf{q}_i^{(t-1)}$$| 收益 | 说明 |
|---|---|
| 复杂度 $O(T)\to O(1)$ | 不随历史帧数增长,推理快、显存省 |
| 长时序融合 | 能融合远超 V1 的长期信息,时序增益更显著 |
V2 在 nuScenes 3D 检测上达到 SOTA,进一步坐实"全稀疏 + 循环时序"的优越性。这套"不存多帧、只传稀疏状态“的设计,后来也成了 SparseDrive 等端到端框架的时序地基。
🎯 V3:实例去噪 + 质量估计,从检测跨入跟踪

图4:Sparse4D V3 架构。在 V2 循环时序基础上增加实例去噪头和质量估计头,推理时无需修改架构即可扩展为多目标跟踪器。
V3 把 Sparse4D 从纯检测器升级成检测+跟踪的端到端系统,三处关键升级:
1. 时序实例去噪(Temporal Instance Denoising)
借鉴 DETR 去噪思路,但在时序维度上做——把历史帧的噪声实例送回网络辅助训练,显著稳定 query 的时序传播,检测性能同步上升。
数学定义:给定第 $t$ 帧的 ground truth 框 $\mathbf{b}^*$,构造带噪声的 query:
$$\tilde{\mathbf{q}}^{(t)} = \mathbf{q}^{(t)} + \epsilon, \quad \epsilon \sim \mathcal{N}(0, \sigma^2\mathbf{I})$$去噪训练目标是最小化预测与 GT 之间的差距:
$$\mathcal{L}_{\text{denoise}} = \sum_{i} \left[ \mathcal{L}_{\text{cls}}(\hat{\mathbf{c}}_i, \mathbf{c}_i^*) + \mathcal{L}_{\text{reg}}(\hat{\mathbf{b}}_i, \mathbf{b}_i^*) \right]$$但与 DETR 不同,V3 的关键创新是在时序维度上施加噪声——对历史帧的 query 加入时域扰动,强迫网络学会"即使上一帧的 query 有噪声,我也能恢复出正确位置”。这使得循环状态传播在推理时对噪声更鲁棒。
2. 质量估计(Quality Estimation)
让网络额外预测检测质量分数,给置信度更准的标定,提升下游匹配与筛选的可靠性。
质量分数定义为预测框与 GT 的 3D IoU:
$$q_i = \text{IoU}(\hat{\mathbf{b}}_i, \mathbf{b}_i^*)$$训练时用一个辅助回归头预测 $\hat{q}_i$,损失为 MSE:
$$\mathcal{L}_{\text{QE}} = \sum_i \| \hat{q}_i - q_i \|^2$$推理时将 $\hat{q}_i$ 乘以分类得分作为最终置信度。这解决了传统分类分数无法反映定位质量的痛点。
3. 解耦注意力(Decoupled Attention)
对注意力结构做改进,让特征交互更干净、训练更稳。标准的 self-attention 是所有 token 两两交互:
$$\text{Attn}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) = \text{Softmax}\left(\frac{\mathbf{Q}\mathbf{K}^T}{\sqrt{d}}\right)\mathbf{V}$$V3 将其解耦为 content-to-content 和 content-to-position 两条路径:
$$\text{DecoupledAttn} = \text{Softmax}\left(\frac{\mathbf{Q}_c\mathbf{K}_c^T + \mathbf{Q}_p\mathbf{K}_p^T}{\sqrt{d}}\right)\mathbf{V}$$其中 $\mathbf{Q}_c, \mathbf{K}_c$ 来自内容特征,$\mathbf{Q}_p, \mathbf{K}_p$ 来自位置编码。这种解耦让模型能同时关注"谁在说话"和"从哪说话",特征交互更加精细。
一键变跟踪器
最优雅的一笔:V3 不改动检测架构,只在推理时给每个实例分配一个 instance ID,就把检测器扩展成跟踪器。这是 query-based 算法天然的优势——实例即对象,跟踪即 query 的时序延续。
具体而言,时序实例去噪在训练阶段强迫网络学会"同一个实例跨帧应该收敛到同一个 query",于是推理时只需比对相邻帧 query 特征的相似度,就能把同一目标的轨迹串起来,无需传统的卡尔曼滤波 + 匈牙利匹配那一套。这让多目标跟踪(MOT)从"检测器 + 独立跟踪模块"的拼装,变成"一个端到端网络顺手做完"。AMOTA 提升 7.6% 这个最大涨幅,正是来自这种检测-跟踪的统一红利。
nuScenes 顶配成绩
| 配置 | mAP | NDS | AMOTA |
|---|---|---|---|
| Sparse4D V1 (ResNet50) | 39.5% | 49.5% | — |
| Sparse4D V1 (ResNet101) | 43.5% | 53.5% | — |
| Sparse4D V2 (ResNet50) | 43.9% | 54.6% | 43.4% |
| Sparse4D V2 (VoVNet) | 49.6% | 59.8% | — |
| Sparse4D V3 (ResNet50) | 46.9% | 56.1% | 49.0% |
| Sparse4D V3 (EVA02, test) | 64.0% | 71.9% | 67.7% |
相比基线,V3 在 mAP/NDS/AMOTA 上分别提升 3.0%/2.2%/7.6%,跟踪指标 AMOTA 提升尤为显著。
与主流 BEV 方法对比
| 方法 | Backbone | 范式 | 输入尺寸 | mAP | NDS |
|---|---|---|---|---|---|
| DETR3D | ResNet101 | 稀疏 query | 900×1600 | 34.6% | 43.4% |
| PETR | ResNet101 | 位置编码 | 512×1408 | 41.3% | 50.5% |
| BEVFormer | ResNet101 | 稠密 BEV | 900×1600 | 44.0% | 55.0% |
| BEVFormer-S | ResNet101 | 稠密 BEV | 900×1600 | 45.8% | 56.4% |
| Sparse4D V1 | ResNet101 | 全稀疏 | 900×1600 | 43.5% | 53.5% |
| Sparse4D V2 | VoVNet | 全稀疏 | 900×1600 | 49.6% | 59.8% |
| Sparse4D V3 | EVA02 | 全稀疏 | 900×1600 | 64.0% | 71.9% |
V1 已经全面超越稀疏方法 DETR3D(+8.9 mAP),与 BEVFormer 持平(在 ResNet101 下);V2 搭配更强的 VoVNet backbone 后反超 BEVFormer;V3 配合 EVA02 达到最高性能。
时序融合消融
| 方法 | 时序策略 | 历史帧 | mAP | NDS |
|---|---|---|---|---|
| Sparse4D V1 | 多帧缓存 | 4 帧 | 43.5% | 53.5% |
| Sparse4D V2 | 循环传播 | 理论无限 | 49.6% | 59.8% |
| V2 w/o 循环 | 单帧无时序 | 0 帧 | 44.2% | 54.0% |
| V2 w/ 20 帧循环 | 循环传播 | 20 帧有效感受野 | 50.1% | 60.3% |
循环时序相比无时序提升 5.4 mAP / 5.8 NDS,且有效感受野从 4 帧扩展到 20 帧后仍能持续提升——这说明 Sparse4D 的循环状态并未饱和,能吸收更长期的时序信息。
🆚 全稀疏 vs BEV:路线之争
| 维度 | BEV 范式 | Sparse4D(全稀疏) |
|---|---|---|
| 中间表示 | 稠密俯视图 | 稀疏实例 query |
| 算力 | 随分辨率平方 | 随目标数线性 |
| 时序融合 | 多帧 BEV 对齐(重) | 循环传锚框特征(O(1)) |
| 视角变换 | LSS / 注意力(病态) | 4D 关键点投影(显式) |
| 车端部署 | 难 | 友好 |
| 跟踪扩展 | 需额外模块 | 推理时分配 ID 即可 |
全稀疏并非全能——它在密集占据预测、栅格化可行驶区域等需要稠密表示的任务上不如 BEV 自然。但只要任务是"检测/跟踪/预测/规划"这类本质上稀疏的工作,Sparse4D 路线在效率和精度上都更优。
🔗 作为 SparseDrive 与端到端的地基
Sparse4D 的价值不止于感知。它的稀疏实例 query成了后来全稀疏端到端框架的标准接口:
Sparse4D 检测/跟踪 query ➜ 运动预测 query ➜ 规划 query
一条稀疏 query 流贯穿全栈,彻底跳过稠密 BEV。本系列第 7 篇的 SparseDrive V2 就是把 Sparse4D 的检测头作为端到端骨架,用"稀疏查询 + 质量感知记忆库"统一感知、预测、规划。可以说,没有 Sparse4D 打下的全稀疏地基,就没有 SparseDrive 的实时端到端。
| 下游受益 | 如何继承 Sparse4D |
|---|---|
| SparseDrive V2 | 检测头直接复用稀疏 query 设计 |
| 运动预测 | 实例 query 天然延续成预测 query |
| 规划 | 自车 query 与他车 query 同构交互 |
| 车端部署 | 稀疏算力友好,Orin 可跑 |
⚠️ 局限与未来方向
- 稠密任务不擅长:占据网络、可行驶区域栅格化仍需稠密表示,全稀疏不占优;
- 小目标 / 远距离:依赖投影准确性,远距离小目标的关键点可能落进低分辨率特征,精度受限;
- 多模态融合:与激光雷达、4D 毫米波雷达的稀疏融合(如 Sparse4D-Radar)仍在探索。
后续方向我看好:稀疏 query 与 BEV 的混合表示(稀疏管目标、稠密管占据)、时序实例去噪的进一步自监督化、以及把跟踪 ID 分配做成可学习的端到端关联。
📝 个人思考
读完 Sparse4D 三连击,我最大的感触是它把"稀疏"从一种技巧上升成了一种哲学。BEV 范式之所以稠密,是历史惯性——早期 LSS 想把 2D 特征搬到 3D,最直觉的就是铺一张俯视图。但 Sparse4D 让我们看清一件事:驾驶里真正需要被表示的东西(车、人、车道、轨迹)天然就是稀疏的,稠密只是中间手段,不是目的。一旦接受了这个前提,所有"为了稠密而稠密"的算力开销就显得荒唐。从 V1 证明可行,到 V2 把时序压成 $O(1)$,再到 V3 一键变跟踪,每一版都在把"稀疏"这条路线打磨得更锋利——这是典型的"把一件事做到极致"的工程美感。
第二点启发在**“解耦"的力量**。V2 把图像特征和锚框特征解耦,是整套设计里最聪明的一笔。它意味着不必为时序付图像级的代价,只需让稀疏状态在帧间流动。这个思想其实和循环神经网络、卡尔曼滤波的精神一脉相承——真正需要传递的是"状态”,不是"观测"。我认为这种"稠密观测、稀疏状态"的分层哲学,会从感知外溢到预测和规划:未来端到端栈很可能是"稠密图像编码器 + 稀疏状态传播"的混合体,Sparse4D 已经给出了感知层的样板。
最后,V3"推理时分配 ID 就变跟踪器"这件事,道出了 query-based 范式的深层优势——统一表示天然支持任务延伸。当检测、跟踪、预测、规划共用同一套稀疏 query,任务之间的"接缝"消失了,信息不必在模块边界处反复翻译损失。这正是 SparseDrive 能把全栈串成一条流的技术前提。我倾向于认为,未来真正能上车跑通的端到端系统,一定是"全稀疏 query 流"形态,而 Sparse4D 就是这条河的源头。当算力不再是奢侈品,“稀疏"赢的不再是省算力,而是信息流的纯净度——这才是它最持久的竞争力。
🔗 延伸阅读
| 工作 | 关系 |
|---|---|
| DETR3D / BEVFormer | 多相机 3D 感知的对照面(稀疏 vs 稠密) |
| DETR / Deformable DETR | query-based 检测与去噪思想来源 |
| SparseDrive V2 | 本系列第 7 篇,把 Sparse4D 接成全稀疏端到端 |
| StreamPETR | 另一类稀疏时序检测,与 Sparse4D V2 思路相通 |
| Sparse4D-Radar | 路线延伸到 4D 毫米波雷达-相机融合 |
📖 这是论文精读系列的第 17 篇。当全稀疏从感知贯通到规划,BEV 还会剩下多少领地?欢迎留言讨论。