首页 > 其他分享 >upsampling

upsampling

时间:2022-11-21 00:34:04浏览次数:65  
标签:采样 特征 网络 点集 upsampling 点云 我们

PU-Net: Point Cloud Upsampling Network, 2019

Lequan Yu, Xianzhi Li, Chi-Wing Fu, Daniel Cohen-Or, Pheng-Ann Heng; Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2018, pp. 2790-2799

代码:https://github.com/yulequan/PU-Net

image-20221117220218829

abs

  • 问题:由于数据的稀疏性和不规则性,用深度网络学习和分析三维点云具有挑战性。
  • 贡献:在本文中,我们提出了一种数据驱动的点云上采样技术。
  • 主要方法:用NN丰富点特征->从特征扩展新的点->再传播特征到新的点上

该方法的核心思想是在每个点上学习多层特征,并通过特征空间中的多分支卷积单元 multi-branch convolution unit 隐式地扩展点集。然后将扩展的特征拆分为大量的特征,这些特征然后被重构为一个上采样点集。

  • 细节:我们的网络应用于补丁级别 patch-level,具有联合损失函数——损失函数鼓励上采样得到的点保持在underlying surface,并服从均匀分布。
  • 实验:我们使用合成的和扫描的(也就是真实的)数据进行了各种实验,以评估我们的方法,并证明其优于一些基线方法和基于优化的方法。结果表明,我们的上采样点具有较好的均匀性,且靠近underlying surface。

问题:baseline和基于优化的方法都有些什么?

背景:2019年,Pointnet和pointnet++是2017年的工作,这些工作用深度网络直接从原始的三维点坐标中提取特征,而不使用如法线和曲率等传统的、需要人工写函数计算的特征。这些工作在三维目标分类和语义场景分割方面取得了良好的效果。

本文关注上采样问题,文字表述为:

给定一组点,通过学习训练数据集的几何结构,生成一个更密集的点集来描述底层几何结构。
文字表述类似2D图像上的超分辨率问题 image super-resolution problem。

挑战:

  1. 点云具有无规则、无序的特点
  2. 生成的点存在一个真实分布:生成的点应该描述潜在目标对象的底层几何结构,这意味着它们应该大致位于目标对象表面上
  3. 生成的点应该是有信息的,不应该杂乱在一起。

话虽如此,生成的输出点集在目标物体表面上应该更加均匀。因此,输入点之间的简单插值不能得到满意的结果。

因此本文提出一种应用于补丁级别的网络,具有联合损失函数,鼓励上采样点以均匀分布保留在底层曲面。该方法的核心思想是每个点学习多层特征,然后在特征空间中隐式地通过一个多分支卷积单元扩展点集。然后将扩展的特征拆分为大量的特征,这些特征然后被重构为一个上采样点集。

网络称为PU-Net,从三维模型中学习基于点的patch的几何语义,并将所学到的知识应用于给定的点云上采样。与之前针对3D点集设计的Pointnet之类的方法不同,这些方法在做点云分割的时候会上采样,从小的关键点集采回原本的完全点集。PU-Net输入和输出点的数量是不一样的。

两个定量指标:分布均匀性和距离底层曲面的偏差

相关工作

基于优化的方法 Alexa等人的一项早期工作。[2]通过在局部切空间中Voronoi图的顶点上插值点来对点集进行采样。Lipman等[24]提出了一种用于点重采样和曲面重建的局部最优投影(LOP)算子(基于L1中位数)。该算子即使在输入点集包含噪声和异常值时也能很好地工作。Huang等人[14]先后提出了一种改进的加权LOP来解决点集密度问题。

虽然这些工作已经证明了良好的结果,但他们强烈假设下垫面是光滑的,从而限制了方法的范围。然后,Huang等人[15]介绍了一种边缘感知点集重采样方法,首先从边缘重新采样,然后逐步接近边缘和角。然而,他们的结果的质量在很大程度上依赖于在给定点的法线的准确性和仔细的参数调优。值得一提的是,Wu等人[35]提出了一种深度点表示方法,将合并和补全(consolidation and completion)融合在一个连续步中。由于该方法的主要重点是填充大孔洞,但没有强制执行全局平滑性,因此该方法对大噪声敏感。总的来说,上述方法不是数据驱动的,因此严重依赖先验。

