写点什么

智能驾驶感知算法任务简介

  • 2025-05-28
    广东
  • 本文字数:2105 字

    阅读完需:约 7 分钟

智能驾驶感知算法任务简介

智能驾驶感知模块可以根据目标的属性和环境信息,分为三类关键任务:动态感知任务、静态结构感知任务和可通行区域(Freespace)感知任务。本文将结合 BEVFormer、MapTR 和 Occupancy Prediction 三个算法,简单介绍一下他们,如果有不正确的地方,欢迎评论。

一、动态感知任务:BEVFormer

1.1 任务简介

动态任务关注的是 检测和跟踪场景中运动物体 ,如行人、车辆、自行车等。核心目标是预测这些目标的 三维空间位置、尺寸、速度和朝向 ,为路径规划与决策系统提供实时支持。

1.2 核心算法

BEVFormer 是近年来领先的 3D 感知框架之一,提出了一种融合 Bird’s Eye View(BEV)视角和 Transformer 架构 的感知方式。它利用多摄像头输入构建 BEV 表征,并结合时序特征做运动物体感知。


BEV 是什么?


BEV(Bird’s Eye View,俯视图) 是一种以“从天而降”的视角查看场景的表示方式。相较于图像原始视角(front-view),BEV 将感知信息映射到地面平面,使得空间关系更直观:


  • 每个像素表示地面上一个固定区域(如 0.5m × 0.5m);

  • BEV 具有固定分辨率和尺度,便于与规划、控制模块对接;

  • 动态物体不会因远近发生比例变化,便于稳定检测和跟踪。


BEVFormer 架构简介


  1. 图像编码:使用 ResNet+FPN 的 backbone+neck 结构提取多视角图像特征;

  2. Lift 操作:将图像特征结合深度预测“抬升”(lift)到三维空间中;

  3. Splat 投影:将三维点投影到 BEV 平面网格,聚合形成 BEV 特征图;

  4. 时序建模:引入前几帧 BEV 特征,使用 temporal attention 模块进行时序对齐;

  5. 目标检测解码器:采用 learnable query,预测 3D 物体框及其类别。


Lift(抬升)


在感知任务中,模型经常需要将图像信息“映射”到三维空间中。这一过程称为 Lift(抬升),可以实现实现 2D → 3D 映射,统一多个视角的感知结果。具体来说:


  • 每个像素在原始图像中只提供 2D 信息(x, y),没有深度;

  • 利用深度估计(或相机投影矩阵)推测该像素在 3D 空间中的位置;

  • 所有 3D 点再“划分”为离散的三维网格(Voxel Grid),以统一尺度处理。


3D 物体框表示形式


BEVFormer 输出的 3D BBox 通常以 [x, y, z, dx, dy, dz, θ] 表示:


  • (x, y, z):中心坐标;

  • (dx, dy, dz):尺寸;

  • θ:朝向角。

二、静态建图任务:MapTR

2.1 任务简介

静态感知任务主要关注场景中静态结构物体,包括车道线、道路边界、停止线等。这类信息对地图构建、定位、行为规划等很重要。

2.2 核心算法

MapTR 是一种矢量建图方法,首次在 Transformer 框架中实现了 Polyline 格式的地图元素生成。与传统的栅格输出不同,MapTR 直接输出点序列形式的几何结构,精度更高。


Polyline 是什么?


Polyline 是一条折线,由一系列顺序连接的点组成,常用于表示线型元素:车道线、道路边界、路沿、箭头、停止线等。


通常每条 polyline 表示为点集 [p1, p2, …, pn],每个点为 (x, y) 或 (x, y, attr)(带语义)。


MapTR 架构简介


  1. 图像特征提取:使用 CNN + Transformer 提取多摄像头图像特征;

  2. BEV 表征生成:将图像 lift 到 3D 后,splat 投影为 BEV 特征;(前两步和动态感知任务那儿一样)

  3. 结构化 Query 解码:

  4. 每个 query 对应一条 polyline;

  5. 生成起点后,通过自回归方式生成后续点序列;

  6. 多类别建图:支持同时预测多类地图元素,如 divider(车道之间的分隔线)、boundary(道路边界)、arrow(导向箭头)、stopline(停止线) 等。

三、Freespace 感知任务:Occupancy Prediction

3.1 任务简介

Freespace 任务旨在预测环境中可通行区域与障碍物位置。通过对周围三维空间进行体素划分,输出每个 voxel(体素)的占用状态。

3.2 核心算法

Occupancy 模型通常采用图像或点云输入,结合深度估计和 3D 重建,生成 Occupancy Grid,即空间占用网格。


什么是 Occupancy Grid?


Occupancy Grid 是将三维空间离散为等间距的体素格(voxel),每个 voxel 包含一个数值表示其被占用的概率:


  • 值为 0:free 空间;

  • 值为 1:确定被障碍物占据;

  • 值介于两者之间:存在不确定性。


典型输出维度为 [B, C, X, Y, Z],其中 B 为 batch size,C 为类别数或 occupancy 状态数,X、Y、Z 表示 3D 空间上的 voxel 网格。


对这里的 C 再展开聊一下:


C = 1(单通道概率)


  • 表示每个 voxel 的被占概率,即该 voxel 被物体占据的概率;

  • 输出经过 sigmoid 激活函数,将值映射到 0,1;

  • 值越接近 1 → 越确定被物体占据;接近 0 → 自由空间。


# 示例:输出为 [B, 1, X, Y, Z],经过 sigmoid 得到概率occupancy_logits = model(input)occupancy_probs = torch.sigmoid(occupancy_logits)
复制代码


C > 1(多通道分类概率)


  • 每个 voxel 是一个多分类问题,比如:

  • 通道 0:free

  • 通道 1:occupied

  • 通道 2:unknown 或 uncertain

  • 输出经过 softmax,每个 voxel 的 3 个类别概率和为 1:


# 示例:输出为 [B, 3, X, Y, Z],对 C=3 维度做 softmaxoccupancy_logits = model(input)occupancy_probs = torch.softmax(occupancy_logits, dim=1)
# occupied 概率提取occupied_prob = occupancy_probs[:, 1, ...]
复制代码


也可以引入语义标签,将空间分为:


  • drivable(可通行区域);

  • static obstacle(建筑物、护栏);

  • dynamic obstacle(行人、车);

  • unknown(不确定区域)。

四、总结

看下图有个感觉即可:



用户头像

还未添加个人签名 2021-03-11 加入

还未添加个人简介

评论

发布
暂无评论
智能驾驶感知算法任务简介_自动驾驶;_地平线开发者_InfoQ写作社区