Py学习  »  机器学习算法

【泡泡点云时空】PVCNN:用于高效3D深度学习的点-体素卷积神经网络

泡泡机器人SLAM • 4 年前 • 480 次点击  

泡泡点云时空,带你精读点云领域顶级会议文章

标题:Point-Voxel CNN for Efficient 3D Deep Learning

作者:Zhijian Liu, Haotian Tang, Rui Zhu, Yujun Lin, Song Han

来源:NIPS 2019

编译:陆煜衡

审核:郑森华

欢迎个人转发朋友圈;其他机构或自媒体如需转载,后台留言申请授权

摘要

本文提出了Point-Voxel CNN(PVCNN),可进行高效,快速的3D深度学习。先前的工作使用基于体素或基于点的神经网络模型处理3D数据。但是,这两种方法在计算上都不够高效。基于体素的模型的计算成本和内存占用量随输入分辨率的增加而呈立方增长,从而使其无法扩展分辨率。对于基于点的网络,最多有80%的时间被浪费在构造内存局部性很差的稀疏数据,而不是实际的特征提取上。在本文中,我们提出了PVCNN,它以点表示作为3D输入数据,以减少内存消耗,同时在体素中进行卷积以减少不规则,稀疏数据访问并提高局部性。本文提出地PVCNN在内存消耗及计算速度方面都是高效的。我们在对语义分割和部件分割数据集上对PVCNN进行了评估,PVCNN性能比基于体素的基准高,且GPU内存减少到10%,同时,相比于基于点的方法,PVCNN实现了平均7倍的运算加速。值得注意的是,精简版的PVCNN在零件和场景分割基准上的精度比PointNet(极其高效的模型)高,且平均速度提升了2倍。我们在3D对象检测任务上验证了PVCNN通用有效性:通过用PVConv替换Frustrum PointNet中的卷积操作,其mAP超过Frustrum PointNet ++ 2.4%,实测速度提高了1.5倍,且GPU内存减少了。

主要贡献

1、 提出一种在计算效率与内存利用率都更高效的3D深度学习框架。

2、 在点云语义分割与部件分割数据集上验证了本文方法的高效性。

方法

基于体素的特征聚合

卷积的核心是聚集邻近信息以提取局部特征。基于体素的规则性,我们选择在体素中执行特诊聚合。

规范化:不同点云的尺度可能大不相同,因此,在将点云转换为体素之前,我们对坐标{pk}进行归一化。首先,我们将所有点转换为以重心为原点的局部坐标系。之后,通过将所有坐标除以max||pk||2,将点归一化为单位球体,然后缩放并将点转换为[0,1]。注意,点特征{fk}在规范化过程中保持不变。我们将归一化坐标表示为{ˆpk}。

体素化:我们将规范化的点云转换为体素坐标,转换公式如式2所示:

式中r代表体素分辨率,II[.]是坐标ˆ pk是否属于体素网格(u,v,w)的二进制指示符,fk,c表示与ˆ pk对应的第c个通道特征,Nuvw是归一化因子(即落在那个体素网格上的点数)。

