【3D目标检测】Frustum PointNets for 3D Object Detection from RGB-D Data

概述

首先本文是基于图像和点云的,属于早期的模态融合的成果,是串行的算法,而非并行的,更多的是考虑如何根据图像和点云这两个模态的数据进行3D目标检测。
提出动机与贡献1:以往基于点云的算法,要么是将点云进行编码成规则结构如体素、体柱,然后进行处理,要么是将点云转换成图片类型(鸟瞰图),然后进行处理,这些方法都会损失原始点云的信息。因此直接基于原始点云进行目标检测能够更加有效的利用3D的信息,这方面比较经典的工作就是PointNet类的算法,它们能进行分类和分割,并没有进行目标检测,因此作者提出了一种方法将PointNet用到了目标检测当中。
提出动机与贡献2:以往基于点云的算法基本都是使用RPN网络生成3D候选框的,但是基于原始点云的话,RPN不好做啊,因为不好设置3D anchor了就。因此作者就将2D候选框和3D实例分割等操作结合起来生成候选框。

ps:
2D目标检测中ancho:两阶段算法中,anchor用于候选框的生成,单阶段算法中anchor用于最终边界框的生成,他们都是需要对anchor的偏移参数进行预测,然后将偏移参数作用到anchor上得到我们想要的结果(候选框或者边界框),那怎么得到参数的预测结果呢?一般都是得到一个全局的特征,然后用 1 ∗ 1 1*1 11卷积调整通道数。比如我们将全局特征通过 1 ∗ 1 1*1 11卷积得到了 7 ∗ 7 ∗ ( 4 ∗ k ) 7*7*(4*k) 77(4k)的结果,就代表着原图中设置了 7 ∗ 7 = 49 7*7=49 77=49个位置,每个位置放置了 k k k个anchor,每个anchor对应4个偏移调整参数。这个位置怎么选择呢?可以将结果特征图中的点按照一定的规则映射到原图中,也可以采用什么别的方式,接着以这个位置为中心,放置不同长宽比例、不同大小的矩形框作为先验也就是anchor。
视锥:视锥就是下图中有颜色的部分(立体梯形),相机中图像成的像就是视锥中的内容。因此我们可以通过图像以及相机的内置参数得到视锥。
在这里插入图片描述

细节

网络结构

整体流程:

  1. 首先使用2D目标检测器在图像中得到候选框并进行分类
  2. 借助相机的内参将2D候选框转换为得到3D视锥(frustum)
  3. 对3D视锥内的点进行3D实例分割,得到每个点的类别
  4. 基于分割的结果,1个PointNet的变体(T-Net)回归中心点坐标,另一个PointNet的变体回归尺寸和航向角。
    在这里插入图片描述

视锥候选框

首先使用2D目标检测器在图像中得到候选框并进行分类,然后借助相机的内参(投影矩阵)将2D候选框转换为得到3D视锥,视锥内的点就构成了视锥点云。但是对于不同的2D候选框,视锥可能会朝向很多不同的方向,点云的分布很不稳定,所以作者对视锥中的点做了几何变换,(下图a)使得z轴指向视锥的中心,那么视锥中的点的分布就很稳定了。
注:1、因为候选框只会包含一个目标,所以理论上每个视锥中也仅包含一个目标。
在这里插入图片描述

3D实例分割

我们现在已经有了2D候选区域以及它对应的视锥点云,接下来就是从中得到3D边界框。一个直接的思路就是将视锥点云转换成2D候选区域的深度图,然后使用CNN处理,但是其中会存在物体遮挡和背景杂乱的问题。这个问题在2D中是很难处理的,但是在3D中是比较容易处理的,因为3D空间中物体是自然分离的。因此作者使用PointNet对视锥点云中的所有点进行2分类(目标点云以及非目标点云),得到目标点云。

上面说了视锥中的目标主体只有一个,也就是和2D候选框中的类别一致的,因此我们可以将之前预测到的2D候选框类别作为额外的特征或者说是先验知识,加到视锥中的点上,方便分割。

分割结束之后,得到目标点云,再做一次几何变换

注:为什么作者根据2D候选框生成视锥,然后做3D分割而不是直接使用2D分割昌盛视锥呢?就像前面说的,2D分割难度大,效果差;3D分割难度小,效果好。

在这里插入图片描述

边界框参数回归

实验中发现目标点云的中心距离边界框的中心依旧比较远,因此作者单独使用T-Net回归边界框的中心点坐标,这里的回归指的是目标点云的质心相对于边界框中心的偏移,回归结束就能得到粗粒度的边界框中心点。再使用一个PointNet的变体(Amodal 3D Box Estimation PointNet)实现边界框的尺寸(h,w,l)、航向角的回归以及中心点坐标的进一步回归,输出维度是 3 + 4 ∗ N S + 2 ∗ N H 3+4*NS+2*NH 3+4NS+2NH,其中3是边界框中心点的坐标偏移, N S NS NS是不同尺寸的anchor个数,4是长宽高以及置信度, N H NH NH是不同朝向的anchor,2是置信度以及航向角。

注:这里的T-Net类似于PointNet中的T-Net,但是它不学习旋转矩阵,而是实现边界框中心点坐标的回归,因此它是有监督的。
在这里插入图片描述

损失函数

损失主要包含四部分:3D分割的损失,两次几何变换的损失、边界框相关的损失以及最后的角损失。
具体: L s e g L_{seg} Lseg是分割损失、 L c 1 − r e g L_{c1-reg} Lc1reg是两次几何变换的损失、 L c 2 − r e g L_{c2-reg} Lc2reg是中心点回归的损失、 L h − c l s L_{h-cls} Lhcls L h − r e g L_{h-reg} Lhreg是航向角分类和回归的损失、 L s − c l s L_{s-cls} Lscls L s − r e g L_{s-reg} Lsreg是各个尺寸分类和回归的损失。
在这里插入图片描述
上面公式写的很多,相当于是各个参数都单独预测了,但是他们应该是一起起作用得到边界框的,所以引入了8个角的损失。
在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值