论文阅读:点云目标检测模型pointpillars

289 阅读1分钟

模型原理

PointPillars在VoxelNet中Voxel的基础上提出点云表征方法Pillar,可以将点云转换成伪图像,进而通过2D卷积实现目标检测。PointPillars整个网络结构分为三个部分:

  • Pillar Feature Net:将输入的点云转换为稀疏的伪图像;
  • Backbone:特征提取得到伪图像的语义特征;
  • Detection Head:检测和回归3D框。

模型结构

pointpillars_structure.png

Pillar Feature Net

P×N×D(30000×20×9)>P\times N\times D(30000\times 20\times 9)-> P×N×C(30000×20×64)>P×C(30000×64)>W×H×C(512×512×64)P\times N\times C(30000\times 20\times 64)->P\times C(30000\times 64)->W\times H\times C(512\times 512\times 64)

PP:最大的pillars个数

NN:每个pillar的最大点个数

DD(x,y,z,r,xc,yc,zc,xp,yp)(x,y,z,r,x_c,y_c,z_c,x_p,y_p),其中(x,y,z,r)(x,y,z,r)为点云原始特征,(xc,yc,zc)(x_c,y_c,z_c)是点相对于pillar内部NN个点中心的偏移,(xp,yp)(x_p,y_p)是点所在的pillar相对于点云中心的偏移

  1. 从点云得到Pillars:P×N×D(30000×20×9)P\times N\times D(30000\times 20\times 9)
  2. 利用PointNet对每个Pillar提取特征,得到:P×N×C(30000×20×64)P\times N\times C(30000\times 20\times 64)
  3. 对所有Pillars的特征进行最大池化,得到:P×C(30000×64)P\times C(30000\times 64)
  4. 根据pillars的index,将pillars恢复到对应的坐标位置上,得到伪图像:W×H×C(512×512×64)W\times H\times C(512\times 512\times 64).

Backbone

特征金字塔结构提取语义特征。

Detection Head

输出三个分支:

  1. 3D检测框7个值:(x,y,z,l,w,h,θ)(x,y,z,l,w,h,\theta)
  2. 类别C个值
  3. 对航向的分类(正反方向)

最终输出维度:

定位:[LR,WR,7][\frac{L}{R},\frac{W}{R},7],类别:[LR,WR,C][\frac{L}{R},\frac{W}{R},C] ,航向分类:[LR,WR,Cθ][\frac{L}{R},\frac{W}{R},C_\theta]

检测框损失

anchor:(xa,ya,za,la,wa,ha,θa)(x_a,y_a,z_a,l_a,w_a,h_a,\theta_a),ground truth:(xg,yg,zg,lg,wg,hg,θg)(x_g,y_g,z_g,l_g,w_g,h_g,\theta_g),检测框结果:(x,y,z,l,w,h,θ)(x,y,z,l,w,h,\theta)

ground truth偏差

Δxg=xgxala2+wa2,Δyg=ygyala2+wa2,Δzg=zgzahaΔlg=log(lgla),Δwg=log(wgwa),Δhg=log(hgha)Δθg=sin(θgθa)\Delta x_g=\frac{x_g-x_a}{\sqrt{l_a^2+w_a^2}},\Delta y_g=\frac{y_g-y_a}{\sqrt{l_a^2+w_a^2}},\Delta z_g=\frac{z_g-z_a}{h_a}\\ \Delta l_g=\log(\frac{l_g}{l_a}),\Delta w_g=\log(\frac{w_g}{w_a}),\Delta h_g=\log(\frac{h_g}{h_a})\\ \Delta \theta_g=\sin(\theta_g-\theta_a)

检测框偏差

Δx=xxala2+wa2,Δy=yyala2+wa2,Δz=zzahaΔl=log(lla),Δw=log(wwa),Δh=log(hha)Δθ=sin(θθa)\Delta x=\frac{x-x_a}{\sqrt{l_a^2+w_a^2}},\Delta y=\frac{y-y_a}{\sqrt{l_a^2+w_a^2}},\Delta z=\frac{z-z_a}{h_a}\\ \Delta l=\log(\frac{l}{l_a}),\Delta w=\log(\frac{w}{w_a}),\Delta h=\log(\frac{h}{h_a})\\ \Delta \theta=\sin(\theta-\theta_a)

Δb=(Δx,Δy,Δz,Δl,Δw,Δh,Δθ)\Delta b=(\Delta x, \Delta y, \Delta z, \Delta l, \Delta w, \Delta h, \Delta \theta)损失函数为Smooth L1

Lloc=(x,y,z,l,w,h,θ)SmoothL1(ΔbΔbg)L_{loc}=\sum_{(x,y,z,l,w,h,\theta)}\mathrm{SmoothL1}(\Delta b-\Delta b_g)

类别和航向角分类损失

类别损失:采用Focal Loss对每个类别计算二分类损失。

航向角损失:Softmax Loss.