Local Implicit Grid Representations for 3D Scenes详解

Markdown

Motivation

更好理解论文,可能当时理解有误,但是记下来用于后续深入理解。

论文:Local Implicit Grid Representations for 3D Scenes

目的

在场景中可以通过Grid的隐式表达,这样可以表达重建整个场景。应用如下:场景的点云输入,输出具有mesh的场景。
在这里插入图片描述

理解

这篇论文的原理主要是在整个场景中,在固定大小的grid分割下,它们里面的3D表面可能具有相同的几何细节。比如:在一定大小的grid中,桌子的脚的表面几何可能和凳子的脚的表面几何具有相似的特征的。这种性质在整个场景中非常常见,需要学习这些相似的表面表达。通过学习这个相似性可以encode这些表面,用于后续的固定的grid的区域重建。即在grid的区域中,可以通过里面的点云推测3D区域。

论文的主要概念

Local Implicit Grid representation

为了能够完成场景的encode,论文提供了局部区域的encode,同时将其称为为Local Implicit Grid representation。它的表达如下,对shapent中的物体进行watertight的表达,归一化成[0,1]之间,然后分成256256256块,然后生成sdf,然后对这些Grid大小的区域进行encode,从整体的网络架构可以看出为对象的Parts,通过顶点它的decode也是各个Parts,表示如下:
encode grid part的整体的网络架构
在这里插入图片描述
论文中是通过对shapenet的对象进行crop,然后训练Part encode,得到Part Latent。对shapenet数据中,对每个对象的Grid大小的区域进行Encode。在这个区域可以得到如下的分布:
在这里插入图片描述
可以看到,在Grid大小的区域中,encode各个表面区域,这个encode函数,把相似的曲面聚集在一起。这个encode,可以推广到场景中的各个表面的encode。
训练Grid大小的loss函数,如下:
在这里插入图片描述
其中 ∣ P ∣ |P| P表示shapenet中一次batchsize 的Grid大小的曲面数量, ∣ B ∣ |B| B表示在这些曲面上采样的顶点数量。其中 D θ d D_{\theta_d} Dθd 表示decode网络(输入为x,和encode的vector),其中 E θ e E_{\theta_e} Eθe 表示encode的vector,对区域大小为Gird的区域,也就是 g g g,其中 g i g_i gi 表示第i个Grid区域作为输入,从这个loss函数可以看出来,它是对整个shapenet中的Grid大小区域进行Encode表面信息。

从局部的cell(grid)到整体

对单个曲面能够encode各个表面的信息,这些都是局部坐标系下的,但是在场景或者对象可能会有坐标系和scale的区分,需要进行转化,对cell的小区域进行坐标系转化,表示如下:
在这里插入图片描述
其中 c i c_i ci 表示第 i i i 个cell的encode,其中 x i x_i xi为第 i i i 个cell的中心坐标, s s s 为scale的大小。从公式可以看到表达为:先将cell的从世界坐标系转化为cell中心点为原点的局部坐标系,在normalize到[-1,1]之间。
可能表示整体对象的时候,cell之间表达不连续的情况?论文的处理,cell之间有一般是相互重叠的,这个思路很好,如下:
在这里插入图片描述
这样的cell,对于encode,发现一个点在三维坐标系中,有8个重复的cell邻近叠加。
在这里插入图片描述
因此encode 表达需要通过 w j w_j wj 进行插值,所以公式如(3).
在对象中优化中,可以看到
在这里插入图片描述
在训练对象的时候,将对象分成cell后,对采样的点云进行里外的判断。这样构成loss函数。对于cell中的里外判断标准为如下:
在这里插入图片描述
在每个cell中,我们通过点云来优化的。
上面是对整体的对象进行分块encode,它表达内外都是点云表面,比如它发向量反的为负,法向量为正。它是refine局部区域的latent code。如下:
在这里插入图片描述
这样就可以应用到真实的场景。

猜你喜欢

转载自blog.csdn.net/weixin_43851636/article/details/114986041
今日推荐