2. 自动驾驶感知计算基础
自动驾驶感知计算并不是“把摄像头图像送进神经网络”这么简单。它是一条从物理传感器到车辆控制指令的完整数据链路,中间要经过时间同步、坐标变换、特征提取、融合推理、后处理与安全校验。理解这条链路的每一段,才能判断GPU/NPU异构计算资源应该部署在哪里、以什么粒度并行、以及哪些环节必须保留冗余。
一、传感器数据流:从物理量到统一时空坐标
典型L2+以上车型会同时接入摄像头、激光雷达、毫米波雷达、IMU与轮速计。不同传感器的采样率、触发方式、数据格式差异极大:摄像头通常30fps输出RAW/YUV,激光雷达10~20Hz输出点云,毫米波雷达20~50Hz输出目标级或原始ADC数据。感知计算的第一步不是推理,而是时间对齐与空间对齐。
- 时间对齐:以PTP或gPTP硬件时间戳为基准,将各传感器帧对齐到同一采样时刻,允许的残差通常在1~5ms量级。
- 空间对齐:通过外参标定把每个传感器坐标系统一到车辆坐标系,再投影到BEV栅格或图像平面。
- 数据搬运:RAW图像去马赛克、点云去畸变、雷达FFT等预处理,往往在ISP、DSP或GPU的CUDA核中完成,避免占用NPU推理带宽。
这条链路的关键约束是端到端延迟预算。假设感知模块总预算为100ms,时间同步占5ms、预处理占15ms、主干网络推理占40ms、后处理与融合占20ms,那么留给通信与调度的余量只有20ms。任何一段抖动都会直接压缩安全余量。
二、BEV与Transformer模型:统一视角的融合范式
BEV(Bird's Eye View)的核心价值,是把前视、侧视、环视摄像头以及激光雷达点云统一投影到车辆正上方的俯视栅格中,使不同模态在同一个空间坐标系下表达。传统做法依赖逆透视变换(IPM),但IPM假设地面平坦,对坡道、颠簸和远距离目标误差很大。现代方案改用显式深度估计或隐式查询完成2D到3D的抬升。
Transformer在BEV感知中的典型用法是:用图像特征作为Key/Value,用预定义的BEV网格查询作为Query,通过交叉注意力让每个BEV位置“主动寻找”与之相关的图像区域。这种机制天然适合处理遮挡、远距离小目标和多摄像头重叠区域。常见结构包括:
- BEVFormer类:显式定义BEV Query,通过空间交叉注意力与时间自注意力聚合多帧信息。
- PETR类:将3D位置编码注入图像特征,用全局注意力直接生成3D感知结果。
- StreamPETR / SparseBEV类:以稀疏Query和时序传播降低计算量,更适合车端实时部署。
三、实时推理约束:延迟、吞吐与确定性
自动驾驶感知的实时性不是“平均帧率高”就够,而是要求最坏情况执行时间(WCET)可控。一个偶发的200ms长尾帧,可能直接导致AEB触发过晚。因此工程上关注三类指标:
| 指标 | 含义 | 典型目标 |
|---|---|---|
| 端到端延迟 | 从传感器曝光到感知结果输出 | ≤100ms |
| 帧率抖动 | 相邻帧处理时间的方差 | P99 ≤ 1.5×均值 |
| 算力利用率 | NPU/GPU实际占用与峰值比 | 60%~80% |
| 内存带宽 | 特征图与权重搬运开销 | 不成为瓶颈 |
在异构平台上,常见做法是把主干网络放在NPU,把后处理、NMS、BEV池化放在GPU,把时间同步与调度放在CPU实时核。三者通过零拷贝共享内存或DMA通道衔接,减少Host-Device往返。下面是一段典型的推理调度伪代码:
// 每帧感知流水线(简化)
sync_sensors(ptp_ts); // 硬件时间戳对齐
preprocess_on_gpu(raw_frames); // 去畸变/归一化
npu_infer(backbone_int8); // NPU主干推理
gpu_postprocess(bev_pool, nms); // GPU后处理
fuse_and_track(cpu_realtime); // CPU融合跟踪
safety_check(output, wcet_budget); // 安全校验与降级判断
四、功能安全与SOTIF:两类不同的问题
功能安全(Functional Safety,ISO 26262)关注的是系统故障导致的危害:传感器失效、内存位翻转、通信丢包、算力单元过热降频。它的思路是通过冗余、监控、安全机制把风险降到可接受水平。例如双NPU互检、ECC内存、看门狗、安全岛MCU独立校验感知输出。
SOTIF(Safety of the Intended Functionality,ISO 21448)关注的是无故障情况下的性能局限:模型没见过的新场景、逆光、雨雾、异形车辆、施工路锥。这些不是“坏了”,而是“能力边界”。SOTIF的核心工作是场景识别、未知场景探测、性能边界定义与降级策略设计。
五、案例与常见误区
某项目在高速场景下BEV检测稳定,但进入隧道口时出现连续误刹。复盘发现:摄像头自动曝光切换导致图像亮度突变,BEV Query注意力被强光区域主导,远处车辆特征被抑制。这不是功能安全故障,而是典型的SOTIF性能局限。解决方式包括:增加曝光过渡期的时序平滑、在BEV注意力中引入光照不变性约束、以及设置置信度阈值触发降级到雷达主导的融合策略。
常见误区有三类:
- 只堆算力不看延迟:NPU峰值TOPS很高,但若数据搬运和调度拖慢,端到端仍然超时。
- 把SOTIF当功能安全做:只加冗余不定义性能边界,遇到未知场景仍然失效。
- 忽略时间同步:多传感器帧错位几毫秒,在高速下就是几十厘米的位置误差,BEV融合直接失真。