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。如下:
这样就可以应用到真实的场景。