拓扑(Topology)
- Relate Work
- Decoder
今天开始学习这篇论文了,刚上来就被一个叫作拓扑的东西吸引到了,虽然接触了点云、体素这些用来表示三维物体的方式,但是拓扑还是第一次听说,因此特地上网查了一下“拓扑”。其中中科院在知乎上面这篇科普文章还是给了我一个大概的知识框架。
硬核科普:什么是拓扑?
不求甚解的看了一下这篇文章,大概总结了两点
拓扑是什么?
拓扑是一种除直接观察物体表面几何特征的另一种归和表达物体特征的方式。
规定了两点:
1、不能再物体表面打洞。
2、不可以使物体上的两点结合在一起。
在遵守上面两条限制的情况下能够将一种物体拉伸为另一种物体的可以称之为有相同的拓扑性质。(比如文中举例的咖啡杯变甜甜圈,球变椭球)
拓扑如何表示更高维度的物体?
文章里用一张纸来分别粘合甜甜圈和克莱因瓶的方式表示两个结构不同的拓扑性质。克莱因瓶虽然不是三维结构的物体,不能直接用几何来对甜甜圈进行区分,但是可以用拓扑性质区分不同维度的物体。
开头目前生成点云得到大多数方法是设计一个解码器,利用MLP和反卷积网络对2D编码器生成的潜在特征进行解码。使用CD和EMD来计算损失……(这在读PCN和GRNet两篇论文的时候就已经非常耳熟能详了。)
缺点是没有考虑真实世界3D对象中自然存在的拓扑或结构。
例子(不太懂):假设三维物体的点云位于2-manifold上,因为通常定义为局部相似的拓扑空间欧几里德平面。因此,所提出的解码器被迫学习从欧氏平面到目标点云的一组映射或变形。**强加这些学习过程中的结构可能导致三维物体点云生成的性能比较到忽略结构的方法。然而,通常被忽略的是,用于分组点云的特定表示可能对使用非结构化(即置换不变)损失的学习过程产生的潜在影响。**由于可能的解决方案的空间受到限制,在学习过程中实施单一的特定结构可能不是训练的最佳选择。
提出了一种更通用的解码器。它可以通过在根树结构中隐式修改点云结构来生成结构化点云。我们证明,在给定足够的容量和冗余度的情况下,根树允许我们对结构进行建模,包括点集上的任何拓扑,使我们的解码器成为更通用的结构化解码器。由于我们的解码器只对结构进行了有效的建模,因此我们的模型不受预先确定的结构,因此可以嵌入任意点集上的结构和/或拓扑。如下图
更具体地说,对于形状补全任务,我们将部分输入点云作为特征向量或代码我们提出的解码器使用它来生成一个完整的点云。我们的解码器有根树结构,其中,根节点嵌入整个点集作为编码器特征向量,叶节点是树中的各个点点集,每个内部节点嵌入整个点云由它的所有后代叶子组成。那套由树节点表示的点云子集的生成的点云结构或拓扑。我们在Shapenet上评估了我们提出的解码器数据集显示,与完成点云形状任务的下一个最佳执行方法相比,相对改善了34%。
Relate Work
这篇文章将3D补全分为了以下几种:
- Volumetric 3D shape completion(三维立体生成):
使用体素网格和距离场表示3d形状,使用三维卷积神经网络进行训练。但是这个方式需要很大的内存空间,早期用低维度网络,现在用稀疏算法解决了这个问题。(怎么那么像我之前做去雾时候遇到的问题?当时就卡在稀疏矩阵上了) - Multiresolution Point Cloud Generation with Neural Networks(基于神经网络多分辨率点云生成):
引入了多分辨率结构点云的生成。比如PCN里面的decoder生成点云分为两个阶段,第一阶段先生成低分辨率点云,第二阶段则是最终的生成结果。 - Unstructured Point Cloud Generation with Neural Networks(基于神经网络的非结构化点云生成):
结构化点云相当于图片一样,有像素的相对位置,而不是结构化点云的都为非结构点云 - Manifold-based Point Cloud Generation with Neural Networks(基于流形的神经网络点云生成):
就是这篇文章提出的,说实话,这个我真闹不清啥是流形,啥是欧几里得。之前的一些工作强调生成流形拓扑,可能对学习有一定限制,为了解除这种限制,该文章提出了一个树形结构的解码器。不强调解码器生成任何形状的拓扑,这增加了解码器可以生成的潜在拓扑的空间。对解码器学习到的结构模式的可视化表明,编码器学习的模式不一定是传统的2流形,而是跨多个对象出现的模式。
Decoder
完整框架:包括2级点云编码器和树结构解码器。解码器的箭头是多层感知器网络(MLP)。类似颜色的MLP共享相同的参数。
倒角距离CD作为损失函数