ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [논문리뷰] Image Super-Resolution Using Deep Convolutional Networks (SRCNN)
    Paper Review/Computer Vision 2020. 3. 11. 13:04

     

    해당 논문은 SR 문제에 처음으로 deep CNN을 적용한 것으로, 굉장히 간단한 모델의 네트워크로 상당히 향상된 결과를 냈습니다. 이후로 SISR 문제를 해결하기 위해 등장한 다양한 모델들과 지금 진행 중인 연구들에도 상당히 큰 통찰력을 부여한 논문입니다. 

     

    Abstract

    저해상도 이미지를 고해상도 이미지로 출력해 내는 deep CNN에 대해서 소개하려 합니다.

    전통적인 코드 베이스의 super resolution은 각 요소를 따로 따로 다루지만, deep CNN은 모든 레이어들을 최적화 합니다. 

     

    Introduction

    Single image super-resolution 문제는 computer vision 영역에서 상당히 고전적인 문제입니다.

    저해상도 이미지에 대한 SR 결과로의 고해상도 이미지는 너무 다양하기 때문에, 해당 문제는 유일한 정답이 정해져 있지 않는 문제라 할 수 있습니다. 

     

    Traditional

    지금까지는 external example-based method와 sparse-coding based method를 이용하여 SR 문제를 해결해 왔습니다.

    external example-based method는 저해상도 이미지와 고해상도 이미지의 patch pair들을 mapping하는 함수를 학습시켜, dictionary 형태로 구축하는 방식 입니다.

    sparse-coding based mothod는 low resolution 이미지에 대한 pre-processing을 거쳐 sparse coefficient를 통과하여 고해상도 dictionary를 통과하여 종합함으로써 최종 결과를 얻는 방식입니다.

     

    Motivation

    이런 전통적인 방식들은 pipeline의 모든 단계들에 대해서 최적화 시키지는 않습니다. 즉, unified optimization framework에 관해서는 고려하지 않습니다. 

     

    Differentiation

    1) 저해상도 이미지와 고해상도 이미지 사이의 end-to-end mapping을 직접적으로 학습시킨다.

    2) hidden layer들을 이용하여 dictionary나 manifolds를 explicit하게 학습시키지 않는다.

    3) patch를 extract하고 aggreate하는 과정 모두 convolutional layer로 구현한다.

     

    SRCNN

    super-resolution convolutional neural network라는 의미입니다. 

     

    Related Work

    더보기

    1. Image Super-Resolution

    single image super resolution에 적용되는 알고리즘은 총 네 가지 타입으로 나뉘어 집니다.

    prediction models/ edge based methods/ image statistical methods/ patch based methods

     

    이들 중 patch based methods가 가장 최신에 등장하였고, example-based methods라고도 합니다.

    patch based methods에는 internal example-based와 external example-based, sparse-coding-based 등이 있습니다.

     

    이전까지의 주된 SR algorithm들은 gray-scale과 signle channel image super-resolution에만 집중한 경향이 있고, three channel에 동시에 적용해보고자 하는 시도가 있었으나 각각의 다른 채널에 대해서 SR performance를 평가하는 방식은 제시된 적이 없었습니다. 

     

    2. Convolutional Neural Network

    Deep CNN의 등장으로 image classification에 폭발적인 성공이 이뤄졌습니다. 이를 이어 object detection, face recognition, pedestrian detection등 computer vision의 다양한 분야에 성공을 가져왔습니다.

     

    이러한 성공을 이끌어낸 요소는

    1) modern powerful GPUs  2) ReLU의 등장  3) abundace of data 입니다. 

     

    해당 페이퍼에서 소개하는 SRCNN도 이러한 혜택을 받았습니다!

     

    3. Deep Learning for Image Restoration

    이전까지 제안된 image resolution에 사용되던 deep learning model들은 self similarity search process와 auto-encoder에 대해서 각각 독립적으로 최적화를 했습니다.

     

    제안되는 SRCNN의 경우에는 end-to-end mapping에 대한 최적화를 이룹니다.

     

    Convolutional Neural Networks For Super-Resolution

    1. Formulation

    해당 논문은 특이하게 input notation에 y를 사용하고 output notation에 x를 사용합니다.

    Low resolution input image에 대해서 bicubic interpolation을 적용하여 image Y를 만듭니다. 

    최종 목표는 실측 자료인 high resolution image X와 최대한 유사하게 image Y를 mapping하는 F를 찾는 것 입니다.

     

    bicubic interpolation 이란?

    더보기

    이미지 보간법 중 하나. 영상 처리시, 영상을 회전하거나 확대하거나 변화를 가하여 입력 버퍼와 출력 퍼의 geometry가 변했을 때, 출력 버퍼의 임의의 위치에 있는 데이터를 입력 버퍼에서의 근접한 픽셀들로부터 계산할 때도 사용합니다. 다양한 Interpolation 옵션들이 존재하는데, 해상도를 높이기 위해서는 보통 bicubic, bilinear, lanczos를 사용한다고 합니다.

     

    mapping F는 다음과 같은 세 가지 operation으로 이뤄집니다.

     

    1) Patch Extraction and Representation

    $$F_1(Y) = max(0, W_1*Y + B_1)$$

    image Y로부터 patch를 추출하고, 각 patch 에 대해서 CNN을 통과 시켜 feature map을 생성합니다. 

    각 patch는 high-dimensional vector로 표현이 되는데, 설명의 이해를 돕기 위해서 n1-dimensional vector가 첫번째 operation의 output이라고 하겠습니다.

    위의 식에서 알 수 있듯이, Convolutional layer의 결과를 ReLu 함수에 넣어 줍니다. 

     

    2) Non-linear mapping 

    $$F_2(Y) = max(0, W_2*F(Y_1) + B_2)$$

    high-dimensional vector들 끼리를 nonlinearly map 시키는 단계입니다. 1 X 1 convolutional layer를 사용하며, 각각의 mapped vector는 high resolution patch를 표현합니다.

     

    2nd step 연산도 마찬가지로 activation function으로 ReLu를 사용합니다.

    이 때, nonlinearity를 증가시키고 싶다면, conv layer 수를 증가 시키면 됩니다. 하지만 이 때 유의해야 할 점은, conv layer 수가 증가함에 따라서 network의 complexity가 증가하고 training time도 당연히 증가한다는 점 입니다. 

     

    3) Reconstruction 

    $$F_3(Y) = W_3 * F_2 + B_3$$

    2nd step의 output인 high resolution patch를 종합하여 final high resolution image를 만듭니다. 이 때 해당 output이 실측한 high resolution image인 X와 유사한 정도가 네트워크 학습의 성공 척도입니다.

     

    종합 하는 과정에서, high resolution patch의 representation이

    image domain에 있는 경우 : 필터가 averaging filter처럼 작동하는데, 이는 traditional 방식입니다.

    image domain에 없는 경우 : coefficient를 image domaindp projecting시키고 평균을 구합니다.

    2. Relationship to Sparse-Coding-Based Methods

    Sparse-coding-based 방식과 다르게, SRCNN에서 nonlinear operation 즉, patch extraction과 representation 과정이 학습 과정 내에서 최적화가 이뤄집니다. SRCNN에서는 low-resolution dictionary, high-resolution dictionary, non-linear mapping 등이 모두 최적화 대상에 포함됩니다.

    External example based 방식에 비해서 reconstruction을 위해서 더 많은 정보가 사용되고, 이로 인해서 SRCNN이 더 좋은 성능을 낼 수 있습니다.

     

    3. Training

    Mean Squared Error (MSE)를 loss function으로 사용합니다.

    $$L(Θ) = 1/n \sum_{i=1}^n ||F(Y_i ; Θ) − X_i ||^2$$

     

    Training의 평가 척도로 PSNR을 사용합니다. 

    PSNR = \(10log_{10}( (MAX_i)^2 / MSE)\) 이므로, MSE가 작아질 수록 PSNR은 커져서, 화질 개선을 더 잘 할 수 있습니다.

     

    여러가지 평가 척도

    더보기

    PSNR : peak signal to noise ratio, 영상 화질 손상 정보에 대한 평가

    SSIM : structural similarity index, 밝기, 명암, 구조를 조합하여 두 영상의 유사도 평가

    MSSIM : Multi scale SSIM, 다양한 배율에 대해서 SSIM 평가

     

    Experiment

     

     

     

    좌측의 그래프는 Original, Bicubic, SC, SRCNN에 대해 PSNR 평가 결과를 나타낸 것입니다. 

     

    그래프만 봐도, SRCNN이 SC와 Bicubic에 배해서 월등히 좋은 성능을 냄을 확인할 수 있습니다.

     

    아래의 사진은 저해상도 나비 날개 사진에 대한 고해상도 output을 비교한 것인데, Bicubic에 비해서 SRCNN이 상당히 선명하게 나옴을 확인할 수 있습니다.

     

     

     

     

     

    위의 테이블은 fiter 수에 따른 결과를 분석한 것입니다.

    filter의 수가 증가하면, PSNR이 증가하여 화질 개선은 잘 이뤄지지만, training time이 증가함을 확인할 수 있습니다.

     

    위의 그래프는 filter size에 따른 결과를 분석한 것입니다.

    SRCNN에 사용되는 filter의 size가 1 -> 3 -> 5로 커짐에 따라서 PSNR 평가의 평균이 높아지므로 화질 개선이 잘 이뤄짐을 확인할 수 있습니다.

    Self Q&A

    더보기

    3.1.1에서 patch extraction and representation 과정의 최적화를 network에 포함시킨다는 설명이 무슨 뜻인지 이해 가지 않았다. 이에 대한 답변은 3.2에서 얻을 수 있었다. 

    >> It is worth noting that "the sparse coding solver" in SRCNN refers to the first two layers, but not just the second layer or the activation function. Thus the nonlinear operation in SRCNN is also well optimized through the leraning process. 

     

    non-linear mapping 시에 1X1 conv layer를 사용하는데, 3X3이나 5X5 filter를 사용할 때는 non-linear mapping이 input image의 patch 위에 있지 않다는 것이 무얼 의미하는지 잘 모르겠다. 

     

    느낀점

    더보기

    처음 읽어보는 CV 관련 논문이라, 생소하고 모르는 용어들이 많았다. 

    학습 평가 척도나 이미지 보간법 등은 찾아보면서 한편으로는 이해도 되고 한편으로는 정확히 무엇을 이야기 하는 것인지 와닿지는 않았다.

     

    모르는 내용들을 찾아보면서 느낀 점은, 해당 논문을 다른 논문을 설명 하기 전에 일종의 background로 사용하는 경우가 꽤 있었다는 점이다.

    교수님께서 해당 논문을 추천해 주실 때도, 여러 연구자들에게 아직도 영감을 주는 논문이라고 하셨는데,

    해당 분야에서 기여도가 있는 논문임을 확인할 수 있었다. 

     

    유독 어려웠던 점은 experiment 파트의 내용들이었다. SRCNN이 좋다! 라고 얘기해주는 거 같긴한데, 각 파라미터의 역할과 작동 방식까지 이해하긴 어려웠다. 

     

     

     

     

    댓글

Written by Geulleun