Mip-NeRF : A Multiscale Representation for Anti-Aliasing Neural Radiance Fields

윤준영·2025년 3월 7일

Computer Vision

목록 보기
8/13

0. Limitations in NeRF

NeRF는 3D object 또는 scene을 촬영한 이미지들로 향하는 ray 위의 점을 샘플링해서 학습한 모델을 이용하여 새로운 시점에 대한 이미지를 렌더링하는 기술이다. 이 기법은 일정한 거리에서 촬영한 이미지들에 대해 좋은 렌더링 결과를 보여줬지만, 가까이에서 바라보는 시점에 대한 이미지는 흐릿한 현상이 발생했고, 거리가 먼 시점에 대한 이미지는 계단현상이 발생하는 한계를 보였다. 또한, NeRF는 fine network와 coarse network를 통해 최종 픽셀 값을 결정하게 되는데, 큰 해상도의 이미지는 ray 수도 많을 뿐더러 샘플링하는 점의 수까지 많아지다보니 모델에 입력할 query가 많아서 하나의 이미지를 렌더링하는데 오랜 시간이 걸린다는 단점이 있었다.

본 논문은 이러한 한계점을 극복하고자 새로운 방식을 제안한다.

1. Cone tracing

우선, 기존의 NeRF는 카메라에서 object나 scene의 3D point를 향해 발사되는 ray 위의 점들을 샘플링한 후 누적하여 픽셀의 최종 색을 결정했다. Mip-NeRF는 이런 얇은 광선 대신 콘(cone) 형태의 ray를 발사한 후 일정 구간으로 쪼개진 conical frustum 안의 좌표들을 사용하게 된다.
t0,t1t_0, t_1 시점 사이의 Conical frustum 안에 있는 3D 좌표들인 x\bold{x}는 다음과 같다.

F(x,o,d,r˙,t0,t1)=1{(t0<dT(xo)d2<t1)(dT(x0)d2xo2>11+(r˙d2)2)}F(\bold{x}, \bold{o}, \bold{d}, \dot{r}, t_0, t_1)=1 \bigg\{\bigg(t_0 < \frac{\bold{d}^T(\bold{x}-\bold{o})}{||\bold{d}^2||} < t_1 \bigg) \wedge \bigg(\frac{\bold{d}^T(\bold{x}-\bold{0})}{||\bold{d}||_2||\bold{x}-\bold{o}||_2} > \frac{1}{\sqrt{1+(\frac{\dot{r}}{||\bold{d}||_2})^2}} \bigg) \bigg\}

Wedge 기호를 기준으로 왼쪽 부분은 ray marching이 수행되는 거리의 범위, 오른쪽 부분은 각도의 범위를 나타낸 것으로, 해당 범위에 속한 좌표들만을 사용하는 것이다.

하지만, 얻어낸 conical frustum 위의 좌표들에 단순하게 positional encoding(γ(x)\gamma(\bold{x}))을 해서 계산을 한다면 다음의 적분식은 closed form 형태가 아니므로 계산을 할 수 없다.

γ(o,d,r˙,t0,t1)=γ(x)F(x,o,d,r˙,t0,t1)dxF(x,o,d,r˙,t0,t1)dx\gamma^*(\bold{o}, \bold{d}, \dot{r}, t_0, t_1) = \frac{\int{\gamma(\bold{x})F(\bold{x}, \bold{o}, \bold{d}, \dot{r}, t_0, t_1)d\bold{x}}}{\int{F(\bold{x}, \bold{o}, \bold{d}, \dot{r}, t_0, t_1)}d\bold{x}}

그래서 이 conical frustum을 추후에 다룰 integrated positional encoding (IPE) 를 위해 다변수 가우시안으로 근사화한다. 이를 위해 F(x,)F(\bold{x}, \cdot)의 평균과 공분산을 구해야 한다. conical frustum은 원형이고 대칭이므로, 이 Gaussian 분포는 광선과 평행한 방향으로의 평균 거리 μt\mu_t, 광선과 평행한 방향으로의 분산 σt2\sigma^2_t, 광선과 수직인 방향으로의 분산 σr2\sigma^2_r 세 개의 값으로 설명할 수 있다.