特征聚合:将点转换为体素网格后,我们应用3D体素卷积来聚合特征。类似于常规3D胶卷机,我们在每个3D卷积后加上批归一化[和非线性激活函数。

反体素化:由于我们需要将信息与基于点的特征转换分支融合在一起,因此我们将基于体素的特征转换回点云域。体素到点映射的直接实现是最近邻插值(即,将体素的特征分配给所有在体素内的点)。但是,这将使相同体素网格中的点始终共享相同的特征。因此,我们改为利用三次线性插值的方法,以确保映射到每个点的特征是不同的。由于我们的体素化和去体素化都是可导的,因此,可以用端到端的方式优化整个基于体素的特征聚合网络。

基于点的特征变换

基于体素的特征聚合分支以粗粒度融合邻域信息。但是,为了建模细粒度的单个点特征,仅基于低分辨率体素的方法可能还不够。为此,我们直接在每个点上进行操作,用MLP提取单个点的特征。尽管方法简单,MLP输出的每个点都有明显的区别性特征。这种高分辨率的单点信息对于补充基于粗体素的信息非常关键。

实验

部件分割实验:

表1

如表1所示,我们的PVCNN优于所有以前的模型。与PointNet ++相比,PVCNN直接将其骨干(PointNet)的准确性提高了2.5%,而开销却更小。我们还通过减少到25%(表示为0.25×C)和50%(表示为0.5×C)的通道数来设计PVCNN的缩小版本。生成的模型仅需要PointNet的53.5%的延迟,并且它仍然优于具有复杂邻域聚合的几种基于点的方法,包括RSNet,PointNet ++和DGCNN。

室内场景分割实验:

表4

如表4所示,PVCNN可以将以PointNet为骨干网的性能提高13%以上,并且在准确性和延迟性方面也大大优于DGCNN(涉及复杂的图形卷积)。值得注意的是,我们的PVCNN ++性能优于最新的基于点的模型(PointCNN)1.7%,延迟降低了4倍,优于,基于体素的模型(3D-UNet)4%,延迟降低了8倍,并降低了GPU内存消耗。

3D物体检测:

表5

在表5中,尽管我们的模型在边界框的的预测中没有没有聚合领域特征,但在大部分类别的性能中仍然优于F-PointNet++,且速度提升了1.8倍。通过使用PVConv改善边界框预测网络,我们的完整模型在所有类别上性能均明显由于基线。与F-PointNet基线相比,我们的PVCNN在行人类别中mAP提高了8%,而骑自行车者类别中的mAP提高了3.5-6.8%,这表明我们提出的PVCNN既高效又富有表现力。

结论

我们提出了Point-Voxel CNN(PVCNN)进行快速,高效的3D深度学习。针对基于体素和点的深度学习方法,我们择优取之,减少了内存占用和不规则的内存访问。我们用稀疏,不规则点来高效的表示3D输入数据,并在正则,规范地体素表示中进行高效的卷积。在多项任务上的大量实验一致地证明了我们提出的方法的有效性和高效性。我们相信,我们的研究将打破基于体素的卷积低效的刻板印象,并为设计基于体素和点的网络结提供了启示。


Abstract

We present Point-Voxel CNN (PVCNN) for efficient, fast 3D deep learning. Previous work processes 3D data using either voxel-based or point-based NN models. However, both approaches are computationally inefficient. The computation cost and memory footprints of the voxel-based models grow cubically with the input resolution, making it memory-prohibitive to scale up the resolution. As for point-based networks, up to 80% of the time is wasted on structuring the sparse data which have rather poor memory locality, not on the actual feature extraction. In this paper, we propose PVCNN that represents the 3D input data in points to reduce the memory consumption, while performing the convolutions in voxels to reduce the irregular, sparse data access and improve the locality. Our PVCNN model is both memory and computation efficient. Evaluated on semantic and part segmentation datasets, it achieves much higher accuracy than the voxel-based baseline with 10× GPU memory reduction; it also outperforms the state-of-the-art point-based models with 7× measured speedup on average. Remarkably, the narrower version of PVCNN achieves 2× speedup over PointNet (an extremely efficient model) on part and scene segmentation benchmarks with much higher accuracy. We validate the general effectiveness of PVCNN on 3D object detection: by replacing the primitives in Frustrum PointNet with PVConv, it outperforms Frustrum PointNet++ by 2.4% mAP on average with 1.5× measured speedup and GPU memory reduction.

如果你对本文感兴趣,想要下载完整文章进行阅读,可以关注【泡泡机器人SLAM】公众号。


欢迎来到泡泡论坛,这里有大牛为你解答关于SLAM的任何疑惑。

有想问的问题,或者想刷帖回答问题,泡泡论坛欢迎你!

泡泡网站:www.paopaorobot.org

泡泡论坛:http://paopaorobot.org/bbs/


泡泡机器人SLAM的原创内容均由泡泡机器人的成员花费大量心血制作而成,希望大家珍惜我们的劳动成果,转载请务必注明出自【泡泡机器人SLAM】微信公众号,否则侵权必究!同时,我们也欢迎各位转载到自己的朋友圈,让更多的人能进入到SLAM这个领域中,让我们共同为推进中国的SLAM事业而努力!

泡泡机器人SLAM的原创内容均由泡泡机器人的成员花费大量心血制作而成,希望大家珍惜我们的劳动成果,转载请务必注明出自【泡泡机器人SLAM】微信公众号,否则侵权必究!同时,我们也欢迎各位转载到自己的朋友圈,让更多的人能进入到SLAM这个领域中,让我们共同为推进中国的SLAM事业而努力!


商业合作及转载请联系liufuqiang_robot@hotmail.com

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56859
 
480 次点击