前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >点云深度学习的3D场景理解(下)

点云深度学习的3D场景理解(下)

作者头像
点云PCL博主
发布2019-07-30 16:57:36
1.9K0
发布2019-07-30 16:57:36
举报
文章被收录于专栏:点云PCL点云PCL

本文主要是关于 pointNet,pointNet++,frustum point 的一些整理和总结,内容包括如何将点云进行深度学习,如何设计新型的网络架构,如何将架构应用的3D场景理解。文章由于篇幅过长,将分成上下两部分。上文请看点云深度学习的3D场景理解(上)

PointNet++

PointNet 缺陷

1. 对比3Dcnn3D和2D很像,只是变成了3D卷积,多级学习 不断抽象特征,平移不变性。

pointnet 一开始对每个点做MLP低维到高维的映射,把所有点映射到高维的特征通过Max pooling 结合到一起。本质上来说,要么对一个点做操作,要么对所有点做操作,实际上没有局部的概念(loal context) ,比较难对精细的特征做学习,在分割上有局限性。

2、没有local context 在平移不变性上也有局限性

对点云数据做平移 所有的数据都不一样了,导致所有的特征,全局特征都不一样了,分类也不一样,对于单个的物体还好,可以将其平移到坐标系的中心,把他的大小归一化到一个球中,在一个场景中有多个物体不好办,对哪个物体做归一化呢?

  Pointnet ++在局部区域重复性的迭代使用pointnet ,在小区域使用pointnet 生成新的点,新的点定义新的小区域,多级的特征学习,因为是在区域中可以用局部坐标系实现平移的不变性,同时在小区域中还是使用的PN,对点的顺序是无关的,保证置换不变性。

具体的例子:多级的点云学习

上面的例子说明在世界坐标系中,先找到一个局部的区域,因为不想受整体平移的影响。

  1、可以先把局部的点转换到一个局部坐标系中  

  2、在局部中使用pointnet 来提取特征

  3、提取完特征以后会得到一个新的点,F (x,y )在整个点云中的位置 在欧氏空间中,还有个向量特征F(高纬的特征空间),代表小区域的几何形状,

 如果重复这个操作就会得到一组新的点,在数量上少于原先的点,但是新的每个点代表了它周围一个区域的几何特点。

点集的简化:layer:选择小区域,提取小区域提取局部坐标系,应用point net联合而成。

  我们可以重复set abstraction的过程,实现一个多级的网络,下图展示两级, 使得点的数量越来越少,但是每个点代表的区域以及感受野,越来越大,这个cnn的概念很类似,最后把点做一个pooling 得到globle feature,用来做分类。

我们可以将最后的点重新上卷积的方式传回原来的点上,既可以通过3D的插值,可以通过另一种通过PN的方式回传。

在多级网络中有一个很有意思的问题,如何选择局部区域的大小,相较而言就是怎么选择卷积核的大小宽度,如果选择pointnet 作用区域的球的半径?

  在卷积神经网络中大量应用小的kernal(VGG 3*3*3),在pointcloud中是否一样呢?不一定。

  因为pointnet 常见的采样率的不均匀,比如有个depth camera 采到的图像,近的点非常密集,远的点非常稀疏,在密的地方没有问题,在稀疏的会有问题,比如极端的情况,只有一个点,这样学到的特征会非常的不稳定,应该避免。

 为了量化这个问题,有个控制变量的实验,在1024上训练,减少点的数量相当于减少点的密度,不均匀的减少,在刚开始1024点的时候point net ++ 更加强大,得到更高的精确度,应为它是在小区域上,随着密度的下降,性能收到了极大的影响,在小于500个点以后性能低于pointnet。

结论:在pointcloud 中 如果局部的kernel 操作太小的话,会影响性能被采样率不均匀。针对于这个问题,我们希望设计一个神经网络来智能学习,如何综合不同区域大小的特征,得到一个鲁棒的学习层,希望在密集的地方相信这个特征,稀疏的地方不相信这个特征,而去看更大的区域。(MSG/MRG)

比较简单的做法是设计一个Multi-scale : 在这个2D的例子中 将不同半径的区域 ,联合在一起。有点像inception 中的结构。但不一样的是:在训练过程中随机的对输入的dropout, 迫使网络学习若何结合不同的尺度应对损失的数据的特征。

  另外一种方式不是在同一级中,而是在不同网络集中综合,它有个好处,可以节省计算,在下一级的特征已经计算好了,只需要把它池化拿来用就行了。而在mutile scale中需要对不同尺度分别计算。

发现加了MRG和MSG中,丢失数据后鲁棒性能好很多。丢失75%的点 分类都不会受到影响。

