Neural Template: Topology-aware Reconstruction and Disentangled Generation of 3D Meshes[CVPR 2022]

이한결·2025년 7월 2일

이미지나 voxel을 입력으로 받아서 Mesh를 생성하는 논문입니다. Topology와 Shape 정보를 각각 추출해서 변형하는데도 용이하다고 했기 때문에 어떻게 진행했는지 살펴보도록 하겠습니다.

Method

The DT-Net Framework

위의 그림과 같이 크게 Topology Formation Module과 Shape Deformation Module이 존재합니다. 우선 입력 I(2D image or 3D voxel)이 Feature Encoder를 통해서 topology code ZTZ_T와 shape code ZSZ_S를 생성합니다. ZTZ_T는 neural template(T)를 이용해서 topology를 생성하고, ZSZ_S를 이용해서 neural template를 refine하는 guidance 역할을 합니다.

Topology Fromation Module에서 ZTZ_T가 학습하는 함수 f에 의해서 T=f(ZT)T = f(Z_T)로 여러개의 convex(볼록 다면체)를 생성하고, shape deformation module에서 invertible homeomorphic flow function g를 학습해서 T를 변형합니다(M=g(ZS,T)M = g(Z_S,T)). f와 g함수는 모두 neural network 이고 추후에 자세히 설명하도록 하겠습니다.

T에서 주목할점은 그림에서 보이는것처럼 occupancy function(object의 안인지 밖인지 표현)으로 표현되는 implicit(TIT_I)와 vertices와 faces로 구성된 3D mesh를 표현하는 explicit(TET_E) 2가지 방식의 표현을 사용한다는 점입니다.

학습할 때는 ground truth mesh M^\hat{M}으로 부터 함수 g의 inverse를 통해서 TI^\hat{T_I}를 얻고 이를 이용해서 위의 수식과 같이 loss function을 사용하면서 학습합니다.

Implicit representation

g함수는 3차원에서 3차원으로 변환되는 Flow 함수로서(아래에서 자세히 설명) 학습할 때 ground truth TI^\hat{T_I}의 occupancy function과의 비교를 통해서 진행됩니다.

Explicit representation

TET_E와 M은 모두 vertex와 face로 구성된 mesh입니다. 두 mesh의 topology는 같기 때문에 face는 같지만, vertex는 다릅니다. 두 mesh의 vertex를 매칭시키기 위해서 g 함수가 ZSZ_S를 기반으로 학습됩니다.

Framework Design

해당 문단에서는 DT-Net이 어떻게 설계 되었는지 핵심 아이디어 4가지를 요약해서 설명하고 있습니다.

  1. 입력에 따라 Topology가 달라지는 템플릿을 학습한다.

기존에는 구와 같은 고정적인 template을 사용했지만, 현재는 입력에 따라 템플릿을 다르게 생성합니다.

  1. topology와 shape 학습을 분리해서 topology는 보존한 채 변형을 수행

Topology와 shape을 분리 했기 때문에 topology를 유지하면서 shape를 변형할 수 있습니다.

  1. Topology 정보에 대한 별도의 주석 없이 학습이 가능합니다.

Topology에 대한 주석 없이 ground truth와 비교해가면서 학습이 가능합니다.

  1. topology와 shape 정보를 분리해서 학습하고 조작 가능하게 만듭니다.

2번과 비슷한 말인데 하나를 고정하고 하나를 변형할 수 있다는 것입니다.

Network Architecture

Topology formation module

BSPNet의 논문에 영감을 얻어서 입력값 ZTZ_T가 들어오면 함수 f는 MLP를 통해서 첫번째로 H를 예측합니다. H는 ax+by+cz+d=0이라는 평면(4개의 변수)를 NhN_h개만큼 예측하는 함수입니다. 즉 H의 차원은 Hh4H_h*4가 됩니다.

이렇게 생성된 평면들이 어떤 NCN_C개의 convex중에서 어떤것에 속하는지에 대한 learnable binary matrix B를 학습합니다. B는 binary mask로 NhHCN_h*H_C의 차원을 갖습니다.

마지막으로 convex들은 neural template T로 합쳐집니다. T는 implicit representation과 explicit representation이 존재하고 T의 implicit representation이 이전에 봤던 수식을 통해서 ground truth랑 비교를 통해서 학습이 진행되면서 T를 변형시키고, 이러면 자동으로 T가 변형되기 때문에 mesh도 변형됩니다. 또한 T가변형 되면 B의 값도 변형되게 됩니다.

Shape deformation module

Topology는 보존하면서 shape을 변환하는 invertible한 함수 g는 점진적으로 T를 ZSZ_S에 맞게 변형하는neural ordinary differential equation module (NODE)을 선택했습니다.

새로운 점 pTp_T는 기존 T에서의 점 p0p_0에서 추가적인 변형을 가한 상태입니다.그리고 각각의 값이 output과 input이 됩니다. 적분에서 사용하는 윗첨자 T는 step의 수를 정하는 하이퍼파라미터입니다. 해당 방식은 numerical solver를 이용해서 풀게됩니다.

Network Training

일반적으로 topology를 학습하려면 객체에 구멍의 개수라던지, 표면이 연결되어 있는지등 명시적인 정보가 필요합니다. 하지만 해당 모델은 ground truth mesh 하나만 주어지고 그로부터 topology를 학습합니다.

이를 위해서 구성한 loss는 다음과 같습니다.

Align Loss

LalignL_{align}은 ground truth mesh로부터 inverse된 TI^(=g1(ZS,MI^))\hat{T_I}(=g^{-1}(Z_S,\hat{M_I}))TI(=f(ZT))T_I(=f(Z_T))의 비교를 통해서 진행합니다. 한마디로 각 vertex의 occupancy value의 값을 비교해서 일치하도록 학습합니다.

Stage1: relax approximation

Least-squares 방식을 사용해서 학습을 진행하면서 2개의 값이 비슷해지도록 합니다.

Stage2: accurate alignment

Cross entropy 방식을 사용해서 원본 값과 정확히 일치하도록 학습합니다.

LBL_B Loss

BSPNet에서 학습한 방식으로 너무 많은 convex가 생성되는 것을 방지하기 위한 loss를 사용합니다. 보통 B의 l1 norm이나 entropy를 사용하여 정규화 합니다.

Shape Generation with Controllability

Topology와 Shape를 따로 제어할 수 있기 때문에 이전에는 못했던 새로운 변형들을 할 수 있습니다.

Object Remix: 서로 다른 3D 객체를 섞어서 만들 수 있다.

Object Interpolation: 두 객체의 topology 또는 shape 공간에서 부드럽게 이어주는 중간 형태들 생성이 가능합니다.

Latent Code Arithmetic: ZTZ_TZSZ_S에서 벡터 연산을 통해 의미 있는 조작 수행이 가능합니다.

  • 예를 들어서 수납 공간이 있는 테이블 ZT1Z_T^1에서 없는 테이블 ZT2Z_T^2를 빼면 수납 공간이라는 ZTZ_T가 생성됩니다.

Experiment

limitation

  1. 복잡하고 정밀한 표현에는 한계가 존재(복잡한 의자 다리, 기계 부품)
  2. 학습한 데이터 범위 안에서의 변형만 자유롭다.

학습한 데이터

  • ShapeNet(13개 카테고리: airplane, chair, table, lamp, cabinet, car, couch, speaker 등)
profile
열정으로 가득할 페이지

0개의 댓글