Manduss life
[논문] DONeRF : Towards Real-Time Rendering of Compact Neural Radiance Fields using Depth Oracle Networks 본문
[논문] DONeRF : Towards Real-Time Rendering of Compact Neural Radiance Fields using Depth Oracle Networks
만두쓰 2022. 1. 4. 15:34DONeRF
- large scale synthetic dataset으로 진행
- surface 점을 예측하면 필요한 샘플저의 수를 줄일 수 있음
- oracle network는 NeRF의 coarse network와 비슷
- no GT depth 버전을 추가하여 depth 영상 없이도 성능 개선 가능을 보임
- 실험 결과를 보면 기존 NeRF에 DONeRF의 strategy(Space warping + logarithmic sampling)를 추가한 실험 추가
1. View Cell을 사용한 Ray 결합
DONeRF는 ray 결합을 위해 View Cell의 개념을 도입하였다. View Cell은 모든 ray의 시작점의 위치를 담는 3차원 직육면체이다. View Cell 내부에 위치한 ray들은 동일한 깊이 정보를 갖도록 하는 ray 결합 방안을 제안하였다. 아래 그림과 같이 view cell을 포함하는 3차원 구를 생성한다. 구 내부의 ray의 시작 위치를 ray와 구가 만나는 점으로 매핑하여, 그 뒤에 시작 위치가 있는 ray와 동일한 깊이 값을 갖게 된다. 크기가 작은 View Cell일수록 정확도는 높아지고, 크기가 큰 View Cell일수록 결합되는 ray가 많아져 정확도는 감소하지만 메모리적 측면에서 효율적이다. 그러나 시점들의 위치가 View Cell 내부에 존재해야 한다는 제한점이 존재한다.
2. Depth Oracle 네트워크
DONeRF는 NeRF의 Volume Density 개념과 비슷하게 특정 위치에서 물체가 존재하는 확률값을 추정하는 네트워크를 제안하였다. ray를 특정 개수의 구역으로 나누어 각 클래스에 물체가 존재하는 확률인 Classification Value를 BCE(Binary Cross Entropy) Loss를 사용하여 학습한다.
먼저, 생성된 ray를 특정 N개의 이산적인 클래스로 나눈다. 각 클래스의 Classification Value가 존재한다. 아래 수식은 2차원 영상의 픽셀좌표 $i, j$에서의 $z$번째 클래스의 Classification Value이다. ray 위에 깊이 정보로부터 얻은 하나의 점이 존재하는데 그 점의 위치에 해당하는 클래스만 1의 값을 갖고, 나머지 클래스는 0의 값을 갖는다. 이 value를 사용할 경우 이산적인 값만이 도출되는데 학습을 위하여 Classification Value의 연속적인 값으로의 변환이 필요하다. 그리하여 Classification Value의 연속적인 값을 획득하기 위해 Filtering 과정을 제안하였다.
$$C_{i, j}(z) = \left\{\begin{matrix}
1, if\ d_{z}\leq d_{s}< d_{z+1} \\
0, otherwise\ \ \ \ \ \ \ \ \ \ \ \
\end{matrix}\right.$$
아래 그림과 같이 Classification Value를 이미지 평면(x, y)과 깊이(z) 기반으로 Filtering을 수행한다. 아래 수식은 KxK size를 갖는 2D kernel로 이미지 평면 기반의 Filtering 식이다. z번째 클래스의 이미지 평면 ($i, j$) 좌표와 이를 중점으로 한 kernel의 각 픽셀의 Euclidean Distance로 픽셀간 거리를 반영하여 kernel 크기만큼의 주변 픽셀의 Classification Value를 계산한다. 해당 픽셀과 거리가 멀수록 그 픽셀의 Classification Value는 감소된다. 계산된 Classification Value 중 최대값을 해당 픽셀의 Classification Value($\hat{C}_{i, j}(z)$)로 취한다.
$$\hat{C}_{i, j}(z) = \max_{u, v\in \pm \left \lfloor K/2 \right \rfloor}\left ( C_{i+u, j+v}(z) - \frac{\sqrt{u^{2}+v^{2}}}{\sqrt{2}\left \lfloor K/2 \right \rfloor} \right )$$
아래 수식은 L size를 갖는 1D kernel로 깊이 기반 Filtering 식이다. 이미지 평면 기반으로 획득한 Classification Value로 추가적인 Filtering을 수행한다. ray의 origin으로부터 z번째 클래스 기준으로 양쪽 L/2 개수의 클래스의 Classification Value를 사용한다. 해당 클래스와 멀수록 작은 weight, 가까울수록 큰 weight를 곱해주어 각 확률값을 합산한다. 1보다 클 경우, Classification Value($\acute{C}_{i, j}(z)$)를 1로 설정한다.
$$\acute{C}_{i, j}(z) = \min{\left ( \sum_{k=-\left \lfloor L/2 \right \rfloor}^{\left \lfloor L/2 \right \rfloor}\hat{C}_{i, j}(z+k)\frac{\left \lfloor L/2 \right \rfloor +1 - \left | k \right |}{\left \lfloor L/2 \right \rfloor + 1}, 1\right )}$$
이러한 Filtering 과정으로 ray의 각 클래스마다 존재 확률값을 구할 수 있고, 이로부터 NeRF의 계층적 볼륨 샘플링 방안을 사용하여 샘플링을 수행한다. DoNeRF는 2, 4, 8, 16개의 샘플 수를 사용하고, 각 샘플점의 색상 학습은 NeRF와 동일한 방법으로 수행된다.
'논문' 카테고리의 다른 글
[논문] NeRF(Neural Radiance Field) 정리 (0) | 2022.01.04 |
---|