下图是在scanenet 上对场景分割做评估:

pointnet ++ 大幅提高了场景分割性能,因为多级的结构,使得他对局部的特征更好的学习,同时还有平移不变性的特点。同时多级分割稍稍提升了性能。

  如果是局部点云的分割:单个角度,局部点云,多级结构对采样率更鲁棒的MSG大幅提升了partial scan的性能。

另一个POINT ++非常好的性能是 :不局限于2D或者3D欧式空间,可以拓展到任意的测度空间,只要有个定义好的距离函数,下面展示对可变性物体,有机物提分割的数据集。比如分类:AB 属于几何外形相似,但是属于不同的类别,AC反之。

不是想依靠XYZ,想依靠物体表面形状的变化。

以上是PointNet++De 网络结构、设计原理介绍。

PN在三维场景理解中的应用

 点云支持我们探索全新的解决方案,基于3D数据的解决方案

之前的工作是怎么处理三维物体的呢?

大多工作是基于以下步骤:

  1、先在三维空间中做region proposal,基于点云投影到图片上(鸟瞰图),在图片中proposal 三维的box,,也可以是3D的cnn来做,

  2、propos完之 后可以把2D和3D的feature 结合到proposal中,做一个分类。

  缺点是:三维搜索空间非常大,计算量也非常大。而且在3D中proposal 点云的分辨率非常有限,很多时候很难发现比较小的物体。

另外一套思路是基于图片的,通过RGB的图片估计3D的box,依赖于对物体大小的先验知识,很难精确的估计物体的大小和位置。

  另外也可以基于depth image。对其领域的定义有很多局限,比如两个点在空间中距离很远,但是投影之后的距离会非常近。所以在图片的表达形式下,2D的cnn收到了很大的局限。很难精确的估计物体的深度和大小。

希望结合2D和3D的优点,针对与RGB-D 的输入 ,先在RGB图片上用一个2Ddector 得到一个2D的检测框,因为我们知道camera intrases(投影角度,投影点),我们可以有2D的区域(逆投影)生成一个3D的视锥frustum,接下来对物体的搜索就可以在视锥内进行搜索,我们可以将其转化成在3D点云中搜索的问题。有以下两处优点:

1、利用2D的detector 来缩小搜索的范围,本来需要在整个3D空间中,因为有2Ddector的帮忙,可以在视锥的范围内搜索,大幅减少了搜索的计算量和复杂度。

2、在视锥内可以针对于点云做操作,利用点云几何的精确性。利用3D,deeplearning 的工具(pointnet)直接处理点云的数据,得到非常精确的3DBB。

基于视锥的3D物体检测,有两个挑战:

1、前景的遮挡和后景的干扰,基于层级的方法在这都会败下阵来

2、点的范围很大,很难用3D cnn 网格化栅格化。

解决方案用pointnets来解决这个问题,(基于3D点云数据的方法):

1、利用一个2Ddection 将物体检测出来,根据照相机的投影角度参数,可以把2D box 变换到 3d 视锥的范围,在视锥内搜索车在哪里(Frustum Proposal )。

2、理论上可以直接在视锥内找3D的BOX,但是由于前景的干扰和后景的干扰,希望把关键点拿出来,不要受到干扰点的影响,所以后面会接一个3D pointnet的分割网络。

3、分割出来以后呢,再用一个精确的网络估计物体的3D bb,位置,大小 ,姿态。

 在汽车 小物体(行人 自行车)优势更大。因为2D的分辨率很高,小物体有优势

为什么有这么优异的结果呢?有两方面原因:

1 , 2D的分辨率非常高,比较容易把2D区域propasal出来。

2 ,选择了3D 分割方法,相比mask-rcn 。将2d mask的depth point 拿出来发现分割效果非常差,原因是:在图片中很近,但是在3d中很远的 。

  3 对输入做归一化,因为对点云的归一化,可以简化学习问题,比如:

a:俯视图,汽车的位置视锥的范围x 很大。

b:归一化之后,可以旋转坐标系,旋转z轴,把z指向视锥的中心方向,简化了x的分布和学习问题。

c:进一步,在深度上,z上有很大的分布,我们基于3D物体分割可以找到分割后的中心,物体的点集中在原点附近,进一步简化。

d:可以通过一个网络,去估计物体真实的中心,分割和物体中心可能不一样,在最后绿色坐标系进行bb估计。

总结

总结:

两个网络,对输入顺序的置换不变性,轻量级的结构,对数据的丢失非常鲁棒,提供了一个统一的框架为不同的任务服务。具体在3d场景理解中,3d物体识别的应用

  AI不仅仅在场景理解中有用,产品设计,图片集合中 图片之间的关系。

