향후 새로운 연구를 할 때도 혹시나 도움이 될 겸 ICRA에 올라온 논문 한편을 가져와봤습니다.
Introduction
해당 논문의 주제는 GAN을 통하여 고화질의 해저 영상을 만들자는 내용입니다.
수중 영상은 아무래도 평소와 다른 환경에서 촬영한 영상이기에, 아무리 좋은 카메라로 촬영한다 하더라도, 영상 자체가 뿌옇고, 가시성이 나쁘게 나옵니다. 이러한 현상들은 수중 작업(해저 생물 촬영, 해저 시설 점검, 잔해 수색 등)에서 많은 성능 악화를 유발시킵니다. 이를 해결하기 위해서는 선명한 고해상도 영상을 추출할 수 있어야 합니다. 기존에도 수중뿐만 아니라 다른 분야에서 저해상도 영상을 인풋으로 하여 고해상도(Super Resolution) 영상을 추출하는 여러 방법론들이 제안되고 있고, 특히 GAN을 이용한 모델들이 좋은 성능을 나타내고 있습니다.
하지만 위에 언급한 모델들은 수중 영상에 대해서 적합하지 않는데 그 이유는 다음과 같습니다.
- 수중 환경에서 발생하는 왜곡.
- 고해상도로 촬영된 수중 데이터 셋의 부족.
첫 번째 이유에 대해서 먼저 살펴보면, 물 속 깊이가 깊어질수록, 붉은 색이 흡수되어, 대부분 파랑 또는 초록 파장의 색조가 나타나게 되며, 그 외에도 물 속 혼합물 및 고르지 못한 비선형 왜곡등으로 인하여, 수중 영상은 연조(low-contrast) 및 블러가 나타납니다.
두 번째 이유는, 아무래도 수중에서 촬영 시 고가의 장비와 기술이 필요하다 보니, 비용성 측면가 기술적 측면에서 방대한 데이터셋을 모으기에 한계가 뚜렷합니다. 게다가 그나마 있는 데이터 셋은 해상도가 256×256으로 제한되어 있습니다. 이러한 문제를 해결하고자 논문에서는 다양한 해상도로 촬영된 수중 영상 Dataset인 USR-248과 이 데이터셋에 적합한 fully-convolutional deep residual network 기반 generative model(SRDRM)과 adversarial model(SRDM-GAN)을 제안합니다.
USR-248 Dataset
이 논문에서 모델을 학습하는데 사용하는 데이터셋은 USR-248 Dataset으로 다양한 3개의 low_resolution(80 x 60, 160 x 120, 320 x 240)과 high_resolution(640 x 480)영상으로 구성되어 있으며 각 셋마다 1060장에 train 및 validation, 248장에 test 영상으로 구성되어 있습니다. (궁금해서 한번 들어가봤는데, 해상 데이터셋이 USR-248말고도 3개 더 있더군요(HR,LR에 대한 데이터셋과 Segmentation mask에 대한 데이터셋 등이 존재) . 필요하신 분들은 한번 참고해보시면 좋을 것 같습니다. http://irvlab.cs.umn.edu/resources )
Deep Residual Multiplier (DRM)
이 논문에서 제안하는 모델의 핵심 요소는 바로 RGB영상을 2x로 보간하는 fully-convolutional Deep Residual block입니다. 그림 (a)를 보면 DRM은 conv layer로 이루어져있는데, 8개의 반복되는 residual layer가 존재하며 하나의 conv가 따로 있고, 마지막에는 up-scaling을 위한 de-conv layer가 위치하고 있습니다. 8번 반복되는 각각의 residual layer들은 EDSR 모델에서 참고하여 만들었다고 합니다.(음 그냥 그렇다고 합시다)
요약하자면, DRM은 10개의 layer를 가진 residual network로 볼 수 있고, 이는 2개의 요인으로 이루어진 입력 feature의 spatial dimension을 확장시키기 위해 (scale up) 학습한다고 보시면 될 것 같습니다. 또한 DPM은 spatial interpolation을 학습시키기 위해 residual network가 반복되는 구간에는 3×3 filter로, 그 외에 부분에는 4×4 filter로 convolution 연산을 한다고 합니다.
SRDRM Architecture
SRDRM은 그림 b에서 보시다시피 총 3개의 DRM 블럭으로 이루어져있는데, 각각의 DRM블럭은 n ∈ (1, 2, 3), 2^{n} × HR output 같은 결과를 낼 수 있도록 학습합니다. DRM 블럭을 거친 후 최종 Conv 레이어에 비선형성을 가진 tanh을 위치하여, 출력 feature가 원하는 형식으로 reshape할 수 있게끔 해준다는데(무슨말이지?). 아무튼 SRDRM은 입력영상에 대하여 기존 해상도의 2배, 4배, 8배의 출력 영상을 생성합니다.
SRDRM-GAN Architecture
adversarial training을 위해, SRDRM model을 generator로 사용하고 discriminator로는 Markovian PatchGAN 기반 모델을 사용했다고 합니다. 아래 그림 c와 같이 총 9개의 conv 레이어들이 사용되며 이는 640 × 480 × 6 크기의 (실제 또는 생성된) 영상을 입력으로 하여 40 × 30 × 1 크기의 출력 영상으로 변환합니다. 이러한 출력 영상은 discriminator가 얼마나 잘 식별하는지에 대한 평균 validity를 보여줍니다. 각각의 레이어는 3 × 3 컨볼루션 필터들이 사용되며, stride의 크기는 2입니다. 원래 Patch GAN에서는 최종 출력값으로 패치 사이즈가 70 × 70 를 나타내지만, 제안하는 논문에서는 입/출력 영상의 사이즈가 4:3이다 보니, 패치 사이즈도 그에 맞추어 40 × 30 으로 정하였다고 합니다.
Qualitative Evaluation
해당 논문에서는 SRDRM과 SRDRM-GAN으로 생성한 영상을 평가할 때 sharpness와 color consistency를 가장 중점적으로 분석했다고 합니다. 대략 2× SISR에 대해서는 좋은 결과를 얻은 것을 확인할 수 있다고 합니다. 또한 아래 그림을 보면 다양한 스케일에 대하여 상대적인 성능을 비교할 수 있습니다. 보시면 아시다시피 SRDRM과 SRDRM-GAN에서 생성한 영상의 전체적인 대조(contrast)와 질감이 2×, 4× HR 영상에서는 보기 좋게 잘 생성됐으나, 8× 영상부터는 그렇지 못하다는걸 정성적으로 볼 수 있습니다. 이는 현존하는 다른 SISR 모델들도, 4× 초과하는 해상도에 대해서는 썩 좋지 못한 결과를 보인다고 논문에서는 말합니다.
수중의 이미지는 고해상도를 얻기힘들기 때문에, 기존의 영상들로 고해상도 영상을 얻는 방법을 제안하는 논문으로 이해했는데, 맞게 이해했나요?
네네 저해상도부터 고해상도까지 다양한 해상도의 USR-248 데이터셋과 GAN을 통해 다양한 해상도를 생성할 수 있는 모델을 만들었다고 보시면 될 것 같아요.
색다른 데이터 셋에 대해 소개해주셔서 감사합니다. 해당 데이터 셋이 영상 정보만 있는 건가요? 라벨이나 기타 등등 정보들이 있는 지 궁금하네요
데이터 셋에 대한 홈페이지 게시 정보는 다음과 같습니다.
USR-248 Dataset
Dataset for paired training of Underwater Single Image Super-Resolution (SISR) models
Paper: https://arxiv.org/pdf/1909.09437.pdf
Code: https://github.com/xahidbuffon/SRDRM
Project page: improving-degraded-machine-vision/srdrm-and-srdrm-gan
Folder structure:
train_val/ contains 1060 paired samples for training/validation
TEST/ contains 248 paired samples for benchmark evaluation (do not alter)
Folder structure:
hr/ contains high-resolution ground truth images: 640 x 480
Low-resolution pairs are in
lr_2x/: 320 x 240
lr_3x/: 214 x 160
lr_4x/: 160 x 120
lr_8x/: 80 x 60
Hence, it supports 2x, 3x, 4x, and 8x SISR training
아마도 다양한 해상도의 수중 영상을 목적으로 촬영한 데이터셋 같아서, 단일 영상 정보만 들어있는 것 같습니다. http://irvlab.cs.umn.edu/resources 링크로 들어가시면 해당 데이터셋 말고도 segmentation mask등 다른 task에 대한 수중 데이터셋도 있으니 참고하시면 좋을 것 같습니다.