模型原理
PointPillars在VoxelNet中Voxel的基础上提出点云表征方法Pillar,可以将点云转换成伪图像,进而通过2D卷积实现目标检测。PointPillars整个网络结构分为三个部分:
- Pillar Feature Net:将输入的点云转换为稀疏的伪图像;
- Backbone:特征提取得到伪图像的语义特征;
- Detection Head:检测和回归3D框。
模型结构

Pillar Feature Net
P×N×D(30000×20×9)−> P×N×C(30000×20×64)−>P×C(30000×64)−>W×H×C(512×512×64)
P:最大的pillars个数
N:每个pillar的最大点个数
D:(x,y,z,r,xc,yc,zc,xp,yp),其中(x,y,z,r)为点云原始特征,(xc,yc,zc)是点相对于pillar内部N个点中心的偏移,(xp,yp)是点所在的pillar相对于点云中心的偏移
- 从点云得到Pillars:P×N×D(30000×20×9);
- 利用PointNet对每个Pillar提取特征,得到:P×N×C(30000×20×64);
- 对所有Pillars的特征进行最大池化,得到:P×C(30000×64);
- 根据pillars的index,将pillars恢复到对应的坐标位置上,得到伪图像:W×H×C(512×512×64).
Backbone
特征金字塔结构提取语义特征。
Detection Head
输出三个分支:
- 3D检测框7个值:(x,y,z,l,w,h,θ)
- 类别C个值
- 对航向的分类(正反方向)
最终输出维度:
定位:[RL,RW,7],类别:[RL,RW,C]
,航向分类:[RL,RW,Cθ]
检测框损失
anchor:(xa,ya,za,la,wa,ha,θa),ground truth:(xg,yg,zg,lg,wg,hg,θg),检测框结果:(x,y,z,l,w,h,θ)
ground truth偏差
Δxg=la2+wa2xg−xa,Δyg=la2+wa2yg−ya,Δzg=hazg−zaΔlg=log(lalg),Δwg=log(wawg),Δhg=log(hahg)Δθg=sin(θg−θa)
检测框偏差
Δx=la2+wa2x−xa,Δy=la2+wa2y−ya,Δz=haz−zaΔl=log(lal),Δw=log(waw),Δh=log(hah)Δθ=sin(θ−θa)
令Δb=(Δx,Δy,Δz,Δl,Δw,Δh,Δθ)损失函数为Smooth L1
Lloc=(x,y,z,l,w,h,θ)∑SmoothL1(Δb−Δbg)
类别和航向角分类损失
类别损失:采用Focal Loss对每个类别计算二分类损失。
航向角损失:Softmax Loss.