【3D目标检测】Frustum PointNets


代码
论文

一、论文思路

本文先通过2D模型通过图像生成2D的bounding box,再通过frustum(平截头体)的方式去映射成一个3D的候选区域。在模型的第二阶段,本文使用3D基于点云的模型(如PointNet和PointNet++)去对 上一阶段frustum找出的候选区域进行实例分割和最终3D bounding box的回归。

二、模型介绍

2.1 模型结构

在这里插入图片描述

  • 从图中的第一部分可以看出,该模型首先通过一个2D的CNN去得到一个物体2D的bounding box和它的类别,然后将2D的bounding box映射成一个3D的frustum proposal。
  • 图中的第二部分是一个实例分割的网络,可以将上一步frustum proposal中的点采样到 N × C N\times C N×C,其中 N N N是点的个数, C C C是每个点的特征维度,包含XYZ以及强度信息。最终这些点和这个proposal通过2D CNN得到的类别的one hot vector一起作为这一步实例分割网络的输入,输出一个对于N个点的mask掩码,被掩码过滤过的 M M M个点继续作为下一阶段的输入。
  • 最后一阶段,一个基于PointNet的TNet网络,将输入点校正对齐,并通过另一个网络回归预测出3D的bounding box。

2.2 实现细节

2.2.1 Frustum Proposal

通过一个投影矩阵,每一个2D的bounding box可以被映射成一个3D的frustum proposal。由于每一个frustum proposal的朝向都不一样,因此如下图过程(a)到(b),其会先将其旋转到与相机正交的方向,这样增加了后续算法的旋转不变性。

在2D的detection模型中,本文选用了FPN架构,在ImageNet上面训练,并在KITTI上面fine tune。
在这里插入图片描述

2.2.2 3D Instance Segmentation

从下图可以看出,如果仅仅使用Frustum Proposal的话,得到的点云中还包含了大量的背景点,因此这一模块主要的功能就是将我们需要的前景从背景中分割出来。并且如上一张图(c),对于分割出来的前景点云还要将其中心化来引入平移不变性。
在这里插入图片描述

2.2.3 Amodal 3D Box Estimation

在这里插入图片描述
这一部分主要包含两个部分:

  • T-Net:和PointNet中的T-Net类似,只不过这里学习的不是旋转矩阵,而是一个物体中心点的残差,并且这里是有监督的。
  • Box Estimation Net:输出最终bounding box的各种参数,输出的维度为 3 + 4 × N S + 2 × N H 3 + 4 × NS + 2×NH 3+4×NS+2×NH,其中3代表对于中心点的残差回归,是接在T-Net回归之后的;NS代表不同size的anchor个数,每个anchor有四个维度,分别是该anchor的置信度以及长宽高的残差回归;NH代表不同朝向的anchor,每个anchor有两个参数,分别是置信度和朝向角θ。

2.2.4 模型结构

模型的具体结构如下:在这里插入图片描述

2.2.5 损失函数

由于这是一个多任务优化算法,因此在损失函数中应包含用于图像分割的Pointnet的损失 L s e g L_{seg} Lseg用于坐标平移的T-Net的损失、和用于框出目标的损失三部分组成。具体的公式如下:
在这里插入图片描述

  • L c 1 − r e g L_{c1-reg} Lc1reg L c 2 − r e g L_{c2-reg} Lc2reg 分别对应T-Net的坐标平移损失和box estimation的中心回归损失(也就是判断中心产生的损失)。
  • L h − c l s L_{h-cls} Lhcls L h − r e g L_{h-reg} Lhreg分别对应朝向的类别损失和回归损失(即离散值anchor的类型分类,和连续值的回归——smooth l1 loss)。
  • L s − c l s L_{s-cls} Lscls L s − r e g L_{s-reg} Lsreg分别代表box尺寸的类别损失和回归损失,与朝向类似。

上面的损失公式将box的尺寸和角度等参数视为独立的变量计算损失,但实际情况是box的尺寸和角度共同决定了box的信息,而最终得到的box的信息才是我们想要的。因此,frumstum pointnet引入了box的角损失(即对8个bounding box的corner进行损失计算),也就是上面的损失公式中的 L c o r n e r L_{corner} Lcorner,具体的计算公式为:
在这里插入图片描述
这里在NSxNH个anchor中仅有正确的size和head朝向的那个box会计算损失(即其他时候δ=0)。对于第i个size的第j个朝向的box的第k个角 P k i j P^{ij}_k Pkij,会移动到ground truth box的中心,与每个对应的角算L1 Loss。为了考虑到翻转180度的问题,这里会算与180度旋转之后的角 P ∗ ∗ P^{**} P的损失,并取最小值。(后面最后一项中是对k求和而不是i,论文应该写错了)

三、实验结果

论文在detection的任务里比较了KITTI数据集(包含3D detection和鸟瞰图的detection)和SUN-RGBD数据集。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  • 11
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值