PointPillars是一种用于3D目标检测的算法,它主要使用了点云数据和深度学习模型。
PointPillars算法的网络结构主要可以分为三个主要阶段:
- Pillar Feature Net(点云特征处理网络):此阶段的主要任务是将输入的点云数据转换为稀疏的Pseudo image(伪图像)。首先,按照点云数据所在的X、Y轴(不考虑Z轴)将点云数据划分为一个个的网格,凡是落入到一个网格的点云数据被视为其处在一个pillar(柱体)里,或者理解为它们构成了一个Pillar。然后,对每个Pillar内的点云进行处理,生成对应的特征。具体地,每个点云用一个D=9维的向量表示,包括(x, y, z, r, xc, yc, zc, xp, yp),其中(x, y, z)是点的空间坐标,(r)可能是某种反射率或强度信息,(xc, yc, zc)是Pillar的中心坐标,(xp, yp)是点相对于Pillar中心的坐标。
- 2D Convolutional Backbone(2D卷积主干):此阶段的任务是将上一步生成的Pseudo image进一步处理成更高级的特征表示。这通常通过一系列的2D卷积、池化等操作实现。
- Detection Head(检测头):此阶段负责从高级特征中检测和回归3D框。具体来说,它会预测出每个目标在3D空间中的位置、大小和方向等信息。
此外,为了保证每个Pillar中恰好有N个点云数据,如果某个Pillar中的点云数量大于N个,那么多余的点会被丢弃;如果少于N个,则会用0进行填充。在PointPillars中,通常会设定P(Pillar的数量)和N(每个Pillar中点的最大数量)为超参数,例如P=30000,N=20。