4. 多视图输入与数据组织
在 LSS(Lift-Splat-Shoot)类多视图 BEV 感知系统中,模型性能的上限往往并不取决于网络结构本身,而是由输入数据的组织质量决定。环视相机如何布置、图像如何预处理、多路数据如何对齐时间戳、训练时如何增强,这四个环节共同构成了 BEV 感知的“数据地基”。本节围绕这四件事展开,帮助读者建立一套可复用的多视图输入流水线。
一、环视相机配置:几何布局决定 BEV 视野
环视相机配置的核心是“覆盖”与“重叠”。常见方案是 6 路相机(前、前左、前右、后、后左、后右)或 4 路相机(前、后、左、右)。6 路方案在车身四角形成更连续的重叠区,有利于 BEV 特征在拼接处平滑过渡;4 路方案成本低,但侧向盲区更大,对 LSS 的“lift”能力要求更高。
每路相机需要标定内参(焦距、主点、畸变系数)和外参(相对车体坐标系的旋转与平移)。外参的微小误差会在 BEV 投影时被放大,因此标定精度通常要求旋转误差小于 0.1°、平移误差小于 1 cm。相机安装高度、俯仰角与水平视场角共同决定了单相机的地面覆盖范围,工程上常用“地面采样点”来验证覆盖是否连续。
二、图像预处理:从原始图到网络输入
原始环视图像通常带有鱼眼或广角畸变,直接送入网络会破坏 BEV 投影的几何一致性。预处理流程一般包括:去畸变、缩放、裁剪、归一化、颜色空间转换。去畸变使用标定得到的畸变系数,将图像映射到理想针孔模型;缩放与裁剪则要保证多路图像尺寸一致,便于批量推理。
归一化参数需要与预训练权重匹配,常见为 ImageNet 均值方差。颜色空间方面,BEV 感知多使用 RGB,但部分方案会引入 YUV 或灰度以降低计算量。预处理必须在 GPU 上以批处理方式完成,否则 CPU 端会成为训练瓶颈。
# 预处理伪代码
for cam in cameras:
img = undistort(img, K, D)
img = resize(img, (W, H))
img = normalize(img, mean, std)
batch.append(img)
batch = stack(batch) # [B, N, C, H, W]
三、时间同步:多传感器对齐的生命线
环视相机之间、相机与 LiDAR/IMU 之间必须时间对齐。硬件触发同步是最可靠的方式,所有相机共享同一触发信号,曝光时刻一致;若采用软件时间戳,则需通过 PTP 或 GPS 授时,并记录每帧的采集时间与曝光时间。时间偏差超过 10 ms 时,高速场景下 BEV 特征会出现明显“拖影”。
工程上常用“时间戳对齐 + 插值”策略:以主传感器为基准,对其他传感器数据做线性插值或最近邻匹配。对于 LSS 训练,通常要求同一 BEV 样本内所有相机图像的时间戳差异小于 5 ms。
四、数据增强策略:提升泛化而不破坏几何
BEV 感知的数据增强必须区分“图像域增强”和“几何域增强”。图像域增强包括亮度、对比度、色相抖动、模糊、噪声,这些不改变几何关系,可安全使用。几何域增强如随机裁剪、旋转、缩放会改变相机内外参,必须同步更新标定参数,否则 BEV 投影会错位。
常用增强组合:颜色抖动 + 随机擦除 + 水平翻转(需同步交换左右相机并调整外参)。翻转增强对环视系统尤其有效,但必须保证相机顺序与外参一致,否则会引入“左右颠倒”的伪标签。
| 增强类型 | 示例 | 是否需更新标定 | 风险 |
|---|---|---|---|
| 图像域 | 亮度、对比度、噪声 | 否 | 低 |
| 几何域 | 旋转、缩放、裁剪 | 是 | 高 |
| 翻转 | 水平翻转 | 是(交换相机) | 中 |
| 擦除 | 随机遮挡 | 否 | 低 |
五、案例:一次 BEV 拼接错位的复盘
某项目在训练初期发现 BEV 特征在左前与右前相机交界处出现明显“断层”。排查发现:左前相机时间戳比右前相机晚 12 ms,且左前图像未做去畸变。修正后,先统一触发同步,再对全部相机执行去畸变,断层消失。该案例说明:时间同步与预处理必须作为流水线的“前置约束”,而不是事后补救。
六、数据组织:从采集到训练的目录结构
建议按“场景-时间-相机”三级组织数据,并保留标定文件与时间戳文件。训练时通过索引文件按需加载,避免一次性读入全部图像。典型目录如下:
dataset/
scene_001/
2024-05-01_12-00-00/
cam_front.jpg
cam_front_left.jpg
...
calib.json
timestamps.json
index.json
综上,环视相机配置决定几何覆盖,图像预处理保证几何一致,时间同步消除动态错位,数据增强提升泛化,四者共同构成 LSS 多视图 BEV 感知的输入基础。只有把这四件事做扎实,后续的 BEV 特征提取与检测头才能发挥应有性能。