-
Reference: Park J J, Florence P, Straub J, et al. Deepsdf: Learning continuous signed distance functions for shape representation[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019: 165-174.
-
Key idea: 让decoder学习函数SDF,如果点x在图形内,则SDF(x)<0;在边界上,SDF(x)=0;在图形外,SDF(x)>0
-
loss function for learning SDF:L1距离
L(fθ(x),s)=∣clamp(fθ(x),δ)−clamp(s,δ)∣\mathcal{L}\left(f_{\theta}(\boldsymbol{x}), s\right)=\left|\operatorname{clamp}\left(f_{\theta}(\boldsymbol{x}), \delta\right)-\operatorname{clamp}(s, \delta)\right|L(fθ(x),s)=∣clamp(fθ(x),δ)−clamp(s,δ)∣,较小的 δ\deltaδ 使得网络更注重于物体表面的细节
-
上述方法只能让网络学习到一个图形的SDF,为了让网络可用于多个图形,在输入中加入图形的编码(Learning the Latent Space of Shapes),即下图中的code,作为decoder的输入的一部分,让decoder知道当前输入了什么形状

-
此时decoder的数学表示变为:
fθ(zi,x)≈SDFi(x)f_{\theta}\left(\boldsymbol{z}_{i}, \boldsymbol{x}\right) \approx S D F^{i}(\boldsymbol{x})fθ(zi,x)≈SDFi(x)
ziz_izi 是当前形状的编码,x是位置坐标
-
因此,在原有模型的基础上,z成为了另一个需要学习得到的参数。最直觉的做法是使用一个AE模型,但是作者指出:1)训练一个encoder需要消耗大量的资源;2)对于不同的3d输入(points, mesh, etc.),都需要不同的的encoder。所以提出了一种只用decoder的模型(auto-decoder 自动解码机)。
-
☆ 得到code ziz_izi 的方法:
-
Notations: Dataset contains NNN shapes, 对于每个shape,都有一个对应的SDF,因此将SDF表示为 SDFi=1iNS D F_{i=1}^{i^{N}}SDFi=1iN 。每个图形都包含 KKK 个点,每个点可以表示为一个坐标和sdf值的元组,即 Xi={ (xj,sj):sj=SDFi(xj)}X_{i}=\left\{\left(\boldsymbol{x}_{j}, s_{j}\right): s_{j}=S D F^{i}\left(\boldsymbol{x}_{j}\right)\right\}Xi={ (xj,sj):sj=SDF
-

该博客介绍了DeepSDF方法,通过学习连续的Signed Distance Function(SDF)来表示3D形状。SDF用于判断点是否在形状内部、边界上或外部。损失函数采用L1距离,训练过程中使用标准正态分布初始化形状编码,并通过优化后验概率最大化进行学习。在推断时,模型寻找与输入点集最匹配的形状编码。尽管这种方法能处理任意大小和分布的SDF样本,但在预测阶段的效率较低,因为它包含了求解最佳编码的过程。
最低0.47元/天 解锁文章
6899

被折叠的 条评论
为什么被折叠?



