详解DeepSDF: Learning Continuous Signed Distance Functions for Shape Representation

  • 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 θ ( z i , x ) ≈ S D F i ( x ) f_{\theta}\left(\boldsymbol{z}_{i}, \boldsymbol{x}\right) \approx S D F^{i}(\boldsymbol{x}) fθ(zi,x)SDFi(x)

    z i z_i zi 是当前形状的编码,x是位置坐标

  • 因此,在原有模型的基础上,z成为了另一个需要学习得到的参数。最直觉的做法是使用一个AE模型,但是作者指出:1)训练一个encoder需要消耗大量的资源;2)对于不同的3d输入(points, mesh, etc.),都需要不同的的encoder。所以提出了一种只用decoder的模型(auto-decoder 自动解码机)。

  • 得到code z i z_i zi 的方法

    • Notations: Dataset contains N N N shapes, 对于每个shape,都有一个对应的SDF,因此将SDF表示为 S D F i = 1 i N S D F_{i=1}^{i^{N}} SDFi=1iN 。每个图形都包含 K K K 个点,每个点可以表示为一个坐标和sdf值的元组,即 X i = { ( x j , s j ) : s j = S D F i ( x j ) } 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 ( z i ) p(z_i) p(zi) 是一个标准正态分布,均值为0,方差为 σ I \sigma I σI。先随便给一个,后期再学习。论文中使用的参数为 N ( 0 , 0.0 1 2 ) \mathcal{N}\left(0,0.01^{2}\right) N(0,0.012)。(不太懂为啥要这么做,可能是作者受到VAE的启发,loss中方差的作用仅仅体现在限制z的二范数不能太大)

    • Loss for training: 后验概率可以表示为 p θ ( z i ∣ X i ) = p ( z i ) ∏ ( x j , s j ) ∈ X i p θ ( s j ∣ z i ; x j ) 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θ(ziXi)=p(zi)(xj,sj)Xipθ(sjzi;xj)

    • 需要最大化后验概率,为了简化计算取对数,即

      arg ⁡ max ⁡ θ , { z i } i = 1 N ∑ i = 1 N log ⁡ ( p ( z i ) ) + ∑ j = 1 K l o g ( p θ ( s j ∣ z i ; x j ) \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=1Nlog(p(zi))+j=1Klog(pθ(sjzi;xj)

      • log ⁡ ( p ( z i ) ) = log ⁡ ( 1 2 π σ ) + ( − ∥ z i ∥ 2 2 2 σ 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σ2zi22),当 σ \sigma σ 的值很小时, log ⁡ ( 1 2 π σ ) \log (\frac{1}{\sqrt{2\pi}\sigma}) log(2π σ1) 的值太大,不利于学习,直接忽略。系数 1 2 \frac{1}{2} 21 也可以忽略。

      • l o g ( p θ ( s j ∣ z i ; x j ) = − L ( f θ ( z i , x i ) , s i ) 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θ(sjzi;xj)=L(fθ(zi,xi),si)

      • 因此,loss function可以变形为

        arg ⁡ min ⁡ θ , { z i } i = 1 N ∑ i = 1 N ( ∑ j = 1 K L ( f θ ( z i , x j ) , s j ) + 1 σ 2 ∥ z i ∥ 2 2 ) \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=1N(j=1KL(fθ(zi,xj),sj)+σ21zi22)

  • 在Inference时, z i z_i zi 还需要经过计算才能得到(在训练后,固定网络参数 θ \theta θ)。因为这是一个补全任务,所以输入为已知点,求基于已知点最相似的shape code:

    z ^ = arg ⁡ min ⁡ z ∑ ( x j , s j ) ∈ X L ( f θ ( z , x j ) , s j ) + 1 σ 2 ∥ z ∥ 2 2 . \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)XL(fθ(z,xj),sj)+σ21z22.

  • 这个模型的优点:valid for SDF samples X of arbitrary size and distribution

  • 缺点: 在预测的过程中还包含一个求z的过程,比端到端的模型速度慢。

  • 最终模型:
    在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值