-
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=SDFi(xj)}
-
假设先验概率 p(zi)p(z_i)p(zi) 是一个标准正态分布,均值为0,方差为 σI\sigma IσI。先随便给一个,后期再学习。论文中使用的参数为 N(0,0.012)\mathcal{N}\left(0,0.01^{2}\right)N(0,0.012)。(不太懂为啥要这么做,可能是作者受到VAE的启发,loss中方差的作用仅仅体现在限制z的二范数不能太大)
-
Loss for training: 后验概率可以表示为 pθ(zi∣Xi)=p(zi)∏(xj,sj)∈Xipθ(sj∣zi;xj)p_{\theta}\left(\boldsymbol{z}_{i} \mid X_{i}\right)=p\left(\boldsymbol{z}_{i}\right) \prod_{\left(\boldsymbol{x}_{j}, \boldsymbol{s}_{j}\right) \in X_{i}} p_{\theta}\left(\boldsymbol{s}_{j} \mid z_{i} ; \boldsymbol{x}_{j}\right)pθ(zi∣Xi)=p(zi)∏(xj,sj)∈Xipθ(sj∣zi;xj)
-
需要最大化后验概率,为了简化计算取对数,即
argmaxθ,{zi}i=1N∑i=1Nlog(p(zi))+∑j=1Klog(pθ(sj∣zi;xj) \underset{\theta,\left\{\boldsymbol{z}_{i}\right\}_{i=1}^{N}}{\arg \max } \sum_{i=1}^{N} \log(p(z_i)) + \sum_{j=1}^{K} log(p_{\theta}\left(\boldsymbol{s}_{j} \mid z_{i} ; \boldsymbol{x}_{j}\right) θ,{zi}i=1Nargmaxi=1∑Nlog(p(zi))+j=1∑Klog(pθ(sj∣zi;xj)
-
log(p(zi))=log(12πσ)+(−∥zi∥222σ2)\log(p(z_i))=\log (\frac{1}{\sqrt{2\pi}\sigma})+(-\frac{\left\|\boldsymbol{z}_{i}\right\|_{2}^{2}}{2\sigma ^2})log(p(zi))=log(2πσ1)+(−2σ2∥zi∥22),当 σ\sigmaσ 的值很小时,log(12πσ)\log (\frac{1}{\sqrt{2\pi}\sigma})log(2πσ1) 的值太大,不利于学习,直接忽略。系数 12\frac{1}{2}21 也可以忽略。
-
log(pθ(sj∣zi;xj)=−L(fθ(zi,xi),si)log(p_{\theta}\left(\boldsymbol{s}_{j} \mid z_{i} ; \boldsymbol{x}_{j}\right)=-\mathcal{L}\left(f_{\theta}(\boldsymbol{z_i,x_i}), s_i\right)log(pθ(sj∣zi;xj)=−L(fθ(zi,xi),si)
-
因此,loss function可以变形为
argminθ,{zi}i=1N∑i=1N(∑j=1KL(fθ(zi,xj),sj)+1σ2∥zi∥22) \underset{\theta,\left\{\boldsymbol{z}_{i}\right\}_{i=1}^{N}}{\arg \min } \sum_{i=1}^{N}\left(\sum_{j=1}^{K} \mathcal{L}\left(f_{\theta}\left(\boldsymbol{z}_{i}, \boldsymbol{x}_{j}\right), s_{j}\right)+\frac{1}{\sigma^{2}}\left\|\boldsymbol{z}_{i}\right\|_{2}^{2}\right) θ,{zi}i=1Nargmini=1∑N(j=1∑KL(fθ(zi,xj),sj)+σ21∥zi∥22)
-
-
-
在Inference时,ziz_izi 还需要经过计算才能得到(在训练后,固定网络参数 θ\thetaθ)。因为这是一个补全任务,所以输入为已知点,求基于已知点最相似的shape code:
z^=argminz∑(xj,sj)∈XL(fθ(z,xj),sj)+1σ2∥z∥22. \hat{\boldsymbol{z}}=\underset{\boldsymbol{z}}{\arg \min } \sum_{\left(\boldsymbol{x}_{j}, \boldsymbol{s}_{j}\right) \in X} \mathcal{L}\left(f_{\theta}\left(\boldsymbol{z}, \boldsymbol{x}_{j}\right), s_{j}\right)+\frac{1}{\sigma^{2}}\|\boldsymbol{z}\|_{2}^{2} . z^=zargmin(xj,sj)∈X∑L(fθ(z,xj),sj)+σ21∥z∥22.
-
这个模型的优点:valid for SDF samples X of arbitrary size and distribution
-
缺点: 在预测的过程中还包含一个求z的过程,比端到端的模型速度慢。
-
最终模型: