3. 感知算法

感知算法是自动驾驶与机器人系统理解环境的“第一道工序”。它把摄像头、激光雷达、毫米波雷达等传感器采集到的原始数据,转换为结构化、可被规划控制模块消费的环境描述:哪里有障碍物、道路边界在哪里、每个目标下一刻可能出现在哪里。本节围绕目标检测、语义分割、多目标跟踪三类核心任务展开,说明它们的原理、输入输出、工程实现要点与常见误区。

一、三类任务的分工与关系

目标检测回答“有什么、在哪里”,输出带类别与置信度的边界框或三维框;语义分割回答“每个像素属于什么”,输出逐像素的类别标签,用于识别可行驶区域、车道线、路沿等连续结构;多目标跟踪回答“谁是谁、往哪走”,在检测结果基础上建立跨帧的身份关联,输出带稳定 ID 的轨迹。三者并非孤立:检测为跟踪提供观测,分割为检测提供可行驶区域约束与背景抑制,跟踪又反过来为检测提供时序平滑与遮挡补全。

感知算法三类任务的数据流与协同关系 传感器输入 图像 / 点云 / 雷达 目标检测 2D/3D 边界框 类别 + 置信度 语义分割 逐像素类别标签 可行驶区域 / 车道线 多目标跟踪 轨迹 ID + 运动状态 环境模型 障碍物列表 可行驶区域 规划控制 决策 / 避障 轨迹生成 区域约束 观测输入 时序平滑

二、目标检测:从候选框到三维框

目标检测的主流方法分为两阶段与单阶段两类。两阶段方法先由区域建议网络生成候选框,再对候选框分类与回归,精度较高但速度偏慢;单阶段方法直接在特征图上预测类别与框偏移,速度优势明显,适合车载实时场景。工程中更关注的是三维检测:不仅要知道目标在图像中的位置,还要估计其在自车坐标系下的长宽高、朝向角与中心点。

以激光雷达点云为例,常见做法是将点云体素化后使用三维卷积主干网络提取特征,再通过检测头输出三维框。摄像头方案则依赖单目深度估计或几何约束将二维框反投影到三维空间。多传感器融合时,常用“后融合”在结果层做关联,或“前融合”在特征层对齐,前者实现简单、可解释性强,后者精度上限更高但对时间同步与标定要求苛刻。

# 典型检测输出结构(伪代码)
detection = {
    "class_id": 2,          # 2 表示车辆
    "score": 0.91,          # 置信度
    "bbox_2d": [420, 310, 560, 470],
    "bbox_3d": {
        "center": [12.4, 1.8, 0.75],   # x, y, z (m)
        "size": [4.6, 1.9, 1.5],       # l, w, h (m)
        "yaw": 0.03                    # 朝向角 (rad)
    }
}

三、语义分割:让每个像素都有归属

语义分割把图像划分为若干语义类别,典型类别包括道路、车道线、路沿、人行道、车辆、行人、天空等。其核心是编码器-解码器结构:编码器逐层下采样提取语义特征,解码器逐层上采样恢复空间分辨率,并通过跳跃连接融合浅层细节与深层语义。评价指标常用 mIoU(平均交并比),工程中还会关注边界区域的精度,因为车道线与路沿的细微偏差会直接影响横向控制。

语义分割在感知链路中承担两类角色:一是提供可行驶区域,作为规划模块的硬约束;二是为检测提供先验,例如只在道路区域内保留目标,抑制远处广告牌、树影造成的误检。需要注意的是,分割结果通常存在时序抖动,直接用于控制会产生横向摆动,因此常与跟踪或滤波模块配合使用。

语义分割的类别体系应与下游规划控制需求对齐。若规划只关心“可行驶/不可行驶”,则不必追求过多细分类别,减少类别数可显著降低标注成本与推理耗时。

四、多目标跟踪:维持身份与预测运动

多目标跟踪的核心是数据关联:将当前帧检测结果与已有轨迹进行匹配,匹配成功则更新轨迹,未匹配的检测新建轨迹,长期未更新的轨迹删除。常用算法包括基于卡尔曼滤波与匈牙利匹配的 SORT 系列,以及引入外观特征的 DeepSORT。匹配代价通常由运动预测残差(如马氏距离)与外观相似度加权构成。

跟踪输出的是带稳定 ID 的轨迹,包含位置、速度、加速度与历史轨迹点。对规划控制而言,轨迹的速度与朝向比单帧检测更可靠,尤其在目标被短暂遮挡时,跟踪可以通过运动模型外推维持目标存在,避免“目标闪烁”导致急刹或误避让。

任务 典型输出 关键指标 工程关注点
目标检测 2D/3D 边界框、类别、置信度 mAP、召回率、框中心误差 实时性、远距离小目标、误检抑制
语义分割 逐像素类别标签 mIoU、边界 F1 时序稳定性、类别体系与规划对齐
多目标跟踪 轨迹 ID、速度、历史轨迹 MOTA、ID Switch、轨迹连续性 遮挡处理、ID 保持、延迟控制

五、案例场景:城市路口右转

自车在城市路口准备右转。语义分割识别出右转专用道与路沿,给出可行驶区域;目标检测在右侧人行道附近检出多名行人,并检出对向直行车辆;多目标跟踪为每名行人分配稳定 ID,并根据历史轨迹判断其中一名行人正在向路沿移动。规划模块据此选择减速让行,而非直接右转。若缺少跟踪,行人被路牌短暂遮挡时检测丢失,规划可能误判为“无障碍”而加速,形成安全风险。

六、常见误区与复盘

  • 只看 mAP,不看时序稳定性。检测指标高不代表跟踪稳定,ID Switch 频繁会导致规划反复决策。
  • 分割类别越多越好。类别过细会增加标注与推理负担,且边界抖动更明显,应按下游需求裁剪。
  • 忽略时间同步。多传感器融合时,图像与点云时间戳偏差超过 20ms 就可能造成框与点云错位。
  • 跟踪只做位置平滑。不引入外观或运动模型,遮挡后容易发生 ID 跳变,应结合卡尔曼预测与外观特征。
  • 把感知输出当作真值。感知存在置信度与失效场景,规划控制需保留安全冗余与降级策略。
感知算法的输出必须带置信度与时间戳,并在下游设置有效性校验。任何未经校验的感知结果直接进入控制环,都可能放大误检带来的安全风险。

综上,目标检测、语义分割与多目标跟踪共同构成感知层的核心能力。检测提供离散目标,分割提供连续环境结构,跟踪提供时序身份与运动信息。工程实现中应围绕实时性、稳定性与安全性做取舍,并通过数据闭环持续迭代模型与参数,使感知输出真正成为规划控制可信赖的输入。