《三维深度学习中的point voxel cnn》笔记

设计高效的神经网络模型需要将硬件也考虑进来。一方面,一次内存的读取操作比一次算术运算慢接近20倍,另一方面随机访问比顺序访问慢许多,一个高效的网络则应避免内存读取以及随机访问。

在这里插入图片描述

传统的方法会将输入的点云栅格化,将其转化成三维的格点,这个可以看成是二维像素的自然扩展,三维格点的每一个位置都是0或者1,代表这个位置是否被占用。转化后模型的设计可以通过堆叠三维卷积来设计,抽取输入点云的特征。但是这种基于三维格点的模型很难处理高分辨率的数据,因为分辨率与计算的开销呈三次方关系;也不能处理很低的分辨率,否则丢失的信息会很多。

在这里插入图片描述

为了解决基于格点模型的问题,有不少研究选择直接处理三维点云,如pointnet,pointCNN,DGCNN这样可以减少很多内存的开销。由于点云这种数据的不规则性,如何使用卷积成为一个困难的问题。一般来说先对每一个点查找周围最近几个邻近点,然后在这些临近点上使用卷积。但是它们在内存上不一定是连续存放的。比如第一个点的临近点有可能是中间的某一个点,也有可能是最后的两个点,所以如果要找到每一个点的临近点,我们要很大的内存开销以及要增多随机访问的次数。另外因为临近点相对中心点的坐标也不是固定的,所以我们需要根据每个临近点的相对坐标来动态生成卷积核的权重,这样同样会带来不小的额外开销。发现主流的处理点云的模型有用80%左右的时间处理模型的不规则性而不是模型的计算

在这里插入图片描述

设计了pvconv结构,具有两个模块,将一个物体的整体结构和细节用两个模块来捕捉,这样两个部分都可以更加有效。整合了基于点云和格点的优点,分别是较小的数据开销和较好的数据规整度。

在这里插入图片描述

我们先有一个点云的分支。在这个分支里我们对每一个单独的点进行独立的变换,因为不需要任何临近点的信息,这个分支可以被很高效地实现。我们可以将这个分支看为二维卷积神经网络里的1×1的卷积,它非常高效但是无法捕捉任何临近区域的信息,我们将这个部分留给旁边的格点分支。

在这里插入图片描述

在格点分支中,我们会将点云先转化为分辨率较低的格点,然后在这个上面使用三维卷积,后面在运算结束后我们会将格点转化回点云,和点云分支合并在一起。在这里我们之所以可以使用较低的分辨率,是因为我们在点云分支中保存了一份完整的点云,使用我们并不需要担心信息的丢失。由于这里的格点的像素较低,这个分支也可以变得非常高效。

在这里插入图片描述

可视化两个分支的所抽取的特征,暖色代表的权重更大,暖色代表的权重更小,基于格点分支会去捕捉物体的较大的连续的部分,而基于点云的分支会去捕捉物体较为细节的部分

在这里插入图片描述

下图是pvcnn方法的实际计算效果,附pvcnn在github的链接: https://github.com/mit-han-lab/pvcnn
.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

发布了5 篇原创文章 · 获赞 0 · 访问量 271
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览