PIXOR: Real-time 3D Object Detection from Point Clouds [CVPR18]

PIXOR(ORiented 3D object detection from PIXel-wise neural network predictions) 是一个proposal-free,单阶段,实时的3D目标检测器。将点云通过投影转换为BEV形式,输出基于像素级神经网络的预测结果。

2D投影的优点在于使得点云数据表达更加紧凑,但缺点是在投影过程中造成了一定的信息损失。PIXOR选择BEV表达形式的原因在于相对于3D体素化,计算量较少,且能创造度量空间,为PIXOR探索目标的大小和形状提供先验。

PIXOR Real-time 3D Object Detection from Point Clouds

Input Representation

由于点云的不规则性,无法直接使用标准的深度神经网络。因此需要将点云进行转换。比如将其进行体素化,形成三维网格。但体素化后计算量较大,实时性较差,由于点云的稀疏性,会产生大量的空网格。另外,需要对三个维度进行滑动,提取特征。因此,作者采用的是使用BEV俯视图的形式。

通过BEV,自由度有3降维2(z轴消失),并将高度信息作为第三个通道(如图像的RGB),因此不会带来太大的信息损失。通过这种方式,得到了一个更加紧凑的表示方式,并且可以使用2D卷积操作。对于无人驾驶,这种降维是可取的,因为驾驶场景中,目标物体均位于地面上。与前视图相比,俯视图可以解决物体间相互遮挡的问题,另外还具有尺度不变性(即没有图像那种越远的物体,尺寸越小的现象),它还可以保持度量空间,因此网络可以使用对象的物理尺寸等先验条件。

假设,俯视图的尺寸为L×W×HL \times W \times H,其中H保存的是每个点的occupancy(占有率特征)和intensity(反射强度)。

针对occupancy,网格分辨率为dL×dW×dHd_{L} \times d_{W} \times d_{H},针对intensity,网格分辨率为dL×dW×Hd_{L} \times d_{W} \times H。 注意,作者在占用率特征中增加了两个额外的通道,以覆盖范围外的点。 因此,最终点云经过俯视图网格化后,尺寸为LdL×WdW×(HdH+3)\frac{L}{d_{L}} \times \frac{W}{d_{W}} \times\left(\frac{H}{d_{H}}+3\right)

KITTI的点云范围为 [0,70] ×[−40, 40] ,分辨率为0.1米。高度范围为[−2.5, 1] ,将其按照0.1米进行切片,共35个slices。并加入反射率特征。最终的格式化后的尺寸为 800 × 700 × 36 。

Network Architecture

PIXOR Real-time 3D Object Detection from Point Clouds

真个网络的结构可分为两部分:backbone network和header network。

backbone用于提取点云的特征。header则进行预测输出:目标的类别标签得分,3D BBox的尺寸。

Backbone

第一块由两个卷积层组成,卷积核大小为3*3,通道数为32,步长为1。

第二到第五块为残差模块,分别由3,6,6,3个残差层组成,步长为2,用于下采样。

接着进行两次上采样,并与下采样中间层进行求和,实现特征层间融合。这个左右两侧对应尺寸的feature的add操作,将底层细节信息与高层语义信息结合为一起,增强了最终feature map的表达能力。

Header

预测输出的是像素级的结果,即对每个像素都进行了预测,200*175,因为作者没有使用anchor。

分类分支输出一通道的特征图,并使用sigmoid**函数。

回归分支输出6通道的特征图cos(θ),sin(θ),dx,dy,w,l\cos (\theta), \sin (\theta), d x, d y, w, l

其中θ=atan2(sin(θ),cos(θ))\theta = \operatorname{atan} 2(\sin (\theta), \cos (\theta))

Learning 和 Inference

Loss=focalloss(p,ycls)+smoothL1(qyreg) Loss = focal_{\text {- }} loss\left(p, y_{c l s}\right)+\operatorname {smooth}_{L_{1}}\left(q-y_{r e g}\right)

focal_loss(p,y)={α(1p)γlog(p) if y=1(1α)pγlog(1p) otherwise  focal\_loss (p, y)=\left\{\begin{array}{ll}-\alpha(1-p)^{\gamma} \log (p) & \text { if } y=1 \\ -(1-\alpha) p^{\gamma} \log (1-p) & \text { otherwise }\end{array}\right.

smoothL1(x)={0.5x2 if x<1x0.5 otherwise  smooth _{L_{1}}(x)=\left\{\begin{array}{ll}0.5 x^{2} & \text { if }|x|<1 \\ |x|-0.5 & \text { otherwise }\end{array}\right.

相关文章: