GRAF : Generative Radiance Fields for 3D-Aware Image Synthesis
<aside>
💡
NeRF가 novel view synthesis 잘하던데,,, NeRF랑 GAN으로 3D-Aware generation 해보자
Generation Pipeline : GAN
Representation : NeRF
</aside>
✍️ Abstract
기본적으로 Generator와 Discriminator가 존재하는 GAN 아키텍처를 사용하는데, generator에서 2D 이미지를 생성하기 위해서 Radiance Fields를 사용한다. 이때 다음과 같은 점에서 NeRF setting과 조금 다르다.
- 그냥 vanila NeRF는 한 scene (Lego, fern etc)을 MLP 에 fitting하는 용도이지만, GRAF는 MLP에서 다양한 scene이 나오길 원하기 때문에 input으로 random성을 줄 noise가 필요하다. 이게 Shape code와 Apperance code이고, 이런 code들에 condition되어 있기 때문에 GRAF에서 사용하는 Radiance fields를 Conditional Radiance Field하고 부른다.
- Patch 도입. training시 전체 이미지를 만들어 내면서 하면 computation이 너무 비싸다. 그래서 이미지의 한 부분인 patch를 생성하고 이를 discriminate함. 어떤 patch를 쓸지는 random 으로 결정함. inference할 땐 whole image가 patch라고 생각하고 생성하면 됨.
📌 Main Method

Generator
The Generator $G_{\theta}$ takes
- Camera matrix $\bold{K}$
- Camera Pose $\bold{\xi}$ $\sim p_{\xi}$(uniform distribution)
- 2D sampling pattern $\nu$ $\sim p_{\nu}$
- Shape codes $\bold{z}_s \isin \mathbb{R}^m$
- Appearance codes $\bold{z}_a \isin \mathbb{R}^n$
as input, and outputs an image patch $\bold{P}^{\prime}$ which is discriminated by $D_{\phi}$
Generator에서 2D patch(image)를 생성해내는 과정은 다음과 같다.
1. Ray sampling
카메라 matrix, 카메라 pose, sampling pattern을 사용하여 $R$개의 RAY를 sampling한다
2. Point Sampling

$R$개의 ray에서 각각 $N$개의 point를 sampling한다!