FAQ:

  1. PointNet没考虑点与点之间的关系,在PointNet ++ 中有考虑。
  2. 数据集,部件分割shapenet part 场景 s-3d-s scan-net
  3. 如果仅仅使用雷达,做3D物体检测,有没有可能进行拓展?

  简单的拓展是在雷达中进行propal , 就不是一个视锥的propal了把雷达投影到地面变成一个鸟瞰图,在里面进行区域的pp,在pp里在用Pointnet 估计3DBBx,这还是基于投影的方法。能否直接在3D中做PP呢?苹果voxelnet 利用了pointnet 和3D cnn 直接在雷达数据中进行PP 和 dection

4. 点的数量的评价?

 输入点数量是可变吗?训练的时候是固定的,测试时候是可变的。如果是单个图片的话,是可变的。多个其实也是可以的。只需要强行pad到一样的数目即可

5. 未来发展趋势?

 2D和3D结合,传感器的分辨率不高,3D几何信息丰富,更好的结合。

6. 激光雷达 近密远疏 ,该怎么处理呢?

  pointnet ++ 中有些结构 能处理这些不均匀采样率的问题,进一步 可以加W 来调节点云的分布github 上都有数据集下载 可以 Frustum pointnet

7. pointnet ++ 如何用到实例分割?

 其实frustum pointnet 就是一种实例分割,实例分割在3D中是一个先做的问题,先有实例分割,后又物体检测。

8 . pointnet ++ 因为需要对局部特征做处理对GPU有要求

 可以解决,可以专门写cuda layer 减少gpu的使用率。1024 batch32 6G内存。

9 frustum point 2d检测是gt还是检测结果:

  gt ,进行了扰动,2个好处:1、简单 2、可以和 2 d dector 有个分离,可以随时换2d dector,而不用重新训练后面的网络。

9 测试注意?

  测试方向旋转 然后平均,数据增强,随机drop 一些点,鲁棒性更好。

10 有没有可能直接用PN++ 直接对点云数据做检测?

  voxelnet 是解决类似的问题

11 voxelnet 只对点云数据训练做到kitti第一?

  只在车上,因为车相对比较大,只用点云应该够用,行人和自行车比较困难。

12 法向量的作用?

  如果仔细看的话,物体基于Mutil-view还是最领先的,分辨率高,键盘的建, 但是在点云上看和平板没区别。 在mesh上提取法向量,就能把平板和键盘区别开。

13 猫和马非欧空间是怎么处理的?

  先算测地距离,降为到3d,用3d的欧式距离模拟测地距离

14 Tnet 可以用姿态gt 监督其训练

15 point ++ 结果不太问题,modelnet data size限制的,split test,鼓励在test 时进行多次旋转以后平均结果。

16 人脸点云很有潜力

17 3D行人检测有意义吗?

 图片暗的时候,可以预防交通事故

18 pointnet ++ 中 release 版本没有+T-net

  在model-net分类上Tnet帮助不大,因为PN++ 已经学了局部特征,局部特征其实对旋转不太敏感,已经可以取得比较好效果

19 PN++ 有对局部点云变换的不变性吗?

  局部加T-net 是不太合理的,并不能保证不同局部的变换是统一的。

20 法国数据集是室外的。可以试试metapoint3D的数据集

21 RGB 相对于点云是锦上添花的作用。

22 为什么用FPS降采样?希望达到一个均匀采样的效果,尽可能采远处的点,也可以随机的采样

23 point++ 提供了多卡的

24 frustum 在2d检测不准的时候影响截断最终的结果吗?

  会,但是有能力复原。但是2d的部分非常不好,会限制3D部分

25 GCNN 和 pointnet ++ 有很多相通的地方,在点云上的应用?

 都是在3D空间中寻找局部,然后再局部定义某种操作,形成多级的网络架构pointnet ++ 不仅适用于2d和3d ,还适用于非常高维的空间。

文章转载自https://www.cnblogs.com/Libo-Master/p/9759130.html。

目前微信交流群不断壮大,由于人数太多,目前有两个群,为了鼓励大家分享,我们希望大家能在学习的同时积极分享,将您的问题或者小总结投稿发到群主邮箱主邮箱dianyunpcl@163.com。

以上内容如有错误或者需要补充的,请留言!同时欢迎大家关注微信公众号,积极分享投稿,或者加入3D视觉微信群或QQ交流群。

原创不易,转载请联系群主,注明出处

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 点云PCL 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档