用约千级稀疏 3D Query 在线流式传播场景状态,解码为语义 Gaussian 并 splat 到体素,在 nuScenes/KITTI 上实现 SOTA 占用预测且推理快 5.9×
S2GO: STREAMING SPARSE GAUSSIAN OCCUPANCY PREDICTION
https://arxiv.org/pdf/2506.05473
https://jindapark.github.io/projects/s2go/
概述
视觉为中心的自动驾驶系统相比 LiDAR 方案更具成本效益与可扩展性,但缺乏稠密 3D 几何先验,制约了 L3+ 自动驾驶能力。3D Semantic Occupancy Prediction 通过体素级稠密语义表示补充传统稀疏感知(3D 检测、矢量化地图),能刻画任意形状未知物体,提升安全性。
现有占用预测方法多依赖规则体素网格(MonoScene、SurroundOcc、SparseOcc 等)或稠密 3D Gaussian 表示(GaussianFormer、GaussianWorld 等)。前者在空区域浪费计算,时序融合易引入网格伪影;后者虽聚焦占用区域,但通常需要 25.6k–144k 个 Gaussian,全局建模代价高昂,只能依赖局部稀疏卷积,难以高效融合长时历史。
本文提出 S2GO(Streaming Sparse Gaussian Occupancy),核心思路是用约 1k 个稀疏 3D Query 在线流式地概括并传播整个 3D 场景,而非每帧重建稠密表示。每个时间步,模型维护历史 Query 队列,结合当前多视角图像特征对 Query 做时序 refine,再将 Query 解码为更细粒度的语义 Gaussian,最后通过 Gaussian-to-Voxel splatting 得到标准体素占用预测。由于计算集中在稀疏 Query 空间,S2GO 在保留 Gaussian 高保真表达的同时,实现了全局特征交互与长时上下文建模。
将 Query 用于稠密占用预测面临三大挑战:(1)检测任务中 Query 数远大于目标数,可用 Hungarian Matching 做一对一分配;占用预测需覆盖全场景,稀疏 Query 到稠密 Gaussian 的映射天然模糊。(2)体素对齐方法只需在固定位置分类;Query 需先移动到感兴趣区域再分类,形成"鸡生蛋"问题——Query 落在车与路面之间时,目标类别决定其应移向何处。(3)稠密 Gaussian 靠空间覆盖缓解歧义,但为效率进一步稀疏化会加剧对齐困难。
S2GO 的解法是两阶段训练:Stage 1 几何去噪预训练用带噪 LiDAR 初始化 Query,通过去噪目标 + 多视角 RGB/Depth 渲染监督,让 Query 学会从空区域移动到占用区域并自组织覆盖场景;Stage 2 语义占用预测在仅 RGB 输入下,用可学习 Query 位置 + 预训练先验完成稠密语义占用估计,并配合 opacity 加权 splatting、高效 CUDA splatting 与 -distance Query 传播策略。
图 1 · Figure 1:S2GO 流式感知整体框架。每时刻用当前图像与历史 Query 队列 refine 3D Query,解码为语义 Gaussian 并 splat 到体素。
主要贡献
- 稀疏 Query 流式占用框架: 提出 S2GO,用约 1k 个 3D Query 在线流式传播场景信息,替代传统稠密体素/数万 Gaussian 表示,在稀疏 Query 空间高效完成全局时序融合。
- 几何去噪预训练: 针对稀疏 Query 到稠密占用的映射歧义,引入 Stage 1 去噪 + 渲染预训练,使 Query 能从空区域移动到占用区域、自组织覆盖 3D 结构,并预测速度建模动态物体。
- Opacity 加权占用与高效 G2V Splatting: GaussianFormer-2 中 opacity 原仅用于前景类别混合 ;S2GO 将其同时纳入单 Gaussian 占用概率 ,改善前景/背景分离;并设计 block-based CUDA splatting,反向传播加速 20.4×,训练 GPU 时从 93h 降至 24h。
- SOTA 性能与实时推理: 在 SurroundOcc-nuScenes、Occ3D-nuScenes、SSCBench-KITTI-360 上达到 SOTA;S2GO-Small 在单卡 4090 上达 26.1 FPS,较 GaussianWorld 快约 5.9×,IoU 提升 1.5。
核心方法论
预备知识:Gaussian Occupancy Prediction
S2GO 建立在 GaussianFormer / GaussianFormer-2 的 Gaussian 占用表示之上。场景由 个语义 Gaussian 集合 表示,每个 Gaussian 含位置 、旋转 、尺度 、不透明度 和类别分布 。
体素坐标 的占用概率建模为附近 Gaussian 的并集概率:
单 Gaussian 占用贡献(GaussianFormer-2 原版),离 Gaussian 中心越近,贡献越大:
协方差 。前景类别分布为 opacity 加权的 Gaussian 混合:
最终联合语义占用分布为 。
整体架构
S2GO 借鉴 StreamPETR 等流式 Query 检测范式。每个时间步 :
- 场景表示: 维护 个稀疏 3D Query ,每个 Query 关联 3D 位置 与特征向量。
- 时序 refine: 用历史 Query 队列 (4 帧 / 2s)与当前多相机图像特征 ,经 Temporal Transformer(self-attention 融合历史 Query + Deformable Cross-Attention 融合图像)更新 Query。
- Query 预测: 每个 Query 输出位置偏移 、opacity 、速度 ,以及 个细粒度 Gaussian 的参数。
- 层次化 Gaussian 解码: Query 作为空间锚点,展开为局部 Gaussian 簇:
- 两阶段差异: Stage 1 为几何去噪预训练(去噪 + Depth/RGB 渲染监督),不做语义占用预测,每个 Gaussian 独立预测颜色;Stage 2 为语义占用预测主任务(几何占用 + 语义类别),同一 Query 衍生的 Gaussian 共享语义类别标签,保证局部语义一致性。
- 推理输入: Stage 2 推理仅需 RGB 图像;Query 位置为可学习初始化,不再依赖 LiDAR。
模型配置:S2GO-Small 为 900 Query × 10 Gaussian/Query = 9k Gaussian;S2GO-Base 为 1800 × 20 = 36k Gaussian。对比 GaussianWorld 的 25.6k–144k Gaussian,S2GO 在 Query 层面仅维护 ~1k 状态。
Stage 1:3D 几何去噪预训练
动机
直接训练占用预测时,Query 难以移动到真实占用位置,只在附近粗略建模(见图 2 对比)。原因有二:(1)每个 Query 带动 个 Gaussian 成组移动,Query 位置扰动会传播到所有子 Gaussian,但占用标签对 Query 无明确一对一监督;(2)Gaussian-to-Voxel splatting 的局部性使各 Gaussian 被拉向不同局部最优,Query 被困在次优位置。
图 2 · Figure 2:去噪预训练对占用预测的影响(Query 偏移 / Gaussian 中心 / 占用结果对比)。
去噪与渲染框架
- Query 初始化: 从 LiDAR 点云 经 FPS(Furthest Point Sampling,最远点采样,点云下采样)采样 个点,再加均匀噪声:
nuScenes-SurroundOcc 上噪声幅度 m。带噪初始化迫使网络学习将 Query 从空区域移动到占用区域。 - 渲染监督: 将解码 Gaussian 渲染为 depth / RGB,与 LiDAR 投影深度 和图像观测对齐;在相邻关键帧(±0.5s)上,用预测速度 移动 Gaussian 并补偿 ego-motion,增强动态建模。 - 速度预测: 每个 Query 预测速度 ,用于动态区域在邻帧监督前的运动对齐。
训练目标
- Denoise 项: 监督 Query 偏移后位置回归 FPS 采样的 LiDAR 点,促使 Query 自组织覆盖 3D 结构。
- Depth / RGB 项: 显式训练 Gaussian 在对齐 Query 周围表达精细几何。
- 消融结论: Depth 监督 alone 已足够;加 RGB 略增;Denoise 项带来最大提升(mIoU 20.55→21.60,IoU 32.68→33.91)。用 Metric3D 零样本单目深度替代 LiDAR 预训练,性能几乎保持,说明预训练管线可泛化到纯视觉。
Stage 2:3D 语义占用预测
占用预测流程
- 加载 Stage 1 预训练权重,Query 位置改为可学习 3D 坐标(随机分布在整个 3D 空间)。
- 预测带语义类别的 Gaussian ,按上文「预备知识」中的公式 splat 到体素网格。
- 除当前帧外,对邻帧同样施加占用监督(与 Stage 1 邻帧策略一致)。
- 训练:nuScenes 上预训练 12 epoch + 占用 24 epoch;KITTI 上各 12 epoch。
Opacity 加权几何估计
GaussianFormer-2 原版中 opacity 仅用于类别混合权重,不参与二值占用判定,导致背景 Gaussian 通过缩小 scale 并卡在体素间隙来降低前景贡献。S2GO 将 opacity 纳入占用概率:
- 背景 Gaussian 可直接预测低 opacity,前景/背景分离更清晰,scale 监督更稳定。
- 消融:加入 opacity 后 mIoU +3.16(16.97→20.13),但训练时间翻倍;配合高效 splatting 后 mIoU 20.55,GPU 时仅 24h。
高效 Gaussian-to-Voxel Splatting
- 前向: 将体素分块为 4×4×4 grid,线程协作加载邻近 Gaussian 到共享内存再 splat(借鉴 3DGS),前向 1.29ms→0.87ms(1.5×)。
- 反向: 线程绑定到单个 Gaussian,避免对 640k 体素的原子操作,反向 116ms→5.7ms(20.4×)。
- 在 9k Gaussian + 640k 体素配置下,显著降低训练墙钟时间。
Query 传播(Streaming)
流式感知的关键是将当前帧部分 Query 推入历史队列供未来帧使用:
- top-k opacity: 选最高 opacity 的 Query,效果好但时序上 Query 高度重叠,场景覆盖不足。
- -distance top-k opacity(采用): 在 top-k 基础上要求 Query 两两间距 。训练时 随机采样 0–3m,推理时 nuScenes 设为 1.6m(Occ3D/KITTI 按场景尺度缩放)。
- 消融:无传播 mIoU 17.92;top-k 19.94;-distance 20.51。
时序 Transformer 与实现细节
- 骨干: ResNet50(S2GO-Small 用 ImageNet 预训练,S2GO-Base 用 nuImages 预训练)。
- 时序模块: 遵循 PETR / StreamPETR 设计,embedding dim 768,使用 Flash Attention。
- 图像交互: Deformable Attention 实现 Query 与多视角特征的 cross-attention。
- 分辨率: nuScenes 256×704;KITTI 256×1408。
- 优化: lr 4e-4,batch size 16,cosine annealing。
- 延迟分解(A100,9k Gaussian): backbone 11.54ms + temporal transformer 22.79ms + Gaussian prediction 2.22ms + propagation 1.45ms。
实验结果
- 结论: S2GO-Small 较 GaussianWorld IoU +1.50、FPS 约 5.9x(26.1 vs 4.4);S2GO-Base 再提升 +1.19 IoU,且在 drivable surface、sidewalk、manmade 等静态结构类上优势更明显。
Table 1:SurroundOcc-nuScenes 验证集(4090 GPU)
| | | | | | | | | | | | | | | | | | | |
|---|
| | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | |
| S2GO-Small | 34.27 | 22.11 | | | | | | | | | | | 46.29 | 29.19 | 29.72 | 28.44 | | | 26.1 |
| S2GO-Base | 35.46 | 22.72 | | | | | | | | | | | 46.85 | | 30.30 | | | 26.40 | |
- 定性分析: 多帧后 GaussianWorld 更容易把邻近车辆合并为单一表示;S2GO 在稀疏 Query 语义层面分解场景,更好保持独立物体身份。
图 3 · Figure 3:与 GaussianWorld 的占用预测定性对比(两序列、两时刻)。
- 结论: 单目前置相机设置下,S2GO-Base IoU 40.8(较 GaussianFormer-2 提升 2.4)、mIoU 15.1,超过 TPVFormer、OccFormer 等相机方法。
Table 2:SSCBench-KITTI-360 单目测试集
Input:L = LiDAR,C = Camera。
图 6 · Figure 6:SSCBench-KITTI-360 单目设置定性结果。
- 结论: S2GO-Base 的 RayIoU 达到 39.1,超过 SparseOcc(36.1),而且训练 epoch 更少(24 vs 48)。
Table 3:Occ3D-nuScenes(A100 GPU)
| | | | | |
|---|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| S2GO-Small (ours) | | | 37.2 | | 20.8 |
| S2GO-Base (ours) | | | 39.1 | 31.2 | |
- 补充: 表 9 汇总了 Occ3D 的完整指标。S2GO-Base 在 RayIoU、@1m、@2m、@4m 与 mIoU 上整体领先,S2GO-Small 则保留更高 FPS。
Table 9:Occ3D-nuScenes 完整对比(附录,A100 GPU)
| | | | | | | | | |
|---|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| S2GO-Small (ours) | | | | 37.2 | | | | | 20.8 |
| S2GO-Base (ours) | | | | 39.1 | 33.1 | 40.0 | 44.1 | 31.2 | |
未来占用预测与长时历史
- 利用 Query 自监督预测的速度,可 rollout 未来占用(见图 4),流式 Query 框架自然解耦各物体运动。
图 4 · Figure 4:基于 Query 自监督速度的未来占用 rollout。
- 历史帧数增加时性能稳步提升(图 5),更长历史不增加额外计算开销——融合在固定大小的 Query 队列中完成。
图 5 · Figure 5:历史帧长度对占用性能的影响。
消融实验(SurroundOcc-nuScenes)
- 结论: 直接训练占用效果最差;LiDAR + 噪声初始化带来关键跃升;加入完整三项损失后结果最佳。
Table 4:预训练策略
LiDAR + ε 表示从带噪 LiDAR 点初始化 Query。
- 结论: opacity 加权带来约 +3.2 mIoU,但训练时长大幅上升;高效 CUDA kernel 在保持精度的同时,把训练时间压缩到 28h,推理显存也从约 7GB 降到 2.4GB。
Table 5:Gaussian-to-Voxel Splatting
- 结论: δ-dist top-k opacity 传播最优,能避免高置信 Query 过度聚簇,从而提升场景覆盖与时序稳定性。
- 结论: 增加 Query 与 Gaussian 数量能持续抬升精度,但收益是渐进式的,同时会明显牺牲推理速度;900 x 10 更偏实时,1800 x 20 则追求更高精度上限。
Table 7:Query / Gaussian 数量(A100)
- 结论: 速度建模在预训练和占用预测阶段都能带来增益,两阶段同时启用时最好,说明它确实帮助了时序对齐与动态建模。
- 结论: 用 Metric3D 单目深度替代 LiDAR 做预训练初始化时,性能只小幅回落,说明这套预训练流程具备向纯视觉设置迁移的潜力。
Table 10:预训练 Query 初始化(附录)
| | |
|---|
| 21.60 | 33.91 |
| Zero-shot RGB depth (Metric3D) | | |
延迟分解(附录,A100,9k Gaussian)
- 结论: 推理耗时主要集中在 temporal transformer,其次是 backbone;Gaussian 预测和传播本身开销较小,说明稀疏 Query 表示把主要计算控制在了可接受范围内。
关键词词典
Streaming Perception: 在线、逐帧处理范式。S2GO 维护历史 Query 队列,每帧 refine 当前 Query 并将部分 Query 传播到未来,无需离线重建全场景,适合实时自动驾驶部署。
Gaussian Occupancy: 以 3D Gaussian 原语表示场景占用与语义的方法族(GaussianFormer、GaussianFormer-2、GaussianWorld)。S2GO 在 Query 层面保持稀疏,仅在解码阶段展开为 Gaussian 簇。
Velocity Modeling: 每个 Query 预测速度 ,用于预训练/占用训练中将 Gaussian 移动到邻帧位置以施加监督,也可用于未来占用 rollout 预测动态物体运动。
Temporal Transformer: 融合历史 Query 队列(4 帧)与当前图像特征的 Transformer 模块,设计遵循 PETR / StreamPETR,在稀疏 Query 空间完成时序融合而非在稠密 3D 网格上操作。
Deformable Attention: Query 与多视角 2D 图像特征交互的机制,允许 Query 自适应采样图像特征,是 S2GO 视觉几何推理的核心组件。
Hungarian Matching: 检测任务中 Query 与目标的一对一最优分配策略。占用预测需覆盖全场景,稀疏 Query 到稠密 Gaussian 的映射天然模糊,无法直接套用。
GaussianWorld: 主要对比基线,流式稠密 Gaussian 占用预测方法,使用 25.6k+ Gaussian 与局部卷积。S2GO 在 IoU 上超越约 1.5 且推理快约 5.9×。
GaussianFormer / GaussianFormer-2: Gaussian 占用表示的基础工作,定义了 Gaussian 混合占用公式。S2GO 沿用其表示并针对 opacity 与 splatting 效率做了改进。
SparseOcc: 全稀疏体素占用预测方法。S2GO 在 Occ3D 上 RayIoU 超越 SparseOcc(39.1 vs 36.1)。
MonoScene: 早期单目体素占用预测方法,基于规则体素网格,在空区域浪费计算。Table 1 中 IoU 23.96、mIoU 7.31。
Metric3D: 零样本单目深度估计模型。消融实验中用其替代 LiDAR 深度做 Stage 1 预训练,性能几乎保持,说明预训练管线可泛化到纯视觉。
SurroundOcc: nuScenes 多相机 3D 占用基准,范围 100×100×8 m³,分辨率 200×200×16,18 类。
Occ3D: nuScenes 另一占用基准,范围 80×80×6.4 m³,由自动标注管线生成,主指标为 RayIoU。
SSCBench-KITTI-360: 基于 KITTI-360 的单目 3D 语义场景补全基准,体素 51.2×51.2×6.4 m³,分辨率 256×256×32,19 类。
RayIoU: Occ3D 主指标,在模拟 LiDAR 射线级别评估深度误差(1m/2m/4m 阈值)与类别正确性,比体素 mIoU 更能防止厚表面分数膨胀。