NeuralODF: Learning Omnidirectional Distance Fields for 3D Shape Representation

定义:Neural Omnidirectional Distance Fields,a new shape representation encodes  geometry by storing the depth to the object’s surface from any 3D position in any viewing direction.

NeuralODF: Learning Omnidirectional Distance Fields for 3D Shape Representation_第1张图片

                       一种通用的3D表达方式,可以生成mesh,点云,深度图

 SDF/UDF是带有表面法向约束的ODF,ODF是可以用来表示SDF、UDF的,如下图所示

NeuralODF: Learning Omnidirectional Distance Fields for 3D Shape Representation_第2张图片

总体架构:

NeuralODF: Learning Omnidirectional Distance Fields for 3D Shape Representation_第3张图片 总体架构和deepsdf很相似,输入与nerf的相同(x,y,z,\omega ,\vartheta),输出(光沿发射角度的距离dp:是否占用(0或1)),训练过程中会像deepsdf一样每一个instance 训练一个latent code,网络总共8层,前两层输出p,最后一层输出d,这是为了把参数空间留给更复杂的深度估计,仿照deepsdf,同一类物体可以共享一个网络参数,inference的时候只需要优化latent code的参数即可,latent code默认是一个高斯分布。(NeuralODF can be used for both overfitting a single shape and generalizing to a category of shapes.

Loss:

NeuralODF: Learning Omnidirectional Distance Fields for 3D Shape Representation_第4张图片

第一个就是预测depth和gt depth的均方差,第二个就是一个二分类的cross-entropy loss,第三个是因为latent code是一个高斯分布,取最小化负对数似然以后就是这个公式

数据增强:

这个部分应该没什么解释的,基本是一些常规操作,就不贴文字了

Recursive inference:

 NeuralODF: Learning Omnidirectional Distance Fields for 3D Shape Representation_第5张图片

 算法2 ,其实就类似于TSDF,加了一个深度限制,在算法3的recursive inference过程中,为了避免学到的噪声带来的影响,沿着梯度下降的方向多次迭代得到一个较好的结果(如10~17行所示)。

 Jumping cube 算法:

空间按照一定的分辨率划分之后,譬如,右图1.红色的栅格沿着z方向,位置和角度输入网络inference,一旦这个栅格沿着z方向上对应的深度是占用的,那么当前栅格到占用栅格之间的栅格推理的信息就可以直接按照线性比例输出了,不需要都inference一遍了,节省计算资源。

生成三角面片的时候,根据cube的边(12条)与物体表面的相交情况来生成面片,正常应该是2^{12}种情况,考虑旋转以后,就简化为218种情况。

NeuralODF: Learning Omnidirectional Distance Fields for 3D Shape Representation_第6张图片

你可能感兴趣的:(隐式表达,python,人工智能,开发语言)