点云的无序性_NeurIPS2019 麻省理工与上海交大共同提出新型点云深度学习框架PointVoxel CNN...

 

801023d33684eadda6a6f114813426f0.png

论文: ’Point-Voxel CNN for Efficient 3D Deep Learning’ 来源: NeurIPS2019 Spotlight 共同一作: Zhijian Liu (MIT), Haotian Tang(上海交大) 代码: https://github.com/mit-han-lab/pvcnn 项目: https://hanlab.mit.edu/projects/pvcnn/

3D深度学习广泛的应用到多个领域,如AR/VR和自动驾驶等,因此受到了越来越多的关注。在这些应用中往往需要很高的实时性。然而,终端设备(如手机和VR头戴设备)受到硬件资源和电池的严格限制。因此,设计高效、快速的三维深度学习模型是非常重要的。这篇文章巧妙地将voxel-based方法和point-based方法结合,新框架同时具备了两种方法的优点。

  • 已有方法的缺陷分析

论文对已有方法 的缺陷 进行了细致地 分析,这是文章重要的一部分。论文的分析很透彻,给笔者留下了很深的印象。 对于 voxel-based 类方法的缺陷,论文指出:这类方法难以平衡分辨率和内存的关系。当体素尺寸较大时,分辨率低,大量点云占据同一个体素,没办法很好地区分。然而,当减小体素尺寸, 提高 分辨率时,内存占用则会成三次方增加。其实 voxel-based类方法的这个缺陷学界基本已经产生了共识,因此这部分此处就不再赘述了。 接着,文章对 point-based 方法的缺点也进行了分析。学界对于point-based方法的缺点还鲜有报道,这也是本篇论文比较新颖的地方之一。作者指出,这类方法的内存访问的无序性(Irregular access)和动态核开销(Dynamic Kernel)会占用大量时间。因为point-based方法直接对无序点云进行操作,以PointNet, PointCNN为代表的这类方法需要对点云进行邻域查询,因此会产生大量的随机内存访问(Irregular access),这部分会占用大量运行时间。 与此同时,point-based方法还存在动态卷积核的问题。由于点云散落分布在三维空间中,不同于voxel-based类方法中数据那样规整,因此需要动态地确定卷积核,这就是动态核开销(Dynamic Kernel)。 为了更有说服性,作者对几类典型的point-based方法的内存访问(Irregular access)和动态核开销(Dynamic Kernel)时间进行了统计。如图所示是作者对于DGCNN, PointCNN, SpiderCNN的时间消耗进行的计算。左边两个方框内的时间是无效时间,可以看出上述三种point-based方法有大量的无效时间。而右边的Actual computation是实际运算时间,可以看出作者提出的网络时间效率具有压倒性的优势。

ed82577453b7e563bd969197d4ae42e1.png

  • 提出PVConv

分析完voxel-based方法和point-based方法的缺陷之后,作者开始提出自己设计的网络架构Point-Voxel Convolution(PVConv)。   115d5440f07ccc43f18f1f866e5e9e85.png 如图所示,PVConv由两路分支构成。一个支路用来进行基于体素的特征聚合,用来进行粗粒度的邻域特征提取;另一个支路用MLP对点云直接进行特征转换,是一种细粒度的逐点特征提取;最后两种特征会进行融合。 在上面的支路中, 首先 对点云进行归一化; 然后 进行体素划分,这里使用的体素率较低,不至于带来太多消耗。 接着 将体素送入到堆叠的 3D卷积层中进行特征升维,此时学到的是每个体素的高维特征。 然后 对数据进行解体素,将体素的特征转化到每个点上去。 这里的操作很容易让人想到PointNet++中的Grouping-MLP-Interpolate的结构。但是作者很巧妙地用Voxelize代替了Grouping,从而避免了前文提到的随机内存访问(Irregular access)的时间消耗。而此处的Devoxelize也没有直接采用pointnet++中的最近邻interpolate操作,而是用了trilinear interpolation,使得不同点对应不同的特征。 如果把上面支路提取的信息作为邻域特征,那么下方的支路则用来提取每个点的局部特征,直接采用MLP对每个点进行特征提取。两种信息的融合,能够获得更为丰富的特征信息。
  • 实验结果

文章进行了丰富而详细的实验,包括了部件分割、语义分割和目标检测三种任务。作者不仅关心实验效果而且重点分析 GPU的内存消耗。与主流点云深度学习框架(PointNet, PointCNN, F-PointNet等)进行了比较,效果很好。部分实验结果如下: 0abe621d75b4dad5fce9d5d474010586.png 语义分割任务,可以说是,利用更少的内存消耗,获得了更好的实验效果。 587bd18122499181a1b69be599c2ebfd.png 目标检测,性能和内存消耗方面,基本上都超过了F-PointNet++。
  • 总结

这篇论文提出了Point-VoxelCNN (PVCNN),将点云处理领域的两种方法进行了结合,想法简单巧妙,而且文章对两种方法都进行了缺点的分析,特别是对于point-based类方法的分析,让人印象深刻。此外,文章中对于内存占用的分析计算的思路也值得借鉴,在改进其他网络的过程中,是否也考虑下这个层面呢,没准会给网络性能找到新的突破口。
  相关文章 点云深度网络——PointNet PointNet++文章及代码 PointCNN原理+代码讲解 【点云一分钟】SO-Net:用于点云分析的自组织网络

点击“阅读原文”下载论文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值