이 논문의 특별한 점은
1.
MC rendering에 최적화된 deep convolutional network를 제시함.
2.
Interactive, real-time rendering의 환경을 고려하여 훨신 적은 sample을 이용한 빠른 계산을 목표로 함.
이라고 볼 수 있다.
기존의 denoising network나 reconstruction model이 MC rendering 인풋에 잘 대응하지 못한 것에는 다음과 같은 이유가 있다.
1.
적은 sampling의 MC rendering을 통해 나온 인풋은 확률적으로 검은 점, 비어있는 부분들이 많아 sparse하다. 그러므로 spatial correlation을 찾기가 힘들어 지곤의 CNN 중심의 reconstruction model들이 큰 효과를 보기 어렵다.
2.
Full-resolution을 인풋으로 받기에는 시간이 오래 걸려 interactive한 결과를 도출할 수 없다.
이 두 문제를 해결하기 위해 본 논문은 autoencoder와 recurrent connection을 도입하였다. Autoencoder를 사용함은 subsampling을 통하여 보다 낮은 dimension에서의 빠른 계산을 하기 위함이라고 볼 수 있다. 거기에 recurrent connection은 sparse하여 단순한 CNN 구조로 유의미한 feature들을 추출할 수 없는 환경에 대응하기 위해서이다. 이런 특징을 이유로 본 논문은 자신들의 모델을 denoising autoencoder라고 부른다.
Recurrent라는 개념의 도입이 필요한 이유는 부족한 feature를 뽑아내기 위함이다. 이는 interactive rendering에서 움직임이 continuous하고 temporally stable함을 전제로 한다. 그렇기에 논문은 부족한 spatial correlation을 temporal correlation으로 메우고자 한다. Encoding 단계마다 encoding과 max pooling 사이에 reccurent connection을 주어 temporal feature들을 update하고 이를 통해 작은 사이즈의 feature를 얻어 reconstruct를 하도록 하였다.
Interactive한 ray tracing(path tracing)을 위해, 본 논문에서는 간단한 path tracer를 채용하였다. Post processing으로 처리 가능한 효과들(e.g. motion blur)는 배제하고 albedo역시 고려하지 않는 대신 한번의 bounce만 허용하였다. 그리고 첫 bounce는 rasterization으로 처리하였다. 그리고 g-buffer에 reconstruction에 쓰일 auxiliary features 7개(R, G, B, 2D normal, depth, roughness)를 저장하였다.
학습시킬 데이터는 연속된 7 프레임의 동적인 애니메이션을 사용하였다. 그러나 같은 모션에 대해서 10개로 만들었는데, 이는 다양한 MC noise를 학습하기 위함이다. 그 외에도 프레임을 회전시켜 다양한 방향의 움직임을 학습할 수 있도록 하여기도 하였다.
앞선 recurrency에 대한 가정을 위해 일반적인 loss function 뿐만 아니라 gradient를 통한 high frequency error norm과 temporal gradient difference를 outlier로 잡아 갑작스런 rendering input에 대응하도록 하였다.
논문은 학습 당시 g-buffer의 normal이 silluotte를 detect하는 대에 큰 도움을 주었다고 이야기하였고, 실제로 학습에서 normal data의 유무가 convergence의 큰 차이를 불러왔다. 그리고 train된 모델 (논문에서는 filter라고 한다)에 input을 여러 번 넣게 되면 edge에 대한 정보가 더 명확해지게 됨을 발견하였다. 타 모델들과의 비교를 위해서 training은 1spp의 input으로 했음에도 4spp, 8spp의 input을 넣어 성능을 비교해야 했는데 결과가 잘 나와 제시된 모델의 generalize가 잘 되었음을 어필하였다. 거기에 대다수의 필터나 기법보다 빠른 결과(54.9ms)를 보여주었고, 당시의 ray tracing이 한 sample에 약 70~260ms의 시간이 걸림을 생각하면 1spp의 input을 사용하는 것이 제일 효율적인 방식임을 보여주었다.
그러나 본 모델은 학습된 데이터에 많이 영향을 받는 모습을 보여주었다. 그 예로 Glossy한 effect가 없는 data로 train하였을 때에는 타 모델들보다 그 효과를 잘 reconstruct해주지 못하였다. 논문에는 추후 목표를 더 다양한 데이타에서의 학습과 특정 effect들을 잘 구현할 수 있도록 설계하는 것이라 기재하였다.