2) FastNeRF: High-Fidelity Neural Rendering at 200FPS (ICCV 2021)

2024. 6. 3. 13:113D Vision/Nerd's NeRF

FastNeRF 아키텍처는 동일한 작업을 캐싱할 수 있는 두 개의 신경망으로 나눔.

위치 종속 네트워크 F_pos는 D 구성 요소로 구성된 딥 래디언스 맵(u, v, w)을 출력하고 F_dir는 ray 방향이 주어진 해당 구성 요소(β_1, ..., β_D)의 가중치를 입력으로 출력합니다.

 

Caching

단일 픽셀을 렌더링하기 위해 평가되어야 하는 많은 수의 샘플을 고려할 때, F 계산 비용은 NeRF 렌더링의 총 비용을 지배합니다.

따라서 NeRF를 가속화하기 위해 장면의 공간을 덮는 입력 세트에 대한 출력을 캐싱하여 F의 테스트 시간 비용을 줄이려고 시도할 수 있습니다.

그런 다음 캐시는 F를 계산하는 데 걸리는 시간의 몇 분의 일로 평가될 수 있습니다.

 

학습된 NeRF 모델의 경우 NeRF에 의해 캡처된 전체 장면을 덮는 바운딩 박스 V를 정의할 수 있습니다.

그런 다음 V의 경계 내에서 3개의 세계 공간 좌표 (x, y, z) = p 각각에 대해 k 값을 균일하게 샘플링할 수 있습니다.

유사하게, 우리는 θ ∈ <0, π> 및 ɸ <0, 2π>로 ray 방향 좌표 (θ, ɸ) = d 각각에 대해 l 값을 균일하게 샘플링합니다.

그런 다음 샘플링된 p와 d의 각 조합에 대해 F를 계산하여 캐시를 생성합니다.

 

k = l = 1024이고 16비트 부동 소수점 값이 조밀하게 저장된 standard NeRF 모델의 캐시 크기는 약 5600테라바이트입니다.

출력의 1%만 유지하면 되는 고도로 희소한 볼륨의 경우에도 캐시 크기는 여전히 소비자용 하드웨어의 메모리 용량을 심각하게 초과합니다.

이 엄청난 메모리 요구 사항은 F_NeRF의 입력으로 d와 p를 모두 사용하기 때문입니다.

d와 p의 각 조합에 대해 별도의 출력을 저장해야 하므로 메모리 복잡도는 O(k^3 l^2) 정도입니다.

 

우리의 FastNeRF 아키텍처는 캐싱을 가능하게 합니다.

k = l = 1024일 때 {σ, (u, v, w)} 및 β를 보유하는 두 개의 조밀한 캐시 크기인 D = 8의 경우 약 54GB가 됩니다.

공간의 30%를 차지하는 적당한 희소 볼륨의 경우 메모리 요구 사항이 소비자 등급 시스템의 CPU 또는 GPU 메모리에 들어갈 만큼 충분히 낮습니다.

실제로 k와 l 선택은 장면 크기와 예상 이미지 해상도에 따라 달라집니다.

많은 시나리오에서 k = 512로 더 작은 캐시만 있으면 l = 256이면 충분하므로 메모리 요구 사항이 더 낮아집니다.

두 네트워크 아키텍처의 캐시 크기를 계산하는 데 사용되는 공식에 대한 보충 자료를 참조하십시오.