[Paper Review] Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network
Abstract
Deep Neural Network 기반 Single image SR-methods들은 성능이 대체로 좋지만 reconstruction전에 LR space에서 HR space로 upscale해주는 과정을 수반한다. 이는 결국 HR space에서 SR이 일어나는 것이기 때문에 비효율적이라고 본 논문에서 주장한다. 따라서 본 논문에서는 LR space에서 feature maps를 추출하여 reconstruction하는 cnn 모델을 제안하였다.
Introduction
다양한 분야에서 많이 쓰일 수 있는 SR은 one(LR)-to-many(HR) mapping 이므로 ill-posed problem에 속한다. SR 기술의 핵심은 low frequency 정보를가지고 high frequency data를 reconstruct하는 것이다.
이전의 works에 비해서 본 논문이 의미를 가지는 부분은,
1. LR space에서 HR space로 SR하는 작업을 network 끝단에서 진행한다는 점.
-> 이전의 works들은 LR space의 image가 HR space로 interpolation(fixed filter)에 의해서 resizing된 후에 network의 input으로 들어갔기 때문에, 상대적으로 computational cost, complexity가 컸다. 또한 줄어든 resolution을 가지고 convolution연산을 수행할 때, 이에 따라 spatial filter size가 줄어들어 contextual area를 captioning 하기에 적절해졌다.
2. Upscaling filter를 bicubic interpolation과 같은 fixed explicit filter를 사용하지 않고 학습이가능한 implicit filer를 사용하여 더욱 더 복잡한 LR to HR mapping에 대해서 성능을 잘 낼 수 있게 되었다.
이 두가지 점에 의해서 본 논문은 이전 works에 비해 SOTA를 이룩했고, 속도측면에서도 제일 빠른 것으로 나타났다.
Method
ISR를 model이 estimate한 HR image라고하고, IHR를 original HR image라고 하고, ILR를 IHR에서 downscale한 image라고 표시하겠다.
IHR에서 ILR로 downscale할 때는 Gaussian filter를 이용하여 blurry하게 만든다음, upscaling ratio r로 downscale을 해준다. 따라서 ILR는 shape H x W x C를 가지게 되고, IHR는 rH x rW x rC를 shape로 가지게 된다.
- Overall Network Architecture
ISR를 model이 estimate한 HR image라고하고, IHR를 original HR image라고 하고, ILR를 IHR에서 downscale한 image라고 표시하겠다.
IHR에서 ILR로 downscale할 때는 Gaussian filter를 이용하여 blurry하게 만든다음, upscaling ratio r로 downscale을 해준다. 따라서 ILR는 shape H x W x C를 가지게 되고, IHR는 rH x rW x rC를 shape로 가지게 된다.
- Overall Network Architecture
위 그림에서 볼 수 있듯, LR 이미지가 upscaling되지 않은채로 network의 input으로 들어간다.
아래의 수식처럼 Convolution layer 2개(hidden layers)를 거쳐서 feature들을 추출해낸 다음, Sub-Pixel Convolution layer에서 HR space로 upscaling해주게 된다.
- Transposed Convolutional Layer (a.k.a. deconvolutions or fractionally strided convolutions)
아래의 수식처럼 Convolution layer 2개(hidden layers)를 거쳐서 feature들을 추출해낸 다음, Sub-Pixel Convolution layer에서 HR space로 upscaling해주게 된다.
- Transposed Convolutional Layer (a.k.a. deconvolutions or fractionally strided convolutions)
어떤 곳에선 deconvolution이라는 이름을 사용하지만 실제론 deconvolution이 아니기 때문에 부적절합니다. 상황을 악화시키기 위해 deconvolution이 존재하지만, 딥러닝 분야에선 흔하지 않습니다. 실제 deconvolution은 convolution의 과정을 되돌립니다. 하나의 convolutional layer에 이미지를 입력한다고 상상해보겠습니다. 이제 출력물을 가져와 블랙 박스에 넣으면 원본 이미지가 다시 나타납니다. 이럴 경우 블랙박스가 deconvolution을 수행한다고 할 수 있습니다. 이 deconvolution이 convolutional layer가 수행하는 것의 수학적 역 연산입니다.
Transposed Convolution은 deconvolutional layer와 동일한 공간 해상도를 생성하기 점은 유사하지만 실제 수행되는 수학 연산은 다릅니다. Transposed Convolutional layer는 정기적인 convolution을 수행하며 공간의 변화를 되돌립니다.
2D convolution with no padding, stride of 2 and kernel of 3
혼란스러울 수 있으므로 구체적인 예를 보겠습니다. convolution layer에 넣을 5x5 이미지가 있습니다. stride는 2, padding은 없고 kernel은 3x3입니다. 이 결과는 2x2 이미지가 생성됩니다.
이 과정을 되돌리고 싶다면, 역 수학 연산을 위해 input의 각 픽셀으로부터 9개의 값을 뽑아야 합니다. 그 후에 우리는 stride가 2인 출력 이미지를 지나갑니다. 이 방법이 deconvolution입니다
Transposed 2D convolution with no padding, stride of 2 and kernel of 3
>출처 : https://zzsza.github.io/data/2018/02/23/introduction-convolution/
- Efficient sub-pixel convolution layer
LR feature maps로 부터 HR image를 만들어내는 layer. 각 feature map마다 upscaling filter가 존재한다.
위의 수식에서 PS가 Efficient sub-pixel convolution layer를 의미한다. 즉 , Convolution layer를 거쳐 나온 feature maps를 periodic shuffling operator를 통해 tensor를 재배치한다는 의미이다. PS를 거치기 전에는 shape이 H x W x (C x r x r) 이었다가, PS를 거친 후 shape이 rH x rW x C로 변하게 된다.
구체적으로, PS 변환은 아래와 같은 수식에 의해 이루어진다.
overall architecture 그림을 참고하면서 C = 1, c = 0, r = 3 인 상황에서
1) x = 0, y = 0, c = 0 를 대입하면, PS(T)0,0,0 = T0,0,0
2) x = 1, y = 0, c = 0 를 대입하면, PS(T)1,0,0 = T0,0,1
3) x = 4, y = 0, c = 0 를 대입하면, PS(T)4,0,0 = T1,0,0
이런식으로 값을 대입해보면서 그림을 참고하면, 어떻게 재배치가 되는것인지 이해하기 수월하다.
- MSE Loss
training을 위해서, 아래의 수식과 같이 MSE loss를 사용하였다.
즉, LR image를 input으로 넣고, convolution layer -> PS layer를 거쳐서 나온 output을 HR image에 대해서 pixel-wise mean square를 적용한 것이다.
- Efficient sub-pixel convolution layer
LR feature maps로 부터 HR image를 만들어내는 layer. 각 feature map마다 upscaling filter가 존재한다.
위의 수식에서 PS가 Efficient sub-pixel convolution layer를 의미한다. 즉 , Convolution layer를 거쳐 나온 feature maps를 periodic shuffling operator를 통해 tensor를 재배치한다는 의미이다. PS를 거치기 전에는 shape이 H x W x (C x r x r) 이었다가, PS를 거친 후 shape이 rH x rW x C로 변하게 된다.
구체적으로, PS 변환은 아래와 같은 수식에 의해 이루어진다.
overall architecture 그림을 참고하면서 C = 1, c = 0, r = 3 인 상황에서
1) x = 0, y = 0, c = 0 를 대입하면, PS(T)0,0,0 = T0,0,0
2) x = 1, y = 0, c = 0 를 대입하면, PS(T)1,0,0 = T0,0,1
3) x = 4, y = 0, c = 0 를 대입하면, PS(T)4,0,0 = T1,0,0
이런식으로 값을 대입해보면서 그림을 참고하면, 어떻게 재배치가 되는것인지 이해하기 수월하다.
- MSE Loss
training을 위해서, 아래의 수식과 같이 MSE loss를 사용하였다.
즉, LR image를 input으로 넣고, convolution layer -> PS layer를 거쳐서 나온 output을 HR image에 대해서 pixel-wise mean square를 적용한 것이다.
댓글
댓글 쓰기