点云上的深度学习及其在三维场景理解中的应用————3D Scene Understanding with PointNet and PointNet++(三)

最近在学3D方向的语义分析。

师兄推荐了一个哔哩大学的将门创投 | 斯坦福大学在读博士生祁芮中台:点云上的深度学习及其在三维场景理解中的应用!的宝藏视频,我会多看几遍,并写下每次观看笔记。up主的个人网页:http://stanford.edu/~rqi
具体代码实现可参照:PointNet++代码的实现
下文的截图都源自讲解的PPT,在我的资源:祁芮中台点云讲解.pdf

全篇手码,内容较多会持续更新。
带问号的句子都是乘上引下的重点作用,文章分为三篇,这是第三篇,请耐心食用。

--------------------------------------------------------------------------------------------------

正文继续

前两篇介绍了PointNet++(PointNet)的网络结构以及其背后的原理,本篇为三维场景理解中的应用,主要讲解如何做三维目标检测(3D Object Detection),三维场景流(3D Scene Flow)暂不讨论。

如何做3D物体识别?如何用上PointNet和PointNet++?

在这里插入图片描述
我们的目标是得到物体的3D bounding(3D物体框)。
下图为在图片中的表达。
在这里插入图片描述
下图为在点云中可视化的例子。
在这里插入图片描述
(Previous Work)之前传统的工作是怎么处理三维物体识别的呢?
很多是基于下图这个思路,先在三维空间中做region proposal(区域提案),可能是基于点云投影到图片上,在图片中propose三维的bounding box,也可能是基于三维的CNN来做。propose完以后在把2D和3D的features结合到proposal中做一个分类。
这么做的缺点是三维空间的搜索非常大,计算量很大,3D的proposal因为点云的分辨率有限,很多时候很难发现小的物体。
在这里插入图片描述
另一种方法是基于图片,用RGB的图片来估计3D的bounding box,依赖一些物体大小的鲜艳知识,这时候很难精确估计物体深度和位置。另外depth image对领域的定义有局限,比如两个点可能距离很远,但投影后距离非常近。
所以在图片的表达的形势下,用2D的CNN还是有很多局限性,很难精确估计物体的深度和大小。
在这里插入图片描述
介绍一下本文做三维物体识别的思路,如何用上PointNet和PointNet++
结合2D和3D的优点,针对RGB-D的input,先在RGB的图片上用一个2D detectors得到一个二维的物体区域。比如图片中的车先得到一个红色的方框,得到二维的区域之后,大部分任务我们知道camera intreseace,那么由二维区域生成到一个三维的视锥区域(2D region (from CNN) to 3D frustum),右边红色的锥状体表示。接下来对物体的搜索就可以在这是视锥内搜索,而且可以转化为在三维点云中搜索的问题。
这么做的优点在于:

  1. 利用2D的detector来缩小搜索的范围,从全图缩小到视锥,减少计算量和复杂度。
  2. 因为视锥内可以直接在点云上操作,我们可以利用点云的精确性,以及我们点云3D深度学习的工具,比如PointNet,直接分析和处理点云数据得到精确的3D bounding box。

在这里插入图片描述
框架起名叫Frustum-based 3D Object Detection(基于视锥的三维物体识别),这个识别有两个挑战,一个是下图中一个人在打电话,我们发现点云中有很多前景的遮挡(Foreground occluder)和后边干扰(Background Clutter)的出现。传统的方法很难应对这种情况。
在这里插入图片描述
如何解决上述有遮挡的问题呢?
我们的 方法是使用 PointNet解决这个问题,是一种基于3D点云数据的方法,大概的算法框架如下图。分三步:

  1. 先在2D的图片上得到一个2D detection的结果,然后我们根据camera
    intreseace可以把一个2D的box换到一个3D的区域对应一个视锥的范围,这个过程为Frustum Proposal(视锥方案)。

  2. 可以直接在视锥的点云里找这个3D的box,但因为有很多前景和后景的干扰,我们希望先把关键的点拿出来,而不受干扰的影响。我们做一个3D的物体分割的网络,也是由PointNet的分割网络实现。

  3. 我们把这个物体分割出来以后,再利用另外一个网络去精确的估计物体的三维bounding box,去估计他的姿态大小以及精确的3D位置。
    在这里插入图片描述
    在汽车的语义分割上,网络的优异结果如下图
    在这里插入图片描述
    在一些更小的物体上(行人、自行车)优势更大
    在这里插入图片描述
    为什么有这么优异的结果?
    因为由2D到3D,直接在3D点云上分割。
    在这里插入图片描述
    另外,可以对输入做很容易的归一化,我们基于点云做操作,对点云的归一化可以简化学习的问题。举个栗子:
    这是一个俯视图的视锥,有一辆汽车,汽车在左或右侧视锥的范围变化会非常大,x坐标的变化会非常大。
    在这里插入图片描述
    为了归一化这个问题,我们把坐标系进行旋转,这样所有的z轴都会指向视锥的中心方向。这样点在x轴的分布就会非常简化,学习的问题就会很容易。
    在这里插入图片描述进一步物体在深度上有很大区别,z有很大分布,我们基于3D物体的分割可以找到分割后物体的中心,这样物体的点会集中在原点附近,使得后面的学习问题大幅度继续简化。同时可以用另一个网络去估计这个物体真实的中心,红色的中心仅仅是物体分割的中心,物体的真实中心用另一个网络进一步估计。
    在这里插入图片描述
    最后在这个绿色的坐标系下进行最后bounding box的估计。
    在这里插入图片描述
    结果上,经过一系列的归一化操作,结果很棒,estimation accuracy飞速提升。而且这些操作很简单,只不过是一些矩阵的旋转、乘法(狗头)。
    在这里插入图片描述
    展示!
    即便右下角就半个车,也能估计出来。
    在这里插入图片描述
    室内的检测:
    在这里插入图片描述

总结

本文介绍了针对点云的网络结构pointnet,有对输入顺序的置换不变性,同时是轻量级的结构,能对数据的丢失很鲁棒,而且提供了一个统一的框架,可以为很多不同的任务服务。进而介绍了这个网络结构在很多场景中的应用,具体为3D识别的应用。还有很多场景,比如场景分割、局部特征的估计。
在这里插入图片描述
相关的文献:
在这里插入图片描述
完结完结!
--------------------------------------------------------------------------------------------------
其他两篇文章链接:
点云上的深度学习及其在三维场景理解中的应用————PointNet(一)
点云上的深度学习及其在三维场景理解中的应用————From PointNet to PointNet++(二)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值