4. 3D Occupancy表示方法

在3D Occupancy空间感知中,“表示方法”决定了场景被如何离散化、存储、查询与更新。同一份激光雷达或环视图像输入,采用不同表示后,内存占用、查询速度、边界精度和可微性都会显著不同。本节围绕五类主流表示展开:稠密体素、八叉树、隐式神经表示、TSDF以及概率占据模型,并给出选型与工程落地建议。

一、核心原理:从“空间离散”到“占据概率”

3D Occupancy的本质是回答空间中任意位置是否被物体占据。工程上通常把连续空间划分为可索引的单元,再为每个单元赋予状态或概率。不同表示方法的差异主要体现在三点:空间划分方式、存储结构、状态更新模型。

  • 体素(Voxel):将空间切成规则网格,每个体素记录占据、语义或特征。优点是结构规整、便于卷积与并行;缺点是分辨率提高时内存呈三次方增长。
  • 八叉树(Octree):对体素做层次化细分,空旷区域用大节点表示,细节区域继续分裂。优点是稀疏存储、多分辨率查询;缺点是树遍历与动态更新实现复杂。
  • 隐式神经表示(INR):用神经网络把坐标映射为占据值或密度,如NeRF式密度场、SDF网络。优点是连续、可微、内存与分辨率解耦;缺点是推理耗时、训练依赖强。
  • TSDF(Truncated Signed Distance Field):每个体素存储到最近表面的截断符号距离,正值在表面外、负值在表面内,零等值面即重建表面。优点是融合平滑、适合建图与表面提取;缺点是对动态物体和远距离稀疏区域不友好。
  • 概率占据模型:用概率描述体素被占据的可信度,典型为占据栅格与log-odds更新。优点是能处理传感器噪声与多次观测;缺点是概率饱和与动态更新需要调参。
3D Occupancy 五类表示方法:结构、存储与状态 稠密体素 规则网格 · 内存O(N³) 八叉树 层次细分 · 稀疏存储 隐式神经表示 连续可微 · 坐标→占据 TSDF 零等值面 +d -d 截断符号距离 · 表面融合 概率占据 log-odds · 噪声鲁棒 从传感器观测到占据输出的通用数据流 多传感器观测 LiDAR / 环视 / 深度 空间离散化 体素 / 八叉树 / 采样点 状态估计 TSDF / 概率 / 网络 融合与更新 时序累积 / 动态剔除 占据输出 栅格 / 网格 / 语义 表示方法贯穿“离散化—状态估计—融合更新—输出”全链路,选型需同时权衡精度、内存与实时性

二、方法流程:不同表示的更新与查询路径

以自动驾驶常见的建图与占据预测为例,五类表示在流程上可归纳为“离散化—观测投影—状态更新—查询输出”四步,但每一步的实现差异很大。

  1. 体素流程:确定分辨率与范围,将点云或深度投影到体素索引,更新占据/语义标签,最后用3D卷积或稀疏卷积输出。分辨率0.1m、范围100m×100m×20m时,体素数量约2×10⁸,必须使用稀疏化或哈希索引。
  2. 八叉树流程:从根节点递归细分,仅对含观测的节点分裂,查询时按需下钻。适合大范围室外场景,但动态物体频繁更新会导致树结构反复调整。
  3. 隐式神经表示流程:采集带位姿的图像或点云,训练网络拟合符号距离或密度,推理时对查询点批量前向。优点是任意分辨率,缺点是训练与推理成本高,实时性依赖网络压缩与缓存。
  4. TSDF流程:沿相机射线采样,计算截断符号距离,按权重融合到体素;提取表面时用Marching Cubes。适合静态高精建图,动态物体需配合语义或概率剔除。
  5. 概率占据流程:用log-odds累加观测,命中增加、穿透减少,概率超过阈值判为占据。适合多帧融合与噪声抑制,但需处理概率饱和与动态物体残留。
# 概率占据 log-odds 更新示例
L_occ = 0.85      # 命中时的对数几率增量
L_free = -0.4     # 穿透时的对数几率增量
L_min, L_max = -2.0, 3.5

for each voxel v observed by ray:
    if ray hits v:
        v.log_odds = min(v.log_odds + L_occ, L_max)
    else:
        v.log_odds = max(v.log_odds + L_free, L_min)

v.prob = 1.0 / (1.0 + exp(-v.log_odds))
v.occupied = v.prob > 0.5

三、案例/场景:城市路口与地下车库的表示选型

在城市路口场景中,感知范围大、动态目标多,且需要输出语义占据。若采用稠密体素,0.2m分辨率下内存压力较大,通常改用稀疏体素+哈希索引或八叉树,并对动态区域提高分辨率。TSDF在该场景中容易因车辆移动产生“拖影”,需要结合概率占据或语义分割剔除动态体素。

在地下停车场场景中,结构重复、光照弱、静态元素多,适合用TSDF做高精表面重建,再叠加概率占据处理反光与稀疏观测。若需要连续查询与平滑表面,可引入隐式神经表示作为后处理,但需评估车载算力。

选型建议:实时感知优先稀疏体素或八叉树;高精建图优先TSDF;多帧融合与噪声抑制优先概率占据;离线高保真或研究场景可尝试隐式神经表示。

四、对比清单:五类表示的关键参数与适用性

表示方法 存储结构 内存特征 查询/更新 典型适用 主要局限
稠密体素 规则3D数组 O(N³),分辨率敏感 索引快,更新简单 小范围、规则网格、3D卷积 大场景内存爆炸
八叉树 层次树节点 稀疏,按需分配 遍历较慢,动态更新复杂 大范围室外、多分辨率 实现复杂,指针开销
隐式神经表示 网络权重 与分辨率解耦 推理慢,可微 连续表面、离线重建 算力高,泛化依赖训练
TSDF 体素+距离权重 中等,需截断范围 融合平滑,表面提取好 静态高精建图 动态拖影,远距离稀疏
概率占据 体素+log-odds 中等,可稀疏化 多帧融合鲁棒 噪声抑制、动态剔除 概率饱和,参数敏感

五、误区与复盘

常见误区:把“体素分辨率”等同于“感知精度”。实际上,体素越小并不一定越好:内存、计算和噪声都会放大。另一个误区是认为TSDF可以直接替代概率占据。TSDF擅长表面几何,概率占据擅长观测可信度,二者常需组合使用。
  • 误区一:所有场景都用稠密体素。复盘:先评估范围与分辨率,优先稀疏化或哈希索引。
  • 误区二:忽略动态物体对TSDF的污染。复盘:引入语义掩码或概率权重,对动态区域降低融合权重。
  • 误区三:隐式神经表示一定优于显式表示。复盘:其优势在连续性与内存解耦,但实时性与可解释性仍需权衡。
  • 误区四:概率占据参数一次调好即可。复盘:不同传感器噪声模型不同,log-odds增量需按场景标定。

综上,3D Occupancy表示方法没有绝对最优,只有与场景、算力和精度目标最匹配的组合。工程中常见做法是:用稀疏体素或八叉树做实时占据预测,用TSDF做局部高精表面,用概率占据做多帧融合与动态剔除,并在离线或高算力平台探索隐式神经表示。理解五类表示的结构与更新机制,才能在系统设计中做出合理取舍。