[논문리뷰] Deep Marching Tetrahedra: a Hybrid Representation for High-Resolution 3D Shape Synthesis
NeurIPS 2021. [Paper] [Page] [Github]
Tianchang Shen, Jun Gao, Kangxue Yin, Ming-Yu Liu, Sanja Fidler
NVIDIA | University of Toronto | Vector Institute
8 Nov 2021

Introduction
본 논문에서는 coarse voxel 형태의 사용자 가이드로부터 고해상도 3D shape을 합성하는 3D 조건부 생성 모델인 DMTet을 소개한다. DMTet의 핵심은 implicit한 3D 표현과 명시적인 3D 표현을 결합한 새로운 미분 가능한 shape 표현 방식이다. Signed distance나 occupancy 예측에 최적화된 기존의 방식과 달리, DMTet 모델은 표면에 대한 추가적인 supervision을 통해 더욱 세밀한 디테일을 가진 고품질 shape을 생성한다.
DMTet은 임의의 토폴로지를 가진 shape을 생성할 수 있다. 구체적으로, DMTet은 deformable tetrahedral grid를 통해 인코딩된 SDF로 parameterize된 표면을 예측한다. 이 기본 표면은 Marching Tetrahedra (MT) 알고리즘을 사용하여 메쉬로 변환되며, 미분 가능하고 Marching Cubes 알고리즘보다 성능이 우수하다.
DMTet은 사면체를 변형하고 선택적으로 세분화하여 그리드 해상도를 조정하는 방법을 학습함으로써 효율성을 유지한다. 이는 공간에서 관련 영역에만 계산을 집중시키는 효과를 가져온다. 학습된 surface subdivision을 통해 출력 shape의 전반적인 품질을 더욱 향상시킨다. DMTet은 end-to-end로 미분 가능하므로, 표면 메쉬에 명시적으로 정의된 loss를 사용하여 표면의 geometry와 토폴로지, 세분화 계층 구조를 동시에 최적화할 수 있다.
Method
1. 3D Representation
본 논문에서는 DefTet에서 채택한 deformable tetrahedral grid로 인코딩된 SDF를 사용하여 shape을 표현한다. 이 그리드는 단위 정육면체를 완전히 사면체화하며, 각 셀은 4개의 vertex과 4개의 면을 가진 사면체이다. 이 표현 방식의 핵심은 grid vertex가 shape의 geometry를 보다 효율적으로 표현하도록 변형될 수 있다는 점이다.
Deformable Tetrahedral Mesh as an Approximation of an Implicit Function
Deformable tetrahedral grid는 $(V_T, T)$로 표시할 수 있으며, $V_T$는 사면체 그리드 $T$의 vertex이다. 각 사면체 $T_k \in T$는 네 개의 vertex \(\{v_{a_k}, v_{b_k}, v_{c_k}, v_{d_k}\}\)로 표현되며, $v_{i_k} \in V_T$이다.
저자들은 grid vertex에 정의된 SDF 값 $s(v_i)$를 interpolation하여 sign distance field를 표현하였다. 사면체 내부에 있는 점들의 SDF 값은 해당 점을 둘러싸는 네 vertex의 SDF 값을 barycentric interpolation하여 얻는다.
Volume Subdivision
효율성을 위해 shape을 coarse-to-fine 방식으로 표현한다. 표면 사면체 \(T_\textrm{surf}\)는 각 사면체가 서로 다른 SDF 부호를 가진 vertex를 갖는지 확인하여 결정된다. 이는 해당 사면체가 표면과 교차함을 나타낸다. \(T_\textrm{surf}\)와 그 인접 사면체를 세분화하고 각 edge에 중간점을 추가하여 해상도를 높인다. 새로운 vertex의 SDF 값은 edge의 SDF 값의 평균으로 계산된다.

Marching Tetrahedra for converting between an Implicit and Explicit Representation
본 논문에서는 Marching Tetrahedra (MT) 알고리즘을 사용하여 인코딩된 SDF를 명시적인 삼각형 메쉬로 변환한다. 사면체의 vertex에 대한 SDF 값 \(\{s(v_a), s(v_b), s(v_c), s(v_d)\}\)가 주어졌을 때, MT는 $s(v)$의 부호를 기반으로 사면체 내부의 표면 유형을 결정한다. 총 구성 수는 $2^⁴ = 16$개이며, 회전 대칭을 고려하면 3개의 고유한 경우로 분류된다. 사면체 내부의 표면 유형이 결정되면, 사면체 edge를 따라 linear interpolation을 수행하여 isosurface의 vertex 위치를 계산한다.

