현재 산업에서는 postprocess, general MC denoiser를 사용하고 있다고 한다. 이는 renderer가 적은 sampling rate를 사용할 수 있게 해준다고 한다. 대부분은 regression framework를 기반으로 하여 high order model로 발전하였다. 그러나 이는 복잡도를 높히고 디테일을 잃게 되는 단점들이 존재한다. 이는 주로 overfitting으로 인한 것.
이를 해결하기 위해 supervised learning기반의 모델이 제시되었지만, 적은 데이터 학습과 단순한 구조, 그리고 hardcoded된 filter로 인해 appliablility가 떨어진다.
CNN을 사용하는 장점
1.
크고 다양한 데이타셋을 학습할 수 있다
2.
non-linear model에도 잘 사용할 수 있다.
3.
빠르고 편하다
4.
안정적이다
Denoising을 하는 방버으로는 filter를 만들어 apply하는 방식이 전통적이다. Auxiliary data를 buffer를 통해서 얻어 이를 통해 filter를 construct하는 식이다. Auxiliary data에는 image뿐만 아니라 MC rendering variance등의 정보도 포함되어 construction에 쓰인다. Filter를 construction하는 것을 regression problem으로 볼 수 있는데, overfitting에 대비하여 적절한 order의 regression이 필요하다. 본 논문에서 소개하는 CNN model은 scene과 auxiliary data를 포함하여 noise를 학습하고, overfitting 없이 많은 data를 학습할 수 있도록 한다.
본 논문에서는 일반적인 CNN을 MC denoising에 적용시키는 것에는 다음과 같은 문제가 존재한다고 한다.
1.
많은 parameter가 존재하고 order가 높아 overfitting의 위험이 있다
2.
noise가 많은 인풋을 받으면 네트워크가 그것을 noise인지 detail인지 구별할 수 없고 이로 인해 심하게 블러처리되게 된다.
3.
HDR의 인풋을 받게 된다면 너무 넓은 range의 인풋 값들로 인하여 학습 도중 weight가 극단적으로 크거나 작게 되어 아웃풋에 영향을 준다.
그래서 논문은 적절한 input의 preprocessing으로 이러한 문제점들을 지우고자 한다.
기본적인 방식을 따르자면 모델은 denoising된 픽셀과 ground truth의 픽셀 값의 차이를 loss로 하여 학습되어야 하지만, ground truth를 obtain하는 대에 시간이 오래 걸려 학습이 저하된다는 단점이 존재한다고 한다. 그래서 최근의 알고리즘들은 직접 loss를 구하는 것이 아닌, 주변 픽셀들과의 값 차이를 이용하여 학습한다고 한다. 그렇기에 여러 노이즈를 조절하고 무시하게 도와주는 커널 w이 필요하다. 그러나 아무리 좋은 kernel을 고르더라도 모든 상황에 적합할 수 없기에, 보다 flexible한 kernel을 찾아야 한다.
기존의 Kalantari et al.은 픽셀 주변의 batch와 레퍼런스 픽셀 값을 이용한 supervised learning 방식을 채용하였다. 이는 보다 flexible한 kernel을 만들게 해 주었지만, 그럼에도 특정 함수(bilateral or non-local mean)를 hard-coding하였기에 better flexiblility를 achieve할 수 없었따.
이 방식을 채용하고 더 발전시키 위해 논문은
1.
보다 flexible한 함수를 모델링하는 CNN
2.
차이를 잘 잡지만 쉽고 빠르게 계산 가능한 loss function
3.
Avoiding overfitting
으로 목표를 설정하였다.
no fully-connected layer로 parameter를 줄여 overfitting 피함
DPCN 보단 KPCN
1.
보다 적은 학습 데이터로 유의미한 결과를 얻을 수 있다. 학습이 빠르다.
2.
주변과의 차이 정보만 weight가 학습하면 된다. 이는 HDR 같이 range가 넓은 인풋에 대해 weight가 너무 커지거나 작아지는 일을 막을 수 있다.
3.
주변 정보를 통해 픽셀값을 유추하므로 fluctuation이 작다.
효과에 따른 서로 다른 noise 특성들로 인해 MC rendering denoising에서 Overblurring이 일어난다. 이를 피하기 위해 Diffuse와 Specular를 나누었다. Diffuse는 radiance의 범위가 제한되어 있는 경우가 많아 학습하기 쉽다. Diffuse단계에서 중요한 정보는 알베도인데, post process 단계에서 알베도 계산을 역계산하여 이 값을 알아낸다 한다. Specular는 HDR의 주 논점이다. HDR의 넓은 범위를 고려하여 학습할 때 log값을 취하여 계산하였다 한다. 그 후에 값을 얻게 되면 모두 제대로 계산하여 더한다.
Input으로는 Diffuse&specular RGB color buffers & variances, feature buffers, surface normals, albedo, depth, feature variances → 2 color variance, 3 feature variance
Post processing을 위해 modified variance를 구해야 함.
FHD 해상도의 frame을 400개의 patch로 나누어 랜덤하게 학습한다.
학습결과, 학습 데이터보다 적은 샘플의 인풋을 넣어도 잘 하는 것을 볼 수 있었다.
loss function 선택에 따라 성능이 확실히 달라진다.
KPCN의 converging 이 더 빨랐다.
Additional information helps differentiating details and noise