传感器让汽车拥有了"视觉",但看到的只是一堆原始数据:摄像头得到的是五彩斑斓的像素点阵列;激光雷达得到的是漫山遍野的3D空间点。这一章,我们要讲解智能驾驶系统如何像我们人脑一样,从这些杂乱的数据中识别出物体、理解其边界、并最终构建出一个有逻辑关系的场景模型。这个过程,就是从"看见"到"看懂"的飞跃。
为了让您更直观地理解这个过程,我们将用一个连贯的场景和配套的示意图来贯穿整个章节:
场景设定: 车辆正行驶在一个城市道路上。

5.1 目标检测与跟踪:从"有什么"到"它在哪里动"
这是环境感知最基础也是最关键的一步。它的任务是回答:"图像或点云里有哪些我们感兴趣的物体(车、人、骑行者等)?它们的位置在哪?以及它们是如何运动的?"
5.1.1 目标检测:静态快照中的"寻宝游戏"
目标检测旨在从单帧数据中找出所有预定义类别的物体,并用一个边界框将其框出来,并给出类别标签和置信度。
-
在图像中的检测(2D检测):
-
YOLO系列: "你只看一眼"。它的核心思想非常直观:将图像划分成网格,每个网格负责预测落在其中的物体。YOLO速度极快,非常适合对实时性要求极高的自动驾驶任务。从YOLOv1到最新的版本,它在精度和速度上不断平衡,是工业界最受欢迎的算法之一。
-
Transformer: 这位原本在自然语言处理领域的"明星",近年来在视觉领域大放异彩。如DETR模型,它彻底抛弃了YOLO中需要预定义锚点、非极大值抑制等复杂后处理步骤,将目标检测视为一个"集合预测"问题。模型直接输出一个所有物体的集合,简化了流程,并在精度上超越了传统方法。
-
输出结果: 如示意图第二行左图所示,摄像头图像中的车辆、行人都被用不同颜色的框精确地标注出来。
-
-
在点云中的检测(3D检测):
-
激光雷达点云是3D的,因此检测结果也是3D框。这些框不仅包含了物体在路面上的位置(x, y),还包含了高度(z)、长度、宽度以及朝向(如车头朝向)。这些3D信息对于车辆的路径规划至关重要。
-
输出结果: 如示意图第二行右图所示,点云中的车辆和行人都被3D立方体框住,清晰地显示了它们的立体占据空间。
-
5.1.2 多目标跟踪:串联时间的"侦探"
检测只能告诉我们某一瞬间 有什么。但要开车,我们必须知道这些物体如何运动。MOT的任务就是为每个检测到的物体分配一个唯一的ID,并在连续的帧中持续地跟踪这个ID,形成一条条运动轨迹。
-
工作流程(跟踪-by-检测):
-
检测: 在每一帧中进行目标检测。
-
关联: 这是MOT的核心。如何确定上一帧的"红色卡车#101"就是这一帧的"某个蓝色框"?关联主要依据两大线索:
-
运动模型: 使用我们第四章讲到的卡尔曼滤波,预测"红色卡车#101"这一帧应该出现在哪里。位置靠近的框,更可能是同一个目标。
-
外观模型: 提取每个目标框的外观特征(比如卡车的颜色、形状)。看起来越像的框,更可能是同一个目标。
-
-
轨迹管理: 对新出现的物体创建新ID,对消失的物体移除其ID。
-
-
输出结果: 如示意图第二行所示,检测框上显示了唯一的ID(如
Car#1,Ped#2),并且用轨迹线连接了它们在历史帧中的位置,清晰地显示了它们的运动路径和速度方向。
5.2 语义分割:为每个像素赋予意义
目标检测给出了物体的"概要位置",但有时我们需要更精细的感知。语义分割的任务是对图像中的每一个像素进行分类,将其划分到不同的语义类别中。
-
"像素级分类"
-
它不像检测那样只画个框,而是要给图片里每一个点都贴上标签。比如,所有属于"道路"的像素被标记为一种颜色,所有"天空"的像素是另一种颜色,"车辆"又是另一种颜色。
-
如示意图第三行左图所示,原始图像被分割成了不同颜色的区域:灰色的道路、绿色的植被、深蓝色的车辆、红色的行人等。
-
-
核心价值:
-
可行驶区域判断: 这是分割最重要的任务之一。通过精确分割出"道路"和"非道路"(如人行道、草地),系统能清晰地知道车辆的合法行驶边界。这对于在没有清晰车道线的场景(如园区、停车场)下行驶至关重要。
-
精细的物体轮廓: 对于不规则形状的物体(如行人、自行车),分割能提供比矩形框更精确的轮廓,有助于更安全的碰撞风险评估。
-
车道线检测: 可以通过分割技术精确地提取出车道线的每一个像素,从而拟合出更平滑、准确的车道线模型。
-
-
技术实现: 主流网络是U-Net等编码器-解码器结构。编码器负责理解图像特征("这是什么?"),解码器负责将特征图还原到原图尺寸并进行像素分类("它具体在哪个位置?")。
5.3 场景理解:构建局部动态场景图------最终的"大局观"
检测、跟踪和分割提供了丰富的底层信息,但它们是零散的。智能汽车要做出最优决策,需要一个更高层次的、结构化的场景描述。这就是场景图要完成的任务------构建环境的"大脑思维导图"。
5.3.1 什么是场景图?
场景图是一种图数据结构,它将一个场景表示为:
-
节点: 代表场景中的实体(如自车、其他车辆、行人、交通灯、车道线)。
-
边: 代表实体之间的关系 或属性。
5.3.2 如何构建动态场景图?
让我们结合示意图最下面一行,来看系统如何为我们设定的场景构建场景图:
-
抽取实体: 从检测、跟踪和分割的结果中,提取出关键实体。
- 例如:
Ego-Car(自车),Car#1,Ped#2,Traffic Light#3,Ego-Lane,Left-Lane。
- 例如:
-
建立关系: 这是理解场景的关键。
-
空间关系:
-
Ped#2is onSidewalk(行人在人行道上) -
Car#1is inLeft-Lane(车辆#1在左侧车道) -
Ego-Caris inEgo-Lane(自车在当前车道)
-
-
状态关系:
-
Traffic Light#3isGreen(交通灯是绿色的) -
Car#1isMoving(车辆#1正在移动) -
Ped#2isStatic(行人#2是静止的)
-
-
交互关系:
-
Ped#2is facingRoad(行人面向马路) -> 潜在风险:可能闯入 -
Car#1is faster thanEgo-Car(车辆#1比自车快) -> 超车意图分析
-
-
5.3.3 场景图的价值
这个结构化的场景图,是连接感知 与决策规划的桥梁。
-
决策模块不再需要去理解一堆杂乱的检测框和分割图,它只需要"阅读"这张场景图。
-
基于这张图,决策可以像人类一样进行逻辑推理:
-
"因为
Traffic Light#3是Green,且Ego-Lane是Clear,所以我可以Go。" -
"因为
Ped#2在Sidewalk上但facing着Road,所以我需要Prepare to Stop。" -
"因为
Car#1在Left-Lane且is faster than我,所以我可以考虑Change Lane。"
-