pointpillars的理论解读

随着学习的加深会不断补充的

文章目录

  • 一、pointpillars是什么?
  • 二、pointpillars架构
    • 1.柱子是怎么划分的
      • 1.1 鸟瞰图 是什么意思

一、pointpillars是什么?

PointPillars是一种用于三维物体检测(3D目标检测)的深度学习算法,它主要解决自动驾驶或机器人领域中,如何从激光雷达(LiDAR)点云数据中快速、准确地识别出车辆、行人、骑行者等障碍物的位置、大小和朝向问题。其核心思想是将无序、稀疏的三维点云通过垂直方向(Z轴)堆叠成“柱子”(Pillars),从而转化为类似图像的伪二维特征图,进而可以无缝利用高效的二维卷积神经网络(CNN)进行端到端的推理。这种设计在显著降低计算开销的同时,保持了极高的检测精度,使其成为兼顾速度与性能的经典工业级部署方案,尤其适用于对实时性要求苛刻的无人驾驶场景。

二、pointpillars架构

  • 特征编码器(将点云“升维”成图):首先,把点云在鸟瞰图平面上划分成一个个网格(柱子,即Pillars)。对每个柱子里的点,用简化的PointNet提取特征,并聚合成一个固定长度的向量。这样,所有柱子就拼成了一张伪图像(伪图像,高H,宽W,通道C),成功把3D稀疏问题转化成了2D密集问题。
  • 2D卷积主干(特征提纯):将生成的伪图像送入一个2D卷积网络(通常带下采样,类似FPN结构)。这个主干进一步提取空间和语义信息,输出高分辨率的特征图,用于定位,以及低分辨率的特征图,用于分类和回归。
  • 检测头(输出3D框):最后,在特征图的每个位置上预设多个不同大小和朝向的锚框(锚点)。检测头会并行预测:每个锚框是前景还是背景(分类),以及它对真实3D框的残差回归量(中心点偏移、尺寸对数缩放、朝向角正弦值)。最后通过非极大值抑制(NMS)过滤掉冗余框,输出最终的检测结果。

1.柱子是怎么划分的

PointPillars首先在鸟瞰图平面上将预设的感兴趣区域划分成固定尺寸的二维网格,每个网格单元即一个“柱子”(Pillar),代表一个垂直延伸、高度不限的空间柱体。随后,根据每个原始点云的(x,y)坐标将其映射到对应的柱体中,并对每个柱子内包含的点进行统一采样或填充,使每个柱子固定包含N个点。接着,对每个柱子内的这N个点,利用一个简化的PointNet(由共享MLP和最大池化组成)进行特征聚合,将每个柱子内所有点的特征压缩为一个固定长度的特征向量。这样,所有柱子就被转换为一个形如(H×W×C)的二维伪图像特征图,其中H和W对应网格的行列数,C为聚合后的特征通道数,从而成功将稀疏、无序的3D点云转化为结构化、密集的2D图像表示,以便后续使用高效的2D卷积神经网络进行特征提取和目标检测。

1.1 鸟瞰图 是什么意思

  1. 前视图(正面看):就像你开车时透过挡风玻璃看到的景象。能清晰看到物体的高度和正面轮廓,但距离和深度信息很难判断。
  2. 鸟瞰图(俯视看):就像你在高空中看地面。物体之间的左右距离(X方向)和前后距离(Y方向)被完美保留,且不会互相遮挡,但物体的高度信息(Z轴)被“压扁”了。

为什么自动驾驶和PointPillars要使用鸟瞰图?

  • 物理尺度恒定:在鸟瞰图下,无论物体离车是近是远,同一个物体(比如一辆车)的像素大小基本是固定的(除非它真的变大)。而在前视图下,近处物体很大,远处很小,这不利于卷积神经网络学习尺度特征。
  • 无遮挡问题:在鸟瞰图中,车辆、行人之间几乎不存在遮挡。而在前视图中,前车会完全挡住后车,导致网络无法检测到被遮挡的物体。
  • 方便回归位置:3D框的中心点(x, y)在鸟瞰图上就是一个像素点,网络直接在这个平面上回归位置(x,y)最方便。而高度(z)和朝向(绕Z轴的旋转角)则单独作为额外的属性去回归。