우선 기존의 Cartesian space에 정의된 좌표 x=(x,y,z)\bold{x} = (x,y,z)는 광선이 퍼지는 효과를 제대로 반영하기 어려우므로, (r,t,θ)(r, t, \theta) 좌표계로 변환해준다. 여기서 rr은 radius로 광선의 퍼짐 정도를, tt는 광선의 깊이(depth), θ\theta는 광선의 기울기를 나타낸다. 여기서 x,y,zx, y, z는 각각 rtcosθ,rtsinθ,trt\cos{\theta}, rt\sin{\theta}, t로 나타낼 수 있고, 이렇게 변환된 변수는 미분가능하게 해준다. 그 이유는 :

dxdydz=Jdrdθdtdxdydz = |J|drd\theta dt

여기서 Jacobian 행렬 JJ는 다음과 같이 구성되고,

J=[dxdrdxdtdxdθdydrdydtdydθdzdrdzdtdzdθ]=[tcosθrcosθrtsinθtsinθrsinθrtcosθ010]J = \begin{bmatrix}\frac{dx}{dr} & \frac{dx}{dt} & \frac{dx}{d\theta} \\ \frac{dy}{dr} & \frac{dy}{dt} & \frac{dy}{d\theta} \\ \frac{dz}{dr} & \frac{dz}{dt} & \frac{dz}{d\theta}\end{bmatrix} \\ = \begin{bmatrix}t\cos{\theta} & r\cos{\theta} & -rtsin{\theta} \\ t\sin{\theta} & r\sin{\theta} & rt\cos{\theta} \\ 0 & 1 & 0\end{bmatrix}

그럼 J=rt2|J| = rt^2이 되므로 dxdydz=(rt)drdθdtdxdydz = (rt)drd\theta dt가 되기 때문이다.

Conical frustum F(x,)F(\bold{x}, \cdot)의 부피 VV는 다음과 같다.

V=02πt0t10r˙rt2drdtdθ=r˙22t13t0332π=πr˙t13t033V = \int_{0}^{2\pi}\int_{t_0}^{t_1}\int_{0}^{\dot{r}}rt^2drdtd\theta \\ = \frac{\dot{r}^2}{2}\cdot\frac{t_1^3-t_0^3}{3}\cdot2\pi \\ = \pi\dot{r}\frac{t_1^3-t_0^3}{3}

따라서 conical frustum에서 균일하게 샘플링된 점들의 확률 밀도 함수는 rt2V\frac{rt^2}{V} 이 되고, t의 1차 모멘트(moment)와 2차 모멘트는 다음과 같다.

E[t]=1V02πt0t10r˙trt2drdtdθ=1Vπr˙2t14t044=3(t14t04)4(t13t03)E[t] = \frac{1}{V}\int_{0}^{2\pi}\int_{t_0}^{t_1}\int_{0}^{\dot{r}}t\cdot rt^2drdtd\theta \\ = \frac{1}{V} \cdot \pi\dot{r}^2\frac{t_1^4-t_0^4}{4} \\ = \frac{3(t_1^4-t_0^4)}{4(t_1^3-t_0^3)}
E[t2]=1V02πt0t10r˙t2rt2drdtdθ=1Vπr˙2t15t055=3(t15t05)5(t13t03)E[t^2] = \frac{1}{V}\int_{0}^{2\pi}\int_{t_0}^{t_1}\int_{0}^{\dot{r}}t^2\cdot rt^2drdtd\theta \\ = \frac{1}{V} \cdot \pi \dot{r}^2 \frac{t_1^5 - t_0^5}{5} \\ = \frac{3(t_1^5-t_0^5)}{5(t_1^3-t_0^3)}

