NeurIPS 2019 | 麻省理工与上海交大共同提出新型点云处理框架Point-Voxel CNN

论文: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是实际运算时间,可以看出作者提出的网络时间效率具有压倒性的优势。

 

NeurIPS 2019 | 麻省理工与上海交大共同提出新型点云处理框架Point-Voxel CNN

 

  • 提出PVConv

分析完voxel-based方法和point-based方法的缺陷之后,作者开始提出自己设计的网络架构Point-Voxel Convolution(PVConv)。

 NeurIPS 2019 | 麻省理工与上海交大共同提出新型点云处理框架Point-Voxel CNN

 

如图所示,PVConv由两路分支构成。一个支路用来进行基于体素的特征聚合,用来进行粗粒度的邻域特征提取;另一个支路用MLP对点云直接进行特征转换,是一种细粒度的逐点特征提取;最后两种特征会进行融合。

 

在上面的支路中,首先对点云进行归一化;然后进行体素划分,这里使用的体素率较低,不至于带来太多消耗。接着将体素送入到堆叠的3D卷积层中进行特征升维,此时学到的是每个体素的高维特征。然后对数据进行解体素,将体素的特征转化到每个点上去。

 

这里的操作很容易让人想到PointNet++中的Grouping-MLP-Interpolate的结构。但是作者很巧妙地用Voxelize代替了Grouping,从而避免了前文提到的随机内存访问(Irregular access)的时间消耗。而此处的Devoxelize也没有直接采用pointnet++中的最近邻interpolate操作,而是用了trilinear interpolation,使得不同点对应不同的特征。

 

如果把上面支路提取的信息作为邻域特征,那么下方的支路则用来提取每个点的局部特征,直接采用MLP对每个点进行特征提取。两种信息的融合,能够获得更为丰富的特征信息。

 

  • 实验结果

文章进行了丰富而详细的实验,包括了部件分割、语义分割和目标检测三种任务。作者不仅关心实验效果而且重点分析GPU的内存消耗。与主流点云深度学习框架(PointNet, PointCNN, F-PointNet等)进行了比较,效果很好。部分实验结果如下:

NeurIPS 2019 | 麻省理工与上海交大共同提出新型点云处理框架Point-Voxel CNN

语义分割任务,可以说是,利用更少的内存消耗,获得了更好的实验效果。

 

NeurIPS 2019 | 麻省理工与上海交大共同提出新型点云处理框架Point-Voxel CNN

目标检测,性能和内存消耗方面,基本上都超过了F-PointNet++。

 

  • 总结

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

欢迎关注公众号:3D点云深度学习

NeurIPS 2019 | 麻省理工与上海交大共同提出新型点云处理框架Point-Voxel CNN


 相关文章

点云深度网络——PointNet

PointNet++文章及代码

PointCNN原理+代码讲解

【点云一分钟】SO-Net:用于点云分析的自组织网络