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.

이 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 / ...)에 적합.

논문에서는 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를 만들고 싶다!

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)


Gradient-based 3D mesh editing via 2D loss
3D mesh object에다가 1) 2D-to-3D style transfer와 2) 3D DeepDream 적용. 따로 baseline과 비교 및 평가하지는 않음.


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을 보여주지 않았음.