PCN: Point Completion Network
Last updated
Last updated
本篇论文的主题是形状补全(shape completion),即从部分观测值估计物体的完整几何形状。这个问题在许多视觉和机器人应用中具有核心地位。作者提出了一种名为“点补全网络”(Point Completion Network,PCN)的新型基于学习的形状补全方法。
与现有的形状补全方法不同,PCN直接作用于原始点云,而无需关于底层形状的任何结构假设(例如,对称性)或注释(例如,语义类别)。它具有一种解码器设计,可以在保持较少参数的同时生成具有细粒度的补全形状。
实验结果表明,PCN能够在具有不同程度的不完整性和噪声的输入上生成具有真实结构的密集、完整的点云,包括KITTI数据集中的LiDAR扫描汽车。论文提供了代码、数据和训练模型,可在以下网址获得:
https://wentaoyuan.github.io/pcn/
现实世界的3D数据通常是不完整的,这导致几何和语义信息的丢失。例如,图1中的LiDAR扫描显示的汽车由于数据点的稀疏性和由有限传感器分辨率和遮挡引起的区域缺失而难以识别。在这项工作中,我们提出了一种新颖的基于学习的方法,使用编码器-解码器网络直接将部分形状映射到完整形状,两者都表示为3D点云。
我们的工作受到了许多最近的研究[9, 48]的启发,这些研究利用大量合成形状的数据集来训练深度神经网络,从而能够从单个或部分视图的组合中推断出完整的几何形状。然而,我们的方法与现有方法之间的关键区别在于3D数据的表示。现有的大多数方法将3D数据体素化为占用网格或距离场,以便应用卷积网络。然而,3D体素网格的立方体增长内存成本限制了这些方法的输出分辨率。此外,离散化往往会导致详细几何信息的丢失。相比之下,我们的网络旨在直接处理原始点云。这避免了由于体素化造成的高内存成本和几何信息损失,并允许我们的网络生成更细粒度的补全。
设计一个消耗和生成点云的网络涉及到几个挑战。首先,点云是一个无序集合,这意味着点的排列不会改变它们所表示的几何图形。这就需要设计一个特征提取器和一个损失函数,它们都是排列不变的。其次,在点云中没有明确的局部邻域定义,这使得很难应用任何卷积操作。最后,现有的点云生成网络只生成一小部分点,这不足以捕捉输出形状中的足够细节。我们提出的模型通过将排列不变的非卷积特征提取器和粗到细的点集生成器结合在一个端到端训练的网络中,来解决这些挑战。
本工作的主要贡献如下:
• 一种基于学习的形状补全方法,直接作用于3D点云,无需中间体素化;
• 一种新颖的网络架构,以粗到细的方式生成密集、完整的点云;
• 广泛的实验显示了相较于强基线的改进补全结果,对噪声和稀疏性的鲁棒性,推广到实际数据以及形状补全如何有助于下游任务。
3D形状补全:现有的3D形状补全方法大致可以分为基于几何、基于对齐和基于学习的方法。 基于几何的方法使用局部输入的几何线索完成形状,而不需要任何外部数据。例如,表面重建方法[3, 10, 33, 41, 49, 54, 62]在局部不完整的扫描中生成平滑插值以填补空洞。对称驱动的方法[29, 30, 35, 36, 46, 52, 55]识别局部输入的对称轴和重复的规律结构,以便将部分从观察区域复制到未观察区域。这些方法假设输入是中等完整的,可以直接从观察区域推断出缺失区域的几何形状。这个假设在现实世界的大多数不完整数据上不成立。
基于对齐的方法通过将部分输入与大型形状数据库中的模板模型进行匹配来完成形状。一些方法[15, 24, 32, 34, 43]直接检索完整形状,而另一些方法[17, 19, 28, 45, 52]检索物体部件,然后将它们组装起来以获得完整形状。其他方法[6, 12, 14, 21, 22, 39]对检索到的模型进行变形,以合成与输入更一致的形状。还有一些方法[7, 25, 31, 42, 61]使用几何原始体(如平面和二次曲面)代替形状数据库。这些方法在推理过程中需要昂贵的优化,使它们不适用于在线应用。它们对噪声也很敏感。
基于学习的方法使用参数化模型(通常是深度神经网络)直接将部分输入映射到完整形状,从而提供快速推理和更好的泛化。我们的方法属于这一类别。虽然现有的大多数基于学习的方法[9, 16, 44, 47, 50, 54, 56, 59]使用体素表示形状,这对于卷积神经网络来说很方便,但我们的方法使用点云,它在保持内存效率的同时保留了关于形状的完整几何信息。一项最近的研究[26]还探讨了可变形网格作为形状表示。然而,他们的方法假设所有形状与一个共同的参考形状对应,这限制了其适用性,仅适用于某些特定的形状类别,如人类或面部。
深度学习在点云上:我们的方法建立在几个最近的深度神经网络的进展之上,这些网络直接处理点云。PointNet及其扩展[37, 38]是这一领域的先驱,并在本研究开发时处于最先进水平。它将逐点多层感知器与对称聚合函数结合,实现了对排列的不变性和对扰动的鲁棒性,这对于点云上有效的特征学习至关重要。此后,已经提出了几种替代方法[23, 51, 53, 57, 58]。这些方法中的任何一个都可以作为编码器并入我们提出的模型。
关于解码器网络的研究相对较少,这些网络从学到的特征生成点集。[1]使用一个简单的全连接解码器,而[11]提出了一个将全连接和反卷积层结合的多分支解码器。最近,[60]引入了一个有趣的解码器设计,模拟了2D平面向3D表面的变形。然而,这些方法都不会生成超过2048个点。我们的模型将这些设计的优势结合起来,以高效的方式生成更高分辨率的输出。
设X是一个3D点集,它们位于通过单次观察或一系列观察从3D传感器获取的物体表面上。设Y是一个密集的3D点集,它们从物体的观察和未观察表面上均匀采样而来。我们将形状补全问题定义为在给定X的情况下预测Y。注意,在这个表述下,X不一定是Y的子集,X中的点与Y中的点之间没有明确的对应关系,因为它们是从潜在的物体表面独立采样而来的。
我们使用监督学习来解决这个问题。利用一个大规模的合成数据集,其中X和Y的样本可以轻松获得,我们训练一个神经网络直接从X预测Y。该网络在多个物体类别之间是通用的,不假设关于潜在物体结构的任何信息,如对称性或平面性。网络架构在第4节中描述,训练过程在第5.1节中描述。
在本节中,我们描述了我们提出的模型——点补全网络(PCN)的架构。如图2所示,PCN是一个编码器-解码器网络。
编码器接受输入点云X并输出一个k维特征向量。解码器接收该特征向量,并生成一个粗糙的输出点云Ycoarse和一个详细的输出点云Ydetail。
损失函数L是在GroundTruth点云Ygt和解码器的输出Ycoarse之间计算的,用于通过反向传播训练整个网络。请注意,与自动编码器不同,我们没有明确强制网络在其输出中保留输入点。相反,它学习从部分观察空间到完整形状空间的投影。
接下来,我们将描述编码器、解码器和使用的损失函数的具体设计。
编码器负责将输入点云中的几何信息总结为特征向量v∈Rk,其中k=1024。我们提出的编码器是PointNet [37]的扩展版本。它继承了PointNet对排列不变性和对噪声的容忍度,并且可以处理具有不同点数的输入。
具体来说,编码器由两个堆叠的PointNet(PN)层组成。第一层接收m个输入点,表示为一个m×3矩阵P,其中每行是点pi =(x,y,z)的3D坐标。
一个共享的多层感知器(MLP),由两个具有ReLU激活的线性层组成,用于将每个pi转换为点特征向量fi。这给了我们一个特征矩阵F,其行是学到的点特征fi。然后,在F上执行逐点最大池化以获得k维全局特征g,其中gj=maxi=1,...,m{Fij},j=1,...,k。
第二个PN层接收F和g作为输入。首先将g连接到每个fi以获得增强的点特征矩阵Fe,其行是连接特征向量[fi g]。然后,Fe通过另一个共享的MLP和与第一层类似的点逐点最大池化,得到最终的特征向量v。
解码器负责从特征向量v生成输出点云。
我们提出的解码器将完全连接解码器[1]和基于折叠的解码器[60]的优点结合在一个多阶段点生成流水线中。在我们的实验中,我们展示了我们的解码器在单独使用完全连接或基于折叠的解码器时表现更好。
我们的关键观察是,完全连接的解码器擅长预测代表形状全局几何的稀疏点集。同时,基于折叠的解码器擅长逼近代表形状局部几何的光滑表面。
因此,我们将输出点云的生成分为两个阶段。
在第一阶段,通过将v传递到具有3s输出单元的完全连接网络并将输出重塑为s×3矩阵,生成s个点的粗糙输出Ycoarse
在第二阶段,对于Ycoarse中的每个点qi,通过折叠操作(参见补充材料的第B部分)在以qi为中心的局部坐标系中生成t=u^2个点的补丁,并通过将qi添加到输出来将其转换为全局坐标。将所有s个补丁组合在一起得到详细输出Ydetail,其中包含n=st个点。这个多阶段过程使我们的网络能够以比完全连接解码器更少的参数(参见表1)和比基于折叠解码器更灵活的方式生成密集的输出点云。
B. 局部折叠操作
在这里,我们详细描述了在第 4.2 节中提到的局部折叠操作。如图 10 所示,折叠操作接受粗糙输出 Ycoarse 中的一个点 qi 和 k 维全局特征向量 v 作为输入,并通过对一个 u × u 网格进行变形,生成以 qi 为中心的局部坐标系中的 t = u^2 个点的补丁。首先,它获取以零为中心的 u × u 网格(边长为 r)上的点(r 控制输出补丁的缩放),并将它们的坐标组织成一个 t × 2 的矩阵 G。然后,它将 G 的每一行与中心点 qi 的坐标和全局特征向量 v 进行拼接,并将得到的矩阵通过一个共享的多层感知器(MLP),生成一个 t × 3 的矩阵 Q,即以 qi 为中心的局部补丁。这个共享的 MLP 可以被理解为一种非线性变换,它将 2D 网格变形为 3D 空间中的平滑 2D 流形。注意,对于每个 qi 的局部补丁生成中,都使用相同的 MLP,因此局部折叠操作中的参数数量不会随着输出大小的增加而增加。
简而言之,局部折叠操作通过将粗糙输出 Ycoarse 中的点 qi 和全局特征向量 v 作为输入,生成以 qi 为中心的局部坐标系中的点云补丁。这一操作通过共享的 MLP 将 2D 网格变形为 3D 空间中的平滑 2D 流形,从而有效地将粗糙输出细化为更高分辨率的点云表示。
损失函数衡量输出点云与地面实况点云之间的差异。由于两个点云都是无序的,损失需要对点的排列具有不变性。[11]提出了两个排列不变函数 - Chamfer Distance(CD)和Earth Mover's Distance(EMD)。
CD(1)计算输出点云S1和地面实况点云S2之间的平均最近点距离。我们使用CD的对称版本,其中第一项强制使输出点靠近地面实况点,第二项确保输出点云覆盖地面实况点云。注意,计算CD时,S1和S2的大小不需要相同。
EMD(2)找到一种双射φ:S1→S2,它最小化对应点之间的平均距离。在实践中,找到最优的φ太昂贵,所以我们使用迭代式(1 + )近似方案[4]。与CD不同,EMD要求S1和S2的大小相同。
我们提出的损失函数(3)由两项组成,d1和d2,由超参数α加权。第一项是粗糙输出Ycoarse与与Ycoarse大小相同的子采样地面实况Yegt之间的距离。第二项是详细输出Ydetail与完整地面实况Ygt之间的距离。 在我们的实验中,我们对d1使用CD和EMD,但对d2只使用CD。这是因为EMD近似方案的O(n^2)复杂度使得在训练过程中计算成本过高,而CD可以使用高效的最近邻搜索数据结构(如KDTree)以O(n log n)复杂度计算。
在本节中,我们首先描述创建一个大规模、多类别数据集以训练我们的模型。接下来,我们在合成形状上将我们的方法与现有方法和我们方法的消融版本进行比较。最后,我们展示了在真实世界点云上的补全结果,并展示了它们如何帮助下游任务,如点云配准。
为了训练我们的模型,我们使用来自ShapeNet的合成CAD模型创建一个大规模数据集,其中包含部分和完整点云对(X, Y)。具体来说,我们从8个类别中选取30974个模型:飞机、橱柜、汽车、椅子、灯、沙发、桌子和船。通过在网格表面上均匀采样16384个点来创建完整的点云,通过将2.5D深度图像反投影到3D来生成部分点云。我们使用反投影深度图像作为部分输入,而不是完整点云的子集,以使输入分布更接近真实世界的传感器数据。对于每个模型,从8个随机分布的视点生成8个部分点云。注意,部分点云的大小可能不同。
我们选择使用合成数据集来生成训练数据,因为它包含了在现实世界数据集中无法获得的完整、详细的3D物体模型。尽管最近的数据集如ScanNet[8]或S3DIS[2]具有非常高质量的3D重建,但由于扫描仪视角的局限性,这些重建存在缺失区域,因此不足以作为我们模型的地面实况。
我们保留100个模型用于验证,150个模型用于测试。其余的用于训练。我们的所有模型使用Adam[20]优化器进行训练,初始学习率为0.0001,共50个周期,批量大小为32。每5万次迭代,学习率衰减0.7。