이를 활용하여 σt2=E[t2]E[t]2\sigma_t^2= E[t^2]-E[t]^2을 구할 수 있다.
Conical frustum의 반경 rr에 대한 분산은 대칭성에 의해 균일하게 점을 샘플링하면 기댓값이 중심인 00으로 오게 된다. 즉, σr2=E[x2]\sigma_r^2 = E[x^2]이 된다.

E[x2]=1V02πt0t10r˙(rtcosθ)2rt2drdtdθ=t0t10r˙r3t402πcos2θdθdrdt=1Vr˙44t15t055π=r˙23(t15t05)20(t13t03)E[x^2] = \frac{1}{V}\int_{0}^{2\pi}\int_{t_0}^{t_1}\int_{0}^{\dot{r}}(rt\cos{\theta})^2\cdot rt^2drdtd\theta \\ = \int_{t_0}^{t_1}\int_{0}^{\dot{r}}r^3t^4\int_{0}^{2\pi}\cos^2{\theta}d\theta drdt \\ = \frac{1}{V}\cdot\frac{\dot{r}^4}{4}\cdot\frac{t_1^5-t_0^5}{5}\cdot\pi \\ = \dot{r}^2\cdot\frac{3(t_1^5-t_0^5)}{20(t_1^3-t_0^3)}

이렇게 구한 μt,σr2,σt2\mu_t, \sigma_r^2, \sigma_t^2을 이용하면, t0t_0t1t_1이 큰 차이를 낸다면 괜찮지만, 서로 가까이 위치해있을 때 이 차이를 큰 지수 값으로 계산하게 되면 값이 00 또는 NaNNaN을 뱉는 경우가 있으므로, t0,t1t_0, t_1 대신 t0t_0t1t_1의 중점인 tμ=t0+t12t_\mu = \frac{t_0 + t_1}{2}, t0t_0t1t_1사이의 거리의 절반인 tδ=t0t12t_\delta = \frac{t_0 - t_1}{2} 로 파라미터를 바꾸어 사용한다고 한다. 최종 변수들은 다음과 같다.

μt=tu+2tμtδ23tμ2+tδ2σt2=tδ234tδ4(12tμ2tδ2)15(3tμ2+tδ2)2σr2=r˙2(tμ24+5tδ2124tδ415(3tμ2+tδ2))\mu_t = t_u + \frac{2t_\mu t_\delta^2}{3t_\mu^2 + t_\delta^2} \\ \sigma^2_t = \frac{t_\delta^2}{3} - \frac{4t_\delta^4(12t_\mu^2-t_\delta^2)}{15(3t_\mu^2+t_\delta^2)^2} \\ \sigma^2_r = \dot{r}^2\bigg(\frac{t_\mu^2}{4} + \frac{5t_\delta^2}{12} - \frac{4t_\delta^4}{15(3t_\mu^2+t_\delta^2)} \bigg)

여기서 tμt_\mut0t_0t1t_1의 중점이고, tδt_\deltat0t_0t1t_1 사이의 거리의 반을 나타낸다.

tμ=(t0+t1)2tδ=(t0t1)2t_\mu = \frac{(t_0+t_1)}{2} \\ t_\delta = \frac{(t_0-t_1)}{2}

Conical frustum 좌표계에서 정의된 가우시안 분포는 다음과 같이 world coordinate으로 변형할 수 있다.

μ=o+μtdΣ=σt2(ddT)+σr2(IddTd22)\mu = \bold{o} + \mu_t\bold{d} \\ \Sigma = \sigma^2_t(\bold{d}\bold{d}^T) + \sigma^2_r\bigg(\bold{I}-\frac{\bold{d}\bold{d}^T}{||\bold{d}||_2^2} \bigg)

여기서 μ\mu는 평균 벡터로, 데이터의 중심을 나타내고, Σ\Sigma는 공분산 행렬로, 데이터의 퍼짐 정도를 나타낸다. 이를 통해 world coordinate에서 데이터의 분포를 정확히 모델링할 수 있게 된다.

2. Integrated positional encoding (IPE)