基于深度学习的方法。点云中的点没有任何特定的顺序,也没有遵循任何规则的网格结构,因此最近只有少数作品采用深度学习模型直接处理点云。现有的大多数工作将点云转换为其他一些3D表示形式,如体素网格和几何图形进行处理. Guerrero et al.[10]开发了一个网络来估计点云的局部形状属性,包括法线和曲率。其他相关网络则专注于从2D图像进行3D重建[8,23,9]。据我们所知,目前还没有专注于点云上采样的工作。

3D reconstruction from 2D image

  • A point set generation network for 3D object reconstruction from a single image. In IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), 2017
  • T. Groueix, M. Fisher, V. G. Kim, B. C. Russell, and M. Aubry. AtlasNet: A papier-mach ˆ e approach to learning ´ 3D surface generation. In IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), 2018
  • C.-H. Lin, C. Kong, and S. Lucey. Learning efficient point cloud generation for dense 3D object reconstruction. In AAAI Conf. on Artificial Intell. (AAAI), 2017

KD-tree:2017 Escape from Cells: Deep Kd-Networks for the Recognition of 3D Point Cloud Models ICCV

分类任务,提出一种KD树形结构的网络,需要将输入点云转换为Kd -tree结构。对于变换不够鲁棒

网络体系结构

图1。PU-Net的架构(用颜色看更好)。输入有N个点,而输出有rN个点,其中r是上采样率。Ci, C和C表示特征通道号。我们对原始的N个点进行插值恢复不同的层次特征,并通过卷积将所有层次特征减少到一个固定的维数C。点特征嵌入分量中的红色表示分层特征学习中原始的、逐步采样的点,绿色表示恢复后的特征。在PU-Net的端到端训练中,我们联合采用重构损失和排斥损失。

image-20221118103841030

主要流程:

给定一个点坐标分布不均匀的三维点云,我们的网络旨在输出一个密度更大的点云,它遵循目标物体的下垫面,同时分布均匀。我们的网络架构(如图1所示)由四个部分组成:斑块提取、点特征嵌入、特征展开和坐标重构。首先,我们从一组给定的先验3D模型(第2.1节)中提取不同尺度和分布的点的补丁。然后,点特征嵌入组件通过分层特征学习和多级特征聚合将原始3D坐标映射到特征空间(第2.2节)。之后,我们使用特征扩展组件(第2.3节)扩展特征数量,并通过坐标重建组件中的一系列完全连接层(第2.4节)重建输出点云的3D坐标.

2.1. 补丁提取

“patch”是在表面随机采样+生成得到的;采样指:输入N个点的点云,从中采样M个点,生成是指:在这M个点的d-邻域内使用 Possion disk sampling 方法随机生成 \(\hat N\)个点。选定不同的d,因此得到的M个patch的大小和密度不同

我们收集一组3D对象作为训练的先验信息。这些物体覆盖了各种各样的形状,从光滑表面到突变的边缘和转角。本质上,为了让我们的网络对点云进行上采样,它应该从对象中学习局部的几何模式。这促使我们采取基于补丁的方法来训练网络和学习几何语义。

具体来说,我们在这些物体的表面随机选择M个点。从每个选定的点开始,我们在物体上生成一个表面patch,这样贴片上的任何点与选定的点在表面上的一定测地线距离(d)内。然后,我们使用泊松盘采样Possion disk sampling 在每个patch上随机生成\(\hat N\)个点作为patch上的参考真实点分布。在我们的上采样任务中,局部上下文和全局上下文都有助于平滑和统一的输出。因此,我们设置了不同大小的d,这样我们可以在先前的物体上提取不同尺度和密度的点的patch。

2.2. 点特征嵌入