$s(v_a)$와 $s(v_b)$의 부호가 같은 경우, 학습 중에 둘의 부호가 달라지기 위해서는 특이점 $s(v_a) = s(v_b)$를 지나야 하며, 이로 인해 부호 변화가 막혀 표면 토폴로지의 변화가 막힐 수 있다. 그러나 실제로는 둘의 부호가 다를 때만 방정식이 평가된다. 따라서 학습 중에는 특이점이 발생하지 않으며, 추출된 isosurface에 정의된 loss의 gradient를 vertex 위치와 SDF 값 모두로 back-propagation할 수 있다.
Surface Subdivision
표면 메쉬를 출력으로 사용함으로써 미분 가능한 surface subdivision 모듈을 통해 shape의 표현력과 시각적 품질을 더욱 향상시킬 수 있다. 본 논문에서는 Loop Subdivision을 따르지만, 세분화에 고정된 파라미터 세트를 사용하는 대신 파라미터를 학습 가능하게 만들었다. 구체적으로, 학습 가능한 파라미터에는 각 메쉬 vertex의 위치 \(v_i^\prime\)와, 인접한 vertex의 부드러움에 가중치를 부여하여 생성된 표면을 제어하는 \(\alpha_i\)가 포함된다. Vertex별 파라미터를 초기에만 예측하고 이를 이후 세분화 iteration에 전달하여 계산 비용을 절감한다.
2. DMTet: 3D Deep Conditional Generative Model
DMTet는 포인트 클라우드 또는 coarse voxelized shape 입력 $x$로부터 고해상도 3D 메쉬 $M$을 출력하는 것을 목표로 하는 신경망이다.

