작심삼일

[SRCNN 리뷰] Image Super-Resolution Using Deep Convolutional Networks (ECCV 14) 본문

Deep Learning/Image Enhancement

[SRCNN 리뷰] Image Super-Resolution Using Deep Convolutional Networks (ECCV 14)

yun_s 2021. 4. 7. 16:45
728x90
반응형

My Summary & Opinion

SRCNN은 3개의 conv layers만 사용했기에 구조는 매우 간단하고 그 속도가 빠름에도 불구하고 그 성능이 이전 SOTA들과 비교했을 때 뛰어나다.

흥미로운 점은 필터들을 봤을 때, 필터들마다 edge detector 등 각각의 특색을 보인다.

이 논문에 적힌 실험에 따르면 이미지의 양이 많아질수록, 필터의 크기를 키울수록 성능이 향상되지만 층을 깊게 쌓을수록 항상 성능이 향상되는 것은 아니다.

 

Layer를 3개만 사용해서 이미지 양을 많이 사용해도 over-fitting이 되기 어렵기 때문에 꽤 많은 양의 데이터를 사용해도 성능이 향상될 것이라 예상하지만, 이 모델의 크기가 작기 때문에 너무 많은 데이터를 다 학습하기에는 어려울 것 같다.

필터의 크기를 키울수록 성능이 향상되는 이유도, 보다 더 non-local한 영역을 다룰 수 있기 때문이라 생각한다. 이 또한 필터의 크기를 너무 키우면 해당 patch의 특성을 뽑기 어려워 질 것이다.

층을 깊게 쌓을수록 항상 성능이 향상되지 않는 이유는 깊어질수록 back propagation이 어려워지기 때문이다. 이 논문이 쓰여질 시기에는 Residual connection이 없었기 때문에 단순히 층만 더 쌓았을 것이다.


Introduction

low/high-resolution image를 end-to-end mapping 해서 학습하는 CNN을 제안한다.

제안하는 SRCNN은 다음과 같이 흥미로운 특징들을 가지고 있다.

첫째, 이 구조는 간단하게 설계되었지만 다른 example-based SOTA 방법들과 비교했을 때 뛰어난 성능을 보인다.

둘째, filter와 layer 수를 적절히 썼기 때문에 CPU에서 돌릴 수 있을 만큼 빠르다.

셋째, 더 크거나 다양한 dataset을 사용하거나 더 크거나 깊은 model을 사용하면 성능이 향상될 것이다.

 

Initial version(이전 논문들)에서 몇가지 더 추가했다.

첫째, larger filter size in the non-linear mapping layer를 사용해서 SRCNN의 성능을 높였다.

둘째, 세가지 컬러 채널(YCbCr & RGB)로 확장했다.

셋째, 결과에 대한 해석을 추가했다.


Related Work

1. Image Super Resolution

Single Image Super Resolution(SISR) 문제를 푸는 알고리즘은 크게 네 종류(Prediction models, Edge based methods, Image statistical methods, Example[Patch] based methods)로 구분할 수 있고, 이 중에서 Example-based method가 SOTA이다. 이 방법은 이미지 내에서 비슷한 특징을 찾고 이를 이용해 patch를 만든다. Patch extraction & aggregation 단계는 각각 따로 진행된다.

SR 알고리즘들은 gray-scale이나 single-channel image super resolution에만 적용한다.

그래서 위의 방법들을 컬러 이미지에 사용하기 위해서는 다른 color space로 바꿔야한다.

 

2. Convolutional Neural Networks

CNN이 computer vision 영역에서 뛰어난 성능을 보이고 있다.

 

3. Deep Learning for Image Restoration

현재까지의 deep learning model들은 end-to-end가 아니다.


Convolutional Neural Networks for Super-Resolution

1. Formulation

저해상도 이미지가 있을때 bicubic interpolation으로 원하는 크기까지 upscale을 진행한다.

다음의 과정들을 통해 Interpolated image을 mapping하는 $F$를 학습하고자 한다.

$X$: GT high-resolution image, $Y$: interpolated image

1-1. Patch extraction and representation: $Y$에서 여러 patch들을 뽑고, 각 patch들을 vector로 나타낸다. 이 vecter들은 feature map이다.

첫번째 layer는 $F_1$으로 표현한다.

$F_1(\mathbf{Y}) = max(0, W_1 * \mathbf{Y} + B_1)$

$W_1$: filters (size: $c \times f_1 \times f_1 \times n_1$), $B_1$: biases

$c$: the number of channels in the input image

$f_1$ the spatial size of a filter

$n$: the number of filters

이 후에 $ReLU$를 적용한다.

 

1-2. Non-linear mapping: 한 vector에서 다른 vector로 nonlinearly mapping한다. 각 mapped vector는 high-resolution patch를 표현한다.

첫번째 layer는 $n_1$차원  feature를 뽑는다. 이 과정에서는 $n_1$차원 벡터들을 $n_2$차원 벡터로 mapping한다.

$F_2(\mathbf{Y}) = max(0, W_2 * F_1(\mathbf{Y}) + B_2)$

Non-linearity를 높이고 싶으면 conv layer를 더 쌓으면 되지만 complexity가 높아지게 되고, 결국 학습 시간이 늘어난다.

 

1-3. Reconstruction: 앞서 만들어진 patch들을 모아 high-resolution image를 만든다. 이때 이 image는 GT인 $X$와 비슷할 것이다.

기존의 전통적인 방법들은 최종 이미지를 만들기 위해 patch들을 평균냈다.

평균내는 행위는 벡터들을 'flatten'하는 행위이기 때문에 이에 착안하여 다음과 같은 layer를 설계했다.

$F(\mathbf{Y}) = W_3 * F_2(\mathbf{Y}) + B_3$

 

위 세가지 과정들은 다 다른 목적으로 설계되었지만, 결론적으로는 모두 conv layer 형태로 만들어졌다.

 

 

2. Relationship to Sparse-Coding-Based Methods

Sparse-coding-based SR 방법들은 CNN이라고 볼 수 있다.


Training

Loss Learning Rate (layer) Optimizer
MSE $10^{-4}$ ($1^{st}, 2^{nd}$), $10^{-5}$ ($3^{rd}$) SGD

Experiments

행한 실험들에 대한 자세한 설명을 제외하고 그 실험의 analysis만 적어보았다.

이미지의 양이 많아질수록 학습이 더 잘 된다.

 

각 필터들이 각각의 특색을 지니고 있다. 예를 들면, 어떤 필터는 edge detector처럼 보인다.

필터의 크기를 키울수록 성능이 향상된다.

층을 더 깊게 쌓을수록 성능이 향상되지만, 항상 그런 것은 아니다.

 


Reference

Dong, Chao, et al. "Image super-resolution using deep convolutional networks." IEEE transactions on pattern analysis and machine intelligence 38.2 (2015): 295-307.

728x90
반응형
Comments