如何理解基于深度学习的点云补全算法 - PF-Net (Point Fractal Network for 3D Point Cloud Completion) ?

CV_6 PF-Net 算法解析


一. 引言

 了解激光雷达- LiDAR 特性的同学们都知道,LiDAR有一个致命的缺陷,那就是随着被检测物体的距离越来越远,根据LiDAR获取的点云的密度将会变得越来越稀疏,我们通常把它称之为“ 近密远疏 ”特性。为了解决这一问题,换句话说就是对稀疏点云进行补足,衍生出来很多种办法,比如将图像中的二维特征点进行三维转换等等。当然,自然也跑不了深度学习这个万金油。本文就将对这些算法中,个人认为比较有效的算法:PF-Net 算法进行简单的分析。

二. PF-Net 算法的核心思想

  1. 补足点云的生成过程就像是盖一栋楼,先去搭建楼的 “ 骨骼 ”,再去填补楼的 “ 肉 ”,最后再加上楼的 “ 皮 ”。
  2. 在训练数据的生成方面也遵循了 “ 最远点采样法 ”
  3. 整个网络模仿GAN(对抗生成网络)的思想,把缺胳膊少腿的点云数据作为输入,输出的则是根据输入所生成的补全点云。但生成的点云本质上是 “ 假 ”的,因此,再把这些生成的点云放到一个判别器中,最终来判断补全的结果是True还是False。

三. 整体网络架构

如何理解基于深度学习的点云补全算法 - PF-Net (Point Fractal Network for 3D Point Cloud Completion) ?_第1张图片
如上图所示,红色的部分就是所谓的补足点云生成器,蓝色部分就是将生成点云与实际点云进行对比的判别器。

1. 生成器部分:

(1) 训练点云的构建

 首先先讲述一下深度学习图像处理算法中的一个思想:FPN(多尺度特征融合)。所谓的FPN其实就是通过不断改变图像的分辨率(size)然后多次进行特征的提取,之后再将这些提取的特征进行拼接,从而使得图像的特征提取结果既有全局信息又有局部信息的感觉,从而让特征也变得更加丰富了一些。(原因就是不同尺度的相同的图像所得到的特征它可能是不同的)。如下图所示:
如何理解基于深度学习的点云补全算法 - PF-Net (Point Fractal Network for 3D Point Cloud Completion) ?_第2张图片
 但是对于图像来说,其本身就是有heightwidth的,对其进行resize是比较方便的,但是对于点云数据来说,是没有实际意义上的宽、高这样的属性的。那该怎么去描述一个点云的size呢?其实很简单,那就是点云内所包含的点的个数,换句话说就是如果说一个点云比较大(稠密),那其实就是这个点云内包含更多的点,如果说一个点云比较小(稀疏),那其实就是这个点云内包含的点比较少;那图像中的所谓的FPN思想好像就可以被迁移过来使用了。
 那么具体怎么去改变一个点云的稀疏程度呢?让我们回想一下PointNet++算法中的点云提取方法 - 最远点采样法。是不是就有那味了!换句话说,就是把选圆心的那一套搬过来,从而就能在一个基础点云中提取出不同数量的点云结果。从而也就能在点云上实现所谓的多尺度特征提取了。

(2)点云特征的提取

 在改变了点云的size之后,就该进行特征的提取了。在这个部分PF-Net借鉴了采用了PointNet算法特征的精髓,并还在这基础上做了提升。PointNet算法在特征提取的时候,为了让特征变得更加丰富,实际上是采用了MLP的方法,其实就是对点云的特征进行不断的生维操作,最后得到一个极为复杂的特征结果,之后在执行了一个MaxPool操作,把这个复杂的结果变成一个简单的特征向量。但这个结果貌似仅仅是为了考虑全局特征,而在一定程度上忽略了局部特征的感觉。为此,PF-Net对每一次特征升维的结果都进行了一次MaxPool操作,之后再把各个层的MaxPool结果拼接起来,成为最后的特征提取结果。作者们给这个过程起了个名字 - CMLP。如下图所示:如何理解基于深度学习的点云补全算法 - PF-Net (Point Fractal Network for 3D Point Cloud Completion) ?_第3张图片
 在这之后,就把相同点云、不同密度的特征提取结果再拼接起来,之后再做一个MLP操作以及卷积操作,从而得出最终的特征提取结果。

(3)补足点云的生成

 在获取完特征提取的结果之后,就进入到了补足点云的生成阶段,在这个阶段,首先对得到的特征提取结果逐次过了两个全连接层,其中最深的FC3被用来生成补足点云的骨架,之后在把FC3和FC2加起来生成补足点云的肉,再之后把FC3、FC2、FC1三者加起来生成补足点云的皮。
 整体的生成器部分标注如下图所示:
如何理解基于深度学习的点云补全算法 - PF-Net (Point Fractal Network for 3D Point Cloud Completion) ?_第4张图片
 

2. 判别器部分

 在获取了完整、稠密的点云补全结果之后,就把该结果与实际真实的点云结果进行比较,从而最终返回一个True OR False 的布尔值,来判别生成的补全点云的准确性。那么这个比较又是怎么进行的呢?在PF-Net的网络模型图中,这个比较被缩写为了CD,这个CD其实在点云补全领域经常被提到,它的公式如下所示:
如何理解基于深度学习的点云补全算法 - PF-Net (Point Fractal Network for 3D Point Cloud Completion) ?_第5张图片
 这个公式由两个部分组成,分别是预测点云中的每一个点与真实点云中离它最近点的距离的和的平均值;以及真实点云中的每一个点与预测点云中离它最近点的距离的和的平均值。对于使用这个公式获得的结果(也就是预测点云与真实点云的差距)肯定是越小越好。
 而且,由于PF-Net网络的本质其实就是一个GAN(对抗生成网络),因此它还遵循GAN本身的损失函数:
如何理解基于深度学习的点云补全算法 - PF-Net (Point Fractal Network for 3D Point Cloud Completion) ?_第6张图片

以上便是对整个PF-Net网路的简单解析

 

四. 补全效果展示及论文分享

如何理解基于深度学习的点云补全算法 - PF-Net (Point Fractal Network for 3D Point Cloud Completion) ?_第7张图片
如上图可见,相比于其他基于深度学习的点云补全算法,PF-Net算法的补全效果还是不错的。
PF-Net 论文链接:PF-Net: Point Fractal Network for 3D Point Cloud Completion


如有问题,敬请指正。欢迎转载,但请注明出处。

你可能感兴趣的:(计算机视觉CV,算法,深度学习,LiDAR,计算机视觉,人工智能)