PointPillars: Fast Encoders for Object Detection from Point Clouds(CVPR2019)-目标检测论坛-AI for CV-点头深度学习网站

PointPillars: Fast Encoders for Object Detection from Point Clouds(CVPR2019)

image

论文链接:https://arxiv.org/pdf/1812.05784.pdf

代码链接:open-mmlab/OpenPCDet: OpenPCDet Toolbox for LiDAR-based 3D Object Detection.

摘要

PointPillars 是2019年提出的基于点云的3D目标检测算法,旨在解决传统3D卷积方法(如VoxelNet、SECOND)计算量大、速度慢的问题,其在工业界被广泛使用。核心创新在于将点云编码为柱状结构(Pillars),将3D体素压缩为2D伪图像,从而避免3D卷积的计算负担,仅使用2D卷积即可实现端到端的高效检测。实验表明,PointPillars在KITTI数据集上达到62Hz的实时推理速度(更快版本可达105Hz),同时保持与3D卷积方法相当的精度,显著优于VoxelNet和SECOND。

主要贡献

  1. 柱状编码器(Pillar Feature Net, PFN)

    • 将点云在俯视图的X-Y平面内划分为均匀网格(柱状区域),每个柱状结构在z轴是全部信息,避免对Z轴进行离散化,减少计算维度。

    • 对每个柱状结构内的点进行特征增强,扩展至10维特征:原始坐标(x, y, z)、反射强度(r)、相对于pillar内点云中心的偏移(\(x_{c},y_{c},z_{c}\))、相对于pillar网格中心的偏移(\(x_{p},y_{p},z_{p}\))。

    • 使用简化的PointNet对pillar内点云进行特征提取,通过最大池化生成每个pillar结构的全局特征,最终形成2D伪图像(C×H×W)。

  2. 高效2D卷积架构

    • 采用2D卷积主干网络,结合多尺度特征融合(自上而下的特征提取与自下而上的上采样),提取高层次的语义信息,避免3D卷积的计算瓶颈。

  3. 优化的检测头与损失函数

    • 使用SSD检测头进行边界框回归,分类任务采用Focal Loss解决类别不平衡问题,方向预测结合正弦角度损失和二分类Softmax修正180°误差。

    • 引入数据增强策略:从其他点云中采样目标并融合到当前场景,提升模型鲁棒性。

网络结构

image

PointPillars以点云作为输入,输出汽车、行人和骑自行车的人的3D预测边界框。整个网络结构由三个主要阶段组成(图2):(1)将点云转换为稀疏伪图像的特征编码器网络;(2)将伪图像处理成高级表示的2D卷积主干;(3)检测并回归3Dbox的检测头。

1. 点云到伪图像的编码(Pillar Feature Net, PFN)

1.1 点云体素化
  • 输入处理:输入点云 L包含每个点的坐标 (x,y,z)和反射率 r

  • 柱状划分:将点云在俯视图(X-Y平面)划分为均匀的网格(即“柱状结构”,Pillars),z轴为整个高度(无需对高度(Z轴)进行离散化)。

  • 参数设置

    • 网格分辨率:例如体素化网格设置为0.16m×0.16m,控制伪图像的分辨率。

    • 最大Pillar数目 和每个pillar内的点数N,如P=12000,N=30,超出部分随机采样,不足则补零。

1.2 特征增强

每个点被扩展为 10维特征(openpcedt框架),包括:

  1. 原始坐标:x,y,z

  2. 反射率:r

  3. 相对于pillar内点云中心的偏移:\(x_{c}=x-\bar{x},y_{c}=y-\bar{y},z_{c}=z-\bar{z}\)(其中\(\bar{x},\bar{y},\bar{z}\)为柱内点的均值)

  4. 相对于柱网格中心的偏移:\(x_p=x-x_\mathrm{grid},y_p=y-y_\mathrm{grid},z_p=z-z_\mathrm{grid}\)

1.3 稀疏数据处理
  • 由于点云稀疏性(非空柱占比约 3%),通过张量 (D,P,N)(维度=10, pillar数, 每个pillar点数)存储数据。

  • 动态采样与填充:

    • 若柱内点数超过 N,随机采样至 N

    • 若柱数超过 P,随机采样至 P

    • 不足则补零。

1.4 特征提取与伪图像生成
  • 简化版 PointNet

    • 对每个点应用线性层(全连接)→ BatchNorm → ReLU,生成 (C,P,N)的张量(C为特征通道数)。

    • 沿通道维度执行最大池化,得到每个pillar的全局特征 (C,P)

  • 伪图像构建:将柱特征按原始网格位置映射为 2D 伪图像 (C,H,W),其中 H和 W由网格分辨率决定(如 0.16m分辨率下,H=432, W=496)。

2. 2D Backbone

2.1 自上而下的特征提取
  • 块结构:Backbone由多个块 Block(S, L, F) 构成:

    • S(Stride):相对于输入伪图像的步长(如 S=2 表示分辨率减半)。

    • L(层数):每个块包含 L 个 3×3 卷积层。

    • F(通道数):每层输出特征通道数。

2.2 多尺度特征融合
  • 上采样与拼接

    • 对每个块输出的特征进行转置卷积(反卷积)上采样,恢复至更高分辨率。

    • 将不同尺度的特征拼接,形成多尺度融合特征图。

3. SSD 检测头

3.1 锚点设计
  • 类别适配:针对不同目标(车辆、行人)设计锚框(Anchor):

    • 车辆:尺寸 (3.9m,1.6m,1.5m),方向 {0°,90°}

    • 行人:尺寸 (0.8m,0.6m,1.7m),方向 {0°,90°}

  • 匹配策略:基于 2D IoU(忽略高度),正样本阈值 IoU0.6,负样本阈值 IoU0.45

3.2 回归与分类目标
  • 回归目标3D 框参数:中心偏移 (Δx,Δy,Δz)、尺寸缩放 (Δl,Δw,Δh)、航向角 Δθ

image

  • 分类目标:使用 Focal Loss 解决类别不平衡问题。

  • 方向预测:结合角度回归(Smooth L1 Loss)与方向分类(二分类 Softmax),避免 180° 误差。

3.3 损失函数
  • 总损失:分类损失 + 回归损失 + 方向损失:

\(\mathcal{L}\quad=\frac{1}{N_{pos}}\left(\beta_{loc}\mathcal{L}_{loc}+\beta_{cls}\mathcal{L}_{cls}+\beta_{dir}\mathcal{L}_{dir}\right)\)

实验结果

image

 

总结

优势

  • 速度优势:通过2D伪图像和轻量化卷积设计,推理速度达62Hz(最高105Hz),远超VoxelNet和SECOND。

  • 精度与效率平衡:在KITTI数据集上,检测的3D AP达59%,BEV AP达66%,接近3D卷积方法的精度。

  • 工程友好性:伪图像兼容传统2D检测框架,易于部署和优化。

局限性

  • 小目标检测不足:行人和骑行者的检测精度较低,主要因伪图像分辨率不足。

  • Z轴信息损失:柱状编码忽略Z轴细节,可能影响高度敏感任务(如复杂地形检测)。

请登录后发表评论

    没有回复内容