用MLP去近似一个隐式函数会遇到的问题:
(1) 基于坐标点的MLP和ReLU函数并不能够很好的重建出平面的细节内容。
(2)一些改进的方法尝试引入傅里叶变换,将坐标变换到高纬的傅里叶空间,但是这一类的方法并不能很好的重建出一个平面。
解决的方法:
作者提出了Spline Positional Encoding,利用这种方法去做坐标的编码,从而能够去恢复出一个良好的形状平面。
PE:能够以一种均匀的位置表示关系告诉神经网络,某个元素所处的位置。
具体的方法:
SDF(符号距离函数)
对于给定的一个shape,在上面进行采样,得到一系列的三维点云,每一个点云包含一个三维坐标点以及一个法向量的值,这时,会设定一个函数F(用MLP进行近似)。使得F(x)=0,其梯度为法向量的值,在最近的论文里面,又新增加了一个限制条件,SDF函数的梯度的二范数的值为1,基于此,得到了一个loss函数:
最训练完成后,寻找到F(x)为0的点就是形状的表面的点。
SPE(样条位置编码)
B-样条函数
其中,B的上标是多项式次数。上述公式描述的是一个最简单的B样条函数。
利用B样条编码,简单来说就是,将一个点,投影到三个不同的坐标轴上,用不同的坐标轴来进行每一个维度上的位置编码。
论文的insight
个人关于本篇论文的insight的理解:
作者想设计一种PE的方式,既利用了传统的sin cos编码,又想对其进行动态的调整,于是作者选定了B样条的这种方法,通过对knot的变化(加权),可以控制样条函数的变化,因此能够适应点云的PE。作者也陈述了,使用B样条函数的缘由,因为B样条函数作为basis的函数来说,相对来说简单一些。
参考
- Peng-Shuai Wang, Yang Liu, Yu-Qi Yang, Xin Tong:
Spline Positional Encoding for Learning 3D Implicit Signed Distance Fields. IJCAI 2021: 1091-1097
github地址: