4. 3D Occupancy表示方法
在3D Occupancy空间感知中,“表示方法”决定了场景被如何离散化、存储、查询与更新。同一份激光雷达或环视图像输入,采用不同表示后,内存占用、查询速度、边界精度和可微性都会显著不同。本节围绕五类主流表示展开:稠密体素、八叉树、隐式神经表示、TSDF以及概率占据模型,并给出选型与工程落地建议。
一、核心原理:从“空间离散”到“占据概率”
3D Occupancy的本质是回答空间中任意位置是否被物体占据。工程上通常把连续空间划分为可索引的单元,再为每个单元赋予状态或概率。不同表示方法的差异主要体现在三点:空间划分方式、存储结构、状态更新模型。
- 体素(Voxel):将空间切成规则网格,每个体素记录占据、语义或特征。优点是结构规整、便于卷积与并行;缺点是分辨率提高时内存呈三次方增长。
- 八叉树(Octree):对体素做层次化细分,空旷区域用大节点表示,细节区域继续分裂。优点是稀疏存储、多分辨率查询;缺点是树遍历与动态更新实现复杂。
- 隐式神经表示(INR):用神经网络把坐标映射为占据值或密度,如NeRF式密度场、SDF网络。优点是连续、可微、内存与分辨率解耦;缺点是推理耗时、训练依赖强。
- TSDF(Truncated Signed Distance Field):每个体素存储到最近表面的截断符号距离,正值在表面外、负值在表面内,零等值面即重建表面。优点是融合平滑、适合建图与表面提取;缺点是对动态物体和远距离稀疏区域不友好。
- 概率占据模型:用概率描述体素被占据的可信度,典型为占据栅格与log-odds更新。优点是能处理传感器噪声与多次观测;缺点是概率饱和与动态更新需要调参。
二、方法流程:不同表示的更新与查询路径
以自动驾驶常见的建图与占据预测为例,五类表示在流程上可归纳为“离散化—观测投影—状态更新—查询输出”四步,但每一步的实现差异很大。
- 体素流程:确定分辨率与范围,将点云或深度投影到体素索引,更新占据/语义标签,最后用3D卷积或稀疏卷积输出。分辨率0.1m、范围100m×100m×20m时,体素数量约2×10⁸,必须使用稀疏化或哈希索引。
- 八叉树流程:从根节点递归细分,仅对含观测的节点分裂,查询时按需下钻。适合大范围室外场景,但动态物体频繁更新会导致树结构反复调整。
- 隐式神经表示流程:采集带位姿的图像或点云,训练网络拟合符号距离或密度,推理时对查询点批量前向。优点是任意分辨率,缺点是训练与推理成本高,实时性依赖网络压缩与缓存。
- TSDF流程:沿相机射线采样,计算截断符号距离,按权重融合到体素;提取表面时用Marching Cubes。适合静态高精建图,动态物体需配合语义或概率剔除。
- 概率占据流程:用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做局部高精表面,用概率占据做多帧融合与动态剔除,并在离线或高算力平台探索隐式神经表示。理解五类表示的结构与更新机制,才能在系统设计中做出合理取舍。