DMTet 阅读笔记

介绍

  • 主页 https://nv-tlabs.github.io/DMTet/
  • 论文pdf https://nv-tlabs.github.io/DMTet/assets/dmtet.pdf
  • 视频汇报 https://slideslive.com/38967642/deep-marching-tetrahedra-a-hybrid-representation-for-highresolution-3d-shape-synthesis?ref=homepage
  • 疑似代码 在nvdiffrec项目下的工具代码
  • 用DMTet恢复点云 https://github.com/NVIDIAGameWorks/kaolin/blob/master/examples/tutorial/dmtet_tutorial.ipynb
  • 列表包含两个DMTet的demo https://kaolin.readthedocs.io/en/latest/notes/tutorial_index.html

DMTet的全称为Deep Marching Tetrahedra,是MT(Marching Tetrahedra)算法的深度学习版本。顾名思义,它与MT算法有共通之处,而它又是基于深度学习(Deep)的方法。整个论文的各个步骤都是端到端的、可微的,因而可以被反向梯度重传所训练。

从概览图可知,输入可以使点云或者粗voxel,算法会先细分生成隐式表达SDF,再用MT算法生成显式表达,最后得到模型参数表面(Parametric Surfaces)。

请添加图片描述

利用崭新的混合3D表达方式,DMTet能集合隐式和显式的3D表达。

  • 当前的隐式表达方法的做法,大多是被训练来拟合signed distance values。相比于它们,本论文直接优化重建的表面,从而能够用更少的物体来合成更细微的几何细节
  • 当前的显式表达方法的做法,大多是3D深度生成模型,直接生成显式表达,比如mesh。本论文能够合成有任意拓扑的物体形状。

相关概念

chamfer distance

https://www.cnblogs.com/ariel-dreamland/p/13225299.html

3D点云中的倒角距离
在这里插入图片描述
以上公式的S1,S2分别表示两组3D点云。

  1. 第一项代表S1中任意一点x 到S2 的最小距离之和
  2. 第二项则表示S2 中任意一点y 到S1 的最小距离之和。

如果该距离较大,则说明两组点云区别较大;如果距离较小,则说明重建效果较好。一般来说,该距离用作3D重建网络的损失函数。

DefTet

DefTet读后感

深度MT

3D表示

论文使用了以可变形的四面体编码的SDF来表示形状。网格将每个立方体给四面体化,每个单位都是有4个点和边的四面体。

  1. DefTet是用四面体上的occupancy来编码的,而本论文是用四面体各点的SD值来编码的。
  2. 使用SD值而不是occupancy值,可以为底层表面提供更多的灵活性。为了更好的效果,本文还会对表面作细分。
  3. 本文使用MT层,将基于SD的隐式表达转换为三角型的mesh。
  4. 最终mesh会被转换为具有可微细分表面模块的参数表面。

可变性四面体

本文利用了Gao的思路,用一组四面体来表示物体。每个四面体都由4个顶点的坐标来表示。每个顶点 v i v_i vi的SDF值为 s ( v i ) s(v_i) s(vi)。其内部任意一个点的SDF值为4个顶点的重心插值。

物体细分

本文会从粗到细地表示物体形状。本文定义了“表面四面体” T s u r f T_{surf} Tsurf,其判断方式为,看这个四面体的四个顶点是否有不同的SDF符号——如果符号不同,说明这个四面体与物体表面相交。本文细分了 T s u r f T_{surf} Tsurf和它的直接邻居,并通过在每条边上添加中点的方式增加分辨率。

下图是一个表面四面体(蓝色),在添加中点后,会被分为8个四面体(红色)。比如图中红色箭头所指的节点 v a c ′ v^{'}_{ac} vac,它的坐标是线段ac的中点,而SDF值为两者的平均值。

Figure 2: 物体细分: 每一个表面四面体,在添加中点后,会被分为8个四面体

将隐式和显式表达转换的MT算法(Marching Tetrahedra)

本文使用MT算法将编码的SDF转换为显式的三角形mesh。给定四面体顶点的SDF值 { s ( v a ) , s ( v b ) , s ( v c ) , s ( v d ) } \{ s(v_a),s(v_b),s(v_c),s(v_d) \} { s(va),s(vb),s(vc),s(vd)},MT会根据 s ( v ) s(v) s(v)的符号决定四面体内部的表面拓扑形状,如下图所示。

  1. 4个顶点的SDF符号组合有2^4=16种情况,如果考虑旋转对称性,它们都属于3种类别
  2. 当表面拓扑确定时,其表面的节点坐标就被计算出来了,坐落于四面体边上按线性插值取零界值的点。

如何理解第一句?比如下图:

  1. 第一种情况,4个节点的SDF符号都相同,都为正或者负,共2种情况。在这种情况下,物体表面并没有与该四面体相交,所以不需要提取mesh了。
  2. 第二种情况,4个节点的SDF符号有两个正和两个负,符合这个类别的符号情况有6种(四面体有6条边,每条边上的两个顶点都为负,视为一种情况,有6条边就有6种情况)。
  3. 第三种情况,符合这个类别的符号情况有8种(3正1负有4种,3负1正也有4种)
    ·
    三种情况加起来是2+6+8=16种情况。

如何理解第二句?我们看到,第一种情况下没有物体表面需要提取。第二、三种情况下,本文会猜测紫色的表面是那个物体表面,该表面的顶点都坐落在四面体边上。

以第三种情况为例, v a v_a v

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值