1. Occupancy网络概述:什么是3D Occupancy网络?为什么需要它?它与BEV感知、激光雷达点云分割的区别与联系
1.1 从一个真实场景说起
我记得几年前在做一个园区无人配送项目时,遇到过一个特别头疼的问题。车子在路口等红灯,旁边停着一辆大货车。BEV感知模块告诉我「前方有车辆」,但问题是——货车后面突然窜出一个小孩,我的车完全没看到。
为什么?因为BEV感知本质上是在鸟瞰图上画框,它只能告诉你「那里有个物体」,但物体背后的空间是什么状态?是空的还是有遮挡?它不知道。
这就是Occupancy网络要解决的核心问题。
1.2 什么是3D Occupancy网络?
说白了,Occupancy网络就是把三维空间划分成一个个小立方体(voxel),然后判断每个小立方体是被占据还是空闲。就像玩《我的世界》一样,只不过我们关心的是真实世界的空间占用情况。
具体来说,一个标准的Occupancy网络会输出一个三维张量:
# 假设感知范围是 [-40m, 40m] x [-40m, 40m] x [-2m, 4m]
# 分辨率 0.2m,那么输出维度是:
# 400 x 400 x 30 = 4,800,000 个voxel
# 每个voxel输出一个占据概率 [0, 1]
嗯,这里要注意,不是所有voxel都需要预测。我习惯的做法是只预测地面以上的空间,因为地下部分对自动驾驶意义不大,还能省不少算力。
1.3 为什么需要它?
你想想看,传统感知方案有几个硬伤:
- 物体检测只能处理已知类别:路上掉个轮胎、飞个塑料袋,模型不认识就直接忽略
- BEV空间有盲区:遮挡物后面的空间完全是未知状态
- 激光雷达点云稀疏:远距离点云稀稀拉拉,很难做精确分割
Occupancy网络恰好补上了这些短板。它不关心你是什么物体,只关心「这里有没有东西」。我在项目中遇到过最典型的场景——施工路段的锥桶和警示牌,检测模型经常漏检,但Occupancy网络能稳稳地把它们标记为占据状态。
核心价值:Occupancy网络提供的是「空间占用先验」,而不是「语义理解」。它更像是一个空间感知的基础设施,上层规划模块可以基于这个先验做更安全的决策。
1.4 与BEV感知的区别
很多人容易把Occupancy和BEV搞混。我刚开始接触时也犯过这个错。
| 维度 | BEV感知 | Occupancy网络 |
|---|---|---|
| 输出空间 | 2D鸟瞰图 | 3D体素空间 |
| 输出形式 | 目标框 + 类别 | 每个voxel的占据概率 |
| 遮挡处理 | 无法处理 | 可以推理遮挡区域 |
| 计算量 | 相对较小 | 大(voxel数量巨大) |
| 典型应用 | 目标检测、跟踪 | 可通行区域、碰撞检测 |
说白了,BEV是「我看到什么就告诉你什么」,Occupancy是「我推理整个空间应该是什么样」。举个例子,BEV看到半辆车,就只输出半个框;Occupancy会基于上下文,把被遮挡的另一半也推理出来。
1.5 与激光雷达点云分割的区别
点云分割,我做了好几年。它的思路是:给每个激光点打标签,比如「地面」、「车辆」、「行人」。
但这里有个问题——激光雷达只能看到「有反射回波」的点。对于玻璃、黑色车身这些吸波材料,或者远距离的稀疏区域,点云分割基本就废了。
Occupancy网络不一样。它可以用相机图像来补全激光雷达看不到的区域。我在部署时做过对比:纯激光方案在夜间表现还行,但白天遇到大面积玻璃幕墙的建筑,点云分割直接漏掉一大片;而Occupancy网络因为有图像特征辅助,能正确预测出玻璃墙的位置。
我的经验:实际部署时,我建议把Occupancy网络和点云分割做融合。点云分割提供精确的边界信息,Occupancy提供完整的空间占用估计。两者互补,效果1+1>2。
1.6 三者的关系
其实这三者不是互斥的,而是层层递进的关系:
- 激光雷达点云分割:最底层,告诉你「每个点是什么」
- BEV感知:中间层,告诉你「2D空间里有什么物体」
- Occupancy网络:最高层,告诉你「3D空间里哪里能走、哪里不能走」
我现在的做法是:三个模块并行跑,输出结果做后融合。点云分割负责精确边界,BEV负责物体级理解,Occupancy负责空间级推理。规划模块拿到这三份信息,决策就稳多了。
避坑指南:我曾经在某个项目里试图用Occupancy网络替代所有感知模块,结果发现不行。Occupancy对细长物体(比如电线杆)的预测精度很差,因为voxel分辨率有限。最后还是得靠点云分割来兜底。
1.7 小结
Occupancy网络不是什么黑科技,它就是把「空间占用估计」这件事做到了工程可用的程度。它的核心优势在于:
- 不依赖物体类别,泛化能力强
- 能推理遮挡区域,安全性更高
- 多模态融合(相机+激光),鲁棒性好
当然,代价也很明显——计算量大、对细长物体不友好、训练数据标注成本高。这些我们后面章节会逐一展开讲。
下一章,我会带大家深入Occupancy网络的数据标注方案。说实话,这块才是真正劝退很多团队的地方。准备好了吗?