Semantic Voxel Hash Map
Summary
Semantic Voxel Hash Map 将连续三维空间离散为体素,以稀疏哈希结构只保存实际观测到的空间单元。它面向语义聚合、占据表达和规划查询,与 Point-LIO 用于几何邻域查询和残差构造的 ikd-Tree 定位地图分工不同。
Voxel 与体素化
Voxel 是 volume element(体素),可视为三维空间中与二维 pixel 对应的离散单元。设体素边长为 ,世界坐标系中的点 可映射到整数体素索引:
其含义是将连续坐标映射为一个固定大小的空间 cell。地图不再只保存每个原始点的精确坐标,而可以在每个 cell 内汇聚占据、几何与语义信息。
为什么不用 Dense Voxel Grid
若将 的空间以 分辨率完整离散,每个轴需要 个 cell,总数为:
即约 156 亿个体素。真实室外环境中绝大多数体积是从未被观测到的空气,为所有 cell 预先分配内存会造成极大浪费。体素分辨率越小,完整网格中的 cell 数按每个轴缩放倍率的三次方增长;例如由 变为 ,理论完整网格规模扩大八倍。
Voxel Hash:稀疏空间表示
Voxel Hash 以整数索引 作为 key,以该体素的聚合信息作为 value,只在空间被实际观测时创建对应条目。未观测空间不分配内存。
概念上可表示为:
VoxelIndex -> VoxelData
(12, 8, 3) -> road, occupancy, confidence, timestamp
(12, 9, 3) -> road, occupancy, confidence, timestamp
(13, 9, 3) -> vegetation, occupancy, confidence, timestamp哈希表使给定体素索引的查找、插入和更新在平均情况下保持高效。因此 Voxel Hash 适合大范围、稀疏的三维环境,也适合在线持续累积语义观测。
Voxel Hash 与 ikd-Tree 的分工
| 维度 | ikd-Tree 几何地图 | Semantic Voxel Hash Map |
|---|---|---|
| 主要任务 | 为 LiDAR 点寻找邻近地图点,构造局部几何残差 | 聚合空间单元的占据与语义,支持查询和规划 |
| 典型查询 | “该点附近最近的 K 个地图点是什么?” | “该空间索引对应的 cell 是否存在,存了什么?” |
| 数据组织 | 增量点云与空间近邻搜索 | 体素索引到聚合状态的稀疏映射 |
| 输出用途 | 局部平面拟合、Point-LIO 状态更新 | 语义稳定化、可通行性判断、上层任务与规划 |
两者都表示三维环境,但不能互相替代。将稠密原始点云逐点附上语义标签会产生大量重复、相互冲突的观测;体素是更适合长期语义聚合的空间单位。
体素分辨率的取舍
体素大小并非由 LiDAR 单点测距精度直接决定,而应在以下因素之间折中:
- 下游任务需要表达的最小障碍、路缘或通道尺度;
- LiDAR 点密度、观测距离和传感器噪声;
- 地图范围和可用内存;
- 哈希条目数量、更新频率与实时预算;
- 语义边界被量化和混合的风险。
小体素能更细致地保留窄通道、小障碍和类别边界,但会增加 occupied voxel 数、内存占用和更新成本;大体素更平滑、更省资源,却可能把道路、植被和边缘混入同一 cell。选择具体分辨率时,应在代表性数据上比较地图占用、更新延迟、边界质量和下游规划效果,而不是把某个经验值称为理论最优。
Semantic Voxel 的典型状态
一个 Semantic Voxel 可以根据任务保存:
- occupancy 或自由/占据状态;
- 点数、平均高度、法向或局部几何统计;
- 各语义类别的计数、累计得分或概率;
- 单帧分割置信度的累计信息;
- 最近观测时间、观测次数与数据来源。
具体字段取决于地图的目标:若服务导航,应优先保存可通行性与动态障碍相关状态;若服务离线建图,可增加更丰富的类别和几何统计。
多帧语义融合
单帧分割结果可能因遮挡、光照、视角、运动模糊或模型误差而不稳定。因此 semantic voxel 不宜只保存最后一帧的类别,而应在同一空间单元内聚合多帧观测。
投票与置信度加权
最简单的方法是类别计数或多数投票。若分割模型能输出可靠置信度,可按置信度对类别得分加权,使高可信观测对最终类别产生更大影响。最终标签由累计得分最高的类别给出,而不是由最后一次观测直接覆盖。
时间衰减
对历史观测施加时间衰减,可以降低过时信息在地图中的影响。其目的不是形式上的公式复杂化,而是让地图适应环境变化:静态结构可使用较慢衰减,动态类别通常应更快衰减。
动态物体与 ghost artifact
车辆、行人等动态物体若被写入长期地图,离开后可能留下并不存在的“幽灵”占据或语义标签,即 ghost artifact。常见策略包括:
- 对动态类别使用更快的时间衰减;
- 利用目标跟踪或连续观测确认动态状态;
- 根据占据消失进行更新;
- 不将特定动态类别写入持久语义地图。
三维语义建图中的数据流
典型流程如下:
图像语义分割
↓
LiDAR 点投影到图像,取得对应像素标签与置信度
↓
获得带语义的 LiDAR 点
↓
利用标定与 Point-LIO 位姿变换到世界坐标系
↓
世界坐标映射为 voxel index
↓
在 Voxel Hash 中查询或创建体素
↓
更新 occupancy、语义得分、置信度与时间信息
↓
稳定的三维语义地图,供规划与语义查询使用这里 Point-LIO 提供的是时间一致的位姿估计;语义投影和 Voxel Hash 则负责将逐帧观测沉淀为世界坐标系下较稳定的空间表示。
Key Points
- Voxel 是三维离散空间单元;Voxel Hash 只保存被观测到的 cell。
- Dense Voxel Grid 在大范围三维环境中会为大量空气空间浪费内存。
- ikd-Tree 解决几何近邻查询,Voxel Hash 解决体素状态查询与聚合。
- 体素大小是空间细节、语义边界、内存和实时性的工程折中。
- 多帧投票、置信度加权和时间衰减能提高语义地图稳定性。
- 动态类需要专门处理,否则会产生 ghost artifact。