和PointNet++中所使用的方法相同。encoder包括下采样+特征学习,逐层减少关键点集的大小,丰富特征维度;decoder包括对每一次迭代得到的点云进行上采样+特征传播,恢复输入点集的大小,用1×1卷积对齐不同的特征维度。最后直接concat得到point-wise embedding。(这里使用的方法与Pointnet++的区别仅在于下采样使用的邻居个数更少,更关注局部信息)

为了从patch中学习局部和全局几何环境,我们考虑了以下两种特征学习策略,它们是优势互补的:

分层特征学习。逐步捕获层次结构中尺度不断增长的特征已被证明是提取局部和全局特征的有效策略。因此,我们采用pointnet++[30]中最近提出的分层特征学习机制作为我们网络的最前端部分。为了对点云上采样采用分层特征学习,我们专门在每个级别中使用相对较小的分组半径,因为生成新点通常比[30]中的高级识别任务涉及更多的本地上下文。

多层次特征聚合。网络中的较低层通常与较小尺度的局部特征相对应,反之亦然(较小尺度的局部特征对应于网络中的低层)。为了获得更好的上采样结果,我们应该在不同的层次上最优地聚合特征。已有的一些研究采用跳过连接进行级联多级特征聚合[25,32,30]。然而,我们通过实验发现,这种自顶向下的传播对于上采样问题中的特征聚合不是很有效。因此,我们建议将不同层次的特征直接组合起来,让网络了解每个层次的重要性[11,38,12]。

由于在分层特征提取中,每个patch上设置的输入点是逐步进行下采样的,因此我们通过pointnet++[30]中的interpolation method,首先从下采样的点特征中恢复所有原始点的特征,从而连接每一层的点特征。具体来说,在level l中插值点x的特征计算公式为:

image-20221120213257009

其中wi(x)=1/d(x, xi),这是一个inverse distance weight,xi,x2,x3是在level l中x最近的三个邻居。然后我们使用1x1卷积将不同级别的插值特征减少到相同的维数,即c,最后我们将每一级别的特征连接为嵌入点特征f。

2.3. 特征扩展