2.1 3D Generator
입력 인코더
본 논문에서는 PVCNN을 입력 인코더로 사용하여 포인트 클라우드에서 3D feature volume \(F_\textrm{vol} (x)\)를 추출한다. 입력이 coarse voxelized shape인 경우, 표면의 점들을 샘플링한다. Trilinear interpolation을 통해 grid vertex $v \in \mathbb{R}^3$에 대한 feature 벡터 \(F_\textrm{vol} (v, x)\)를 계산한다.
SDF의 초기 예측
초기 deformable tetrahedral grid의 각 vertex에 대한 SDF 값을 MLP \(s(v) = \textrm{MLP} (F_\textrm{vol} (v, x), v)\)를 사용하여 예측한다. 또한 MLP는 feature 벡터 $f(v)$를 출력하며, 이는 volume subdivision 단계에서 표면 정제에 사용된다.
Volume subdivision을 이용한 표면 정제
초기 SDF를 얻은 후, 표면을 반복적으로 정제하고 사면체 그리드를 세분화한다. 먼저 현재 $s(v)$ 값을 기반으로 표면 사면체 \(T_\textrm{surf}\)를 식별한다. 그런 다음, \(T_\textrm{surf}\)의 vertex와 edge로 그래프 \(G = (V_\textrm{surf}, E_\textrm{surf})\)를 구축한다. 그리고 Curve-GCN을 사용하여 \(V_\textrm{surf}\)의 각 vertex $i$에 대한 위치 offset \(\Delta v_i\)와 SDF residual \(\Delta s(v_i)\)를 예측한다.
\[\begin{equation} f_{v_i}^\prime = \textrm{concat} (v_i, s(v_i), F_\textrm{vol} (v_i, x), f(v_i)) \\ (\Delta v_i, \Delta s(v_i), \bar{f(v_i)})_{i = 1, \cdots, N_\textrm{surf}} = \textrm{GCN} \left( (f_{v_i}^\prime)_{i = 1, \cdots, N_\textrm{surf}}, G \right) \end{equation}\](\(N_\textrm{surf}\)는 \(V_\textrm{surf}\)의 전체 vertex 수)
이 subdivision 단계를 통해 SDF 값의 부호를 반전시켜 로컬 토폴로지를 세분화하고 vertex를 이동시켜 로컬 geometry를 개선할 수 있다.
표면 정제 후, volume subdivision 단계를 수행하고 이어서 추가적인 표면 정제 단계를 진행한다. 구체적으로, \(T_\textrm{surf}\)를 다시 식별하고 \(T_\textrm{surf}\)와 그 인접 영역을 분할한다. 두 단계 모두에서 분할되지 않은 사면체를 전체 사면체 그리드에서 제거하는데, 이는 \(T_\textrm{surf}\)의 크기가 object의 표면적에 비례하고 그리드 해상도가 증가함에 따라 세제곱이 아닌 제곱으로 증가하기 때문에 메모리와 계산량을 절약하는 데 도움이 된다.
SDF 값과 vertex 위치는 subdivision 이전의 레벨에서 상속되므로 최종 표면에서 계산된 loss는 모든 레벨의 모든 vertex로 back-propagation될 수 있다. 따라서 DMTet는 사면체를 자동으로 세분화하는 방법을 학습하며, 중간 단계에 추가적인 loss가 필요하지 않다.
학습 가능한 surface subdivision
MT를 사용하여 표면 메쉬를 추출한 후, 학습 가능한 surface subdivision을 추가로 적용할 수 있다. 구체적으로, 추출된 메쉬에 새로운 그래프를 구축하고 GCN을 사용하여 각 vertex \(v_i^\prime\)의 업데이트된 위치와 Loop Subdivision을 위한 \(\alpha_i\)를 예측한다. 이 단계는 \(\alpha_i\)를 조정함으로써 기존 Loop Subdivision 방식에서 고정되어 있던 quantization 오차와 근사 오차를 제거한다.
2.2 3D Discriminator
Generator에서 예측된 메쉬에서 계산된 signed distance field에 DECOR-GAN 기반의 3D CNN을 discriminator $D$로 사용하여 로컬 디테일을 효과적으로 포착할 수 있다. 구체적으로, 먼저 대상 메쉬에서 곡률이 높은 vertex $v$를 무작위로 선택하고, $v$ 주변의 voxelize된 영역에서 실제 signed distance field \(S_\textrm{real} \in \mathbb{R}^{N \times N \times N}\)을 계산한다. 마찬가지로, 동일한 위치에서 예측된 표면 메쉬 $M$의 signed distance field \(S_\textrm{pred} \in \mathbb{R}^{N \times N \times N}\)을 계산한다. \(S_\textrm{pred}\)는 메쉬 $M$에 대한 analytical function이므로 \(S_\textrm{pred}\)에 대한 gradient를 $M$의 vertex 위치로 back-propagation할 수 있다.
Discriminator에 \(S_\textrm{real}\) 또는 \(S_\textrm{pred}\)와 위치 $v$의 feature 벡터 \(F_\textrm{vol} (v, x)\)를 입력한다. 그러면 discriminator는 입력이 실제 shape에서 나온 것인지 생성된 shape에서 나온 것인지를 나타내는 확률을 예측한다.
2.3 Loss Function
DMTet은 end-to-end 학습이 가능하다. 모든 모듈은 최종 예측 메쉬 $M$에 정의된 오차를 최소화하도록 학습된다. Loss는 세 가지 항으로 구성된다.
표면 정렬 loss
GT 메쉬 \(M_\textrm{gt}\)의 표면에서 점 집합 \(P_\textrm{gt}\)를 샘플링한다. 마찬가지로, \(M_\textrm{pred}\)에서도 점 집합을 샘플링하여 \(P_\textrm{pred}\)를 얻고, \(P_\textrm{gt}\)와 \(P_\textrm{pred}\) 사이의 L2 Chamfer Distance와 normal consistency loss를 최소화한다.
\[\begin{aligned} L_\textrm{cd} &= \sum_{p \in P_\textrm{pred}} \min_{q \in P_\textrm{gt}} \| p - q \|_2 + \sum_{q \in P_\textrm{gt}} \min_{p \in P_\textrm{pred}} \| q - p \|_2 \\ L_\textrm{normal} &= \sum_{p \in P_\textrm{pred}} (1 - \vert \bar{n}_p \cdot \bar{n}_{\hat{q}}) \end{aligned}\]($\hat{q}$는 Chamfer Distance 계산 시 $p$에 대응되었던 점)
Adversarial loss
LSGAN에서 제안된 adversarial loss를 사용한다.
\[\begin{aligned} L_D &= \frac{1}{2} [(D (M_\textrm{gt}) - 1)^2 + D (M_\textrm{pred})^2] \\ L_G &= \frac{1}{2} [(D (M_\textrm{pred}) - 1)^2] \end{aligned}\]정규화
위의 loss들은 추출된 표면에 적용되므로, 사면체에서 isosurface에 가까운 vertex만 gradient를 받고 다른 vertex는 받지 못한다. 또한, 표면 loss는 내부/외부에 대한 정보를 제공하지 않는다. 사면체 내 모든 vertex의 SDF 부호를 반전시키더라도 MT를 통해 동일한 표면이 추출되기 때문이다. 이는 학습 과정에서 분리된 구성 요소를 초래할 수 있다. 이러한 문제를 완화하기 위해 SDF 값을 정규화하는 SDF loss를 추가한다.
\[\begin{equation} L_\textrm{SDF} = \sum_{v_i \in V_T} \vert s (v_i) - \textrm{SDF}(v_i, M_\textrm{gt}) \vert^2 \end{equation}\]또한, 아티팩트를 방지하기 위해 예측된 vertex deformation에 $L_2$ 정규화 loss를 적용한다.
\[\begin{equation} L_\textrm{def} = \sum_{v_i \in V_T} \| \Delta v_i \|_2 \end{equation}\]최종 loss는 5가지 loss 항 모두의 가중합이다.
\[\begin{equation} L = \lambda_\textrm{cd} L_\textrm{cd} + \lambda_\textrm{normal} L_\textrm{normal} + \lambda_G L_G + \lambda_\textrm{SDF} L_\textrm{SDF} + \lambda_\textrm{def} L_\textrm{def} \end{equation}\]Experiments
1. 3D Shape Synthesis from Coarse Voxels
다음은 입력 coarse voxel로부터 shape을 합성한 결과이다.


다음은 온라인에서 수집한 coarse voxel에서 shape을 합성한 결과이다.

다음은 user study 결과이다.

2. Point Cloud 3D Reconstruction
다음은 입력 포인트 클라우드로부터 3D reconstruction을 수행한 결과이다.


다음은 MC와 MT의 오라클 성능과 비교한 결과이다.

