Occupancy网络基础:从BEV到3D占用网格的表示方法、输入输出定义、与目标检测和语义分割的区别
在自动驾驶感知系统中,传统2D目标检测与BEV(Bird's Eye View,鸟瞰图)感知已经无法满足复杂道路场景下对几何结构与自由空间理解的需求。Occupancy Network(占用网络)通过将三维空间离散化为体素网格(Voxel Grid),对每个网格单元进行占用状态与语义类别的预测,从而构建出稠密的3D占用表示。本节将系统梳理从BEV到3D占用网格的演进逻辑、Occupancy网络的输入输出定义,并深入辨析其与目标检测、语义分割在任务范式上的本质差异。
2.1 从BEV到3D占用网格:表示方法的演进逻辑
BEV感知的核心思想是将多视角图像或点云投影到统一的俯视平面,形成二维网格特征图。以LSS(Lift, Splat, Shoot)为代表的方案通过深度分布估计将图像特征"提升"到3D空间,再"拍扁"到BEV平面。然而,BEV表示本质上是一种2.5D表示——它将高度信息压缩到每个网格单元的通道维度中,无法精确表达物体的垂直结构、悬空物、地下空间等复杂几何信息。
Occupancy Network将BEV的二维网格扩展为三维体素网格。具体而言,自动驾驶场景通常被划分为 X×Y×Z 的体素空间,例如 200×200×16,每个体素对应物理空间中的 0.5m×0.5m×0.5m 区域。网络需要预测每个体素是否被占用(Occupancy Probability),以及被占用时的语义类别(Semantic Class)。这种表示方式直接建模了三维空间的几何结构,能够自然处理重叠物体、悬空障碍物(如交通标志、桥梁)、地面与路沿的精细边界等BEV难以表达的场景。
2.2 输入输出定义:从多模态数据到体素预测
Occupancy网络的输入通常包括多路环视相机图像(6-12路),可选配激光雷达点云或毫米波雷达数据。以纯视觉方案为例,输入为 N×C×H×W 的图像张量,其中 N 为相机数量,C 为通道数(通常为3),H×W 为图像分辨率。经过2D骨干网络(如ResNet-50、Swin Transformer)提取特征后,通过视角变换模块(LSS或Deformable Attention)将2D特征映射到3D空间,生成BEV特征或直接生成3D体素特征。
输出定义包含两个分支:占用分支输出每个体素的占用概率 p ∈ [0,1],通常使用二值交叉熵损失(BCE Loss)进行监督;语义分支输出每个被占用体素的语义类别,使用交叉熵损失或Focal Loss进行监督。最终输出张量形状为 X×Y×Z×C,其中 C 为语义类别数(如车辆、行人、骑行者、道路、建筑、植被、其他等)。
| 模块 | 输入定义 | 输出定义 | 典型维度 |
|---|---|---|---|
| 图像编码器 | 多视角图像 N×3×H×W |
2D特征图 N×C×H/8×W/8 |
N=6, C=256, H=720, W=1280 |
| 视角变换 | 2D特征 + 深度分布 | 3D体素特征 X×Y×Z×C |
200×200×16×256 |
| 占用预测头 | 3D体素特征 | 占用概率 X×Y×Z×1 |
200×200×16×1 |
| 语义预测头 | 3D体素特征 | 语义类别 X×Y×Z×C |
200×200×16×10 |
2.3 与目标检测和语义分割的本质区别
目标检测(2D或3D)输出的是稀疏的边界框(Bounding Box),每个框包含位置、尺寸、朝向和类别。这种表示假设物体是刚性的、可分离的,无法处理不规则形状物体(如树木、灌木丛)、部分遮挡物体或连续的自由空间边界。语义分割在2D图像或BEV平面上进行像素级或网格级分类,但缺乏深度维度的信息,无法区分同一位置不同高度的物体。
Occupancy Network的独特优势在于:稠密预测(每个体素都有输出)、几何显式建模(直接预测3D结构)、语义与几何联合(同时输出占用和类别)。这使得Occupancy Network能够处理任意形状的障碍物、预测可行驶区域、检测悬空物体,并为规划模块提供更丰富的环境约束信息。
2.4 案例拆解:城市复杂路口场景下的表示对比
考虑一个典型的城市十字路口场景:存在红绿灯、悬空的交通标志牌、密集的行人、非机动车、路沿、绿化带以及远处的建筑物。使用传统3D目标检测方案,系统只能输出若干个3D边界框,对于红绿灯和交通标志牌这类小目标容易漏检,且无法表达绿化带和路沿的连续几何形状。使用BEV语义分割方案,虽然可以分割出道路、车辆、行人等区域,但无法区分"地面上的车辆"和"天桥上的车辆"——因为它们在BEV平面上可能重叠。
采用Occupancy Network后,系统将场景划分为 200×200×16 的体素网格。红绿灯被表示为悬空体素簇,交通标志牌被表示为薄片状体素集合,绿化带被表示为连续的不规则体素区域,行人被表示为小体积的体素簇。规划模块可以直接查询任意位置(包括高度)的占用状态,从而做出更安全的决策。例如,当车辆准备右转时,系统可以检测到右前方上方存在悬空的树枝(占用体素),虽然BEV上该区域是"空"的,但实际物理空间存在碰撞风险。
2.5 常见误区与总结复盘
- 误区一:认为Occupancy Network只是BEV的简单扩展。实际上,从BEV到3D占用需要重新设计特征提取、视角变换、损失函数和推理策略,计算复杂度呈立方级增长。
- 误区二:忽略类别不平衡问题。在
200×200×16的体素空间中,超过95%的体素是"空"的,直接使用交叉熵损失会导致模型偏向预测"空"。需要采用Focal Loss、Dice Loss或OHEM(在线困难样本挖掘)策略。 - 误区三:将占用概率与语义类别独立优化。实际上,语义类别预测应该只在"被占用"的体素上进行,两者需要联合训练或使用级联预测结构。
- 误区四:忽视时序信息。单帧Occupancy预测在遮挡场景下效果有限,通过多帧特征融合(如时序注意力)可以显著提升占用预测的完整性和稳定性。