在点特征嵌入分量之后,我们在特征空间中扩展特征的数量。这相当于扩大点的数量,因为点和特征是可以互换的。设f的维数为N x \(\tilde C\), N为输入点的个数,\(\tilde C\)为连接的嵌入特征的特征维数。特征扩展操作将输出一个维度为 rN x $\tilde C\(2的特征f',其中r为上采样率,\)\tilde C$2为新的特征维度。

本质上,这类似于图像相关任务中的特征上采样,可以通过反卷积(转置卷积)或插值[7]来完成。然而,由于点的非规律性和无序性,将这些运算应用到点云上并非易事。因此,我们提出了一种基于sub-pixel convolution layer[33]的高效特征展开操作。该操作可以表示为:

image-20221120214904379

其中 \(C_i^1,C_i^2\)是两组不同的1x1卷积,RS表示reshape;这个“特征展开”就是用r组双层卷积,每一组将\(\tilde C_1\)的特征卷积为 \(\tilde C_2\) ,这样r组双层卷积得到 \(r\tilde C_2\)个特征;然后将\(N\times r \tilde C_2\)reshape为 \(rN\times \tilde C_2\),等价于上采样+特征扩展操作。我们强调嵌入空间中的特征已经通过高效的多层次特征聚合封装了邻近点的相对空间信息,因此在进行特征扩展操作时不需要显式地考虑空间信息

值得一提的是,每个集合中由第一个卷积C(.)生成的r个特征集具有较高的相关性,这将导致最终重构的3D点位置过于接近。因此,我们进一步为每个特征集添加另一个卷积(具有单独的权重)。由于我们训练网络学习r个特征集的r个不同卷积,这些新特征可以包含更多不同的信息,从而减少它们的相关性。这种特征扩展操作可以通过对r个特征集应用分离的卷积来实现;见图1。它也可以通过计算效率更高的分组卷积来实现[19,37,39]。

2.4. 坐标重建

在这一部分中,我们从扩展的特征中重建输出点的三维坐标,其大小为\(rN \times \tilde C2\)。具体地说,我们通过一系列的在每个点的特征上的 fully conn layer,最终输出为上采样点坐标 rN x 3。

3.端到端训练

数据生成训练

由于点云上采样的不确定性或模糊性,点云上采样是一个 ill-posed problem。对于稀疏的输入点云,有许多可行的输出点分布。因此,我们没有输入和基础真值的“正确对”的概念。为了缓解这个问题,我们提出了一个动态输入生成方案。具体来说,训练patch的参考地面真值点分布是固定的,而输入点则是从地面真值点集中随机采样,每个训练周期下采样率为r。直观地说,该方案相当于模拟给定稀疏的许多可行输出点分布。输入点分布。此外,该方案可以进一步扩大训练数据集,允许我们依赖一个相对较小的数据集进行训练。

个人理解:跟很多生成式网络一样,是对”分布“的拟合。而不是对指定输出的拟合(比如判别式的分类任务)

3.2. 联合损失函数

我们提出了一个新的联合损失函数,以端到端方式训练网络。正如我们前面提到的,函数应该鼓励生成的点以更均匀的分布位于底层对象表面上。因此,我们设计了一个结合了重构损失和排斥损失的联合损失函数。

重建的损失。为了在底层物体表面上放点,我们建议使用Earth Mover’s distance (EMD)[8]作为我们的重建损失,来评估预测点云\(S_p \in \R^3\) 和参考地面真相点云\(S_{gt} \in\R^3\)之间的相似性:

image-20221120231040463

实际上,倒角距离(Chamfer Distance, CD)是另一种用于评价两个点集之间相似性的方法。然而,与CD相比,EMD可以更好地捕捉形状(参见[8]了解更多细节),以鼓励输出点位于接近底层对象表面的位置。因此,我们选择在重建损耗中使用EMD。

排斥损失如下:image-20221120231943166

  • 其中 \(\hat N=rN\),\(K(i)\)表示k近邻;\(\eta(dis)=-dis, w(\cdot)\)是衰减系数
  • 最小化repulsion loss即令邻居中的点距离较远

最后的总损失主要包括两项:reconstructon loss 和 repulsion loss

image-20221120231718126

  • 最后一项表示 weight decay,参数的l2正则项

实验

数据集

由于点云上采样没有公共基准,我们从Visionair存储库[1]中收集了60个不同模型的数据集,范围从平滑的非刚性对象(如Bunny)到陡峭的刚性对象(如Chair)。其中,我们随机抽取40 models进行训练,其余用于测试。我们为每个训练对象裁剪100个补丁,用M=4000个补丁总计训练网络。对于测试对象,我们采用蒙特卡罗随机抽样方法对每个对象上的5000个点进行抽样作为输入。

为了进一步展示我们网络的泛化能力,我们直接在SHREC15[22]数据集上测试我们训练好的网络,该数据集包含来自50个类别的1200个形状。具体来说,我们从每个类别中随机选择一个模型进行测试,考虑到每个类别包含24个不同姿势的相似物体。至于ModelNet40[36]和ShapeNet[4],我们发现很难从这些对象中提取补丁,因为网格质量低(例如,存在洞和孔自交等)。因此,我们使用它们进行测试;有关结果,请参阅补充材料。

实现细节

每个补丁的默认点数N为4096,上采样率r为4。因此,每个输入补丁有1024个点。为了避免过拟合,我们通过随机旋转、移动和缩放数据来增加数据。我们在点特征嵌入分量中使用分组半径为0.05、0.1、0.2、0.3的4个层次,恢复后的特征维数C为64。关于其他网络架构参数的详细信息,请参阅我们的补充材料。斥力损失中的参数k和h分别设为5和0.03。设平衡权a为0.01,设平衡权B为10-5。实现基于TensorFlow?。为了优化,我们使用Adam[17]算法训练网络120个epoch,小批大小为28,学习率为0.001。一般情况下,在NVIDIA TITAN Xp GPU上的训练时间约为4.5小时

评价指标

为了定量评价输出点集的质量,我们制定了两个度量标准来度量输出点与地面真值网格之间的偏差,以及输出点的分布均匀性。

对于曲面偏差,我们找到最近的点\(\hat x_i\); 对网格上的每个预测点\(x_i\),并计算它们之间的距离。然后我们计算所有点的平均值和标准差作为我们的度量之一。

对于均匀性度量,我们在物体表面随机放置D个大小相等的圆盘(我们的实验中D = 9000),并计算圆盘内部点数的标准差。我们进一步规范化每个对象的密度,然后计算测试数据集中所有对象上的点集的整体均匀性。因此,我们定义带圆盘面积百分比p(p越大圆盘面积越大)的归一化均匀性系数(NUC)为:

image-20221120235831652

其中\(n_i^k\)是第k个对象的第i个磁盘上的点数,\(N^k\)是第k个对象上的点总数,K是测试对象的总数,p是磁盘面积占对象总表面积的百分比。注意,我们使用测地线距离而不是欧氏距离来形成圆盘。图2显示了三种不同的点分布及其对应的NUC值。可以看出,所提出的NUC度量可以有效地揭示点集的均匀性:UNC值越低,点集分布越均匀。

image-20221121000431653

欧氏距离vs测地线 参考:https://dsp.stackexchange.com/questions/54826/what-is-different-between-euclidean-distance-and-the-geodesic-distance

前者是忽略形状的直接连线,后者the path is constrained to be within the given shape

image-20221121000220805

与其他方法的比较

与基于优化的方法比较。我们将我们的方法与边缘感知重采样(EAR)方法[15]进行比较,后者是一种用于点云上采样的先进方法。结果如图3所示

image-20221121000815429

其中Chair来自我们收集的测试数据集,Spider来自SHREC15。我们用颜色标记点云,以显示与地面真实网格的偏差。输入中有1024个点,我们进行4X上采样。由于EAR依赖于法线信息,为了公平起见,我们根据ground truth mesh计算法线。在其他参数均为默认值的情况下,我们给出了增大半径的两个EAR结果。可以看出,半径参数对EAR的性能有很大的影响。当半径较小时,输出表面偏差较小,但添加的点不均匀,而半径较大时,会引入更多的离群点。相比之下,我们的方法可以更好地平衡偏差和均匀性,而不需要仔细调整参数。

与基于深度学习方法的比较。据我们所知,目前还没有任何基于深度学习的点云上采样方法,因此我们设计了一些基线方法进行比较。由于PointNet[29]和pointnet++[30]是使用深度学习技术进行3D点云推理的先驱,因此我们基于它们设计了基线。具体而言,我们采用语义分割网络架构进行点特征嵌入,并使用一组卷积进行特征展开。注意,我们考虑了pointnet++的两个版本:基本的pointnet++和带有多尺度分组(MSG)的pointnet++,用于处理不均匀采样密度;因此,我们有三个基线,我们只用重建损失来训练它们。有关基线网络架构的详细信息,请参阅补充材料。虽然我们修改 PointNet、PointNet++ 和 PointNet++(MSG)对于上采样问题的架构,为了方便,我们仍然用它们最初的名称来称呼基线。

表1和表2分别列出了我们收集的数据集和SHREC15数据集上的定量比较结果。

image-20221121000919961

需要注意的是,用小p测量的NUC在小区域内表现出局部分布的均匀性,而用大p测量的NUC则表现出更多的全局均匀性。在基线中,PointNet的性能是最差的,因为它不能捕获本地结构信息。与pointnet++相比,pointnet++ (MSG)通过显式的多尺度信息分组,略微提高了一致性。但它涉及的参数较多,大大延长了训练和测试的时间。总体而言,与基线相比,我们的PUNet获得了最佳的性能,与地面的偏差最小,分布均匀性最好,特别是在局部均匀性上。

图4显示了视觉比较的结果

image-20221121000934331

其中点由它们与表面的距离偏差着色。可以看出,该方法预测的点云与底层曲面的匹配程度较好,偏差较小。

架构设计分析

特性扩展分析。我们将所提出的特征扩展方法与两种插值方法进行了比较。第一个类似于朴素点插值(表示为interp1)。在提取每个点的点特征后,将其自身的特征与最近的相邻点的特征相结合,生成上采样特征。第二种方法引入了更多随机性(表示为interp2)。我们没有使用最近邻居的特征,而是使用基于半径的球查询来查找邻居,并结合来自这些点的特征来生成上采样的特征。我们用重构损耗(也称为EMD损耗)训练这两个网络,结果列在表3的前两行。

image-20221121001138076

为了比较公平,我们也只用EMD损耗来训练我们的网络。结果显示在第四行。与这两种插值方法相比,我们的插值方法在曲面距离偏差比较大的情况下,输出结果更加均匀。

比较不同的损失函数。如前文所述,EMD比CD能更好地捕捉物体形状。对比表3中两者的性能,我们可以看到EMD损耗比CD损耗提高了输出均匀性,表面距离偏差小,这意味着EMD损耗能更好地鼓励输出点位于下垫面。此外,通过对比表3的后两行,我们可以看到斥力损失可以进一步提高输出的均匀性

更多的实验

从上采样点集进行曲面重构。点云上采样的一个重要应用是提高地表重建质量。因此,我们用MeshLab[5]中提供的直接泊松曲面重建方法[16]对不同方法的重建结果进行比较;见图5。我们可以观察到,我们的方法的重建结果是最接近地面真相的,而其他方法要么遗漏了某些结构(例如,马的腿),要么填满了洞

image-20221121001323110

迭代上采样结果。为了研究我们的网络处理不同数量输入点的能力,我们设计了一个迭代上采样实验,该实验将上一次迭代的输出作为下一次迭代的输入。结果如图6所示。初始输入点云有1024个点,我们在每次迭代中增加4倍。image-20221121001428928

从结果中可以看出,我们的网络对于不同数量的输入点都能产生合理的结果。此外,迭代上采样实验也表明我们的网络抗噪声能力,以抵抗在迭代上采样中引入的累积误差。

噪声输入点集的结果。图7显示了有噪声点云(高斯噪声为0.5%和物体包围盒对角线的1%)的曲面重构结果

image-20221121001448882

这表明我们的网络即使在有噪声输入的情况下也有助于生成更好的曲面。

实际扫描点云的结果。最后,我们评估了我们的网络对从Visionair[1]下载的真实扫描点云进行上采样的能力。在图8中,最左边的一列是实际扫描的点云。即使每个实扫描点云包含数百万个点,不均匀现象仍然存在。为了更好的可视化,我们从原始点云中切割小块,并在中间的列中显示这些小块。我们可以观察到,实扫描点往往具有直线结构,而我们的网络仍然有能力在稀疏区域均匀添加点。

image-20221121001506747

结论

在本文中,我们提出了一种用于点云上采样的深度网络,其目标是由稀疏点集生成密度更大且均匀的点集。我们的网络在补丁级使用多层次的特征聚合方式进行训练,从而捕获本地和全局信息。我们的网络设计绕过了点之间的规定顺序,通过操作包含非局部几何的单个特征来允许上下文感知的上采样。实验证明了该方法的有效性。作为使用深度网络的第一次尝试,我们的方法仍然有一些局限性。一个首先,它不是为完井设计的,所以我们的网络不能填补大的孔和缺失的部件。此外,我们的网络可能无法为采样严重不足的微小结构添加有意义的点。

在未来,我们希望研究和开发更多的方法来处理不规则和稀疏的数据,用于回归目的和合成目的。一个直接的步骤是开发下采样方法。尽管下采样似乎是一个更简单的问题,但仍然有设计适当的损失和架构的空间,以最大限度地保存被抽取点集中的信息。我们认为,总体而言,发展针对不规则结构的深度学习方法是一个可行的研究方向。

标签:采样,特征,网络,点集,upsampling,点云,我们
From: https://www.cnblogs.com/ll2f/p/16910129.html

相关文章