2. 自动驾驶感知与推理基础
自动驾驶系统本质上是一个“感知—决策—控制”的闭环系统,而感知与推理位于闭环的最前端。车辆通过摄像头、激光雷达、毫米波雷达、超声波雷达、GNSS/IMU 等传感器获取环境信息,再经过时间同步、坐标变换、特征提取与模型推理,形成对车道线、车辆、行人、交通标志、可行驶区域等要素的结构化理解。只有这些理解足够准确、稳定、低延迟,后续的预测、规划与控制才有可靠输入。
一、传感器数据流:从物理信号到可计算张量
传感器数据流并不是简单的“采集—送入模型”,而是一条包含驱动、同步、标定、预处理、组批、推理、后处理与融合的流水线。以摄像头为例,图像从 MIPI CSI 或 GMSL 接口进入 SoC 后,先经过 ISP 完成去马赛克、降噪、自动曝光与色彩校正,再缩放为模型需要的输入尺寸,随后归一化并排布为 NCHW 或 NHWC 张量。激光雷达点云则通常经过运动补偿、地面分割、体素化或柱面投影,转换为规则张量或稀疏特征。毫米波雷达输出的是距离、速度、角度与 RCS 等稀疏点或目标级信息,常以雷达点云或检测列表形式参与融合。
多传感器数据流的关键难点在于时间与空间对齐。时间上,不同传感器帧率不同,摄像头可能 30fps,激光雷达 10Hz,毫米波雷达 20Hz,必须通过硬件触发或软件时间戳完成同步;空间上,各传感器安装位置与朝向不同,需要借助外参标定矩阵统一到车辆坐标系或自车坐标系。若同步或标定存在偏差,融合结果会出现“重影”或“错位”,直接影响目标定位精度。
二、感知任务分类:从像素到语义再到三维结构
自动驾驶感知任务可以按输出形式与空间维度分类。2D 任务包括目标检测、语义分割、实例分割、车道线检测、交通标志识别等,通常以图像为输入,输出边界框、掩码或折线。3D 任务包括点云目标检测、3D 语义分割、BEV 感知、占用栅格预测等,输出带朝向与尺寸的三维框或体素级占用概率。时序任务则在前述基础上引入多帧信息,完成目标跟踪、轨迹预测与行为意图估计。
从系统角度看,感知任务还可按“是否直接服务规划控制”划分。检测与分割提供环境要素,属于基础感知;可行驶区域、车道拓扑、目标轨迹属于规划直接输入;交通信号灯状态、施工区域、紧急车辆识别则属于特殊场景感知。不同任务对精度、召回率、延迟与算力的要求不同,例如 AEB 前向碰撞预警对召回率和延迟极其敏感,而泊车场景对近距离小目标与超声波融合更敏感。
| 任务类别 | 典型输入 | 典型输出 | 关键指标 | 典型场景 |
|---|---|---|---|---|
| 2D 目标检测 | 单帧图像 | 2D 边界框 + 类别 | mAP、召回率、延迟 | 车辆、行人、骑行者识别 |
| 语义分割 | 单帧图像 | 逐像素类别 | mIoU、边界精度 | 可行驶区域、道路分割 |
| 3D 点云检测 | 激光雷达点云 | 3D 框 + 朝向 + 速度 | 3D mAP、BEV mAP | 障碍物定位、避障 |
| BEV 感知 | 多相机 / 点云 | BEV 特征图 + 目标 | BEV mAP、时序一致性 | 城市 NOA、高速领航 |
| 占用预测 | 多帧点云 / 图像 | 体素占用概率 | IoU、召回率 | 异形障碍物、通用障碍物 |
| 跟踪与预测 | 多帧检测结果 | 轨迹 + 意图 | MOTA、ADE/FDE | 交互博弈、路口通行 |
三、模型推理在自动驾驶中的角色
模型推理是把传感器数据转化为结构化环境描述的核心计算环节。它承担三类角色:第一,特征提取与抽象,把高维原始信号压缩为语义特征;第二,任务决策,输出检测、分割、分类等结果;第三,不确定性估计,为后续规划提供置信度与风险参考。推理系统必须在有限算力、功耗与散热条件下,满足实时性与功能安全要求。
在工程实现上,推理通常分为预处理、模型前向、后处理三段。预处理在 CPU 或专用加速器上完成,模型前向在 GPU、NPU 或 DSP 上执行,后处理包括 NMS、阈值过滤、坐标反变换与跟踪关联。多模型并发时,还要考虑算子融合、量化精度、批处理策略与内存复用。例如,将多个小模型合并为共享 backbone 的多头网络,可以显著降低重复计算。
# 典型推理流水线伪代码
for frame in sensor_stream:
images = sync_and_calibrate(frame.cameras)
points = motion_compensate(frame.lidar)
radar = cluster(frame.radar)
# 预处理
tensor_img = normalize_resize(images, size=(640, 640))
tensor_pts = voxelize(points, voxel_size=(0.1, 0.1, 0.2))
# 多模型并发推理
det2d = infer(det_model, tensor_img)
det3d = infer(bev_model, tensor_pts, tensor_img)
seg = infer(seg_model, tensor_img)
# 后处理与融合
tracks = tracker.update(det2d, det3d)
output = fuse(tracks, seg, radar)
publish(output)
四、典型应用场景与常见误区
典型场景包括:高速领航辅助中的前向远距离检测与车道保持;城市 NOA 中的多相机 BEV 感知与红绿灯识别;自动泊车中的超声波与环视鱼眼融合;AEB 中的前向雷达与视觉融合;以及矿区、港口等封闭场景中的激光雷达主导感知。不同场景对传感器组合、模型精度与推理延迟的侧重点不同。
实践提示:在评估感知模型时,不要只看离线 mAP。应同时关注端到端延迟、帧间抖动、极端天气下的召回率、以及模型对未标注异形障碍物的泛化能力。推理系统的稳定性往往比单帧精度更能决定用户体验。
常见误区:一是把“传感器数据流”简单理解为“采集后直接推理”,忽略同步、标定与预处理带来的误差;二是只追求大模型精度,忽视量化与算子兼容导致的部署失败;三是把 2D 检测结果直接当作 3D 位置使用,造成距离估计错误;四是忽略时序一致性,导致目标 ID 频繁跳变。复盘时应从数据链路、模型链路与部署链路三方面分别定位问题。
综上,传感器数据流、感知任务分类与模型推理共同构成自动驾驶感知的基础骨架。理解这条链路的每个环节,才能在后续多模型并发推理系统设计中,合理分配算力、控制延迟并保证安全冗余。