논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Learning to See in the Dark

1. Introduction

어느 이미지 시스템에나 노이즈는 존재하고, 낮은 광량에서의 노이즈는 특히 중요합니다. 높은 ISO를 사용하여 밝기를 올릴 수는 있지만 노이즈를 증폭시키고, 스케일링이나 히스토그램 스트레칭(histogram streching)과 같은 후처리는 SNR을 향상시키는 못합니다. 낮은 광량에서의 높은 SNR을 얻기 위해서는 노출을 늘려야 하지만 때문에 블러 현상을 가져오게 됩니다. 이를 해결하기 위한 연구가 진행되고 있지만, 대부분 적당한 노이즈 수준을 갖는 환경에서 이루어진 것이 대부분입니다. 하지만 이 논문의 연구에서는 극단적으로 낮은 광량의 영상을 대상으로 하교 있습니다.

논문에서 제안하는 방법은 낮은 광량의 raw 이미지를 이용하여 컬러 변환, 디모자이킹(demosaicing), 노이즈 억제(noise reduction), 이미지 향상(image enhancement)를 모두 아우르는 심층 신경망을 학습하는 것입니다.

대부분의 연구들은 합성된 데이터를 이용하거나, ground truth가 없는 이미지를 이용하였고, 달리 공개된 데이터셋도 없는 상황입니다. 따라서 연구를 위해 새로운 데이터셋을 제작하여 실험에 사용하였습니다.

2. Related Work

3. See-in-the-Dark Dataset

연구를 위해 새로운 데이터셋을 만들었고, 이를 See-in-the-Dark (SID) 데이터셋이라고 부르고자 합니다. 이는 5094개의 낮은 노출로 촬영한 raw 이미지와, 이에 대응되는 긴 노출로 촬영된 레퍼런스 이미지로 이루어져 있습니다.

4. Method

4.1 Pipeline

보통 이미지 센서로부터 raw 데이터를 얻고 나면 화이트 밸런스, 디모자이킹, 디노이징, 샤프닝, 컬러 변환, 감마 보정 등의 파이프라인을 거칩니다. 하지만 기존의 파이프라인으로는 낮은 광량의 이미지를 처리하는데 한계가 있습니다.

논문에서는 이러한 과정을 한번에 처리할 수 있는 fully-convolutional network (FCN)을 제안합니다. 입력이 베이어 배열일 경우, 이 네트워크는 입력 이미지를 4개 채널로 만들어 해상도가 만들어 줄어든 이미지로 만든 다음 처리합니다. 만약 Fuji X-trans 배열의 경우, 데이터를 6x6블럭 단위로 처리하러 9개의 채널로 줄여서 사용하게 됩니다. 여기에 흑색을 빼고 데이터를 증폭 비율을 곱하고 이를 네트워크의 입력으로 사용합니다. 출력은 12개 채널을 가지는 이미지로 목표 이미지의 반 해상도를 가집니다. 이렇게 출력된 반크기의 출력 서브픽셀 레이러를 통해 원래 해상도로 복원하게 됩니다.

네트워크에 사용되는 2가지 구조가 있는데, 하나는 multi-scale context aggregation network (CAN)이고, 나머지 하나는 U-net입니다. Residual-net을 시도해보았지만, 좋은 점을 찾지 못했으며 이는 입력과 출력이 다른 컬러 공간이기 때문인 것으로 보입니다.

능폭 수준은 결과물의 밝기를 결정하게 되는데, 이는 입력할 때에 외부에서 제공해야 하도록 하였습니다. 네트워크의 출력은 sRGB 공간으로 사용하였습니다.

4.2 Training

$L_1$로스를 Adam으로 최적화하였습니다. 입력은 짧은 노출로 찍은 raw데이터와 이에 대응하는 긴 노출로 찍은 sRGB 이미지를 사용하였습니다. 증폭 비율은 입력과 레퍼런스 이미지간의 비를 사용하였습니다. 각 반복마다 512x512 패치를 랜덤하게 잘라내어 flip과 회전을 준 뒤 사용하였습니다.

5. Experiments

6. Discussion


Add a Comment Trackback