PointPillars: Fast Encoders for Object Detection from Point Clouds
用于激光雷达点云目标检测的快速编码器
一、摘要
点云编码可分为两种类型:固定编码器往往速度快,但牺牲了精度;而从数据中学习的编码器更准确,但速度较慢。
本文提出的PointPillars,利用PointNets来学习以体柱组织的点云特征;检测速度非常快,可以达到60Hz。
二、引言
激光雷达点云在三维空间中通常是稀疏分布的,而相机图像在二维空间中具有丰富的色彩、亮度等信息。因此,一般的图像卷积框架不适用于3D点云目标的检测,需要重新设计。PointPillars使用一种新型编码器,它学习点云体柱上的特征来预测对象的3D方框。
传统方法
- VoxelNet:点网络被应用于体素,然后由一组3D卷积层处理,随后是2D bckbone和检测头 detect head,但是耗时太长。
- Frustum PointNet:使用PointNets来分割和分类视锥中的点云,视锥空间是将二维图像上的检测投影到3D中生成的,但是网络较复杂。
三、PointPillars Network

由三部分组成:
- Encoder network,将点云转换为稀疏伪图像的特征编码器网络;
- backbone,提取伪图像特征的2D卷积backbone网络;
- Detection Head,检测头,目标3D检测框的生成
3.1、Encoder network
每个点云使用一个九维向量表示D=(x,y,z,r,xc,yc,zc,xp,yp)D=(x,y,z,r,x_c,y_c,z_c,x_p,y_p)D=(x,y,z,r,xc,yc,zc,xp,yp),x,y,z,rx,y,z,rx,y,z,r为该点云的三维坐标和反射强度,xc,yc,zcx_c,y_c,z_cxc,yc,zc为该点云所处Pillar中所有点的几何中心 xp,ypx_p,y_pxp,yp为x−xc,y−ycx-x_c,y-y_cx−xc,y−yc ,反映了点与几何中心的相对位置。
假设每个样本中有 PPP个非空的pillars,每个pillar中有 N个点云数据,那么这个样本就可以用一个 (D,P,N)(D,P,N)(D,P,N) 张量表示,实现了点云数据的张量化。

接着需要对张量化的点云数据进行处理和特征提取,卷积得到(C,P,N)(C,P,N)(C,P,N)的张量,接着池化得到(C,P)(C,P)(C,P)维度的特征图,再将PPP转为(H,W)(H,W)(H,W),生成了形如(C,H,W)(C,H,W)(C,H,W)的伪图片,上图展示了这个过程。
3.2、backbone

两个子网络:
- 第一个子网络对特征图降采样得到不同尺度的特征,通道特征维度上升
- 第二个子网络将不同尺度的特征图上采样为一致的尺寸,便于后续的融合
优点:不同分辨率的特征图负责不同大小物体的检测,增强检测效果。比如分辨率大的特征图往往感受野较小,适合捕捉小物体。
3.3、Detection Head
使用SSD来进行3D物体检测,同时计算先验框和真值的2D IoU
四、相关细节
4.1、损失函数
检测损失:对于Detection Head得到的三维检测框(x,y,z,w,h,l,θ)(x,y,z,w,h,l,\theta)(x,y,z,w,h,l,θ),设检测框和真值的偏差为:
Δx=xgt−xada,Δy=ygt−yada,Δz=zgt−zahaΔw=logwgtwa,Δl=loglgtla,Δh=loghgthaΔθ=sin(θgt−θa),
\begin{aligned}
&\Delta x =\frac{x^{gt}-x^{a}}{d^{a}},\Delta y=\frac{y^{gt}-y^{a}}{d^{a}},\Delta z=\frac{z^{gt}-z^{a}}{h^{a}} \\
&\Delta w =\log\frac{w^{gt}}{w^{a}},\Delta l=\log\frac{l^{gt}}{l^{a}},\Delta h=\log\frac{h^{gt}}{h^{a}} \\
&\Delta\theta =\sin\left(\theta^{gt}-\theta^{a}\right),
\end{aligned}
Δx=daxgt−xa,Δy=daygt−ya,Δz=hazgt−zaΔw=logwawgt,Δl=loglalgt,Δh=loghahgtΔθ=sin(θgt−θa),
其中有
da=(wa)2+(la)2.
\begin{aligned}d^a=\sqrt{(w^a)^2+(l^a)^2}.\end{aligned}
da=(wa)2+(la)2.
则检测损失为
Lloc=∑b∈(x,y,z,w,l,h,θ)SmoothL1 (Δb)
\mathcal{L}_{loc}=\sum_{b\in(x,y,z,w,l,h,\theta)}\text{SmoothL1 }(\Delta b)
Lloc=b∈(x,y,z,w,l,h,θ)∑SmoothL1 (Δb)
分类损失:
Lcls=−αa(1−pa)γlogpa,
\mathcal{L}_{cls}=-\alpha_a\left(1-p^a\right)^\gamma\log p^a,
Lcls=−αa(1−pa)γlogpa,
其中PaP^aPa是锚定框的类别概率,αa=0.25\alpha_a=0.25αa=0.25和γ=2\gamma=2γ=2。
物体方向损失:
Ldir=Softmax
\mathcal{L}_{dir}=Softmax
Ldir=Softmax
因此,总损失为
L=1Npos(βlocLloc+βclsLcls+βdirLdir)
{\mathcal{L}}\quad=\frac{1}{N_{pos}}\left(\beta_{loc}\mathcal{L}_{loc}+\beta_{cls}\mathcal{L}_{cls}+\beta_{dir}\mathcal{L}_{dir}\right)
L=Npos1(βlocLloc+βclsLcls+βdirLdir)
4.2、数据增强
- 为所有落在3D框内的关联点云创建一个GT真实框的查找表,从样本中随机挑选15个汽车、0个行人、8个自行车samples。放入当前点云中。
- 对GT真实框进行旋转和平移
- 模拟激光雷达的定位噪声,对点云进行镜像翻转,全局缩放、旋转和平移。
663

被折叠的 条评论
为什么被折叠?



