Neural 3D Mesh Renderer

2024. 4. 16. 11:21논문 정리

논문 (2017년 11월) : https://arxiv.org/pdf/1711.07566.pdf

참고자료 : (PaperReview) Neural 3D mesh renderer | BrStar Devlog

 

(PaperReview) Neural 3D mesh renderer

렌더링 분야에 신경망을 접목하기 위한 시도가 몇년 전부터 이어져 오고 있지만, 3D object가 Projection을 통해 screen space로 넘어간 후엔 2D에서 아무리 loss를 구해도 3D object space까지 gradient를 보낼 수

brstar96.github.io

 

#3D Rendering, #Graphics, #Vision

#3D mesh reconstruction #3D mesh editing

 

Task

우리가 3D real world를 modeling하는 과정을 3D Modeling, 구현된 3D model을 사람이 이해할 수 있는 2D image 형태로 변환하는 작업을 3D rendering라고 한다.

Rendering : The process of generating an image from the 3D model. 

출처: CS484 slide01

이 3D model을 어떤 방식으로 표현하느냐(3D representation)에 따라 rendering 방식도 조금씩 달라지는데..

3D representation format 비교
1) Point cloud : sets of 3D points.
   +) scalability $\uparrow$
   -) surface가 없어서 texture / lighting 적용 어려움.
2) Voxel : 3D extensions of pixels (widely used in CNNs)
   -) high resolution 어려움..
   -) memory efficiency $\downarrow$
3) Polygon mesh : sets of vertices and surfaces
   +) scalable & have surfaces!
   +) compact representation (only requires 3 vertices + 1 face to represent a triangle)
        => NN에 적용할 때 parameter 수 줄어듦!
   +) Geometric transformation (ex. rotation / translation / scaling / ...)에 적합.

3D format: Point cloud vs Voxel vs Polygon mesh

논문에서는 polygon mesh으로 구현된 3D model을 2D image 형태로 변환하는 작업, 3D Mesh rendering에 관심을 가진다. 

Problem

2D image processing에 대해서는, CNN 등의 neural network가 큰 발전을 이루어냈다. 

그렇다면 3D model -> 2D image 과정의 rendering에서는?

 

기존 rendering 과정은 크게 두 파트로 이루어진다 :

1) Projecting the vertices of a mesh onto the screen coordinate system.

2) Generating an image through regular grid sampling. ("Rasterization")

 

기존 work에서는, 바로 저 Rasterization 과정에서 back-propagation이 불가능했다. 그래서 rendering 과정을 neural network화 시켜서 training할 수가 없었다. 

⇒ 논문에서는 NN에 적용할 수 있는, back-propagation이 가능한 3D mesh rendering 방법을 소개한다.

 

Q. 근데 3D rendering을 NN에 적용한다는 게 무슨 소리?
A. 논문에서는 이러한 NN (supervised learning)을 만들고자 한다:
  - input : 3D mesh
  - output : rendered 2D image (input -> output으로의 process : "trainable" rendering process)
  - true : 뭐 이건 세부 task 별로 다르겠지만 어쨌든 2D image
  - output과 true를 비교하여 true에 가까워지도록 NN Optimize -> 3D mesh 수정. 

결국에 이 논문은, 3D->2D rendering 과정을 통해 생성된 2D image를 가지고 3D mesh를 더 잘 만들고 싶은 게 목적이다.

 

논문에서 targeting하는 application은 크게 2가지이다:

1. 3D mesh reconstruction from single-image : 2D image를 가지고 3D mesh를 더 잘(...) 구현하고 싶다!

2. 3D mesh editing : 3D mesh에다가 2D image 형태의 supervision을 입힌, 변형된 3D mesh를 만들고 싶다!

윗줄은 3D mesh recon. 과정 / 아랫줄은 2D-to-3D style transfer 과정

Neural Renderer

 

Neural Renderer to NN

위에서 말했던 두 가지 application에 대해 각각 NN을 구성한다. 

Single image 3D reconstruction

Objective Function : $ L = \lambda_{sl} L_{sl} + \lambda_{sm}L_{sm}$

where ... $L_{sl} $ : silhouette loss / $L_{sm}$ : smoothness loss. 

 

Gradient-based 3D mesh editing

Objective Function : $L=\lambda_{c} L_{c} + \lambda_{s}L_{s}+\lambda_{t}L_{t}$

where ... $L_c $ : content loss / $L_s$ : style loss / $ L_t$ : regularizer for noise reduction. 

 

Experiment

위에서 말했던 두 가지 application에 대해 실험한다.

Single image 3D reconstruction

Dataset : 3D objects from 13 categories in the ShapeNetCore dataset 

Baseline : Voxel-based renderer (Yan et al.)

Evaluation metric : Qualitative eval. + Quantitative eval. (reconstruction accuracy = voxel IoU)

1열: true image / 2~4열: proposed method / 5~7열: Voxel-based method
1: true image,  2: w/o smoothness regularization,  3: w/ regularization.

Gradient-based 3D mesh editing via 2D loss

3D mesh object에다가 1) 2D-to-3D style transfer2) 3D DeepDream 적용. 따로 baseline과 비교 및 평가하지는 않음. 

1) 2D-to-3D style transfer : 왼쪽 이미지의 style을 3D mesh에 삽입.
2) 3D DeepDream

Strength

+) Mesh format을 가지고도 backpropagation이 가능해졌다! -> Mesh format이 가지는 장점을 통해, 응용 가능성이 크다.

+) Voxel-based 보다 성능이 좋다. (실험적으로 증명은 안됐지만 representation 특성상 memory efficiency도 더 좋다고 함.)

Weakness

-) Time cost ... ㅜㅜ 

-) 다양한 topology에 적용 불가 ㅜㅜ 논문에 따르면, 다양한 topology에 적용하려면 faces-to-vertices relationship이 동적으로 생성되어야 한다고(?) 한다.. which is 아직 불가. 

-) 아직은 다양한 3D graphics 효과를 적용하기 어려움. 그걸 다 고려하기 위한 계산 시간도 모자라고.. 암튼 논문에서는 다양한 condition을 고려한 rendering을 보여주지 않았음.