2. 3D检测基础

在BEVFormer这类多摄像头3D检测工程中,第一步不是写模型,而是把“3D检测到底在预测什么”讲清楚。2D检测输出的是图像平面上的矩形框,而3D检测输出的是目标在真实三维空间中的位置、尺寸和朝向。这个差别决定了后续所有坐标系变换、特征采样、损失函数设计和评价指标的选择。

一、3D目标检测的定义

3D目标检测的任务是:给定一个或多个传感器输入(图像、点云、雷达等),在三维空间中定位目标,并给出其几何与语义属性。对于自动驾驶场景,典型输出包括:

  • 位置:目标中心点在三维空间中的坐标 (x, y, z);
  • 尺寸:长、宽、高 (l, w, h);
  • 朝向:偏航角 yaw,有时还包括俯仰角 pitch 和滚转角 roll;
  • 类别:car、truck、pedestrian、cyclist 等;
  • 速度:可选,用于跟踪与预测。

与2D检测相比,3D检测多了一个“深度”维度,因此对坐标系、相机标定和几何变换的依赖更强。BEVFormer 的核心思想,就是把多摄像头图像特征投影到统一的 BEV(Bird's Eye View)空间,再在 BEV 特征上完成 3D 框回归。

二、坐标系体系

多摄像头3D检测涉及多个坐标系,理解它们之间的转换关系是工程实现的基础。常见坐标系如下:

坐标系 符号 原点与轴向 典型用途
像素坐标系 uv 图像左上角,u向右,v向下 2D框、特征图位置
相机坐标系 cam 光心,x右,y下,z前 投影、深度估计
自车坐标系 ego 后轴中心,x前,y左,z上 多传感器融合
激光雷达坐标系 lidar 雷达中心,x前,y左,z上 点云标注、真值
BEV坐标系 bev 自车下方平面,x前,y左 统一特征空间

从像素到 BEV 的转换链可以概括为:像素 → 相机内参 → 相机坐标系 → 外参 → 自车坐标系 → BEV 网格。BEVFormer 通过空间交叉注意力,让 BEV 查询在多个相机特征图上采样,隐式完成这一投影过程。

三、3D边界框表示

3D边界框通常用 7 个参数表示:中心点 (x, y, z)、尺寸 (l, w, h)、偏航角 yaw。在 nuScenes 数据集中,标注格式为:

{
  "translation": [x, y, z],      // 中心点,ego坐标系
  "size": [w, l, h],             // 宽、长、高
  "rotation": [w, x, y, z],      // 四元数
  "velocity": [vx, vy],          // 速度
  "category": "car"
}

注意:不同数据集的尺寸顺序不同。KITTI 使用 (h, w, l),nuScenes 使用 (w, l, h)。工程中如果顺序弄错,会导致框“躺倒”或尺寸异常。此外,yaw 的定义方向也需统一,通常以自车坐标系 x 轴为 0 度,逆时针为正。

工程提示:在 BEVFormer 中,3D 框回归通常预测相对于锚点或查询的偏移量,而不是直接回归绝对坐标。这样可以让网络学习更稳定,也更容易处理不同尺度的目标。

四、评价指标

3D检测的评价指标与2D检测有相似之处,但增加了深度和朝向的考量。常用指标包括:

  • mAP:平均精度均值,按类别计算 AP 后取平均;
  • NDS:nuScenes 检测分数,综合 mAP、mATE、mASE、mAOE、mAVE、mAAE;
  • ATE:平均平移误差,衡量中心点距离;
  • ASE:平均尺度误差,衡量尺寸偏差;
  • AOE:平均朝向误差,衡量 yaw 偏差;
  • AVE:平均速度误差;
  • AAE:平均属性误差。

其中,NDS 是 nuScenes 排行榜的核心指标,计算公式为:

NDS = (1/10) * [5 * mAP + 2 * (1 - mATE) + 2 * (1 - mASE)
      + 2 * (1 - mAOE) + 2 * (1 - mAVE) + 2 * (1 - mAAE)]

可以看到,mAP 权重最高,但其他误差项也会显著影响最终得分。因此,模型不仅要“检测到”,还要“框得准、朝向对、速度合理”。

五、多摄像头3D检测的挑战

多摄像头方案相比激光雷达,成本更低、分辨率更高,但也带来一系列独特挑战:

  1. 深度信息缺失:单目图像无法直接获得精确深度,需要依赖几何先验或时序信息;
  2. 视角重叠与遮挡:相邻相机之间需要融合,但重叠区域小,目标可能被截断;
  3. 标定误差敏感:外参微小偏差会导致 BEV 特征错位,影响 3D 框精度;
  4. 时序对齐:多帧融合时,自车运动和目标运动需要补偿;
  5. 计算量:多相机高分辨率特征图 + BEV 网格,显存和算力消耗大。
常见误区:很多初学者认为“多摄像头就是简单把 2D 框投影到 3D”。实际上,2D 框缺少深度和朝向,直接投影会得到无穷多解。BEVFormer 通过 BEV 查询和空间交叉注意力,在统一空间中进行特征聚合,才使得 3D 回归成为可能。

六、案例:BEVFormer 中的坐标系流转

以 nuScenes 为例,BEVFormer 的输入是 6 个相机的图像,输出是 BEV 空间中的 3D 框。其坐标系流转大致如下:

图像 (H, W, 3)
  → 主干网络 + FPN
  → 多尺度特征图 (C, H/8, W/8) 等
  → 空间交叉注意力:BEV 查询在多个相机特征上采样
  → BEV 特征 (C, 200, 200)
  → 检测头
  → 3D 框 (x, y, z, w, l, h, yaw, vx, vy)

在这个过程中,BEV 查询的参考点通过相机内外参投影到各相机图像上,采样对应位置的特征。这样,每个 BEV 网格都能“看到”多个相机中与它相关的区域,从而实现多摄像头融合。

七、复盘与检查清单

在工程落地时,建议按以下清单逐项检查:

  • 坐标系定义是否统一?ego、lidar、cam 的轴向是否一致?
  • 3D 框参数顺序是否与数据集一致?(w, l, h) 还是 (h, w, l)?
  • yaw 的零度和正方向是否明确?
  • 评价指标是否与官方实现对齐?NDS 各项权重是否正确?
  • 多相机标定外参是否经过验证?投影误差是否在可接受范围?
  • 时序融合时,自车运动补偿是否加入?

只有把这些基础打牢,后续的 BEVFormer 模型训练和调优才有意义。否则,即使网络结构再先进,坐标系或标注格式的一个小错误,也会让模型学不到正确的 3D 空间关系。

多摄像头3D检测:坐标系与数据流 6路相机图像 (H, W, 3) 主干网络 + FPN 多尺度特征图 BEV 查询 (200×200 网格) 空间交叉注意力 多相机特征采样 坐标系转换链 像素 uv 图像平面 相机 cam 光心坐标系 自车 ego 后轴中心 激光雷达 lidar 点云坐标系 BEV 网格 统一特征空间 3D 边界框输出 (x, y, z, w, l, h, yaw, vx, vy) 评价指标 mAP / NDS ATE / ASE / AOE 核心挑战 深度缺失 / 标定误差 遮挡 / 时序对齐