NeRFactor: Neural Factorization of Shape and Reflectance Under an Unknown Illumination

NeRFactor paper review

Featured image

NeRFactor: Neural Factorization of Shape and Reflectance Under an Unknown Illumination Xiuming Zhang, Pratul P. Srinivasan, Boyang Deng, Paul Debevec, William T. Freeman, Jonathan T. Barron TOG 2021 (Proc. SIGGRAPH Asia)

Introduction


논문에서 중점적으로 다루는 문제는 어떤 Object의 geometry와 Material 속성을 Multi-view 이미지로부터 복원하는 것 입니다. 특히, Multi-view 이미지와 이미지들에 대응하는 Camera들을 입력으로 받았을 때, Ojbect의 Shape과 Spatial하게 변화하는 Reflectance를 복원하는 것 입니다. (하나의 Unknown lighting condition을 가정) 논문에서는 이 문제를 해결하기 위한 Key idea로, NeRF(Neural Radiance Fields, ECCV 2020)의 volumetric geometry를 surface representation으로 Distill하는것, 그리고 Reflectance와 environment lighting을 해결하는 것과 동시에 Geometry를 함께 Refine하는 것을 제시하였으며 NeRFactor representation이라는 것을 소개하였습니다.

NeRFactor(Neural Factorization)은 3D neural field라는 것을 복원하기위해 최적화됩니다. 여기서 3D neural field는 Surface normal, Light visibility, Albedo, Bidirectional Reflectance Distribution Functions(BRDFs)를 표현하며, 특별한 supervision없이 Re-rendering loss, Smoothness prior, Data-driven BRDF prior를 활용해 최적화합니다. 따라서, NeRFactor는 Multi-view 이미지(+ camera)를 입력으로 받아서 3D neural fields를 잘 표현할 수 있도록 MLP를 통해 최적화(Parameterized)되고, 이를 통해 Re-lighting, Material editing 등의 어플리케이션에 활용될 수 있습니다.

Method


main 그림 1) NeRFactor model

Assuming
  1. Input: Multi-view 이미지 + Camera
  2. Output : Surface normal, Light visibility, Albedo, Reflectance
  3. One unknown illumination condition
Shape

Input으로 Multi-view 이미지와 Camera를 입력으로 받으면, NeRF(최적화 완료된 상태)를 통해 Initial geometry를 먼저 계산합니다. 위에서 언급한대로, 최적화된 NeRF를 통해 Density를 계산하고 Continuous surface representation으로써 사용하게 됩니다. 자세하게 설명하면, NeRF를 통해 Density를 계산하고 이를 통해 Depth(Distance t)를 계산한 후에 Surface point를 계산합니다 (아래 식).

surface_point 식 1) Surface point

Surface point는 그림 1)에서처럼 Visibility, BRDF, Albedo, Normal을 계산하기위한 MLP의 입력으로 사용됩니다.

먼저, Normal을 구하기 위해 NeRF의 density의 Gradient를 계산합니다. 이 방법을 통해 Normal을 계산하면 그림 2)와 같이 Artifact가 발생하기 때문에 Normal MLP를 통해 Re-parameterize하고, 식 2)를 통해 최적화됩니다.

normal 그림 2) Surface normal

normal_loss 식 2) Normal loss function

두번째로, Visibility를 NeRF의 density로부터 계산합니다. 마찬가지로, 그림 3)과 같이 Noise가 발생하기 때문에 Visibility MLP를 통해 Re-parameterize하고, 식 3)을 통해 최적화됩니다.

visibility 그림 3) Light visibility

visibility_loss 식 3) Visibility loss function

Reflectance

Reflectance를 모델링하기 위해, 먼저 Albedo MLP를 통해 입력 Surface location에서의 Albedo를 학습하였습니다.

albedo_loss 식 4) Albedo loss

다음으로, BRDF를 표현하기위해 먼저 그림 1)에서처럼 BRDF identity MLP를 통해 Latent code를 계산하고, BRDF MLP의 입력으로 사용됩니다. BRDF MLP는 Generative Latent Optimization approach (MERL 데이터셋으로 Pre-trained)를 활용해 Latent code와 Albedo 그리고 입사각과 반사각을 Rusinkiewicz 좌표로 변환하여 입력으로 받고 Reflectance를 계산합니다.

Rendering

지금까지 과정을 통해 계산한, Surface normal, Visibility, Albedo, BRDF, Lighting을 이용해 최종 Color를 Rendering합니다. Rendering은 Rendering equation을 통해 계산하며 식은 아래와 같습니다.

rendering_eq 식 5) Rendering equation

최종 Loss는 식 1) ~ 식 4)를 더한 Reconstuction loss로 활용됩니다.