【3D目标检测】PIXOR: Real-time 3D Object Detection from Point Clouds论文综述(2018)

1、 为什么要做这个研究(理论走向和目前缺陷) ?
做3D卷积计算量太大,2D CNN信息损失又太多,考虑可以输入是3D体素但是做的是2D卷积。
2、 他们怎么做这个研究 (方法,尤其是与之前不同之处) ?
输入是36个通道的3D体素数据(包括35个通道的3D体素特征,每个体素网格表示这个网格中是否有点云中的点,有记为1无记为0。还有1个通道代表体素网格反射率)。然后做2D卷积,在鸟瞰图下预测2D框(即不预测z值和框的高度),包括中心点坐标,航向角和框宽和高。不用anchor,以缩小版gt框内的像素点为正例点,原版Gt框之外像素点为负例点,中间部分不参与计算损失。直接预测中心点偏移,框宽高及航向角。
3、 发现了什么(总结结果,补充和理论的关系)?
单阶段,anchor-free,的3D目标检测网络。也不能算是标准意义上的3D目标检测,因为没预测Z值。本文的输入表征即36个通道3D体素表征却采用2D CNN处理这种思路有点意思,但好像也不是首创,MV3D已经用过了。另外文中的一些trick如正负例像素点的选择以及回归时的decoded loss有点意思。其余整体来看创新性不大,实验结果也不怎么行。

**摘要:**提出了PIXOR,是一个anchor-free的、单阶段的3D目标检测网络,运行速度10fps。
1、 引言
此时,F-pointnet还没出来,3D目标检测对点云输入的处理方式主要是3D体素化(代表3D FCN)或者2D投影(代表MV3D)。3D网格对应使用3D CNN,2D投影对应使用2D CNN。3D CNN往往计算量很大,模型运行很慢。

2、 相关研究(略)
【3D目标检测】PIXOR: Real-time 3D Object Detection from Point Clouds论文综述(2018)
【3D目标检测】PIXOR: Real-time 3D Object Detection from Point Clouds论文综述(2018)

3. PIXOR检测器
3.1 输入表示

还是把点云进行3D体素化,但是并不是使用3D CNN,而是2D CNN,从而减少一个维度而大量减少计算量。在做体素化过程中,每个网格中若有点,则此网格置为1,无点则置为0,由于是3D体素化,这一步会生成n=35个通道的3D网格,另外还加了一个归一化的反射率的通道,共计是n+1=36个通道作为输入特征表达。另外还做了一个简化就是默认车、人都在地面上,故不做Z值的预测,只做{θ, xc, yc, w, l}的预测,最后评估是在kitti的鸟瞰图上评估的。
3.2 网络头设计
网络头设计有一些trick。首先一个gt box框表示为{θ, xc, yc, w, l},θ为航向角,范围为[-pi, pi],不做z值的预测。回归分支的回归量有6个量{cos(θ), sin(θ), dx, dy, w, l},前两个用于确定θ,dx和dy用于确定box的中心点的偏移(默认中心点为当前像素点所在位置),后两个量直接就预测box的长和宽。学习目标为{cos(θ), sin(θ), log(dx), log(dy), log(w), log(l)}。
【3D目标检测】PIXOR: Real-time 3D Object Detection from Point Clouds论文综述(2018)

原本考虑以在gt box中的点为正例点,在gt box范围外的点为负例点。由于存在严重的正负样本不平衡,故采用focal loss。实际上,还考虑到gt box边界上的点预测的框不准,故选择正例点时还要再将gt box进行缩小,以缩小版的gt box框里的点作为正例点,在原版框中而不在缩小版正例框中的像素点进行忽略,而已原版框之外的像素点为负例点。
还有一个trick是在计算回归损失时,直接预测{cos(θ), sin(θ), log(dx), log(dy), log(w), log(l)}还是说先根据theta和预测框中心点(x,y)和长框确定四个角点的位置,然后四个角点位置依次和gt 角点计算smooth l1损失。这种先旋转后再计算损失稳重称之为decoded loss。实验发现先用原来的smooth l1损失训练一定时间后再用decoded loss微调效果会比较好。
这两个trick的消融实验如下:
【3D目标检测】PIXOR: Real-time 3D Object Detection from Point Clouds论文综述(2018)