Home Multiple Importance Sampling
Post
Cancel

Multiple Importance Sampling

Multi-sample Estimator

바로 이전 포스트에서 Monte Carlo Estimator에 대해 알아봤다.

\[F_n = \frac{1}{n} \sum_{i=1}^{n} \frac{f(X_i)}{p(X_i)}\]

Estimator의 기댓값은 구하고자 하는 적분값이 되고, 이 결과는 편향이 없는(unbiased) 정확한 방법이다.

\[E[F_n] = \int_{\Omega} f(x) dx = I\]

이 Unbiased estimator 여러개에 대해 $\sum_{i} m_i = 1$ 을 만족하는 weighted sum을 생각해 본다면

\[\sum_{i=1}^{n} m_i E[F_i] = \sum_{i=1}^{n} \frac{1}{n_i} \sum_{j=1}^{n_i} m_i E\Big[\frac{f(X_{i, j})}{p_i(X_{i, j})}\Big] = I\]

여전히 unbiased하게 적분값을 추정할 수 있다. 여기서 기댓값의 선형성을 이용해 한번 더 나아가보면

\[E[F_m] = \sum_{i=1}^{n} \frac{1}{n_i} \sum_{j=1}^{n_i} E \Big[ m_i(X_{i,j}) \frac{f(X_{i, j})}{p_i(X_{i, j})} \Big] = I\]

심지어 가중치를 각 샘플에 dependent하도록 만들 수도 있다.

이 Multi-sample Estimator가 unbiased하게 적분값을 추정하기 위해서는 가중치 함수가 다음 두 조건을 만족해야 한다.

  • $f(x)$가 $0$이 아닐 때 $\sum_{i=1}^{n} m_i(x) = 1$
  • $p_i(x)=0$ 일 때 $m_i(x) = 0$

첫 번째 조건은 자명하고 두 번째 조건을 잘 생각해 보면 여러개의 Estimator가 있는데 어떤 Estimator $F_i$는 $f(x) \ne 0$ 인 부분에서 $p_i(x)$가 $0$ 일 수도 있다는 뜻이고 $F_i$ 자체로는 Biased 되어있지만 다른 Estimator와의 결합으로 Unbiased한 적분 값을 추정하겠다는 의미다. $F_i$ 의 pdf $p_i$가 커버 못하는 적분 영역을 다른 Estimator의 pdf로 커버해야 할 테니 $m_i(x)$는 $0$이 되어야 한다.

물론 Monte Carlo Estimator의 기본 조건 역시 만족해야 하며, 모든 $ supp(X_i) $ 의 합집합이 $supp(f)$를 커버해아 한다.

\[\bigcup_i supp(X_i) \supseteq supp(f)\]

Generalization

$F_i$의 샘플 수 $n_i$가 1인 경우를 생각해보자. MIS Estimator를 간단히 다음과 같이 쓸 수 있다.

\[F_m = \sum_{i=1}^{n} m_i(X_i) \frac{f(X_i)}{p_i(X_i)}\]

기존 MC Estimator가 동일한 확률 변수 $X$에 여러번 샘플링하여 적분 값을 추정하였다면, MIS Estimator는 가중치 함수를 이용해 각기 다른 확률 변수 $X_i$가 $f$를 잘 추정하도록 구성 할 수 있게 된다.

한발 더 나아가 $q_i$의 확률로 하나의 Estimator를 고르는 경우를 생각한다면, 하나의 샘플링 테크닉을 골라서 하나의 샘플로 적분 값을 추정하는 single sample MIS estimator를 구성할 수 있다.

\[F_m = \frac{m_i(X_i)}{q_i} \frac{f(X_i)}{p_i(X_i)}\]

Balance Heuristic

우리는 $N$개의 서로 다른 샘플링 전략을 갖는 Estimator를 잘 합칠수 있게 되었다. 이론적으로 $\sum_{i} m_i = 1$을 만족하는 가중치 함수를 자유롭게 설정 할 수 있지만 가중치 함수를 잘못 설정하면 오히려 분산이 증가 할 수도 있게 되므로 가중치 함수를 적절히 구성해야 한다.

가중치 함수에는 대표적으로 MIS 논문의 저자가 제안한 Balance Heuristic이 있다.

\[m_i(x) = \frac{p_i(x)}{\sum_{k}{p_k(x)}}\]

우선 가중치를 설정하는 방식을 보면 샘플링 전략 $p$가 어떤 임의의 샘플 $x$도 evaluate할 수 있어야 된다.

샘플 $x$에 대한 $i$번째 샘플링 전략의 가중치를 위와 같이 설정한다는 것은, 만약 어떤 샘플링 전략 $p_i$가 샘플 $x$에 대해 높은 pdf 값을 갖는다면 바로 그 전략을 선호하겠다는 의미다.

Balance Heuristic이 practical하게 잘 동작하기 위해선 피적분 함수의 서로 다른 부분을 잘 추정하는 샘플링 전략들을 합쳐서 Estimator를 구성하는 것이다. 렌더링 방정식을 예로 들어

\[L(\mathbf{p}, \omega_o) = \int_{\Omega} \rho(\mathbf{p}, \omega_i, \omega_o) L(\mathbf{p}, \omega_i) \langle \vec n_p \cdot \omega_i \rangle \, d\omega_i\]

Estimator $F_1$은 BRDF와 Geometry term $\rho \, \langle \vec n_p \cdot \omega_i \rangle$ 에 대한 샘플링 전략으로, $F_2$는 Incomming radiance $L(\mathbf{p}, m_i)$에 대한 샘플링 전략으로 하여 두 Estimator를 합치면 의도한 대로 Balance Heuristic이 잘 동작할 것이다. (여기서 말하는 샘플링 전략은 Importance Sampling을 의미한다)

Implementation Details

실제로 Path tracer에 MIS을 적용한다면 NEE(Next Event Estimation)과 함께 사용된다. NEE에 따라 현재 hit point에서 Direct light을 추정 하는 부분을 MIS를 이용해 BRDF importance sample과 Light sample을 결합한다.

Indirect light 계산을 위해 다음 Ray direction을 설정 할 때는 BRDF에 Importance sample한 direction을 이용한다.

아래는 MIS 논문의 레퍼런스 Scene을 내가 구현해본 결과다. 320x160, 64spp이다

brdf BRDF sampling only

light Light sampling only

mis Multiple Importance Sampling

상단의 광원은 왼쪽에서 오른쪽으로 갈수록 커지고 plate는 아래에서 위로 갈수록 roughness값이 낮아진다.

Material의 Roughness 값이 낮을수록 BRDF importance sampling이 유리하고, (plate의 우상단) 반대로 Roughness 값이 높을수록 Light importance sampling이 유리하다. (plate의 좌하단)

실제 MIS를 적용한 부분의 코드는 이곳 에서 확인 할 수 있다.

참조

[1] https://graphics.stanford.edu/papers/veach_thesis/thesis.pdf

This post is licensed under CC BY 4.0 by the author.

Monte Carlo Estimator

Sampling Importance Resampling