다음 그림은 1차원 공간에서 positional encoding(PE)와 integrated positional encoding(IPE)의 차이를 보여준다. NeRF는 각 ray 위에서의 점들을 샘플링하고 모든 주파수를 동일하게 인코딩한다. Aliasing이라고 불리는 계단현상은 고주파 신호가 저주파 신호로 왜곡되는 현상인데, 이는 샘플 간격에 비해 고주파 특성들이 너무 많이 표현되면서 발생하는 것이다. IPE는 주파수 구간을 통합함으로써 고주파 특성들이 구간의 크기에 비례해 감소하게 하여 anti-aliasing 효과를 얻을 수 있다.

우선 coordinate space에서의 좌표 x\bold{x}를 frequency space로 Fourier feature를 통해 embedding할 수 있다.

γ(x)=[sin(Px)cos(Px)]where  P=[200021002L1000200021002L1000200021002L1]T\gamma(\bold{x}) = \begin{bmatrix}\sin{(\bold{P}\bold{x})}\\\cos{(\bold{P}\bold{x})}\end{bmatrix} \quad where \; \bold{P}=\begin{bmatrix}2^0 & 0 & 0 & 2^1 & 0 & 0 & \cdots & 2^{L-1} & 0 & 0 \\ 0 & 2^0 & 0 & 0 & 2^1 & 0 & \cdots & 0 & 2^{L-1} & 0 \\ 0 & 0 & 2^0 & 0 & 0 & 2^1 & \cdots & 0 & 0 & 2^{L-1}\end{bmatrix}^T

이를 이용해 Gaussian 분포의 데이터를 기존의 좌표계에서 positional encoding을 적용하여 고차원 공간으로 변환할 수 있다. 공분산은 Cov[Ax,By]=ACov[x,y]BTCov[A\bold{x}, B\bold{y}] = A\,Cov[\bold{x}, \bold{y}]B^T라는 성질을 이용하여 다음과 같이 변환된다.

μγ=PμΣγ=PΣPT\mu_{\gamma} = \bold{P}\mu \\ \Sigma_\gamma = \bold{P}\Sigma\bold{P}^T

최종적으로 IPE feature를 얻는 단계는 이 다변량 가우시안에서 무작위로 샘플링된 값들의 평균을 나타내는 기댓값을 계산하는 것이다.

γ(μ,Σ)=ExN(μγ,Σγ)[γ(x)]\gamma(\mu, \Sigma) = E_{\bold{x}\sim \mathcal{N}(\mu_\gamma, \Sigma_\gamma)}[\gamma(\bold{x})]
=[sin(μγ)exp((12)diag(Σγ))cos(μγ)exp((12)diag(Σγ))]= \begin{bmatrix}\sin{(\mu_\gamma)}\circ \exp{(-(\frac{1}{2})diag(\Sigma_\gamma))} \\ \cos{(\mu_\gamma)}\circ \exp{(-(\frac{1}{2})diag(\Sigma_\gamma))}\end{bmatrix}

3. Optimization

NeRF는 coarse network, fine network 두 개의 네트워크를 사용하여 최종 이미지 픽셀 값을 정하였다. 하지만, Mip-NeRF는 multi-scale representation이 가능하므로 단 하나의 네트워크만을 사용하여 이미지 픽셀 값을 결정하므로 모델 사이즈도 절반으로 줄일 수 있고, 샘플링도 더 효과적이고, 전체적인 알고리즘도 단순해진다.

minΘrR(λC(r)C(r;Θ,tc)22+C(r)C(r;Θ,tf)22)where  λ=0.1\min_{\Theta}\sum_{\bold{r}\in \mathcal{R}}\bigg(\lambda||C^*(\bold{r}) - C(\bold{r};\Theta,\bold{t}^c)||^2_2 + ||C^*(\bold{r}) - C(\bold{r};\Theta,\bold{t}^f)||^2_2\bigg) \quad where \; \lambda=0.1
profile
AMC AI research engineer

1개의 댓글

comment-user-thumbnail
2025년 4월 8일

정말 재밌군요!

답글 달기