PIXOR(ORiented 3D object detection from PIXel-wise neural network predictions) 是一个proposal-free,单阶段,实时的3D目标检测器。将点云通过投影转换为BEV形式,输出基于像素级神经网络的预测结果。
2D投影的优点在于使得点云数据表达更加紧凑,但缺点是在投影过程中造成了一定的信息损失。PIXOR选择BEV表达形式的原因在于相对于3D体素化,计算量较少,且能创造度量空间,为PIXOR探索目标的大小和形状提供先验。
由于点云的不规则性,无法直接使用标准的深度神经网络。因此需要将点云进行转换。比如将其进行体素化,形成三维网格。但体素化后计算量较大,实时性较差,由于点云的稀疏性,会产生大量的空网格。另外,需要对三个维度进行滑动,提取特征。因此,作者采用的是使用BEV俯视图的形式。
通过BEV,自由度有3降维2(z轴消失),并将高度信息作为第三个通道(如图像的RGB),因此不会带来太大的信息损失。通过这种方式,得到了一个更加紧凑的表示方式,并且可以使用2D卷积操作。对于无人驾驶,这种降维是可取的,因为驾驶场景中,目标物体均位于地面上。与前视图相比,俯视图可以解决物体间相互遮挡的问题,另外还具有尺度不变性(即没有图像那种越远的物体,尺寸越小的现象),它还可以保持度量空间,因此网络可以使用对象的物理尺寸等先验条件。
假设,俯视图的尺寸为 L × W × H L \times W \times H L×W×H,其中H保存的是每个点的occupancy(占有率特征)和intensity(反射强度)。
针对occupancy,网格分辨率为 d L × d W × d H d_{L} \times d_{W} \times d_{H} dL×dW×dH,针对intensity,网格分辨率为 d L × d W × H d_{L} \times d_{W} \times H dL×dW×H。 注意,作者在占用率特征中增加了两个额外的通道,以覆盖范围外的点。 因此,最终点云经过俯视图网格化后,尺寸为 L d L × W d W × ( H d H + 3 ) \frac{L}{d_{L}} \times \frac{W}{d_{W}} \times\left(\frac{H}{d_{H}}+3\right) dLL×dWW×(dHH+3)
KITTI的点云范围为 [0,70] ×[−40, 40] ,分辨率为0.1米。高度范围为[−2.5, 1] ,将其按照0.1米进行切片,共35个slices。并加入反射率特征。最终的格式化后的尺寸为 800 × 700 × 36 。
真个网络的结构可分为两部分:backbone network和header network。
backbone用于提取点云的特征。header则进行预测输出:目标的类别标签得分,3D BBox的尺寸。
第一块由两个卷积层组成,卷积核大小为3*3,通道数为32,步长为1。
第二到第五块为残差模块,分别由3,6,6,3个残差层组成,步长为2,用于下采样。
接着进行两次上采样,并与下采样中间层进行求和,实现特征层间融合。这个左右两侧对应尺寸的feature的add操作,将底层细节信息与高层语义信息结合为一起,增强了最终feature map的表达能力。
预测输出的是像素级的结果,即对每个像素都进行了预测,200*175,因为作者没有使用anchor。
分类分支输出一通道的特征图,并使用sigmoid激活函数。
回归分支输出6通道的特征图 cos ( θ ) , sin ( θ ) , d x , d y , w , l \cos (\theta), \sin (\theta), d x, d y, w, l cos(θ),sin(θ),dx,dy,w,l。
其中 θ = atan 2 ( sin ( θ ) , cos ( θ ) ) \theta = \operatorname{atan} 2(\sin (\theta), \cos (\theta)) θ=atan2(sin(θ),cos(θ))
L o s s = f o c a l - l o s s ( p , y c l s ) + smooth L 1 ( q − y r e g ) Loss = focal_{\text {- }} loss\left(p, y_{c l s}\right)+\operatorname {smooth}_{L_{1}}\left(q-y_{r e g}\right) Loss=focal- loss(p,ycls)+smoothL1(q−yreg)
f o c a l _ l o s s ( p , y ) = { − α ( 1 − p ) γ log ( p ) if y = 1 − ( 1 − α ) p γ log ( 1 − p ) 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. focal_loss(p,y)={−α(1−p)γlog(p)−(1−α)pγlog(1−p) if y=1 otherwise
s m o o t h L 1 ( x ) = { 0.5 x 2 if ∣ x ∣ < 1 ∣ x ∣ − 0.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. smoothL1(x)={0.5x2∣x∣−0.5 if ∣x∣<1 otherwise