Introduction
본 논문에서는 캡처된 이미지 세트를 렌더링하는 오차를 최소화하기 위해 연속적인 5D 장면 표현의 파라미터를 직접 최적화하여 뷰 합성의 오랜 문제를 새로운 방식으로 해결하였다.
NeRF는 정적 장면의 공간의 각 지점 에서 각 방향 로 방출되는 광도(radiance)와 각 지점의 밀도를 출력하는 연속적인 5D 함수로 표현한다. (여기서 광도(radiance)란 그냥 RGB 값이라고 생각해도 좋다.)
여기서 밀도는 얼마나 많은 광도가 를 통과하는 광선에 의해 누적되는지를 제어하는 미분 가능한 불투명도의 역할을 한다.
본 논문의 방법은 convolutional layer를 사용하지 않고 MLP만을 사용하여 이 함수를 표현하며, 하나의 5D 좌표 에서 하나의 밀도와 뷰에 따른 RGB 색상으로 회귀하여 최적화한다.
특정 시점에서 이 neural radiance field(NeRF)를 렌더링하기 위해 다음을 수행한다.
- 카메라 광선을 따라 이동하여 샘플링된 3D 포인트 집합을 생성하고,
- 해당 점들과 각 점에 대한 2D 시점 방향을 신경망에 대한 입력으로 사용하여 색상 및 밀도 세트를 출력한다.
- 고전적인 볼륨 렌더링 기술을 사용하여 이러한 색상과 밀도를 2D 이미지로 축적한다.
이 프로세스는 미분 가능하기 때문에 gradient descent를 사용하여 관찰된 각 이미지와 렌더링된 해당 뷰 사이의 오차를 최소화하여 모델을 최적화할 수 있다.
여러 뷰에서 이 오차를 최소화하면 신경망이 실제 기본 장면 콘텐츠가 포함된 위치에 높은 밀도와 정확한 색상을 할당하여 장면의 일관된 모델을 예측할 수 있다.
전체 파이프라인은 아래 그림과 같다.
저자들은 복잡한 장면에 대한 NeRF 표현을 최적화하는 기본 구현이 충분히 높은 해상도의 표현으로 수렴되지 않으며 카메라 광선당 필요한 샘플 수가 비효율적이라는 것을 발견했다.
저자들은 MLP가 더 높은 주파수의 함수를 나타낼 수 있도록 하는 Positional Encoding으로 입력 5D 좌표를 변환하여 이러한 문제를 해결하고, 이 고주파수의 장면 표현을 적절하게 샘플링하는 데 필요한 쿼리 수를 줄이기 위해 계층적 샘플링 절차를 제안하였다.
본 논문의 접근 방식은 volumetric 표현의 이점을 상속한다. 둘 다 복잡한 실제 형상과 모양을 표현할 수 있으며 투영된 이미지를 사용하는 경사 기반 최적화에 적합하다.
결정적으로, 본 논문의 방법은 고해상도에서 복잡한 장면을 모델링할 때 이산화된 복셀 그리드의 엄청난 저장 비용을 극복한다. (NeRF는 장면을 이산적인 복셀로 나누는 대신, 심층 신경망을 사용하여 연속적인 5D 함수로 표현하므로!)
Neural Radiance Field Scene Representation
본 논문을 입력을 3D 위치 및 2D 시점 방향 로 하고 출력을 방출된 색상 및 부피 밀도 로 하는 5D 벡터 값 함수로 연속적인 장면을 나타낸다.
실제로 방향을 3D Cartesian 단위 벡터 로 표현한다.
MLP 네트워크 를 사용하여 이 연속적인 5D 장면 표현을 근사화하고 가중치 를 최적화하여 각 입력 5D 좌표에서 밀도와 색상으로 매핑한다.
네트워크가 위치 의 함수로 밀도 를 예측하도록 제한하고 RGB 색상 가 위치와 시점 모두의 함수로 예측되도록 하여 표현이 멀티뷰 일관성을 갖도록 권장한다.
이를 위해 MLP 는 먼저 8개의 fully-connected layer(ReLU와 레이어당 256개의 채널 사용)로 입력 3D 좌표 (후술하겠지만 정확히는 positional encoding을 통해 변환된 벡터이다.)를 처리하고 와 256차원 feature 벡터를 출력한다.
그런 다음 이 feature 벡터는 카메라 광선의 시점 방향과 concatenate되어 뷰에 따른 RGB 색상을 출력하는 하나의 추가 fully-connected layer(ReLU와 128개 채널 사용)로 전달된다.
위 그림은 입력 뷰 방향을 사용하여 non-Lambertian effect를 표현하는 방법에 대한 예시이다.
위 그림에서 볼 수 있듯이 뷰 의존성 없이 학습된 모델(입력으로 만)은 빛의 반사를 표현하는 데 어려움이 있다.
Volume Rendering with Radiance Fields
본 논문의 5D NeRF 표현은 공간의 모든 지점에서 밀도와 광도(radiance)로 장면을 나타낸다.
저자들은 고전적인 볼륨 렌더링의 원리를 사용하여 장면을 통과하는 모든 광선의 색상을 렌더링한다.
밀도 는 광선이 위치 의 극소 입장에서 끝나는 미분 확률로 해석될 수 있다.
Near bound 과 far bound 를 갖는 카메라 광선 의 예상 색상 은 다음과 같다.
함수 는 에서 까지 광선을 따라 누적된 투과율, 즉 광선이 다른 입자에 부딪히지 않고 에서 로 이동할 확률을 나타낸다.
앞에 sample들의 밀도 값을 누적해서 그 값이 클수록, 뒤의 sample들은 잘 보이지 않을 확률이 높기 때문에 이를 반영한 것이라고 이해했다.
연속적인 NeRF에서 뷰를 렌더링하려면 원하는 가상 카메라의 각 픽셀을 통해 추적되는 카메라 광선에 대해 이 적분 을 추정해야 한다.
구적법(quadrature)을 사용하여 이 연속적인 적분을 수치적으로 추정한다.
일반적으로 이산화된 복셀 그리드를 렌더링하는 데 사용되는 결정론적 구적법은 MLP가 고정된 이산 위치 집합에서만 쿼리되기 때문에 표현의 해상도를 효과적으로 제한한다. (매번 지점에서만 샘플링되기 때문이다.)
대신, 저자들은 개의 균일한 간격의 bin으로 분할한 다음 각 bin 내에서 하나의 샘플을 균등 분포 에서 무작위로 추출하는 계층화된 샘플링 접근 방식을 사용하였다.
적분 값을 추정하기 위해 샘플들의 이산적인 집합을 사용하지만 계층화된 샘플링을 이용하면 최적화 과정에서 연속적인 위치에서 MLP가 평가되므로 연속적인 장면 집합을 나타낼 수 있다.
이러한 샘플들을 사용하여 다음과 같이 을 추정한다.
여기서 는 인접한 샘플 사이의 거리이다. 밀도를 이런 식으로 표현하는건 렌더링 분야에서 흔하게 쓰이는 기법이라고 한다.
Optimizing a Neural Radiance Field
본 논문은 고해상도의 복잡한 장면을 표현할 수 있도록 두 가지 개선 사항을 도입하였다.
첫 번째는 MLP가 고주파 함수를 나타내는 데 도움이 되는 입력 좌표의 positional encoding이고, 두 번째는 이 고주파 표현을 효율적으로 샘플링할 수 있는 계층적 샘플링 절차이다.
1️⃣ Positional encoding
저자들은 신경망 가 좌표에서 직접 연산하도록 하면 색상과 형상의 고주파 변화를 나타내는 렌더링 성능이 좋지 않다는 것을 발견했다.
이는 On the Spectral Bias of Neural Networks 논문의 결과와 동일하다.
해당 논문은 신경망이 저주파 함수를 학습하는 쪽으로 편향되어 있음을 보여주었다. 또한 입력을 신경망에 전달하기 전에 고주파 함수를 사용하여 더 높은 차원 공간에 입력을 매핑하면 고주파 변화가 포함된 데이터를 더 잘 피팅할 수 있음을 보여주었다.
저자들은 이러한 발견을 활용하고 를 두 함수 의 구성(하나는 학습되고 하나는 학습되지 않음)으로 재구성하면 성능이 크게 향상된다.
여기서 는 에서 더 높은 차원 공간인 로의 매핑이고 은 여전히 단순하게 일반 MLP이다. 사용하는 인코딩 함수는 다음과 같다.
는 의 3개 좌표 값 각각과 Cartesian 시점 방향 단위 벡터 의 세 성분에 개별적으로 적용된다.
저자들은 실험에서 에 대해 , 에 대해 로 설정했다.
2️⃣ Hierarchical volume sampling
각 카메라의 광선을 따라 개의 쿼리 지점에서 NeRF 신경망을 조밀하게 평가하는 렌더링 전략은 비효율적이다. 렌더링된 이미지에 기여하지 않는 여유 공간과 가려지는 영역은 여전히 반복적으로 샘플링된다.
저자들은 볼륨 렌더링의 초기 연구에서 영감을 얻고 최종 렌더링에 대한 예상 효과에 비례하여 샘플을 할당하여 렌더링 효율성을 높이는 계층적 표현을 제안하였다.
장면을 표현하기 위해 하나의 신경망을 사용하는 대신, “coarse”(대충 한 번 학습한) 네트워크와 “fine”(다시 한 번 더 학습시킨) 네트워크 두 개를 동시에 최적화한다.
먼저 계층화된 샘플링을 사용하여 일련의 개의 위치를 샘플링하고 이러한 위치에서 coarse 네트워크를 평가한다.
이 coarse 네트워크의 출력을 바탕으로 광선을 따라 더 많은 정보를 가진 샘플링을 수행한다.
이를 위해 먼저 coarse 네트워크 의 알파 합성 색상을 광선을 따라 샘플링된 모든 색상 의 가중합으로 다시 쓴다.
이러한 가중치를 로 정규화하면 광선을 따라 부분적으로 일정한 확률밀도함수(PDF)가 생성된다.
역변환 샘플링(inverse transform sampling)을 사용하여 이 분포에서 개의 위치들의 집합을 샘플링하고, 첫 번째와 두 번째 샘플 집합의 합집합에서 fine 네트워크를 평가하고, 모든 개의 샘플을 사용하여 광선의 최종 렌더링된 색상 을 계산한다.
이 절차에서는 보이는 콘텐츠가 포함될 것으로 예상되는 영역에 더 많은 샘플을 할당한다.
이는 중요도 샘플링과 비슷한 목표를 가지지만, 각 샘플을 전체 적분의 독립적인 확률적 추정으로 처리하는 대신 샘플링된 값을 전체 적분 영역의 nonuniform discretization으로 사용한다.
3️⃣ Implementation details
각 장면에 대해 별도의 NeRF 표현 신경망을 최적화한다. (사실상 이 한 장면을 학습하는 데 엄청난 시간이 드는게 기존 NeRF 모델의 가장 큰 단점이다.)
이를 위해서는 장면의 캡처된 RGB 이미지, 해당 카메라 포즈, intrinsic parameter, 장면 경계로 구성된 데이터셋만 필요하다.
각 최적화 iteration마다 데이터셋의 모든 픽셀 집합에서 카메라 광선 batch를 무작위로 샘플링한 다음 계층적 샘플링을 따라 coarse 네트워크의 개의 샘플과 fine 네트워크의 개의 샘플을 쿼리한다.
그런 다음 볼륨 렌더링 절차를 사용하여 두 샘플 집합 모두에서 각 광선의 색상을 렌더링한다.
Loss는 단순히 coarse 렌더링과 fine 렌더링 모두에 대해 렌더링된 픽셀 색상과 실제 픽셀 색상 간의 총 제곱 오차이다.
여기서 은 각 batch의 광선 집합이고, 는 실제 RGB 색상, 는 coarse 네트워크의 예측 RGB 색상, 는 fine 네트워크의 예측 RGB 색상이다.
최종 렌더링이 에서 나오지만 의 loss도 최소화하여 coarse 네트워크의 가중치 분포를 사용하여 fine 네트워크에 샘플을 할당할 수 있다.
Experiments
1️⃣ Comparisons
다음은 각 데이터셋에 대하여 이전 연구들과 정량적으로 비교한 표이다.
다음은 합성 데이터셋에서의 새로운 뷰 합성 결과를 비교한 것이다.
다음은 현실 이미지 데이터셋에서의 새로운 뷰 합성 결과를 비교한 것이다.
2️⃣ Ablation studies
다음은 ablation study 결과이다. PE는 positional encoding, VD는 뷰 의존성, H는 계층적 샘플링이다.
References
해당 글은 아래 동영상과 글을 참고하였습니다. ( _ _ )